vulkan 中的异步渲染模型

问题描述

最近我在阅读https://github.com/ARM-software/vulkan_best_practice_for_mobile_developers/blob/master/samples/vulkan_basics.md,它说:

OpenGL ES 使用同步渲染模型,这意味着 API 调用必须表现得好像所有较早的 API 调用都已被处理。实际上,现代 GPU 都不是这样工作的,渲染工作负载是异步处理的,同步模型是由设备驱动程序维护的精心设计的错觉。为了维持这种错觉,驱动程序必须跟踪队列中每个渲染操作读取或写入的资源,确保工作负载以合法顺序运行以避免渲染损坏,并确保需要数据资源的 API 调用阻塞并等待资源安全可用。

Vulkan 使用异步渲染模型,反映现代 GPU 的工作方式。应用将渲染命令排入队列,使用显式调度依赖来控制工作负载执行顺序,并使用显式同步原语对齐依赖的 cpu 和 GPU 处理。

这些更改的影响是显着降低图形驱动程序的 cpu 开销,但代价是要求应用程序处理依赖项管理和同步。

有人可以帮助解释为什么异步渲染模型可以减少 cpu 开销吗?由于在 Vulkan 中,您仍然需要自己跟踪状态。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)