SwiftShader是谷歌的开源项目,使用软件的方式实现了部分GPU的渲染功能,它支持OpenGL/Vulkan/D3D等接口。

本文讨论SwiftShader的Vulkan实现,它本身是通过多线程来实现的:  

Submit线程:将用户提交到同一个CommandBuffer的Vulkan命令整理成绘图任务(Task,也可以叫DrawCall);  

Raster线程:执行绘图任务。绘图任务主要工作是:顶点处理,光栅化等。  

除了内部实现的两个线程之外,用户线程负责提交Vulkan命令。

SwiftShader-Vulkan的线程结构_Vulkan