Class VkAccelerationStructureCreateInfoKHR
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
Applications should avoid creating acceleration structures with application-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR errors.
Note
The expected usage for this is that a trace capture/replay tool will add the BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT flag to all buffers that use BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, and will add BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT to all buffers used as storage for an acceleration structure where deviceAddress is not zero. This also means that the tool will need to add MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT to memory allocations to allow the flag to be set where the application may not have otherwise required it. During capture the tool will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.
Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Applications and tools should avoid mixing application-provided and implementation-provided addresses for buffers created with BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, to avoid address space allocation conflicts.
Applications should create an acceleration structure with a specific VkAccelerationStructureTypeKHR other than ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR.
Note
ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR is intended to be used by API translation layers. This can be used at acceleration structure creation time in cases where the actual acceleration structure type (top or bottom) is not yet known. The actual acceleration structure type must be specified as ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR or ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR when the build is performed.
If the acceleration structure will be the target of a build operation, the required size for an acceleration structure can be queried with GetAccelerationStructureBuildSizesKHR. If the acceleration structure is going to be the target of a compacting copy, CmdWriteAccelerationStructuresPropertiesKHR or WriteAccelerationStructuresPropertiesKHR can be used to obtain the compacted size required.
If the acceleration structure will be the target of a build operation with BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV it must include ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV in createFlags and include VkAccelerationStructureMotionInfoNV as an extension structure in pNext with the number of instances as metadata for the object.
Valid Usage
- If
deviceAddressis not zero,createFlagsmust includeACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR - If
deviceAddressis not zero, it must have been retrieved from an identically created acceleration structure, except forbufferanddeviceAddress - If
deviceAddressis not zero,buffermust have been created identically to thebufferused to create the acceleration structure from whichdeviceAddresswas retrieved, except forVkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddress - If
deviceAddressis not zero,buffermust have been created with aVkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddressthat was retrieved fromGetBufferOpaqueCaptureAddressfor thebufferthat was used to create the acceleration structure from whichdeviceAddresswas retrieved - If
createFlagsincludesACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,VkPhysicalDeviceAccelerationStructureFeaturesKHR::accelerationStructureCaptureReplaymust beTRUE buffermust have been created with ausagevalue containingBUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHRbuffermust not have been created withBUFFER_CREATE_SPARSE_RESIDENCY_BIT- The sum of
offsetandsizemust be less than the size ofbuffer offsetmust be a multiple of 256 bytes- If
ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NVis set increateFlagsandtypeisACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, one member of thepNextchain must be a pointer to a valid instance ofVkAccelerationStructureMotionInfoNV - If any geometry includes
VkAccelerationStructureGeometryMotionTrianglesDataNVthencreateFlagsmust containACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV - If
createFlagsincludesACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, thedescriptorBufferCaptureReplayfeature must be enabled - If the
pNextchain includes aVkOpaqueCaptureDescriptorDataCreateInfoEXTstructure,createFlagsmust containACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofVkAccelerationStructureMotionInfoNVorVkOpaqueCaptureDescriptorDataCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique createFlagsmust be a valid combination ofVkAccelerationStructureCreateFlagBitsKHRvaluesbuffermust be a validVkBufferhandletypemust be a validVkAccelerationStructureTypeKHRvalue
See Also
CreateAccelerationStructureKHR
Layout
struct VkAccelerationStructureCreateInfoKHR {
VkStructureType sType();
void const * pNext();
VkAccelerationStructureCreateFlagsKHR createFlags();
VkBuffer buffer();
VkDeviceSize offset();
VkDeviceSize size();
VkAccelerationStructureTypeKHR type();
VkDeviceAddress deviceAddress();
}-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn array ofVkAccelerationStructureCreateInfoKHRstructs.Nested classes/interfaces inherited from class org.lwjgl.system.Struct
org.lwjgl.system.Struct.StructValidationNested classes/interfaces inherited from interface org.lwjgl.system.Pointer
org.lwjgl.system.Pointer.Default -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe struct alignment in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct size in bytes.static final intThe struct member offsets.static final intThe struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionVkAccelerationStructureCreateInfoKHR(ByteBuffer container) Creates aVkAccelerationStructureCreateInfoKHRinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionlongbuffer()the buffer on which the acceleration structure will be stored.buffer(long value) Sets the specified value to thebuffer()field.calloc()Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withmemCalloc.calloc(int capacity) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.calloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.create()Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withBufferUtils.create(int capacity) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withBufferUtils.create(long address) Returns a newVkAccelerationStructureCreateInfoKHRinstance for the specified memory address.create(long address, int capacity) Create aVkAccelerationStructureCreateInfoKHR.Bufferinstance at the specified memory.inta bitmask ofVkAccelerationStructureCreateFlagBitsKHRspecifying additional creation parameters of the acceleration structure.createFlags(int value) Sets the specified value to thecreateFlags()field.static @Nullable VkAccelerationStructureCreateInfoKHRcreateSafe(long address) static @Nullable VkAccelerationStructureCreateInfoKHR.BuffercreateSafe(long address, int capacity) longthe device address requested for the acceleration structure if theaccelerationStructureCaptureReplayfeature is being used.deviceAddress(long value) Sets the specified value to thedeviceAddress()field.malloc()Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withmemAlloc.malloc(int capacity) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated on the specifiedMemoryStack.malloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated on the specifiedMemoryStack.static longnbuffer(long struct) Unsafe version ofbuffer().static voidnbuffer(long struct, long value) Unsafe version ofbuffer.static intncreateFlags(long struct) Unsafe version ofcreateFlags().static voidncreateFlags(long struct, int value) Unsafe version ofcreateFlags.static longndeviceAddress(long struct) Unsafe version ofdeviceAddress().static voidndeviceAddress(long struct, long value) Unsafe version ofdeviceAddress.static longnoffset(long struct) Unsafe version ofoffset().static voidnoffset(long struct, long value) Unsafe version ofoffset.static longnpNext(long struct) Unsafe version ofpNext().static voidnpNext(long struct, long value) Unsafe version ofpNext.static longnsize(long struct) Unsafe version ofsize().static voidnsize(long struct, long value) Unsafe version ofsize.static intnsType(long struct) Unsafe version ofsType().static voidnsType(long struct, int value) Unsafe version ofsType.static intntype(long struct) Unsafe version oftype().static voidntype(long struct, int value) Unsafe version oftype.longoffset()an offset in bytes from the base address of the buffer at which the acceleration structure will be stored, and must be a multiple of 256.offset(long value) Sets the specified value to theoffset()field.longpNext()NULLor a pointer to a structure extending this structure.pNext(long value) Sets the specified value to thepNext()field.Prepends the specifiedVkAccelerationStructureMotionInfoNVvalue to thepNextchain.Prepends the specifiedVkOpaqueCaptureDescriptorDataCreateInfoEXTvalue to thepNextchain.set(int sType, long pNext, int createFlags, long buffer, long offset, long size, int type, long deviceAddress) Initializes this struct with the specified values.Copies the specified struct data to this struct.longsize()the size required for the acceleration structure.size(long value) Sets the specified value to thesize()field.intsizeof()intsType()aVkStructureTypevalue identifying this structure.sType(int value) Sets the specified value to thesType()field.Sets theSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHRvalue to thesType()field.inttype()aVkAccelerationStructureTypeKHRvalue specifying the type of acceleration structure that will be created.type(int value) Sets the specified value to thetype()field.Methods inherited from class org.lwjgl.system.Struct
clear, free, isNull, validate, validateMethods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toStringMethods inherited from interface org.lwjgl.system.NativeResource
close, free
-
Field Details
-
SIZEOF
public static final int SIZEOFThe struct size in bytes. -
ALIGNOF
public static final int ALIGNOFThe struct alignment in bytes. -
STYPE
public static final int STYPEThe struct member offsets. -
PNEXT
public static final int PNEXTThe struct member offsets. -
CREATEFLAGS
public static final int CREATEFLAGSThe struct member offsets. -
BUFFER
public static final int BUFFERThe struct member offsets. -
OFFSET
public static final int OFFSETThe struct member offsets. -
SIZE
public static final int SIZEThe struct member offsets. -
TYPE
public static final int TYPEThe struct member offsets. -
DEVICEADDRESS
public static final int DEVICEADDRESSThe struct member offsets.
-
-
Constructor Details
-
VkAccelerationStructureCreateInfoKHR
Creates aVkAccelerationStructureCreateInfoKHRinstance at the current position of the specifiedByteBuffercontainer. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Details
-
sizeof
public int sizeof()- Specified by:
sizeofin classorg.lwjgl.system.Struct<VkAccelerationStructureCreateInfoKHR>
-
sType
public int sType()aVkStructureTypevalue identifying this structure. -
pNext
public long pNext()NULLor a pointer to a structure extending this structure. -
createFlags
public int createFlags()a bitmask ofVkAccelerationStructureCreateFlagBitsKHRspecifying additional creation parameters of the acceleration structure. -
buffer
public long buffer()the buffer on which the acceleration structure will be stored. -
offset
public long offset()an offset in bytes from the base address of the buffer at which the acceleration structure will be stored, and must be a multiple of 256. -
size
public long size()the size required for the acceleration structure. -
type
public int type()aVkAccelerationStructureTypeKHRvalue specifying the type of acceleration structure that will be created. -
deviceAddress
public long deviceAddress()the device address requested for the acceleration structure if theaccelerationStructureCaptureReplayfeature is being used. IfdeviceAddressis zero, no specific address is requested. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHRvalue to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
pNext
Prepends the specifiedVkAccelerationStructureMotionInfoNVvalue to thepNextchain. -
pNext
Prepends the specifiedVkOpaqueCaptureDescriptorDataCreateInfoEXTvalue to thepNextchain. -
createFlags
Sets the specified value to thecreateFlags()field. -
buffer
Sets the specified value to thebuffer()field. -
offset
Sets the specified value to theoffset()field. -
size
Sets the specified value to thesize()field. -
type
Sets the specified value to thetype()field. -
deviceAddress
Sets the specified value to thedeviceAddress()field. -
set
public VkAccelerationStructureCreateInfoKHR set(int sType, long pNext, int createFlags, long buffer, long offset, long size, int type, long deviceAddress) Initializes this struct with the specified values. -
set
Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated withBufferUtils. -
create
Returns a newVkAccelerationStructureCreateInfoKHRinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkAccelerationStructureCreateInfoKHR.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
public static @Nullable VkAccelerationStructureCreateInfoKHR.Buffer createSafe(long address, int capacity) -
malloc
Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkAccelerationStructureCreateInfoKHRinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static VkAccelerationStructureCreateInfoKHR.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static VkAccelerationStructureCreateInfoKHR.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAccelerationStructureCreateInfoKHR.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
nsType
public static int nsType(long struct) Unsafe version ofsType(). -
npNext
public static long npNext(long struct) Unsafe version ofpNext(). -
ncreateFlags
public static int ncreateFlags(long struct) Unsafe version ofcreateFlags(). -
nbuffer
public static long nbuffer(long struct) Unsafe version ofbuffer(). -
noffset
public static long noffset(long struct) Unsafe version ofoffset(). -
nsize
public static long nsize(long struct) Unsafe version ofsize(). -
ntype
public static int ntype(long struct) Unsafe version oftype(). -
ndeviceAddress
public static long ndeviceAddress(long struct) Unsafe version ofdeviceAddress(). -
nsType
public static void nsType(long struct, int value) Unsafe version ofsType. -
npNext
public static void npNext(long struct, long value) Unsafe version ofpNext. -
ncreateFlags
public static void ncreateFlags(long struct, int value) Unsafe version ofcreateFlags. -
nbuffer
public static void nbuffer(long struct, long value) Unsafe version ofbuffer. -
noffset
public static void noffset(long struct, long value) Unsafe version ofoffset. -
nsize
public static void nsize(long struct, long value) Unsafe version ofsize. -
ntype
public static void ntype(long struct, int value) Unsafe version oftype. -
ndeviceAddress
public static void ndeviceAddress(long struct, long value) Unsafe version ofdeviceAddress.
-