Class VkSubresourceLayout
- java.lang.Object
-
- org.lwjgl.system.Pointer.Default
-
- org.lwjgl.system.Struct
-
- org.lwjgl.vulkan.VkSubresourceLayout
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,org.lwjgl.system.NativeResource
,org.lwjgl.system.Pointer
public class VkSubresourceLayout extends org.lwjgl.system.Struct implements org.lwjgl.system.NativeResource
Structure specifying subresource layout.Description
If the image is linear, then
rowPitch
,arrayPitch
anddepthPitch
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 theaspectMask
member ofVkImageSubresource
must beIMAGE_ASPECT_COLOR_BIT
.If the image has a depth/stencil format and its tiling is
IMAGE_TILING_LINEAR
, thenaspectMask
must be eitherIMAGE_ASPECT_DEPTH_BIT
orIMAGE_ASPECT_STENCIL_BIT
. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a differentoffset
andsize
representing the region of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the sameoffset
andsize
are returned and represent the interleaved memory allocation.If the image has a multi-planar format and its tiling is
IMAGE_TILING_LINEAR
, then theaspectMask
member ofVkImageSubresource
must beIMAGE_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 differentoffset
andsize
representing the region of memory used for that plane. If the image is disjoint, then theoffset
is relative to the base address of the plane. If the image is non-disjoint, then theoffset
is relative to the base address of the image.If the image's tiling is
IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then theaspectMask
member ofVkImageSubresource
must be one ofVK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
, where the maximum allowed plane indexi
is defined by thedrmFormatModifierPlaneCount
associated with the image'sformat
and modifier. The memory range used by the subresource is described byoffset
andsize
. If the image is disjoint, then theoffset
is relative to the base address of the memory plane. If the image is non-disjoint, then theoffset
is relative to the base address of the image. If the image is non-linear, thenrowPitch
,arrayPitch
, anddepthPitch
have an implementation-dependent meaning.See Also
VkImageDrmFormatModifierExplicitCreateInfoEXT
,GetImageSubresourceLayout
Member documentation
offset
– the byte offset from the start of the image or the plane where the image subresource begins.size
– the size in bytes of the image subresource.size
includes any extra memory that is required based onrowPitch
.rowPitch
– describes the number of bytes between each row of texels in an image.arrayPitch
– describes the number of bytes between each array layer of an image.depthPitch
– describes the number of bytes between each slice of 3D image.
Layout
struct VkSubresourceLayout { VkDeviceSize offset; VkDeviceSize size; VkDeviceSize rowPitch; VkDeviceSize arrayPitch; VkDeviceSize depthPitch; }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
VkSubresourceLayout.Buffer
An array ofVkSubresourceLayout
structs.
-
Field Summary
Fields Modifier and Type Field Description static int
ALIGNOF
The struct alignment in bytes.static int
ARRAYPITCH
DEPTHPITCH
OFFSET
ROWPITCH
SIZEThe struct member offsets.static int
SIZEOF
The struct size in bytes.
-
Constructor Summary
Constructors Constructor Description VkSubresourceLayout(java.nio.ByteBuffer container)
Creates aVkSubresourceLayout
instance at the current position of the specifiedByteBuffer
container.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description long
arrayPitch()
Returns the value of 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
callocStack()
Returns a newVkSubresourceLayout
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkSubresourceLayout.Buffer
callocStack(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkSubresourceLayout.Buffer
callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkSubresourceLayout
callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.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
depthPitch()
Returns the value of 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
mallocStack()
Returns a newVkSubresourceLayout
instance allocated on the thread-localMemoryStack
.static VkSubresourceLayout.Buffer
mallocStack(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the thread-localMemoryStack
.static VkSubresourceLayout.Buffer
mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
.static VkSubresourceLayout
mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
.static long
narrayPitch(long struct)
Unsafe version ofarrayPitch()
.static long
ndepthPitch(long struct)
Unsafe version ofdepthPitch()
.static long
noffset(long struct)
Unsafe version ofoffset()
.static long
nrowPitch(long struct)
Unsafe version ofrowPitch()
.static long
nsize(long struct)
Unsafe version ofsize()
.long
offset()
Returns the value of theoffset
field.long
rowPitch()
Returns the value of therowPitch
field.long
size()
Returns the value of thesize
field.int
sizeof()
-
-
-
Constructor Detail
-
VkSubresourceLayout
public VkSubresourceLayout(java.nio.ByteBuffer container)
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 Detail
-
sizeof
public int sizeof()
- Specified by:
sizeof
in classorg.lwjgl.system.Struct
-
offset
public long offset()
Returns the value of theoffset
field.
-
size
public long size()
Returns the value of thesize
field.
-
rowPitch
public long rowPitch()
Returns the value of therowPitch
field.
-
arrayPitch
public long arrayPitch()
Returns the value of thearrayPitch
field.
-
depthPitch
public long depthPitch()
Returns the value of thedepthPitch
field.
-
malloc
public static VkSubresourceLayout malloc()
Returns a newVkSubresourceLayout
instance allocated withmemAlloc
. The instance must be explicitly freed.
-
calloc
public static VkSubresourceLayout calloc()
Returns a newVkSubresourceLayout
instance allocated withmemCalloc
. The instance must be explicitly freed.
-
create
public static VkSubresourceLayout create()
Returns a newVkSubresourceLayout
instance allocated withBufferUtils
.
-
create
public static VkSubresourceLayout create(long address)
Returns a newVkSubresourceLayout
instance for the specified memory address.
-
createSafe
@Nullable public static VkSubresourceLayout createSafe(long address)
-
malloc
public static VkSubresourceLayout.Buffer malloc(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
public static VkSubresourceLayout.Buffer calloc(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
public static VkSubresourceLayout.Buffer create(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
public static VkSubresourceLayout.Buffer create(long address, int capacity)
Create aVkSubresourceLayout.Buffer
instance at the specified memory.- Parameters:
address
- the memory addresscapacity
- the buffer capacity
-
createSafe
@Nullable public static VkSubresourceLayout.Buffer createSafe(long address, int capacity)
-
mallocStack
public static VkSubresourceLayout mallocStack()
Returns a newVkSubresourceLayout
instance allocated on the thread-localMemoryStack
.
-
callocStack
public static VkSubresourceLayout callocStack()
Returns a newVkSubresourceLayout
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.
-
mallocStack
public static VkSubresourceLayout mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
callocStack
public static VkSubresourceLayout callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
mallocStack
public static VkSubresourceLayout.Buffer mallocStack(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the thread-localMemoryStack
.- Parameters:
capacity
- the buffer capacity
-
callocStack
public static VkSubresourceLayout.Buffer callocStack(int capacity)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.- Parameters:
capacity
- the buffer capacity
-
mallocStack
public static VkSubresourceLayout.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
callocStack
public static VkSubresourceLayout.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubresourceLayout.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
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()
.
-
-