根据这些统计数据,为什么这么多gpu不支持常见图像类型的传输操作?



此表显示了支持任何给定图像格式用于不同用途的gpu的百分比,例如采样,传输,作为深度和模板缓冲区等。如果你看一下它,你会发现它支持许多最常见的格式,比如采样和深度缓冲区的使用,百分比显示为99%或100%,而对TRANSFER_SRC和TRANSFER_DST的支持是78%。我想知道为什么会这样,因为几乎任何格式都应该能够传输以读取和写入它。当上传图像用作纹理时,你不需要TRANSFER_DST位设置为标志吗?同样,这是否意味着有gpu支持R8G8B8A8_UINT(显然是100%),但只有78%的gpu支持传输它们?这对我来说没有意义。奇怪的是,TRANSFER_SRC和TRANSFER_DST的支持度为78%,而BLIT_SRC和BLIT_DST的支持度为100%。我所遵循的教程展示了使用复制命令和TRANSFER_DST将图像复制到GPU的纹理上传,例如从staging缓冲区复制图像时。

这纯粹是历史的产物。这个数据库是在Vulkan的早期创建的,它有很久以前的条目。

Vulkan 1.0没有FORMAT_FEATURE_TRANSFER_SRC/DEST作为选项。如果实现为某种格式提供了任何使用支持,那么该格式的图像可以在传输操作中使用,句号。特性src/dest选项是在KHR_maintenance1中添加的(在Vulkan 1.1中被采用)。这样做的目的如下:

允许实现表示支持仅传输和清除图像格式,否则它们不支持其他格式特性。这是通过添加新的格式特性标志VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHRVK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR来完成的。

为了向后兼容,扩展还要求必须为任何格式提供SRC/DST支持,以便能够用作采样图像。

22%的GPUs"不支持src/dst"数据库中的gpu从未更新到最新版本的Vulkan。

最新更新