-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.8.0, 6.8.2, 6.9.0 Beta2
-
None
-
Windows 11, Visual Studio 2022
-
-
68e48ac60 (dev), 987ff07a8 (6.9), fd78ec987 (6.8), 037e4f9a5 (dev)
There may be a bug in the RHI D3D12 backend.
I wrote a test program that starts a texture readback in each frame.
Here is what happens with different Qt versions and different RHI backends:
Qt 6.8.0, 6.8.2:
OpenGL: works
D3D11: works
Vulkan: crashes in QRhiVulkan::finishActiveReadbacks
D3D12: crashes in QRhiD3D12::finishActiveReadbacks
Qt 6.9.0 Beta 2:
OpenGL: works
D3D11: works
Vulkan: works
D3D12: crashes in QRhiD3D12::finishActiveReadbacks
Here is the output I get in the console window with Qt 6.9.0 Beta 2 and different backends:
OpenGL, D3D11:
Readback 0 started
Readback 0 complete
Readback 1 started
Readback 1 complete
Readback 2 started
Readback 2 complete
Readback 3 started
Readback 3 complete
Readback 4 started
Readback 4 complete
....
Vulkan:
Readback 0 started
Readback 1 started
Readback 0 complete
Readback 2 started
Readback 1 complete
Readback 3 started
Readback 2 complete
Readback 4 started
Readback 3 complete
...
D3D12:
Readback 0 started
Readback 1 started
Readback 0 complete
Readback 2 started
Readback 3 started
C:\Repos\ReadBackIssue\x64\Release\ReadBackIssue.exe (process 5796) exited with code -1073741819 (0xc0000005).
I am using Windows 11 and Visual Studio 2022.
The test code can be downloaded from https://github.com/jrade/ReadBackIssue.
The backend can be changed in Main.cpp.
For Gerrit Dashboard: QTBUG-133405 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
622094,3 | rhi: d3d12: Fix crash in readbacks | dev | qt/qtbase | Status: MERGED | +2 | 0 |
622119,3 | rhi: Add autotest for continuous readback | dev | qt/qtbase | Status: MERGED | +2 | 0 |
623207,2 | rhi: d3d12: Fix crash in readbacks | 6.9 | qt/qtbase | Status: MERGED | +2 | 0 |
623236,2 | rhi: d3d12: Fix crash in readbacks | 6.8 | qt/qtbase | Status: MERGED | +2 | 0 |