Class VkSubresourceLayout
- All Implemented Interfaces:
AutoCloseable
,NativeResource
,Pointer
Description
If the image is linear, then rowPitch
, arrayPitch
and depthPitch
describe the layout of the image subresource in linear memory. For uncompressed formats, rowPitch
is the number of bytes between texels with the same x coordinate in adjacent rows (y coordinates differ by one). arrayPitch
is the number of bytes between texels with the same x and y coordinate in adjacent array layers of the image (array layer values differ by one). depthPitch
is the number of bytes between texels with the same x and y coordinate in adjacent slices of a 3D image (z coordinates differ by one). Expressed as an addressing formula, the starting byte of a texel in the image subresource has address:
// (x,y,z,layer) are in texel coordinates
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
For compressed formats, the rowPitch
is the number of bytes between compressed texel blocks in adjacent rows. arrayPitch
is the number of bytes between compressed texel blocks in adjacent array layers. depthPitch
is the number of bytes between compressed texel blocks in adjacent slices of a 3D image.
// (x,y,z,layer) are in compressed texel block coordinates
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
The value of arrayPitch
is undefined for images that were not created as arrays. depthPitch
is defined only for 3D images.
If the image has a single-plane color format and its tiling is IMAGE_TILING_LINEAR
, then the aspectMask
member of VkImageSubresource
must be IMAGE_ASPECT_COLOR_BIT
.
If the image has a depth/stencil format and its tiling is IMAGE_TILING_LINEAR
, then aspectMask
must be either IMAGE_ASPECT_DEPTH_BIT
or IMAGE_ASPECT_STENCIL_BIT
. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different offset
and size
representing the region of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the same offset
and size
are returned and represent the interleaved memory allocation.
If the image has a multi-planar format and its tiling is IMAGE_TILING_LINEAR
, then the aspectMask
member of VkImageSubresource
must be IMAGE_ASPECT_PLANE_0_BIT
, IMAGE_ASPECT_PLANE_1_BIT
, or (for 3-plane formats only) IMAGE_ASPECT_PLANE_2_BIT
. Querying each of these image subresource layouts will return a different offset
and size
representing the region of memory used for that plane. If the image is disjoint, then the offset
is relative to the base address of the plane. If the image is non-disjoint, then the offset
is relative to the base address of the image.
If the image’s tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the aspectMask
member of VkImageSubresource
must be one of VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
, where the maximum allowed plane index i is defined by the VkDrmFormatModifierPropertiesEXT
::drmFormatModifierPlaneCount
associated with the image’s VkImageCreateInfo
::format
and modifier. The memory range used by the subresource is described by offset
and size
. If the image is disjoint, then the offset
is relative to the base address of the memory plane. If the image is non-disjoint, then the offset
is relative to the base address of the image. If the image is non-linear, then rowPitch
, arrayPitch
, and depthPitch
have an implementation-dependent meaning.
See Also
VkImageDrmFormatModifierExplicitCreateInfoEXT
, VkSubresourceLayout2KHR
, GetImageSubresourceLayout
Layout
struct VkSubresourceLayout {
VkDeviceSize offset()
;
VkDeviceSize size()
;
VkDeviceSize rowPitch()
;
VkDeviceSize arrayPitch()
;
VkDeviceSize depthPitch()
;
}
-
Nested Class Summary
Nested classes/interfaces inherited from class org.lwjgl.system.Struct
Struct.StructValidation
Nested classes/interfaces inherited from interface org.lwjgl.system.Pointer
Pointer.Default
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The struct alignment in bytes.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct size in bytes.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE
-
Constructor Summary
ConstructorDescriptionVkSubresourceLayout
(ByteBuffer container) Creates aVkSubresourceLayout
instance at the current position of the specifiedByteBuffer
container. -
Method Summary
Modifier and TypeMethodDescriptionlong
describes the number of bytes between each array layer of an image.arrayPitch
(long value) Sets the specified value to thearrayPitch()
field.static VkSubresourceLayout
calloc()
Returns a newVkSubresourceLayout
instance allocated withmemCalloc
.static VkSubresourceLayout.Buffer
calloc
(int capacity) Returns a newVkSubresourceLayout.Buffer
instance allocated withmemCalloc
.static VkSubresourceLayout.Buffer
calloc
(int capacity, MemoryStack stack) Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkSubresourceLayout
calloc
(MemoryStack stack) Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkSubresourceLayout
Deprecated.static VkSubresourceLayout.Buffer
callocStack
(int capacity) Deprecated.static VkSubresourceLayout.Buffer
callocStack
(int capacity, MemoryStack stack) Deprecated.static VkSubresourceLayout
callocStack
(MemoryStack stack) Deprecated.static VkSubresourceLayout
create()
Returns a newVkSubresourceLayout
instance allocated withBufferUtils
.static VkSubresourceLayout.Buffer
create
(int capacity) Returns a newVkSubresourceLayout.Buffer
instance allocated withBufferUtils
.static VkSubresourceLayout
create
(long address) Returns a newVkSubresourceLayout
instance for the specified memory address.static VkSubresourceLayout.Buffer
create
(long address, int capacity) Create aVkSubresourceLayout.Buffer
instance at the specified memory.static VkSubresourceLayout
createSafe
(long address) static VkSubresourceLayout.Buffer
createSafe
(long address, int capacity) long
describes the number of bytes between each slice of 3D image.depthPitch
(long value) Sets the specified value to thedepthPitch()
field.static VkSubresourceLayout
malloc()
Returns a newVkSubresourceLayout
instance allocated withmemAlloc
.static VkSubresourceLayout.Buffer
malloc
(int capacity) Returns a newVkSubresourceLayout.Buffer
instance allocated withmemAlloc
.static VkSubresourceLayout.Buffer
malloc
(int capacity, MemoryStack stack) Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
.static VkSubresourceLayout
malloc
(MemoryStack stack) Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
.static VkSubresourceLayout
Deprecated.static VkSubresourceLayout.Buffer
mallocStack
(int capacity) Deprecated.static VkSubresourceLayout.Buffer
mallocStack
(int capacity, MemoryStack stack) Deprecated.static VkSubresourceLayout
mallocStack
(MemoryStack stack) Deprecated.static long
narrayPitch
(long struct) Unsafe version ofarrayPitch()
.static void
narrayPitch
(long struct, long value) Unsafe version ofarrayPitch
.static long
ndepthPitch
(long struct) Unsafe version ofdepthPitch()
.static void
ndepthPitch
(long struct, long value) Unsafe version ofdepthPitch
.static long
noffset
(long struct) Unsafe version ofoffset()
.static void
noffset
(long struct, long value) Unsafe version ofoffset
.static long
nrowPitch
(long struct) Unsafe version ofrowPitch()
.static void
nrowPitch
(long struct, long value) Unsafe version ofrowPitch
.static long
nsize
(long struct) Unsafe version ofsize()
.static void
nsize
(long struct, long value) Unsafe version ofsize
.long
offset()
the byte offset from the start of the image or the plane where the image subresource begins.offset
(long value) Sets the specified value to theoffset()
field.long
rowPitch()
describes the number of bytes between each row of texels in an image.rowPitch
(long value) Sets the specified value to therowPitch()
field.set
(long offset, long size, long rowPitch, long arrayPitch, long depthPitch) Initializes this struct with the specified values.set
(VkSubresourceLayout src) Copies the specified struct data to this struct.long
size()
the size in bytes of the image subresource.size
(long value) Sets the specified value to thesize()
field.int
sizeof()
Returnssizeof(struct)
.Methods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toString
Methods 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. -
OFFSET
public static final int OFFSETThe struct member offsets. -
SIZE
public static final int SIZEThe struct member offsets. -
ROWPITCH
public static final int ROWPITCHThe struct member offsets. -
ARRAYPITCH
public static final int ARRAYPITCHThe struct member offsets. -
DEPTHPITCH
public static final int DEPTHPITCHThe struct member offsets.
-
-
Constructor Details
-
VkSubresourceLayout
Creates aVkSubresourceLayout
instance at the current position of the specifiedByteBuffer
container. 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()Description copied from class:Struct
Returnssizeof(struct)
.- Specified by:
sizeof
in classStruct<VkSubresourceLayout>
-
offset
public long offset()the byte offset from the start of the image or the plane where the image subresource begins. -
size
public long size()the size in bytes of the image subresource.size
includes any extra memory that is required based onrowPitch
. -
rowPitch
public long rowPitch()describes the number of bytes between each row of texels in an image. -
arrayPitch
public long arrayPitch()describes the number of bytes between each array layer of an image. -
depthPitch
public long depthPitch()describes the number of bytes between each slice of 3D image. -
offset
Sets the specified value to theoffset()
field. -
size
Sets the specified value to thesize()
field. -
rowPitch
Sets the specified value to therowPitch()
field. -
arrayPitch
Sets the specified value to thearrayPitch()
field. -
depthPitch
Sets the specified value to thedepthPitch()
field. -
set
public VkSubresourceLayout set(long offset, long size, long rowPitch, long arrayPitch, long depthPitch) 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 newVkSubresourceLayout
instance allocated withmemAlloc
. The instance must be explicitly freed. -
calloc
Returns a newVkSubresourceLayout
instance allocated withmemCalloc
. The instance must be explicitly freed. -
create
Returns a newVkSubresourceLayout
instance allocated withBufferUtils
. -
create
Returns a newVkSubresourceLayout
instance for the specified memory address. -
createSafe
-
malloc
Returns a newVkSubresourceLayout.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
Returns a newVkSubresourceLayout.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
Returns a newVkSubresourceLayout.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
Create aVkSubresourceLayout.Buffer
instance at the specified memory.- Parameters:
address
- the memory addresscapacity
- the buffer capacity
-
createSafe
-
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(MemoryStack)
instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(MemoryStack)
instead. -
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(MemoryStack)
instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(MemoryStack)
instead. -
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(int, MemoryStack)
instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)
instead. -
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(int, MemoryStack)
instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)
instead. -
malloc
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
calloc
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
malloc
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
capacity
- the buffer capacitystack
- the stack from which to allocate
-
calloc
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
capacity
- the buffer capacitystack
- the stack from which to allocate
-
noffset
public static long noffset(long struct) Unsafe version ofoffset()
. -
nsize
public static long nsize(long struct) Unsafe version ofsize()
. -
nrowPitch
public static long nrowPitch(long struct) Unsafe version ofrowPitch()
. -
narrayPitch
public static long narrayPitch(long struct) Unsafe version ofarrayPitch()
. -
ndepthPitch
public static long ndepthPitch(long struct) Unsafe version ofdepthPitch()
. -
noffset
public static void noffset(long struct, long value) Unsafe version ofoffset
. -
nsize
public static void nsize(long struct, long value) Unsafe version ofsize
. -
nrowPitch
public static void nrowPitch(long struct, long value) Unsafe version ofrowPitch
. -
narrayPitch
public static void narrayPitch(long struct, long value) Unsafe version ofarrayPitch
. -
ndepthPitch
public static void ndepthPitch(long struct, long value) Unsafe version ofdepthPitch
.
-