图像平铺和图像布局之间有什么关系?

问题描述 投票:0回答:1

当有人解释 Vulkan 中的图像平铺是什么时,他们本质上指的是图像的布局,并说 OPTIMAL 平铺的布局方式可以让 GPU 高效地访问,而 LINEAR 是,好吧,我猜是原始字节正如您所期望的,逐个像素。但这个解释就是我所理解的 VkImageLayout 。当您传输图像以获得线性像素时,您将其转换为传输布局。当您需要着色器访问它时,您可以将其放在 READ_OPTIMAL 或 SHADER_READ_OPTIMAL 中。我知道平铺和布局应该是两个正交的概念,但鉴于我刚刚概述的内容,它们对我来说似乎是相同的。

此外,平铺 LINEAR 有哪些用例?

vulkan
1个回答
0
投票

图像属性定义适用于图像的常规属性。

图像布局是动态的并且可感知舞台使用情况。这允许针对特定舞台使用使用更优化(或更兼容)的布局。例如,在某些实现上,片段着色器帧缓冲区写入的最佳布局与计算着色器 imageStore() 写入的最佳布局不同。

实际上,在大多数实现中,图像布局转换实际上是无操作并且不执行任何操作。在这些实现中,图像布局完全取决于图像创建信息(平铺和允许的使用标志)。

在其他实现中,图像布局转换“通常”是无操作的,但并非总是如此。对于早期的 AMD 实现,他们无法使用压缩帧缓冲区作为 imageLoad/Store() 使用,因此计算使用的布局转换可能会触发解压缩过程。但不确定他们目前在做什么。 老实说,如果布局转换消失,并被需要它们的实现的显式传输所取代,事情会更容易。对于通常是无操作的东西,它们肯定会增加很多 API 复杂性......

© www.soinside.com 2019 - 2024. All rights reserved.