驱动程序错误¶
已知驱动程序 bug 的非详尽列表。
另请参阅:Dolphin 模拟器 自己的驱动 bug 列表(其中包含此处所列的 bug)。
Vulkan¶
| 厂商/GPU | 操作系统 | 驱动 | 版本 | 错误 |
|---|---|---|---|---|
| AMD | 所有 | 专有 | ? | 在 GCN4 及更低版本上,VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT 已损坏。 |
| AMD | 所有 | 专有 | ? | GCN4 及更早版本在 VK_EXT_sampler_filter_minmax 上存在问题。 |
| AMD | 所有 | 专有 | ? | 如果 offset + stride * count 大于 size,则顶点缓冲区的最后一个属性值将错误。 |
| AMD | 所有 | 专有 | ? | 在 GCN 上,超过 6 层的 2D mipmap 纹理数组(width == height)会导致 mipmap 损坏。 |
| AMD | 所有 | RADV, MESA | ? | 使用 LLVM 发射器会导致 FP16 损坏,专有驱动不受影响。 |
| AMD | 所有 | 专有 | ? | 对 VK_EXT_depth_clamp_control 的错误实现会导致错误深度值被写入深度缓冲区。 |
| AMD | macOS | 专有 | ? | gl_HelperInvocation 实际上是 !gl_HelperInvocation。 |
| NVIDIA | 所有 | 专有 | ? | 适用于 Ampere 及更新架构的驱动程序在 float16 数学运算上存在问题。 |
| NVIDIA | 所有 | 专有 | >=510.0.0 | 版本 >= 510 不支持 MSAA->MSAA 图像 blits。 |
| NVIDIA | 所有 | 专有 | ? | 不支持着色器模板导出。 |
| NVIDIA | 所有 | 专有 | ? | 不能正确支持条件屏障。 |
| NVIDIA | 所有 | 专有 | ? | Turing 之前的 GPU 不能正确使用 push descriptors。 |
| NVIDIA | 所有 | 所有 | ? | 使用部分矩形调用 vkCmdClearAttachments,或者在渲染过程中指定渲染区域并将 load 操作设置为 clear,可能导致 GPU 锁定或引发边界违规。这种情况只发生在 MSAA 帧缓冲区上,而且似乎是在单个命令缓冲区中有多次清除时才会出现。通过在启用 MSAA 时回退到慢速路径(绘制四边形)来解决。 |
| Intel | 所有 | 专有 | <27.20.100.0 | 27.20.100.0 之前的 Intel Windows 驱动程序版本在 VK_EXT_vertex_input_dynamic_state 上存在问题。 |
| Intel | 所有 | 专有 | ? | Intel 专有驱动程序不支持 MSAA->MSAA 图像 blits。 |
| Intel | 所有 | 专有 | 0.405.0 until 0.405.286 |
Intel 专有驱动程序 0.405.0 到 0.405.286 的计算(compute)功能已损坏。 |
| Intel | macOS | 专有 | ? | 使用动态采样器索引会导致 GPU 锁定。 |
| Intel | macOS | 专有 | ? | 在可丢弃结果的着色器中使用 subgroupMax 会导致数据损坏。 |
| Intel | 所有 | Mesa | ? | 在顶点着色器中写入 gl_ClipDistance 时,几何着色器中的线条会损坏。 |
| Qualcomm | 所有 | 专有 | ? | 使用过多采样器(在 A8XX 上为 65536)可能导致堆耗尽,建议使用可用采样器总数的 75%。 |
| Qualcomm | 所有 | 专有 | ? | Qualcomm Adreno GPU 不处理缩放的顶点属性 VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME。 |
| Qualcomm | 所有 | 专有 | ? | 64 位整数扩展(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)会导致莫名的崩溃和稳定性问题。 |
| Qualcomm | 所有 | 所有 | ? | 驱动程序要求的绑定限制高于其报告的值(32)。 |
| Qualcomm | 所有 | 所有 | ? | 在 Adreno 上,启用光栅化器丢弃会以某种方式损坏视口状态;一种解决方法是强制其在下次使用时更新。 |
| Qualcomm | 所有 | 专有 | ? | 不支持并发 fence 等待。 |
| Qualcomm | 所有 | 专有 | ? | vkCmdCopyImageToBuffer 在用于从具有最优平铺(optimal tiling)的图像复制时,会分配一个暂存图像(staging image);这会导致整体性能较慢。 |
| Qualcomm | 所有 | 专有 | ? | 在 Adreno Vulkan 驱动程序中,32 位深度清除已损坏,且没有任何效果。 |
| Qualcomm | 所有 | 专有 | ? | 在真正重置 VkCommandPool 之前释放资源应该是安全的。然而,在运行 R 系列驱动的设备上,有几个月的时间里驱动程序存在一个 bug:当命令缓冲区正在被重置时,它错误地访问了命令缓冲区上的对象。如果这些对象已经被销毁(这是合法操作),就会崩溃。 |
| Qualcomm | 所有 | 专有 | ? | 在配备 Adreno 530 和 540 的 Pixel 和 Pixel 2 XL 上,将宽度和高度设置为几十(10s)时,会可靠地触发一种看似驱动程序竞态条件的问题。 |
| Qualcomm | 所有 | 专有 | ? | 非描述性的 OpPhi SPIRV 降级(lowering)错误;最初使用 OpPhi 来选择结果,在 Adreno 4xx 上崩溃。已改为像 glslang 那样将结果存储在临时变量中。 |
| Qualcomm | 所有 | 专有 | ? | 参见 crbug.com/1241134。该 bug 出现在搭载操作系统 PQ3A 的 Adreno 5xx 设备上。在早期的 PPR1 版本上无法复现,因为旧版驱动中没有 extend blend func 扩展。 |
| Mali | Android | 专有 | ? | 在多个位置出现莫名的绿屏。 |
| Mali | Android | 专有 | ? | 在 Mali Vulkan 驱动中,对于回读(readback),缓存内存(cached memory)明显比一致性内存(coherent memory)慢,导致内核函数 __pi___inval_cache_range 中的 CPU 使用率很高。 |
| Mali | Android | 专有 | ? | 在某些旧版 ARM 驱动上,如果创建管线时提供的静态状态值为 0(alphaToCoverageEnable 和 rasterizerDiscardEnable),在有 discard 或 alpha to coverage 的情况下,模板写入掩码的动态状态无法正确工作。 |
| Mali | Android | 专有 | ? | 因设备丢失而提交失败时,仍需等待 fence 发出信号后再删除。然而,ARM 有一个 bug(b/359822580):如果处于设备丢失状态,驱动程序会在 fence 等待上提前退出,因此我们无法等待它。于是我们只能等待队列完成。 |
| Mali | Android | 专有 | ? | 在 Galaxy S7 上,当我们对 VkImage 进行子分配时,会出现大量渲染问题。 |
| Mali | Android | 专有 | ? | 在 Galaxy S7 和 S9 上,当仅使用主命令缓冲区时,我们会看到大量渲染问题以及图像过滤器丢失。在运行 Android 28 的 P30 上也看到了问题。 |
| Mali | Android | 专有 | ? | RGBA_F32 mipmap 在某些 Mali 设备上似乎存在问题。 |
| Mali | Android | 专有 | ? | 矩阵 IR lowering 在处理矩阵 swizzle、标量乘法以及一元 (+m)/(-m) 时,当矩阵临时变量超过 32 个,会出现额外且无法解释的 Bug。 |
| Apple | 全部 | MoltenVK | ? | 当使用超过 16 个顶点属性/绑定时,驱动程序会崩溃。 |
| Apple | macOS | 专有 | >4 | 某些驱动与 Apple Silicon GPU 的组合在启用早期深度测试时,片段丢弃会出现问题。被丢弃的片段可能出现损坏。 |
| Apple | iOS | MoltenVK | ? | 空描述符会导致一些难以描述的问题。 |
| Apple | iOS | MoltenVK | ? | 推送描述符会导致一些难以描述的问题。 |
| Imagination | Android | 专有 | ? | 某些 Vulkan 实现无法接受 'clear' loadop renderpass:如果你尝试使用的 framebuffer 的 load/store 操作与创建该 framebuffer 时所用的不同,尽管规范说明它们应当兼容,这些实现仍会出问题。 |
| Intel Qualcomm AMD Apple |
全部 | 全部 MoltenVK (Apple) |
? | 在某些 Vulkan 驱动上,反转视口深度范围无法按预期工作。Vulkan 规范允许视口中的 minDepth/maxDepth 字段反转,但在某些驱动上的实现是损坏的。 |
AMD:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_AMD_PROPRIETARY - 开源(OSS):
VK_DRIVER_ID_AMD_OPEN_SOURCE - MESA:
VK_DRIVER_ID_MESA_RADV
NVIDIA:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_NVIDIA_PROPRIETARY. - MESA:
VK_DRIVER_ID_MESA_NVK.
Intel:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS. - MESA:
VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA.
Qualcomm:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_QUALCOMM_PROPRIETARY. - MESA:
VK_DRIVER_ID_MESA_TURNIP.
Mali:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_ARM_PROPRIETARY. - MESA:
VK_DRIVER_ID_MESA_PANVK.
Samsung:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_SAMSUNG_PROPRIETARY.
Apple:驱动程序 ID 列表:
- MoltenVK/MVK:
VK_DRIVER_ID_MOLTENVK. - KosmicKrisp:
VK_DRIVER_ID_MESA_KOSMICKRISP. - HoneyKrisp:
VK_DRIVER_ID_MESA_HONEYKRISP.
PowerVR:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_IMAGINATION_PROPRIETARY. - MESA:
VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA.
软件光栅化器:驱动程序 ID 列表:
- SwiftShader:
VK_DRIVER_ID_GOOGLE_SWIFTSHADER. - LLVMPipe:
VK_DRIVER_ID_MESA_LLVMPIPE.
Broadcom:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_BROADCOM_PROPRIETARY. - MESA:
VK_DRIVER_ID_MESA_V3DV.
Verisilicon:驱动程序 ID 列表:
- 专有:
VK_DRIVER_ID_VERISILICON_PROPRIETARY.
其他:驱动程序 ID 列表:
- SC:
VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN. - GGP(Stadia):
VK_DRIVER_ID_GGP_PROPRIETARY. - CoreAVI(汽车):
VK_DRIVER_ID_COREAVI_PROPRIETARY. - Juice(远程 GPU):
VK_DRIVER_ID_JUICE_PROPRIETARY. - Venus(Virtio GPU):
VK_DRIVER_ID_MESA_VENUS. - Dozen(基于 DirectX 的 Vulkan):
VK_DRIVER_ID_MESA_DOZEN.
OpenGL¶
| 厂商/GPU | 操作系统 | 驱动程序 | 版本 | 问题 |
|---|---|---|---|---|
| 全部 | Android | 全部 | ? | 在 OpenGL 中,多线程着色器预编译有时会崩溃。 |
| 全部 | 全部 | Mesa | ? | https://github.com/KhronosGroup/glslang/pull/2646 |
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine