Class 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 or baseArrayLayer, it can set levelCount and layerCount to the special values REMAINING_MIP_LEVELS and REMAINING_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 is layerCount / 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 in layerCount or implied by REMAINING_ARRAY_LAYERS, is not a multiple of 6, the last cube map in the array must not be accessed.

    aspectMask must be only IMAGE_ASPECT_COLOR_BIT, IMAGE_ASPECT_DEPTH_BIT or IMAGE_ASPECT_STENCIL_BIT if format is a color, depth-only or stencil-only format, respectively, except if format is a multi-planar format. If using a depth/stencil format with both depth and stencil components, aspectMask must include at least one of IMAGE_ASPECT_DEPTH_BIT and IMAGE_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 with IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR, baseArrayLayer and layerCount 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, the aspectMask is ignored and both depth and stencil image subresources are used.

    The components member is of type VkComponentMapping, 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 any VkImageView 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, the aspectMask of a subresourceRange used by the VkImageView must be IMAGE_ASPECT_COLOR_BIT.

    When creating a VkImageView, if sampler Y'CBCR conversion is not enabled in the sampler and the image format is multi-planar, the image must have been created with IMAGE_CREATE_MUTABLE_FORMAT_BIT, and the aspectMask of the VkImageView's subresourceRange must be IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT or IMAGE_ASPECT_PLANE_2_BIT.

    Valid Usage
    Valid Usage (Implicit)
    • aspectMask must be a valid combination of VkImageAspectFlagBits values
    • aspectMask must not be 0
    See Also

    VkImageMemoryBarrier, VkImageViewCreateInfo, CmdClearColorImage, CmdClearDepthStencilImage

    Member documentation

    • aspectMask – a bitmask of VkImageAspectFlagBits 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 from baseMipLevel) accessible to the view.
    • baseArrayLayer – the first array layer accessible to the view.
    • layerCount – the number of array layers (starting from baseArrayLayer) accessible to the view.

    Layout

    
     struct VkImageSubresourceRange {
         VkImageAspectFlags aspectMask;
         uint32_t baseMipLevel;
         uint32_t levelCount;
         uint32_t baseArrayLayer;
         uint32_t layerCount;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • ASPECTMASK, BASEMIPLEVEL, LEVELCOUNT, BASEARRAYLAYER, LAYERCOUNT

        The struct member offsets.
    • Constructor Detail

      • VkImageSubresourceRange

        public VkImageSubresourceRange​(java.nio.ByteBuffer container)
        Creates a VkImageSubresourceRange instance at the current position of the specified ByteBuffer 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 class org.lwjgl.system.Struct
      • aspectMask

        public int aspectMask()
        Returns the value of the aspectMask field.
      • baseMipLevel

        public int baseMipLevel()
        Returns the value of the baseMipLevel field.
      • levelCount

        public int levelCount()
        Returns the value of the levelCount field.
      • baseArrayLayer

        public int baseArrayLayer()
        Returns the value of the baseArrayLayer field.
      • layerCount

        public int layerCount()
        Returns the value of the layerCount field.
      • aspectMask

        public VkImageSubresourceRange aspectMask​(int value)
        Sets the specified value to the aspectMask field.
      • baseMipLevel

        public VkImageSubresourceRange baseMipLevel​(int value)
        Sets the specified value to the baseMipLevel field.
      • levelCount

        public VkImageSubresourceRange levelCount​(int value)
        Sets the specified value to the levelCount field.
      • baseArrayLayer

        public VkImageSubresourceRange baseArrayLayer​(int value)
        Sets the specified value to the baseArrayLayer field.
      • layerCount

        public VkImageSubresourceRange layerCount​(int value)
        Sets the specified value to the layerCount field.
      • set

        public VkImageSubresourceRange set​(int aspectMask,
                                           int baseMipLevel,
                                           int levelCount,
                                           int baseArrayLayer,
                                           int layerCount)
        Initializes this struct with the specified values.
      • malloc

        public static VkImageSubresourceRange malloc()
        Returns a new VkImageSubresourceRange instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static VkImageSubresourceRange calloc()
        Returns a new VkImageSubresourceRange instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static VkImageSubresourceRange create()
        Returns a new VkImageSubresourceRange instance allocated with BufferUtils.
      • create

        public static VkImageSubresourceRange create​(long address)
        Returns a new VkImageSubresourceRange instance for the specified memory address.
      • mallocStack

        public static VkImageSubresourceRange mallocStack()
        Returns a new VkImageSubresourceRange instance allocated on the thread-local MemoryStack.
      • callocStack

        public static VkImageSubresourceRange callocStack()
        Returns a new VkImageSubresourceRange instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
      • mallocStack

        public static VkImageSubresourceRange mallocStack​(org.lwjgl.system.MemoryStack stack)
        Returns a new VkImageSubresourceRange instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • callocStack

        public static VkImageSubresourceRange callocStack​(org.lwjgl.system.MemoryStack stack)
        Returns a new VkImageSubresourceRange instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • mallocStack

        public static VkImageSubresourceRange.Buffer mallocStack​(int capacity,
                                                                 org.lwjgl.system.MemoryStack stack)
        Returns a new VkImageSubresourceRange.Buffer instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • callocStack

        public static VkImageSubresourceRange.Buffer callocStack​(int capacity,
                                                                 org.lwjgl.system.MemoryStack stack)
        Returns a new VkImageSubresourceRange.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • naspectMask

        public static int naspectMask​(long struct)
        Unsafe version of aspectMask().
      • nbaseMipLevel

        public static int nbaseMipLevel​(long struct)
        Unsafe version of baseMipLevel().
      • nlevelCount

        public static int nlevelCount​(long struct)
        Unsafe version of levelCount().
      • nbaseArrayLayer

        public static int nbaseArrayLayer​(long struct)
        Unsafe version of baseArrayLayer().
      • nlayerCount

        public static int nlayerCount​(long struct)
        Unsafe version of layerCount().
      • naspectMask

        public static void naspectMask​(long struct,
                                       int value)
        Unsafe version of aspectMask.
      • nbaseMipLevel

        public static void nbaseMipLevel​(long struct,
                                         int value)
        Unsafe version of baseMipLevel.
      • nlevelCount

        public static void nlevelCount​(long struct,
                                       int value)
        Unsafe version of levelCount.
      • nbaseArrayLayer

        public static void nbaseArrayLayer​(long struct,
                                           int value)
        Unsafe version of baseArrayLayer.
      • nlayerCount

        public static void nlayerCount​(long struct,
                                       int value)
        Unsafe version of layerCount.