Streamline icon indicating copy to clipboard operation
Streamline copied to clipboard

Unable to recover from device removed events

Open CCPNobody opened this issue 4 months ago • 2 comments

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?

CCPNobody avatar Sep 03 '25 09:09 CCPNobody