Mesa Vulkan 驱动探索采用 Rust 重写


Collabora 的 Faith Ekstrand 近日发文,介绍了有关考虑使用 Rust 重写 Mesa Vulkan 驱动的工作。这项工作的设计目标包括让 Rust Vulkan 驱动封装尽可能 clean 和“Rust-like”、跟踪可变性和生命周期,并尽可能使用 Vulkan allocators。

目前,Mesa 中的所有 Vulkan 驱动都是采用 C 编写的;有些后端着色器编译器或其他组件则采用了 C++,但所有 Vulkan API 入口点都是直接采用了 C 语言实现。如今随着 Rust 的兴起,Faith 表示其已经开始考虑在 Mesa 中使用相对来说更“安全”的 Rust 来替换 C 语言。“长期以来,它 (C 语言) 一直在软件 bug 和安全漏洞方面享有盛名。”

Faith 认为,C 语言并不是编写图形驱动程序的最佳语言。他们最近甚至遇到了一个,由于在常见的 Vulkan synchronization code 中不小心将 64 位无符号整数截断为 32 位所造成的 bug。因此,他想知道主要用 Rust 编写 Vulkan 驱动程序的举措是否可行,以及此举是否可以带来与所付出的努力对等的回报。

不过 Faith 也表示,预计几年内不会出现任何实际的用 Rust 编写的 Mesa Vulkan 驱动程序,现下的目标只是探索可能性。他目前的工作仅仅是触及了皮毛,接下来计划将进一步探索实验并发布博文反馈。

“我希望当有人确实选择用 Rust 编写 Vulkan 驱动程序时,我们已经做好准备。这种探索也可能有助于向 Rust 社区提供一些可推进此计划进行的语言特性的信息。但目前可以明确的是,我们的目标计划还没有包括将现有的 Vulkan 驱动程序转换为 Rust。”

他还提交了一份合并请求草案,为用 Rust 编写的 Vulkan 驱动程序添加了一些初步的基础架构。


相關推薦

2023-03-03

dflare 使用 Rust 重写 Nginx C 模块,目标是“去 Nginx” Mesa Vulkan 驱动探索采用 Rust 重写 Fish Shell 计划采用 Rust 重写    

2022-09-22

正式发布。Mesa 22.2 的主要更新内容包括: 英特尔 DG2 Vulkan 光线追踪代码的性能得到了很大的改善,达到了约 100 倍。 用于 Radeon HD 2000 到 HD 6000 系列硬件的旧 R600g 驱动程序已经重写了 NIR 支持 RadeonSI EGL 背景下的高优先级

2022-03-14

,Imagination Technologies 一直在为 PowerVR 图形芯片开发新的 Vulkan 驱动程序、编译器和 Linux 内核驱动程序。 他们的努力也终于收获了一些成果,日前一个有关 Mesa Vulkan 驱动的初始合并,并正在接受审核。而上述提及的内核驱动程

2022-06-18

。 Mesa 22.1.2 全面修复了从著名的 Intel 和 AMD Radeon OpenGL/Vulkan 驱动程序到像 Panfrost 和 V3D 等较小驱动程序的修复程序。此外,还有围绕 Zink OpenGL-on-Vulkan 实现的核心 Gallium3D 和 NIR 修复 此版本还包含大量针对 Zink 的修复,还有一

2022-05-22

Mesa 22.1 近日正式发布,这是开源 OpenGL/Vulkan 图形驱动堆栈的最新季度功能更新。 Mesa 22.1 的更新亮点包括: AMD GFX1036 / GFX1037 支持 RADV 增加了对动态 VRS 支持 Imagination PowerVR Rogue GPU Vulkan 驱动被合并 英特尔 Arctic Sound M 的支

2021-12-22

主要用于树莓派 Raspberry Pi 4 的开源 v3dv Vulkan 驱动现在可以在 Android 和php 上使用运行了。 Mesa 的 v3d 图形驱动栈包括一个符合 GLES3.1 标准的 v3d 驱动和一个 Vulkan 图形驱动 v3dv,后者主要用于 Raspberry Pi 4。在 Raspberry Pi 4 上,

2023-03-10

列的最后一个版本。  Mesa 22.3.7 包含针对 Q4 OpenGL 和 Vulkan 开源驱动程序集合的最后一批修复,包括: 几个针对开源 AMD Linux 用户的 RADV Vulkan 和 RadeonSI OpenGL 修复(包括 GFX11/RDNA3 修复) Vulkan 上 OpenGL 的各种 Zink 修复、

2022-08-22

在 Mesa 的繁忙开发期间,开源 NVIDIA Vulkan 驱动程序“NVK”的活跃度也出现了上升;Collabora 的 Jason Ekstrand 近日非常积极地提出了这个 Vulkan 驱动程序。Ekstrand 是英特尔启动 ANV 开源 Vulkan 驱动程序时的原始开发人员之一,并在

2023-02-25

EXT_pipeline_library_group_handles 支持补丁。该功能于 1 月份在 Vulkan 1.3.240 中首次引入,可帮助在 Vulkan API 上实现 DirectX 12 光线追踪 (DXR) 兼容性,最初是供 Valve 的 VKD3D-Proton 使用。 但当时利用该功能在 RADV 上的 Cyber​​punk 2077 中启

2022-12-11

对 Panfrost Gallium3D 驱动程序进行了一些修复 一些 RADV Vulkan 驱动程序修复 各种 Intel 驱动程序解决方法和修复 支持使用 Clang 6 构建 R600g NIR 代码,以实现 Android 9 兼容性 用于解决 Valve Source Engine 游戏 其他随机修复程序的

2022-12-09

作,而且都需要在 OpenGL (ES) 3.0 问世之前完成。 此外,Vulkan 相关的工作也在计划当中。虽然现在只提供 OpenGL,但开发团队在设计时已经考虑到了 Vulkan;其为 OpenGL 所做的大部分工作都将重新用于 Vulkan。不过按照估计,开发团

2022-09-09

出,今年早些时候 Imagination 曾发布了一个开源的 PowerVR Vulkan 驱动,并将其并入主线 Mesa;且 Imagination 也一直在为 PowerVR Rogue 开发一个开源的 DRM 内核图形驱动。此次正是通过查看 PowerVR Mesa 的代码,才发现了其与苹果图形硬件的

2023-03-28

无限循环 修复 Radeon R600g“SFN”NIR 后端 修复 Intel ANV Vulkan 驱动程序 禁用 AMD 智能存取内存RadeonSI 更改 Vulkan 上 Zink OpenGL 的许多修复 RADV 的刷新修复 使用 RDNA3/GFX11 解压缩 DCC 的 RADV 修复 修复 RadeonSI VCN H.264 解码问题

2023-02-25

A GeForce RTX 30 "Ampere" GPU 的初始 Nouveau 3D 支持 Zink OpenGL-on-Vulkan 驱动的持续改进 为 RADV 和 RadeonSI 上的 Radeon RX 7900 系列 / RDNA3 图形带来了更多改进 在使用最近的内核版本时,RADV 上的 RDNA2 图形处理器默认启用 Vulkan 网格着色器