SwiftShader 是一款用于在 CPU 上进行高性能图形渲染的软件库。Google 已经在很多产品中使用该内容库,包括 Chrome、Android 开发工具和云服务。Swiftshader 从今天开始完全开放源码,扩展了其应用范围。
自 2009 年起,Chrome 就开始使用 SwiftShader 在不完全支持硬件加速渲染的系统上进行 3D 渲染。虽然为 GPU 写入了 WebGL 等 3D 内容,但有些用户的设备没有可执行此内容的图形硬件。其他设备可能包含存在严重错误的驱动程序,导致 3D 渲染不可靠,或甚至不可实现。Chrome 在这些系统上使用 SwiftShader,以确保 3D 网页内容对所有用户可用。
在 GPU 不合适(左图)的设备上不使用 SwiftShader 的 Chrome 无法运行 WebGL Globe 实验。在同一设备上,启用 SwiftShader 后(右图)则完全可以对内容进行渲染。
SwiftShader 实现 Chrome 和 Android 使用的相同的 OpenGL ES 图形 API。SwiftShader 开放源码将促使其他浏览器供应商普遍支持 3D 内容,从而使网站平台作为一个整体向前发展。具体而言,无条件的 WebGL 支持将允许网站开发人员创建更具吸引力的内容,例如休闲游戏、教育应用、合作内容创作软件、产品展示和虚拟游览等。SwiftShader 在云服务领域也有应用,实现了在无 GPU 系统上的渲染。
为了向用户提供最佳性能,SwiftShader 使用多种方法高效地在 CPU 上执行图形计算。动态代码生成使在运行时针对现有任务自定义代码成为可能,与更常见的编译时优化完全不同。通过使用 Reactor 简化这种复杂的方法,Reactor 是一种自定义 C++ 嵌入式语言,具有直观的命令式语法。SwiftShader 还可以单指令多线程 (SIMT) 方式使用向量运算,并结合使用多线程技术来提高 CPU 可用内核和矢量单元之间的并行性。这样可实现实时渲染,其用途包括在 Android 上进行应用串流等。
开发者可从其 Git 存储库访问 SwiftShader 源代码。注册邮件列表,了解最新的开发资讯,并与开源社区的其他 SwiftShader 开发者展开合作。
发布人:软件工程师 Nicolas Capens 和 Pixel Pirate
|