本周 Mesa 25.0 的一个有趣补充是 Alyssa Rosenzweig 为驱动程序 OpenCL C 代码添加了一个标准库,包括支持设备上 assert() 的初始可用性以及 OpenCL C 代码的其他标准 C 结构。
Alyssa Rosenzweig 在最近登陆的 Mesa 25.0 合并请求中解释说:
“现在我们有了将驱动程序 CL C 预编译为 hw 二进制文件的通用代码,那么在 CL 上实现驱动程序代码的基础知识已经存在。但是,该基础设施仍然非常准系统。此 MR 添加了许多通用代码,为驱动程序 CL C 提供了标准库,包括主机 C 中可用的许多标准 C 结构,但在应用程序 CL 中并非开箱即用:
abort
static_assert
断言
从 util/macros.h、math.h 等移植的各种例程printf、abort 和 assert 的组合有助于调试驱动程序 CL。如果正确集成(就像这里对 Honeykrisp 所做的那样),这些都可以在驱动程序 CL 库中的任何位置工作 – 包括预编译的着色器和注入应用程序着色器的库函数。
这对于作为 Asahi Linux 项目一部分的 Apple Silicon 的 Honeykrisp 驱动程序以及其他 Mesa 开源驱动程序来说都是个好消息。
那些对驱动程序 OpenCL C 代码的标准库实现的更多详细信息感兴趣的人可以查看这个合并请求,该请求已于周五合并到 Mesa 25.0-devel 中。
转自 Mesa 25.0 Introduces Standard Library For Driver OpenCL C – Phoronix