是否有任何理由使用描述符而不是设备缓冲区地址?

Zeb*_*ish 5 vulkan

我真的很喜欢设备缓冲区地址的想法,似乎将来它会变得更加常见,并且是光线追踪的必需功能。如果我有一个对象绘制信息的缓冲区/数组,通常我会将其绑定到描述符并使用推送常量(或者更好的是绘制调用命令的first_instance参数)对其进行索引。然而,与其索引到描述符缓冲区,不如使用传入的缓冲区设备地址来达到您需要的精确对象绘制信息结构。

我总是发现描述符很繁琐,在这种情况下,有什么理由在这样的设备缓冲区地址上使用它们吗?我不认为性能有什么区别?

sol*_*xel 0

强烈怀疑会有性能差异,但这可能是特定于硬件供应商的,因此唯一真正的答案是在您关心的实现上分析您的工作负载。

最明显的区别是着色器代码现在必须处理物理缓冲区访问的指针地址计算,而在此之前可能至少部分隐藏在某些固定功能描述符处理硬件中。