Commit 18ad9d9
committed
examples/10-graphics: 可移植性驱动默认是看不见的
四期(软件设备把 CI 上限抬到运行)的程序侧那一半。
接设备之前先测了上游产物,而第一行的读数就是本条的理由:Khronos 官方的
`MoltenVK-macos.tar` v1.4.2 里,ICD 带着 **`"is_portability_driver": true`**。
**loader 默认不把可移植性驱动交给 `vkEnumeratePhysicalDevices`** —— 一个照着原生
驱动写的 Vulkan 程序因此在 macOS 上一个设备都找不到,并把它报成「这台机器没有
GPU」。诊断是错的,而它看起来完全合理。
规范要的是成对的两半:实例要**启用** `VK_KHR_portability_enumeration` **并且**置位
`VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR`;随后凡是声明了
`VK_KHR_portability_subset` 的设备,必须在 `vkCreateDevice` 时启用它,否则调用失败。
按**能力**问,不按 `#ifdef __APPLE__`:性质是「我面前这个 loader 在展示可移植性
驱动」,而 `#ifdef` 两个方向都会错 —— Linux 上跑翻译层的机器也有它,macOS 上对着
原生驱动构建的程序并不需要它。
实测:Linux/lavapipe 上读数不变,中心像素仍是 `(124, 70, 62, 255)`。
顺带记下 Windows 那一侧的测量:`mesa3d-26.2.0-release-msvc` 的 `vulkan_lvp.dll`
**只导入系统 DLL**(无 MSVCP140/VCRUNTIME140),静态 CRT,机器上不需要装任何东西。
载荷侧(把 MoltenVK 与 Windows 的 lavapipe 收进索引)未做:那要往发布组织推新的二进制
资产,而 GitCode 的资产不可替换不可删除。1 parent 49e2d6b commit 18ad9d9
3 files changed
Lines changed: 106 additions & 1 deletion
File tree
- .agents/docs
- examples/10-graphics
- offscreen/src/vulkan
Lines changed: 30 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
336 | 340 | | |
337 | 341 | | |
338 | 342 | | |
| |||
396 | 400 | | |
397 | 401 | | |
398 | 402 | | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
399 | 428 | | |
400 | 429 | | |
401 | 430 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
83 | 100 | | |
84 | 101 | | |
85 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
36 | 73 | | |
37 | 74 | | |
38 | 75 | | |
| |||
129 | 166 | | |
130 | 167 | | |
131 | 168 | | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
132 | 181 | | |
133 | 182 | | |
134 | 183 | | |
| |||
143 | 192 | | |
144 | 193 | | |
145 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
146 | 205 | | |
147 | 206 | | |
148 | 207 | | |
| |||
0 commit comments