org.lwjgl.vulkan.VkAllocationFunctionI Maven / Gradle / Ivy
Show all versions of lwjgl-vulkan Show documentation
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.vulkan;
import org.lwjgl.system.*;
import static org.lwjgl.system.dyncall.DynCallback.*;
/**
* Application-defined memory allocation function.
*
* C Specification
*
* The type of {@code pfnAllocation} is:
*
* typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
void* pUserData,
size_t size,
size_t alignment,
VkSystemAllocationScope allocationScope);
*
* Description
*
* If {@code pfnAllocation} is unable to allocate the requested memory, it must return {@code NULL}. If the allocation was successful, it must return a valid pointer to memory allocation containing at least {@code size} bytes, and with the pointer value being a multiple of {@code alignment}.
*
* Note
*
* Correct Vulkan operation cannot be assumed if the application does not follow these rules.
*
* For example, {@code pfnAllocation} (or {@code pfnReallocation}) could cause termination of running Vulkan instance(s) on a failed allocation for debugging purposes, either directly or indirectly. In these circumstances, it cannot be assumed that any part of any affected VkInstance objects are going to operate correctly (even {@link VK10#vkDestroyInstance DestroyInstance}), and the application must ensure it cleans up properly via other means (e.g. process termination).
*
*
* If {@code pfnAllocation} returns {@code NULL}, and if the implementation is unable to continue correct processing of the current command without the requested allocation, it must treat this as a run-time error, and generate {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY} at the appropriate time for the command in which the condition was detected, as described in Return Codes.
*
* If the implementation is able to continue correct processing of the current command without the requested allocation, then it may do so, and must not generate {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY} as a result of this failed allocation.
*
* See Also
*
* {@link VkAllocationCallbacks}
*/
@FunctionalInterface
public interface VkAllocationFunctionI extends CallbackI.P {
String SIGNATURE = Callback.__stdcall("(pppi)p");
@Override
default String getSignature() { return SIGNATURE; }
@Override
default long callback(long args) {
return invoke(
dcbArgPointer(args),
dcbArgPointer(args),
dcbArgPointer(args),
dcbArgInt(args)
);
}
/**
* Application-defined memory allocation function.
*
* @param pUserData the value specified for {@link VkAllocationCallbacks}{@code ::pUserData} in the allocator specified by the application.
* @param size the size in bytes of the requested allocation.
* @param alignment the requested alignment of the allocation in bytes and must be a power of two.
* @param allocationScope a {@code VkSystemAllocationScope} value specifying the allocation scope of the lifetime of the allocation, as described here.
*/
long invoke(long pUserData, long size, long alignment, int allocationScope);
}