wgpu/documentation/internals/
known_driver_issues.rs

1/*!
2# Known Driver Issues
3
4This page lists known issues with drivers that are not, or cannot, be worked
5around by `wgpu`.
6
7Issues are categorized by GPU vendor and backend. Where details such as
8"driver version" are recorded, they are not intended to be exhaustive: these
9are just the values where the issue has been observed. Just because your
10combination is not explicitly listed does not mean you aren't susceptible to
11the same issue.
12
13## WGSL / All
14
15- **WGSL draft spec compliance**
16
17  As outlined in the README, section
18  [Tracking the WebGPU and WGSL draft specifications](https://github.com/gfx-rs/wgpu#tracking-the-webgpu-and-wgsl-draft-specifications),
19  the version of WGSL implemented by `wgpu` will likely differ from what is
20  in the up-to-date spec.
21
22## Intel / Vulkan
23
24- **Integrated GPU not visible to programs named `cube`**
25
26  | Property         | Values observed   |
27  | ---------------- | ----------------- |
28  | Operating System | Windows 10 64-bit |
29  | Driver OEM       | Intel, Microsoft  |
30  | Driver Version   | 27.20.100.8935    |
31
32  In a dual-GPU system, the driver for the Intel GPU will hide itself from
33  programs named `cube`. The issue can be worked around by disabling the
34  discrete GPU or by renaming the program to something other than `cube`.
35
36- **Hangs when the same semaphore is signaled and waited upon**
37
38  | Property         | Values observed |
39  | ---------------- | --------------- |
40  | Operating System | Linux 5.14      |
41  | Driver OEM       | Intel           |
42  | Driver Version   | Mesa 21.2.3     |
43
44  Using a "relay" semaphore confuses the Intel driver in Mesa. Reported in
45  <https://gitlab.freedesktop.org/mesa/mesa/-/issues/5508>. Can be worked
46  around by only doing one submission per frame.
47
48- **`cmd_begin_debug_utils_label_ext` pointer is NULL**
49
50  | Property         | Values observed     |
51  | ---------------- | ------------------- |
52  | Operating System | Windows 10 Pro 21H1 |
53  | Driver OEM       | UHD Graphics 630    |
54  | Driver Version   | 24.20.100.6287      |
55
56  The extension is supported, but the pointer to the function is NULL.
57  Escalated in <https://github.com/MaikKlein/ash/issues/484>. Still needs an
58  upstream report.
59
60## Intel / DirectX 12
61
62- **Offset after resizing window** —
63  [wgpu-rs#647](https://github.com/gfx-rs/wgpu-rs/issues/647)
64
65  | Property         | Values observed   |
66  | ---------------- | ----------------- |
67  | Operating System | Windows 10 64-bit |
68  | Driver OEM       | Microsoft         |
69  | Driver Version   | 26.20.100.7639    |
70
71  This issue affects programs running on any GPU if the Intel GPU is being
72  used by the compositor. This would typically be the case in dual-GPU
73  systems. It can be worked around by replacing the Microsoft OEM driver with
74  the generic Intel driver.
75
76- **`CreatePlacedResource` TDRs** —
77  [wgpu#1319](https://github.com/gfx-rs/wgpu/issues/1319)
78
79  | Property         | Values observed                |
80  | ---------------- | ------------------------------ |
81  | Operating System | Windows 10 64-bit, build 19042 |
82  | GPU              | HD Graphics 4600               |
83  | Driver Version   | 20.19.15.5171                  |
84
85  Reported in
86  <https://github.com/IGCIT/Intel-GPU-Community-Issue-Tracker-IGCIT/issues/44>.
87
88## Intel / DX11
89
90- **Buffer write not synchronized with draw** —
91  [wgpu#1060](https://github.com/gfx-rs/wgpu/issues/1060)
92
93  | Property         | Values observed |
94  | ---------------- | --------------- |
95  | Operating System | Windows         |
96
97  Buffer upload isn't being properly synchronized with the draw call that is
98  using it. This is entirely on the driver to get right; there is no way to
99  do manual sync.
100
101## Intel / All
102
103- **Cannot combine MSAA with sRGB resolve** —
104  [wgpu#725](https://github.com/gfx-rs/wgpu/issues/725)
105
106  | Property         | Values observed |
107  | ---------------- | --------------- |
108  | Operating System | Linux           |
109
110  Attempting to do MSAA resolve at the same time as sRGB resolve will cause
111  MSAA to not work and the clear color to not be properly converted into
112  sRGB.
113
114## Nvidia / Vulkan
115
116- **Hang/panic/device loss after specific render sequence** —
117  [wgpu#983](https://github.com/gfx-rs/wgpu/issues/983)
118
119  | Property         | Values observed           |
120  | ---------------- | ------------------------- |
121  | Operating System | Windows 10 64-bit         |
122  | GPU              | GeForce RTX 2080 Ti       |
123  | Driver Name      | GeForce Game Ready Driver |
124  | Driver Version   | 456.38, 457.09, 457.30    |
125
126  Does not occur on driver version 452.06. After submitting a frame to
127  `wgpu`, Vulkan seems to become unstable and this manifests itself in a few
128  ways.
129
130- **`write_buffer` only works when aligned to 16** —
131  [wgpu#1323](https://github.com/gfx-rs/wgpu/issues/1323)
132
133  | Property         | Values observed              |
134  | ---------------- | ---------------------------- |
135  | Operating System | Windows 10 64-bit            |
136  | GPU              | GeForce GTX 1050, 1070       |
137  | Driver Version   | 27.21.14.5256, 27.21.14.6589 |
138
139  We issue `vkCmdFillBuffer` for the uninitialized area of a buffer. If only
140  the first 40 bytes were filled, the fill buffer is called with an offset of
141  40, but the driver ends up erasing all the data starting with offset 32.
142  Issue reported directly to the NVIDIA level-2 support team, ticket
143  210412-000661.
144
145- **Flat-interpolated integers come out as zeroes** —
146  [wgpu#1775](https://github.com/gfx-rs/wgpu/issues/1775)
147
148  | Property         | Values observed  |
149  | ---------------- | ---------------- |
150  | Operating System | Linux            |
151  | GPU              | GeForce GTX 1050 |
152  | Driver Version   | 390              |
153
154  Fragment shader sees interpolated values as 0. Issue reported to NVIDIA
155  Vulkan support.
156
157## WARP / D3D12
158
159- **CPU descriptors are used after `CopyDescriptors`** —
160  [wgpu#1002](https://github.com/gfx-rs/wgpu/issues/1002)
161
162  | Property         | Values observed   |
163  | ---------------- | ----------------- |
164  | Operating System | Windows 10 64-bit |
165
166## AMD / D3D12
167
168- **Updating partial texture data doesn't show up** —
169  [wgpu#1306](https://github.com/gfx-rs/wgpu/issues/1306)
170
171  | Property         | Values observed   |
172  | ---------------- | ----------------- |
173  | Operating System | Windows 10 64-bit |
174  | GPU              | Ryzen 3500U       |
175  | Driver Name      | ?                 |
176  | Driver Version   | ?                 |
177
178  When a texture only gets partially updated, sampling from it returns
179  zeroes. Issue has been reported directly to AMD.
180
181## Mesa / Vulkan
182
183- **Integer overflow with very large buffers** —
184  [wgpu#2796](https://github.com/gfx-rs/wgpu/pull/2796)
185
186  | Property         | Values observed   |
187  | ---------------- | ----------------- |
188  | Operating System | Linux             |
189  | Driver Name      | Mesa/lavapipe     |
190
191  When a buffer size or range parameter does not fit a 32-bit signed integer,
192  Mesa runs into integer overflows.
193
194*/