Class VkCopyImageInfo2

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer
    Direct Known Subclasses:
    VkCopyImageInfo2KHR

    public class VkCopyImageInfo2
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    Structure specifying parameters of an image copy command.
    Valid Usage
    • The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory
    • The format features of srcImage must contain FORMAT_FEATURE_TRANSFER_SRC_BIT
    • srcImage must have been created with IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
    • If srcImage is non-sparse then the image or disjoint plane to be copied must be bound completely and contiguously to a single VkDeviceMemory object
    • srcImageLayout must specify the layout of the image subresources of srcImage specified in pRegions at the time this command is executed on a VkDevice
    • srcImageLayout must be IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, IMAGE_LAYOUT_GENERAL, or IMAGE_LAYOUT_SHARED_PRESENT_KHR
    • The format features of dstImage must contain FORMAT_FEATURE_TRANSFER_DST_BIT
    • dstImage must have been created with IMAGE_USAGE_TRANSFER_DST_BIT usage flag
    • If dstImage is non-sparse then the image or disjoint plane that is the destination of the copy must be bound completely and contiguously to a single VkDeviceMemory object
    • dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice
    • dstImageLayout must be IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, IMAGE_LAYOUT_GENERAL, or IMAGE_LAYOUT_SHARED_PRESENT_KHR
    • If the VkFormat of each of srcImage and dstImage is not a multi-planar format, the VkFormat of each of srcImage and dstImage must be compatible, as defined above
    • In a copy to or from a plane of a multi-planar image, the VkFormat of the image and plane must be compatible according to the description of compatible planes for the plane being copied
    • The sample count of srcImage and dstImage must match
    • The srcSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when srcImage was created
    • The dstSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when dstImage was created
    • The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created
    • The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created
    • The srcOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer’s command pool’s queue family, as described in VkQueueFamilyProperties
    • The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer’s command pool’s queue family, as described in VkQueueFamilyProperties
    • dstImage and srcImage must not have been created with flags containing IMAGE_CREATE_SUBSAMPLED_BIT_EXT
    • If neither srcImage nor dstImage has a multi-planar image format then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match
    • If srcImage has a VkFormat with two planes then for each element of pRegions, srcSubresource.aspectMask must be IMAGE_ASPECT_PLANE_0_BIT or IMAGE_ASPECT_PLANE_1_BIT
    • If srcImage has a VkFormat with three planes then for each element of pRegions, srcSubresource.aspectMask must be IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, or IMAGE_ASPECT_PLANE_2_BIT
    • If dstImage has a VkFormat with two planes then for each element of pRegions, dstSubresource.aspectMask must be IMAGE_ASPECT_PLANE_0_BIT or IMAGE_ASPECT_PLANE_1_BIT
    • If dstImage has a VkFormat with three planes then for each element of pRegions, dstSubresource.aspectMask must be IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, or IMAGE_ASPECT_PLANE_2_BIT
    • If srcImage has a multi-planar image format and the dstImage does not have a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be IMAGE_ASPECT_COLOR_BIT
    • If dstImage has a multi-planar image format and the srcImage does not have a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be IMAGE_ASPECT_COLOR_BIT
    • If srcImage is of type IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1
    • If dstImage is of type IMAGE_TYPE_3D, then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1
    • For each element of pRegions, srcSubresource.aspectMask must specify aspects present in srcImage
    • For each element of pRegions, dstSubresource.aspectMask must specify aspects present in dstImage
    • For each element of pRegions, srcOffset.x and (extent.width + srcOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified srcSubresource of srcImage
    • For each element of pRegions, srcOffset.y and (extent.height + srcOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified srcSubresource of srcImage
    • If srcImage is of type IMAGE_TYPE_1D, then for each element of pRegions, srcOffset.y must be 0 and extent.height must be 1
    • For each element of pRegions, srcOffset.z and (extent.depth + srcOffset.z) must both be greater than or equal to 0 and less than or equal to the depth of the specified srcSubresource of srcImage
    • If srcImage is of type IMAGE_TYPE_1D, then for each element of pRegions, srcOffset.z must be 0 and extent.depth must be 1
    • If dstImage is of type IMAGE_TYPE_1D, then for each element of pRegions, dstOffset.z must be 0 and extent.depth must be 1
    • If srcImage is of type IMAGE_TYPE_2D, then for each element of pRegions, srcOffset.z must be 0
    • If dstImage is of type IMAGE_TYPE_2D, then for each element of pRegions, dstOffset.z must be 0
    • If srcImage and dstImage are both of type IMAGE_TYPE_2D, then for each element of pRegions, extent.depth must be 1
    • If srcImage is of type IMAGE_TYPE_2D, and dstImage is of type IMAGE_TYPE_3D, then for each element of pRegions, extent.depth must equal srcSubresource.layerCount
    • If dstImage is of type IMAGE_TYPE_2D, and srcImage is of type IMAGE_TYPE_3D, then for each element of pRegions, extent.depth must equal dstSubresource.layerCount
    • For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage
    • For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage
    • If dstImage is of type IMAGE_TYPE_1D, then for each element of pRegions, dstOffset.y must be 0 and extent.height must be 1
    • For each element of pRegions, dstOffset.z and (extent.depth + dstOffset.z) must both be greater than or equal to 0 and less than or equal to the depth of the specified dstSubresource of dstImage
    • If srcImage is a blocked image, then for each element of pRegions, all members of srcOffset must be a multiple of the corresponding dimensions of the compressed texel block
    • If srcImage is a blocked image, then for each element of pRegions, extent.width must be a multiple of the compressed texel block width or (extent.width + srcOffset.x) must equal the width of the specified srcSubresource of srcImage
    • If srcImage is a blocked image, then for each element of pRegions, extent.height must be a multiple of the compressed texel block height or (extent.height + srcOffset.y) must equal the height of the specified srcSubresource of srcImage
    • If srcImage is a blocked image, then for each element of pRegions, extent.depth must be a multiple of the compressed texel block depth or (extent.depth + srcOffset.z) must equal the depth of the specified srcSubresource of srcImage
    • If dstImage is a blocked image, then for each element of pRegions, all members of dstOffset must be a multiple of the corresponding dimensions of the compressed texel block
    • If dstImage is a blocked image, then for each element of pRegions, extent.width must be a multiple of the compressed texel block width or (extent.width + dstOffset.x) must equal the width of the specified dstSubresource of dstImage
    • If dstImage is a blocked image, then for each element of pRegions, extent.height must be a multiple of the compressed texel block height or (extent.height + dstOffset.y) must equal the height of the specified dstSubresource of dstImage
    • If dstImage is a blocked image, then for each element of pRegions, extent.depth must be a multiple of the compressed texel block depth or (extent.depth + dstOffset.z) must equal the depth of the specified dstSubresource of dstImage
    Valid Usage (Implicit)
    • sType must be STRUCTURE_TYPE_COPY_IMAGE_INFO_2
    • pNext must be NULL
    • srcImage must be a valid VkImage handle
    • srcImageLayout must be a valid VkImageLayout value
    • dstImage must be a valid VkImage handle
    • dstImageLayout must be a valid VkImageLayout value
    • pRegions must be a valid pointer to an array of regionCount valid VkImageCopy2 structures
    • regionCount must be greater than 0
    • Both of dstImage, and srcImage must have been created, allocated, or retrieved from the same VkDevice
    See Also

    VkImageCopy2, CmdCopyImage2, CmdCopyImage2KHR

    Layout

    
     struct VkCopyImageInfo2 {
         VkStructureType sType();
         void const * pNext();
         VkImage srcImage();
         VkImageLayout srcImageLayout();
         VkImage dstImage();
         VkImageLayout dstImageLayout();
         uint32_t regionCount();
         VkImageCopy2 const * pRegions();
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • STYPE, PNEXT, SRCIMAGE, SRCIMAGELAYOUT, DSTIMAGE, DSTIMAGELAYOUT, REGIONCOUNT, PREGIONS

        The struct member offsets.
    • Constructor Detail

      • VkCopyImageInfo2

        public VkCopyImageInfo2​(java.nio.ByteBuffer container)
        Creates a VkCopyImageInfo2 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
      • sType

        public int sType()
        the type of this structure.
      • pNext

        public long pNext()
        NULL or a pointer to a structure extending this structure.
      • srcImage

        public long srcImage()
        the source image.
      • srcImageLayout

        public int srcImageLayout()
        the current layout of the source image subresource.
      • dstImage

        public long dstImage()
        the destination image.
      • dstImageLayout

        public int dstImageLayout()
        the current layout of the destination image subresource.
      • regionCount

        public int regionCount()
        the number of regions to copy.
      • set

        public VkCopyImageInfo2 set​(int sType,
                                    long pNext,
                                    long srcImage,
                                    int srcImageLayout,
                                    long dstImage,
                                    int dstImageLayout,
                                    VkImageCopy2.Buffer pRegions)
        Initializes this struct with the specified values.
      • set

        public VkCopyImageInfo2 set​(VkCopyImageInfo2 src)
        Copies the specified struct data to this struct.
        Parameters:
        src - the source struct
        Returns:
        this struct
      • malloc

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

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

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

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

        @Nullable
        public static VkCopyImageInfo2 createSafe​(long address)
        Like create, but returns null if address is NULL.
      • createSafe

        @Nullable
        public static VkCopyImageInfo2.Buffer createSafe​(long address,
                                                         int capacity)
        Like create, but returns null if address is NULL.
      • malloc

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

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

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

        public static VkCopyImageInfo2.Buffer calloc​(int capacity,
                                                     org.lwjgl.system.MemoryStack stack)
        Returns a new VkCopyImageInfo2.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
      • nsType

        public static int nsType​(long struct)
        Unsafe version of sType().
      • npNext

        public static long npNext​(long struct)
        Unsafe version of pNext().
      • nsrcImage

        public static long nsrcImage​(long struct)
        Unsafe version of srcImage().
      • nsrcImageLayout

        public static int nsrcImageLayout​(long struct)
        Unsafe version of srcImageLayout().
      • ndstImage

        public static long ndstImage​(long struct)
        Unsafe version of dstImage().
      • ndstImageLayout

        public static int ndstImageLayout​(long struct)
        Unsafe version of dstImageLayout().
      • nregionCount

        public static int nregionCount​(long struct)
        Unsafe version of regionCount().
      • nsType

        public static void nsType​(long struct,
                                  int value)
        Unsafe version of sType.
      • npNext

        public static void npNext​(long struct,
                                  long value)
        Unsafe version of pNext.
      • nsrcImage

        public static void nsrcImage​(long struct,
                                     long value)
        Unsafe version of srcImage.
      • nsrcImageLayout

        public static void nsrcImageLayout​(long struct,
                                           int value)
        Unsafe version of srcImageLayout.
      • ndstImage

        public static void ndstImage​(long struct,
                                     long value)
        Unsafe version of dstImage.
      • ndstImageLayout

        public static void ndstImageLayout​(long struct,
                                           int value)
        Unsafe version of dstImageLayout.
      • nregionCount

        public static void nregionCount​(long struct,
                                        int value)
        Sets the specified value to the regionCount field of the specified struct.
      • validate

        public static void validate​(long struct)
        Validates pointer members that should not be NULL.
        Parameters:
        struct - the struct to validate