Sparse Resources


Sparse Resource Features

Sparse Buffers and Fully-Resident Images

Sparse Buffer and Fully-Resident Image Block Size

Sparse Partially-Resident Buffers

Sparse Partially-Resident Images

Accessing Unbound Regions

Mip Tail Regions

Standard Sparse Image Block Shapes

Custom Sparse Image Block Shapes

Multiple Aspects

Sparse Memory Aliasing

Sparse Resource Implementation Guidelines (Informative)

Sparse Resource API

Physical Device Features

Physical Device Sparse Properties

typedef struct VkPhysicalDeviceSparseProperties { VkBool32 VkBool32 VkBool32 VkBool32 VkBool32 residencyStandard2DBlockShape; residencyStandard2DMultisampleBlockShape; residencyStandard3DBlockShape; residencyAlignedMipSize; residencyNonResidentStrict; } VkPhysicalDeviceSparseProperties;

Sparse Image Format Properties

typedef struct VkSparseImageFormatProperties { VkImageAspectFlags VkExtent3D VkSparseImageFormatFlags aspectMask; imageGranularity; flags; } VkSparseImageFormatProperties;

typedef enum VkSparseImageFormatFlagBits { VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, } VkSparseImageFormatFlagBits;

void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice VkFormat VkImageType VkSampleCountFlagBits VkImageUsageFlags VkImageTiling uint32_t* VkSparseImageFormatProperties* physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);

void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);

Sparse Resource Creation

void vkGetImageSparseMemoryRequirements( VkDevice VkImage uint32_t* VkSparseImageMemoryRequirements* device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);

void vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);

void vkGetDeviceImageSparseMemoryRequirements( VkDevice const VkDeviceImageMemoryRequirements* uint32_t* VkSparseImageMemoryRequirements2* device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);

Binding Resource Memory

本节教程就到此结束,希望大家继续阅读我之后的教程。

谢谢大家,再见!


原创技术文章,撰写不易,转载请注明出处:电子设备中的画家|王烁 于 2021 年 5 月 10 日发表,原文链接(http://geekfaner.com/shineengine/blog20_Vulkanv1.2_6.html)