Memory management 绘制时着色器资源(纹理)是否可以位于主机上?

Memory management 绘制时着色器资源(纹理)是否可以位于主机上?,memory-management,vulkan,Memory Management,Vulkan,我只是想知道我们是否可以将着色器将使用的图像(如纹理)绑定到VkDeviceMemory,该存储器由标志HOST_VISIBLE | HOST_CONNECTURE分配。如果您的实现允许,可以绑定 在将任何VkImage绑定到内存之前,必须首先使用vkGetImageMemoryRequirements确定该特定VkImageFormat和VkImageType允许的内存类型。这些是实现定义的属性。如果实现表明特定的内存类型可用于该映像,那么您可以使用从该内存类型为该VkImage分配的内存(以

我只是想知道我们是否可以将着色器将使用的图像(如纹理)绑定到VkDeviceMemory,该存储器由标志HOST_VISIBLE | HOST_CONNECTURE分配。

如果您的实现允许,可以绑定

在将任何
VkImage
绑定到内存之前,必须首先使用
vkGetImageMemoryRequirements
确定该特定
VkImageFormat
VkImageType
允许的内存类型。这些是实现定义的属性。如果实现表明特定的内存类型可用于该映像,那么您可以使用从该内存类型为该
VkImage
分配的内存(以及规范中定义的具有类似参数的内存)


如果没有,那么您就不能。

如果您的实现允许,它可以

在将任何
VkImage
绑定到内存之前,必须首先使用
vkGetImageMemoryRequirements
确定该特定
VkImageFormat
VkImageType
允许的内存类型。这些是实现定义的属性。如果实现表明特定的内存类型可用于该映像,那么您可以使用从该内存类型为该
VkImage
分配的内存(以及规范中定义的具有类似参数的内存)


如果没有,那么您就不能。

我同意它依赖于实现,但是
vkGetPhysicalDeviceImageFormatProperties
没有内存类型作为输入或输出。使用所需参数创建VkImage时,将其传递给
vkGetImageMemoryRequirements
,返回的
VkMemoryRequirements::memoryTypeBits
将指示映像是否可用于
主机可见|主机一致
内存类型。@JesseHall:修复。我同意它取决于实现,但是
vkGetPhysicalDeviceImageFormatProperties
没有作为输入或输出的内存类型。使用所需参数创建VkImage时,将其传递给
vkGetImageMemoryRequirements
,返回的
VkMemoryRequirements::memoryTypeBits
将指示图像是否可用于
主机可见|主机一致
内存类型。@JesseHall:修复。