VKSPARSEIMAGEMEMORYB(3)

NAME
VkSparseImageMemoryBind - Structure specifying sparse image memory bind

C SPECIFICATION

The VkSparseImageMemoryBind structure is defined as:

    typedef struct VkSparseImageMemoryBind {
        VkImageSubresource         subresource;
        VkOffset3D                 offset;
        VkExtent3D                 extent;
        VkDeviceMemory             memory;
        VkDeviceSize               memoryOffset;
        VkSparseMemoryBindFlags    flags;
    } VkSparseImageMemoryBind;

MEMBERS

    • subresource is the aspectMask and region of interest in the image.

    • offset are the coordinates of the first texel within the image subresource to bind.

    • extent is the size in texels of the region within the image subresource to bind. The extent must be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge of an image subresource it can instead be such that any coordinate of [ $thit{offset} + thit{extent}$ ] equals the corresponding dimensions of the image subresource.

    • memory is the VkDeviceMemory object that the sparse image blocks of the image are bound to. If memory is VK_NULL_HANDLE, the sparse image blocks are unbound.

    • memoryOffset is an offset into VkDeviceMemory object. If memory is VK_NULL_HANDLE, this value is ignored.

    • flags are sparse memory binding flags.

DESCRIPTION

VALID USAGE

    • subresource must be a valid VkImageSubresource structure

    • If memory is not VK_NULL_HANDLE, memory must be a valid VkDeviceMemory handle

    • flags must be a valid combination of VkSparseMemoryBindFlagBits values

    • If the sparse aliased residency feature is not enabled, and if any other resources are bound to ranges of memory, the range of memory being bound must not overlap with those bound ranges

    • memory and memoryOffset must match the memory requirements of the calling command’s image, as described in section ???

    • subresource must be a valid image subresource for image (see ???)

    • offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of the image

    • extent.width must either be a multiple of the sparse image block width of the image, or else extent.width + offset.x must equal the width of the image subresource

    • offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of the image

    • extent.height must either be a multiple of the sparse image block height of the image, or else extent.height + offset.y must equal the height of the image subresource

    • offset.z must be a multiple of the sparse image block depth (VkSparseImageFormatProperties::imageGranularity.depth) of the image

    • extent.depth must either be a multiple of the sparse image block depth of the image, or else extent.depth + offset.z must equal the depth of the image subresource

SEE ALSO

VkDeviceMemory, VkDeviceSize, VkExtent3D, VkImageSubresource, VkOffset3D, VkSparseImageMemoryBindInfo, VkSparseMemoryBindFlags

DOCUMENT NOTES

For more information, see the Vulkan Specification at URL

https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageMemoryBind

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification,not directly.

COPYRIGHT

Copyright (c) 2014-2016 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.

AUTHOR

Khronos Group
    Author.