vkCmdCopyImage会自动转换平铺属性吗?

问题描述 投票:2回答:2

我已经阅读了vkCmdCopyImage的规格,我看到只需要元素大小来匹配两种方式。我想知道我们是否可以将具有最佳平铺(src)的图像复制到线性平铺(dst)。 dst会有线性平铺并可用吗?假设两个图像具有相同的格式。

先感谢您。

memory-management vulkan
2个回答
2
投票

vkCmdCopyImage复制纹素(不是字节)。平铺是一种寻址问题,应该通过纹理元素的抽象来隐藏。 此外,有效使用不禁止使用。 所以,是的;它确实。

我们进行了扩展讨论on the Vulkan forum

Vulkan规范也在KhronosGroup/Vulkan-Docs上开放。您可以直接发布问题或提出更改作为PR。 如果你直接阅读规范,尽管你尽了最大的努力但问题仍然不明确,那么它可能没有足够明确,其他人可能会同样困惑(并开始制作有缺陷的驱动程序和应用程序)。直接与作者沟通在每个人身上都是有益的。


1
投票

是的,您可以将具有最佳平铺的图像中的数据复制到具有线性平铺的图像,反之亦然。适当的平铺转换是自动完成的。这是将数据上传到(或复制数据)最佳平铺图像的方法之一,因为那些不能直接映射(好吧,它们可以被映射但我们不知道它们的内容是如何布局的,所以映射它们很少,如果没有,感觉)。当我们通过线性平铺资源传输数据时,我们称之为这些暂存资源。对于那些我们不仅可以使用图像而且还可以使用缓冲区。许多人(包括我)声称使用缓冲区更为可取,因为它们总是线性的,它们不需要布局转换,并且它们更容易创建(创建信息的参数更少)。 vkCmdCopyImageToBuffer(或其他方式)为你做所有必要的转换(虽然没有格式转换)。

英特尔有一个关于staging resources的教程和另一个使用登台缓冲区用于upload data to an optimally tiled image的教程。该机制与线性平铺图像相同,并且以两种方式工作。

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