Evaluating DLSS on compute queue using Streamline fails due to Streamline transitioning resources into graphics-only states
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.