Hi Markus,
Thank you so much for your prompt reply!
I’ll do my best to help you understand what’s wrong since 580.xx update. Thousands of our user complain about this and we have tried to fix it on our side but were not able to :(
Summarizing, two big problems were found in the driver that was released after 577.00.
1. CUDA ( cuInit(0) ) no longer works.
Some part of our code are still 32bit. The GPU feature checker used CUDA to check HW version and other parameters of enumerated GPUs. Since 580.xx cuInit failed with “no device found”.
I’ve read that CUDA support for 32bit will be removed but from Hopper (Ada is supposed to be the last one with this support). But on our RTX 5080 it does not work anymore (again it works on 577.00). Since CUDA failed we had no NVENC available for our users.
We have done a workaround for this by enumerating Nvidia GPUs using DXGI and removing the CUDA part. So this is not a major issue. Just wanted to let you know that this is not working anymore.
Setup used to reproduce the problem:
RTX 5080 running on Windows 11 with 580.xx or newer drivers.
Problem does not occur on all GTX and all RTX from 2000 to 4000 used with the same PC.
2. Cross-process texture sharing.
It’s a major problem which cannot be easily fixed and no workaround exists except using GPU→CPU→GPU data transfer (which we have added today and we finally do not have these display stall/freezes).
So what exactly is going on:
- D3D12 Game process shares a keyed mutex texture to another process
- Another process opens the shared resource using it’s handle
- Another process queries for 2D texture from the shared handle
- Another process uses AquireSync to get synchronized access to this texture
- Problem occurs, AquireSync function hags after a few calls
- D3D12 Game process freezes
- DirectX functions run on another process stop working and return errors
- DXGI device used by another process is lost
- NVENC function called in this state return errors (like mapping texture to NVENC from DirectX)
- Game process freezes, another process freezes sometimes entire dektop freezes
Removing AquireSync fixes the problem but the texture is black (as assumed since AquireSync must be used for keyed mutex textures).
Setup used to reproduce the problem:
All GTX and RTX GPUs, even old ones.
Workaround: Dump texture data to CPU in D3D12 game process, share the CPU memory and in another process copy CPU data again back to GPU memory. We DO NOT want to use this permanently since this is not optimal especially for 4:4:4 and HDR content.
This problem does not occur for D3D11/10 game process.
Hope these details help you and please let me know if you have more questions that will help in fixing at least the cross-process texture sharing problem as this is critical for us.
Thank you!