NVIDIA-RTX / NVIDIA-RTX/Streamline

Unable to recover from device removed events

Open
#86 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ack bug documentation
Dominant language
C
Stars
1.2k
Forks
159
PR merge metrics
No merged PRs in 30d

Description

Hello.

We have been integrating Streamline (with dlss, dlss-g, nis, reflex etc) into our proprietary game engine.
One of the things that our engine does support is the recovery from device remove events. In those cases we remove the d3ddevice, swapchain, commandlists, commandqueues etc and recreate everything again.

We integrated streamline using manual hooking and dynamic linking. If the user enables dlss we tear down the d3ddevice, swapchain etc, load up streamlines interposer dll, initialize streamline, create the d3ddevice, swapchain etc. and load up all the plugins necessary for dlss / dlssg to work.

Now if the user decides to turn off dlss, we tear down the d3ddevice, swapchain etc, shutdown streamline, unload the streamline interposer dll and recreate the d3ddevice, swapchain etc without the usage of streamline.

As far as we can tell we are setting up streamline correctly, there are no errors in the logs when we run with logs enabled and the upscaling seems to work as well as any other upscaling techniques we have integrated into the client

Here comes the interesting part.
Lets say the user has enabled streamline during the game session (even if the user turns off dlss) and if the engine encounters a device hung event (HRESULT 0x887A0006) for some reason, we will not be able to recreate the device for the user, even though we have removed all d3ddevice, swapchains etc.
Any subsequent call to D3D12CreateDevice with the nvidia gpu will fail with the same HRESULT (0x887A0006).
As a sidenote, this doesn't happen if we haven't enabled streamline before in the game session.

Can it be that streamline is holding on to the device even after calling Shutdown?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the D3D12CreateDevice failures and compare the device teardown, Streamline Shutdown, interposer unload, and recreation sequence with sessions that never enabled Streamline. Determine whether Streamline retains the device after shutdown and identify the condition that prevents successful device recovery.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.