Mesa 的 V3D 和 V3DV 驱动分别为较新的 Broadcom VideoCore 硬件提供了开源的 OpenGL 和 Vulkan 驱动支持,实现了双缓冲模式。正如 phoronix 所述,此举对这些驱动的众多工作负载来说是一个良好的发展,尤其是现代 Raspberry Pi 单板计算机所使用的驱动。
V3D/V3DV 实现了一个可选的双缓冲区模式,在某些方面可以帮助提高性能;但在某些方面也有可能出现回归,因此在默认情况下并没有启用。
Igalia 的 Iago Toral 合并解释称:
双缓冲模式将 tile 缓冲区大小分成两半,因此我们可以在当前 tile 被存储到内存的同时开始处理下一个 tile。此模式仅在未启用 MSAA 时可用,理论上可以通过减少 tile 存储开销来提高性能。但是它是以减小 tile 大小为代价的,而这也会造成一些自身的开销。
测试表明这有助于某些情况(即 Vulkan Quake ports),但会损害一些其他情况 (即 Unreal Engine 4);所以目前我们默认不启用此功能,但我们允许使用 V3D_DEBUG 有选择地启用它。
现在,V3D_DEBUG=db 环境变量可以用来激活 Mesa 22.0-devel 上的这种双缓冲,前提是 multi-sample anti-aliasing(MSAA)被禁用。
猜你喜欢:暂无回复。