Streamline icon indicating copy to clipboard operation
Streamline copied to clipboard

Evaluating DLSS on compute queue using Streamline fails due to Streamline transitioning resources into graphics-only states

Open panthuncia opened this issue 3 weeks ago • 3 comments

Steps to reproduce: try to 'slEvaluateFeature' DLSS through Streamline on the compute queue.

Description:

Since DLSS does (to my knowledge) not use graphics hardware, it should be entirely possible to run DLSS on the async compute queue.

However, when I pass 'slEvaluateFeature' a compute command list, and execute it on a compute queue, I get:

D3D12 ERROR: ID3D12CommandList::ResourceBarrier: D3D12_RESOURCE_STATES has invalid flags (0x80) for compute command list. [ RESOURCE_MANIPULATION ERROR #537: RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE]

This is because the DLSS plugin uses chi::ResourceState::eTextureRead for all of its texture resource states for some reason, even though that maps to D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, which I don't believe is necessary for DLSS's compute shaders, and which cannot be used on a compute queue.

I tried lying to the API, saying my resources were already in D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE or D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE, but it still tries to interact with D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE (maybe because of an internal resource?), breaking evaluation.

I also tried fixing it myself, but the build instructions did not work.

panthuncia avatar Dec 26 '25 03:12 panthuncia