graphics - vulkan 队列系列之间的差异

标签 graphics gpu vulkan

我对 vulkan 相当陌生,正在尝试使用 api。我有一个打印我的队列系列的函数,目前我有两个:

支持图形/传输/计算,最多16个队列, 一种支持稀疏/传输,最多 2 个队列。

假设我想创建两个队列,一个用于图形,一个仅用于传输。我的理解是,只要我只使用传输操作,从第一个系列创建的传输队列实际上与从第二个系列创建的传输队列相同。也就是说,只要我不使用稀疏内存操作,我几乎可以忽略第二个系列。

这种理解正确吗,还是我遗漏了一些东西。是否有某种原因让我更愿意从不同的系列中制作图形和传输队列?

最佳答案

队列系列的属性包括 minImageTransferGranularity。这是对可以使用此队列系列复制的图像数据的 XYZ 区域的限制。因此,如果该值为 8x8x8,则对于该队列上的所有图像复制操作,像素矩形副本的位置和大小必​​须在 8 像素边界上对齐。

所以不,您不能假设仅传输队列系列始终可以用来代替功能更强大的队列。您始终必须检查。

同时,专用传输队列系列往往代表专门用于执行传输操作的专用硬件。因此,他们可能使用比其他队列上的传输操作更有效的数据路径。

一般来说,如果一个硬件提供的队列执行传输工作,并且您正在执行足够的传输工作,因此您正在考虑为其使用专用队列,那么您应该使用 用于执行传输工作的队列系列(只要粒度适合您)。

关于graphics - vulkan 队列系列之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675735/

相关文章:

c++ - vector Push_Back VS Emplace_Back

c++ - Vcpkg 无法在带有 mingw 的 Windows 上运行

c# - c#中的图形面板

graphics - Mathematica 中这些未记录的样式选项有什么作用?

memory - VGA与集成显卡理论

graphics - 使用贝塞尔曲线绘制图形

c - Vulkan SDK 一次仅检测 1 个 GPU

c++ - OpenCV ORB GPU 实现比 CPU 慢

cuda - 一维纹理内存限制

xcode - 启用 GPU 帧捕获