Class VkImageSubresourceRange
- java.lang.Object
-
- org.lwjgl.system.Pointer.Default
-
- org.lwjgl.system.Struct
-
- org.lwjgl.vulkan.VkImageSubresourceRange
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,org.lwjgl.system.NativeResource
,org.lwjgl.system.Pointer
public class VkImageSubresourceRange extends org.lwjgl.system.Struct implements org.lwjgl.system.NativeResource
Structure specifying an image subresource range.Description
The number of mipmap levels and array layers must be a subset of the image subresources in the image. If an application wants to use all mip levels or layers in an image after the
baseMipLevel
orbaseArrayLayer
, it can setlevelCount
andlayerCount
to the special valuesREMAINING_MIP_LEVELS
andREMAINING_ARRAY_LAYERS
without knowing the exact number of mip levels or layers.For cube and cube array image views, the layers of the image view starting at
baseArrayLayer
correspond to faces in the order +X, -X, +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a single cube, so the number of cube maps in a cube map array view islayerCount
/ 6, and image array layer(baseArrayLayer + i)
is face index(i mod 6)
of cube i / 6. If the number of layers in the view, whether set explicitly inlayerCount
or implied byREMAINING_ARRAY_LAYERS
, is not a multiple of 6, the last cube map in the array must not be accessed.aspectMask
must be onlyIMAGE_ASPECT_COLOR_BIT
,IMAGE_ASPECT_DEPTH_BIT
orIMAGE_ASPECT_STENCIL_BIT
ifformat
is a color, depth-only or stencil-only format, respectively, except ifformat
is a multi-planar format. If using a depth/stencil format with both depth and stencil components,aspectMask
must include at least one ofIMAGE_ASPECT_DEPTH_BIT
andIMAGE_ASPECT_STENCIL_BIT
, and can include both.When the
VkImageSubresourceRange
structure is used to select a subset of the slices of a 3D image's mip level in order to create a 2D or 2D array image view of a 3D image created withIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
,baseArrayLayer
andlayerCount
specify the first slice index and the number of slices to include in the created image view. Such an image view can be used as a framebuffer attachment that refers only to the specified range of slices of the selected mip level. However, any layout transitions performed on such an attachment view during a render pass instance still apply to the entire subresource referenced which includes all the slices of the selected mip level.When using an image view of a depth/stencil image to populate a descriptor set (e.g. for sampling in the shader, or for use as an input attachment), the
aspectMask
must only include one bit and selects whether the image view is used for depth reads (i.e. using a floating-point sampler or input attachment in the shader) or stencil reads (i.e. using an unsigned integer sampler or input attachment in the shader). When an image view of a depth/stencil image is used as a depth/stencil framebuffer attachment, theaspectMask
is ignored and both depth and stencil image subresources are used.The
components
member is of typeVkComponentMapping
, and describes a remapping from components of the image to components of the vector returned by shader image instructions. This remapping must be identity for storage image descriptors, input attachment descriptors, framebuffer attachments, and anyVkImageView
used with a combined image sampler that enables sampler Y'CBCR conversion.When creating a
VkImageView
, if sampler Y'CBCR conversion is enabled in the sampler, theaspectMask
of asubresourceRange
used by theVkImageView
must beIMAGE_ASPECT_COLOR_BIT
.When creating a
VkImageView
, if sampler Y'CBCR conversion is not enabled in the sampler and the imageformat
is multi-planar, the image must have been created withIMAGE_CREATE_MUTABLE_FORMAT_BIT
, and theaspectMask
of theVkImageView
'ssubresourceRange
must beIMAGE_ASPECT_PLANE_0_BIT
,IMAGE_ASPECT_PLANE_1_BIT
orIMAGE_ASPECT_PLANE_2_BIT
.Valid Usage
- If
levelCount
is notREMAINING_MIP_LEVELS
, it must be greater than 0 - If
layerCount
is notREMAINING_ARRAY_LAYERS
, it must be greater than 0 - If
aspectMask
includesIMAGE_ASPECT_COLOR_BIT
, then it must not include any ofIMAGE_ASPECT_PLANE_0_BIT
,IMAGE_ASPECT_PLANE_1_BIT
, orIMAGE_ASPECT_PLANE_2_BIT
aspectMask
must not includeVK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
for any indexi
.
Valid Usage (Implicit)
aspectMask
must be a valid combination ofVkImageAspectFlagBits
valuesaspectMask
must not be 0
See Also
VkImageMemoryBarrier
,VkImageViewCreateInfo
,CmdClearColorImage
,CmdClearDepthStencilImage
Member documentation
aspectMask
– a bitmask ofVkImageAspectFlagBits
specifying which aspect(s) of the image are included in the view.baseMipLevel
– the first mipmap level accessible to the view.levelCount
– the number of mipmap levels (starting frombaseMipLevel
) accessible to the view.baseArrayLayer
– the first array layer accessible to the view.layerCount
– the number of array layers (starting frombaseArrayLayer
) accessible to the view.
Layout
struct VkImageSubresourceRange { VkImageAspectFlags aspectMask; uint32_t baseMipLevel; uint32_t levelCount; uint32_t baseArrayLayer; uint32_t layerCount; }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
VkImageSubresourceRange.Buffer
An array ofVkImageSubresourceRange
structs.
-
Field Summary
Fields Modifier and Type Field Description static int
ALIGNOF
The struct alignment in bytes.static int
ASPECTMASK
BASEARRAYLAYER
BASEMIPLEVEL
LAYERCOUNT
LEVELCOUNTThe struct member offsets.static int
SIZEOF
The struct size in bytes.
-
Constructor Summary
Constructors Constructor Description VkImageSubresourceRange(java.nio.ByteBuffer container)
Creates aVkImageSubresourceRange
instance at the current position of the specifiedByteBuffer
container.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
aspectMask()
Returns the value of theaspectMask
field.VkImageSubresourceRange
aspectMask(int value)
Sets the specified value to theaspectMask
field.int
baseArrayLayer()
Returns the value of thebaseArrayLayer
field.VkImageSubresourceRange
baseArrayLayer(int value)
Sets the specified value to thebaseArrayLayer
field.int
baseMipLevel()
Returns the value of thebaseMipLevel
field.VkImageSubresourceRange
baseMipLevel(int value)
Sets the specified value to thebaseMipLevel
field.static VkImageSubresourceRange
calloc()
Returns a newVkImageSubresourceRange
instance allocated withmemCalloc
.static VkImageSubresourceRange.Buffer
calloc(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withmemCalloc
.static VkImageSubresourceRange
callocStack()
Returns a newVkImageSubresourceRange
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkImageSubresourceRange.Buffer
callocStack(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkImageSubresourceRange.Buffer
callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkImageSubresourceRange
callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkImageSubresourceRange
create()
Returns a newVkImageSubresourceRange
instance allocated withBufferUtils
.static VkImageSubresourceRange.Buffer
create(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withBufferUtils
.static VkImageSubresourceRange
create(long address)
Returns a newVkImageSubresourceRange
instance for the specified memory address.static VkImageSubresourceRange.Buffer
create(long address, int capacity)
Create aVkImageSubresourceRange.Buffer
instance at the specified memory.static VkImageSubresourceRange
createSafe(long address)
static VkImageSubresourceRange.Buffer
createSafe(long address, int capacity)
int
layerCount()
Returns the value of thelayerCount
field.VkImageSubresourceRange
layerCount(int value)
Sets the specified value to thelayerCount
field.int
levelCount()
Returns the value of thelevelCount
field.VkImageSubresourceRange
levelCount(int value)
Sets the specified value to thelevelCount
field.static VkImageSubresourceRange
malloc()
Returns a newVkImageSubresourceRange
instance allocated withmemAlloc
.static VkImageSubresourceRange.Buffer
malloc(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withmemAlloc
.static VkImageSubresourceRange
mallocStack()
Returns a newVkImageSubresourceRange
instance allocated on the thread-localMemoryStack
.static VkImageSubresourceRange.Buffer
mallocStack(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the thread-localMemoryStack
.static VkImageSubresourceRange.Buffer
mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the specifiedMemoryStack
.static VkImageSubresourceRange
mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange
instance allocated on the specifiedMemoryStack
.static int
naspectMask(long struct)
Unsafe version ofaspectMask()
.static void
naspectMask(long struct, int value)
Unsafe version ofaspectMask
.static int
nbaseArrayLayer(long struct)
Unsafe version ofbaseArrayLayer()
.static void
nbaseArrayLayer(long struct, int value)
Unsafe version ofbaseArrayLayer
.static int
nbaseMipLevel(long struct)
Unsafe version ofbaseMipLevel()
.static void
nbaseMipLevel(long struct, int value)
Unsafe version ofbaseMipLevel
.static int
nlayerCount(long struct)
Unsafe version oflayerCount()
.static void
nlayerCount(long struct, int value)
Unsafe version oflayerCount
.static int
nlevelCount(long struct)
Unsafe version oflevelCount()
.static void
nlevelCount(long struct, int value)
Unsafe version oflevelCount
.VkImageSubresourceRange
set(int aspectMask, int baseMipLevel, int levelCount, int baseArrayLayer, int layerCount)
Initializes this struct with the specified values.VkImageSubresourceRange
set(VkImageSubresourceRange src)
Copies the specified struct data to this struct.int
sizeof()
-
-
-
Constructor Detail
-
VkImageSubresourceRange
public VkImageSubresourceRange(java.nio.ByteBuffer container)
Creates aVkImageSubresourceRange
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
-
aspectMask
public int aspectMask()
Returns the value of theaspectMask
field.
-
baseMipLevel
public int baseMipLevel()
Returns the value of thebaseMipLevel
field.
-
levelCount
public int levelCount()
Returns the value of thelevelCount
field.
-
baseArrayLayer
public int baseArrayLayer()
Returns the value of thebaseArrayLayer
field.
-
layerCount
public int layerCount()
Returns the value of thelayerCount
field.
-
aspectMask
public VkImageSubresourceRange aspectMask(int value)
Sets the specified value to theaspectMask
field.
-
baseMipLevel
public VkImageSubresourceRange baseMipLevel(int value)
Sets the specified value to thebaseMipLevel
field.
-
levelCount
public VkImageSubresourceRange levelCount(int value)
Sets the specified value to thelevelCount
field.
-
baseArrayLayer
public VkImageSubresourceRange baseArrayLayer(int value)
Sets the specified value to thebaseArrayLayer
field.
-
layerCount
public VkImageSubresourceRange layerCount(int value)
Sets the specified value to thelayerCount
field.
-
set
public VkImageSubresourceRange set(int aspectMask, int baseMipLevel, int levelCount, int baseArrayLayer, int layerCount)
Initializes this struct with the specified values.
-
set
public VkImageSubresourceRange set(VkImageSubresourceRange src)
Copies the specified struct data to this struct.- Parameters:
src
- the source struct- Returns:
- this struct
-
malloc
public static VkImageSubresourceRange malloc()
Returns a newVkImageSubresourceRange
instance allocated withmemAlloc
. The instance must be explicitly freed.
-
calloc
public static VkImageSubresourceRange calloc()
Returns a newVkImageSubresourceRange
instance allocated withmemCalloc
. The instance must be explicitly freed.
-
create
public static VkImageSubresourceRange create()
Returns a newVkImageSubresourceRange
instance allocated withBufferUtils
.
-
create
public static VkImageSubresourceRange create(long address)
Returns a newVkImageSubresourceRange
instance for the specified memory address.
-
createSafe
@Nullable public static VkImageSubresourceRange createSafe(long address)
-
malloc
public static VkImageSubresourceRange.Buffer malloc(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
public static VkImageSubresourceRange.Buffer calloc(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
public static VkImageSubresourceRange.Buffer create(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
public static VkImageSubresourceRange.Buffer create(long address, int capacity)
Create aVkImageSubresourceRange.Buffer
instance at the specified memory.- Parameters:
address
- the memory addresscapacity
- the buffer capacity
-
createSafe
@Nullable public static VkImageSubresourceRange.Buffer createSafe(long address, int capacity)
-
mallocStack
public static VkImageSubresourceRange mallocStack()
Returns a newVkImageSubresourceRange
instance allocated on the thread-localMemoryStack
.
-
callocStack
public static VkImageSubresourceRange callocStack()
Returns a newVkImageSubresourceRange
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.
-
mallocStack
public static VkImageSubresourceRange mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
callocStack
public static VkImageSubresourceRange callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
mallocStack
public static VkImageSubresourceRange.Buffer mallocStack(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the thread-localMemoryStack
.- Parameters:
capacity
- the buffer capacity
-
callocStack
public static VkImageSubresourceRange.Buffer callocStack(int capacity)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.- Parameters:
capacity
- the buffer capacity
-
mallocStack
public static VkImageSubresourceRange.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
callocStack
public static VkImageSubresourceRange.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkImageSubresourceRange.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
naspectMask
public static int naspectMask(long struct)
Unsafe version ofaspectMask()
.
-
nbaseMipLevel
public static int nbaseMipLevel(long struct)
Unsafe version ofbaseMipLevel()
.
-
nlevelCount
public static int nlevelCount(long struct)
Unsafe version oflevelCount()
.
-
nbaseArrayLayer
public static int nbaseArrayLayer(long struct)
Unsafe version ofbaseArrayLayer()
.
-
nlayerCount
public static int nlayerCount(long struct)
Unsafe version oflayerCount()
.
-
naspectMask
public static void naspectMask(long struct, int value)
Unsafe version ofaspectMask
.
-
nbaseMipLevel
public static void nbaseMipLevel(long struct, int value)
Unsafe version ofbaseMipLevel
.
-
nlevelCount
public static void nlevelCount(long struct, int value)
Unsafe version oflevelCount
.
-
nbaseArrayLayer
public static void nbaseArrayLayer(long struct, int value)
Unsafe version ofbaseArrayLayer
.
-
nlayerCount
public static void nlayerCount(long struct, int value)
Unsafe version oflayerCount
.
-
-