Class VkMicromapCreateInfoEXT
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
If deviceAddress is zero, no specific address is requested.
If deviceAddress is not zero, deviceAddress must be an address retrieved from an identically created micromap on the same implementation. The micromap must also be placed on an identically created buffer and at the same offset.
Applications should avoid creating micromaps 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 a micromap 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.
If the micromap will be the target of a build operation, the required size for a micromap can be queried with GetMicromapBuildSizesEXT.
Valid Usage
- If
deviceAddressis not zero,createFlagsmust includeMICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT - If
createFlagsincludesMICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,VkPhysicalDeviceOpacityMicromapFeaturesEXT::micromapCaptureReplaymust beTRUE buffermust have been created with ausagevalue containingBUFFER_USAGE_MICROMAP_STORAGE_BIT_EXTbuffermust 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
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXTpNextmust beNULLcreateFlagsmust be a valid combination ofVkMicromapCreateFlagBitsEXTvaluesbuffermust be a validVkBufferhandletypemust be a validVkMicromapTypeEXTvalue
See Also
Layout
struct VkMicromapCreateInfoEXT {
VkStructureType sType();
void const * pNext();
VkMicromapCreateFlagsEXT createFlags();
VkBuffer buffer();
VkDeviceSize offset();
VkDeviceSize size();
VkMicromapTypeEXT type();
VkDeviceAddress deviceAddress();
}-
Nested Class Summary
Nested ClassesNested 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
ConstructorsConstructorDescriptionVkMicromapCreateInfoEXT(ByteBuffer container) Creates aVkMicromapCreateInfoEXTinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionlongbuffer()the buffer on which the micromap will be stored.buffer(long value) Sets the specified value to thebuffer()field.static VkMicromapCreateInfoEXTcalloc()Returns a newVkMicromapCreateInfoEXTinstance allocated withmemCalloc.calloc(int capacity) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkMicromapCreateInfoEXTcalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXTinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkMicromapCreateInfoEXTcreate()Returns a newVkMicromapCreateInfoEXTinstance allocated withBufferUtils.create(int capacity) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withBufferUtils.static VkMicromapCreateInfoEXTcreate(long address) Returns a newVkMicromapCreateInfoEXTinstance for the specified memory address.create(long address, int capacity) Create aVkMicromapCreateInfoEXT.Bufferinstance at the specified memory.inta bitmask ofVkMicromapCreateFlagBitsEXTspecifying additional creation parameters of the micromap.createFlags(int value) Sets the specified value to thecreateFlags()field.static @Nullable VkMicromapCreateInfoEXTcreateSafe(long address) static @Nullable VkMicromapCreateInfoEXT.BuffercreateSafe(long address, int capacity) longthe device address requested for the micromap if themicromapCaptureReplayfeature is being used.deviceAddress(long value) Sets the specified value to thedeviceAddress()field.static VkMicromapCreateInfoEXTmalloc()Returns a newVkMicromapCreateInfoEXTinstance allocated withmemAlloc.malloc(int capacity) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated on the specifiedMemoryStack.static VkMicromapCreateInfoEXTmalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXTinstance 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 micromap 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.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 micromap.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_MICROMAP_CREATE_INFO_EXTvalue to thesType()field.inttype()aVkMicromapTypeEXTvalue specifying the type of micromap 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
-
VkMicromapCreateInfoEXT
Creates aVkMicromapCreateInfoEXTinstance 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<VkMicromapCreateInfoEXT>
-
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 ofVkMicromapCreateFlagBitsEXTspecifying additional creation parameters of the micromap. -
buffer
public long buffer()the buffer on which the micromap will be stored. -
offset
public long offset()an offset in bytes from the base address of the buffer at which the micromap will be stored, and must be a multiple of 256. -
size
public long size()the size required for the micromap. -
type
public int type()aVkMicromapTypeEXTvalue specifying the type of micromap that will be created. -
deviceAddress
public long deviceAddress()the device address requested for the micromap if themicromapCaptureReplayfeature is being used. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXTvalue to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
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 VkMicromapCreateInfoEXT 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 newVkMicromapCreateInfoEXTinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkMicromapCreateInfoEXTinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkMicromapCreateInfoEXTinstance allocated withBufferUtils. -
create
Returns a newVkMicromapCreateInfoEXTinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkMicromapCreateInfoEXT.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
-
malloc
Returns a newVkMicromapCreateInfoEXTinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkMicromapCreateInfoEXTinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static VkMicromapCreateInfoEXT.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXT.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static VkMicromapCreateInfoEXT.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkMicromapCreateInfoEXT.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.
-