GPUOpen-Effects / FidelityFX-FSR2

FidelityFX Super Resolution 2
Other
1.95k stars 178 forks source link

Crash with Kepler GPU #36

Open KristofMorva opened 2 years ago

KristofMorva commented 2 years ago

I've been wanting to test FSR2 out on an older machine, a Lenovo 510P with GT755M, and CreateComputePipelineState kept failing in ffx_fsr2_dx12 with E_INVALIDARGS. Turning on DirectX Debug Layer provided more information:

D3D12 ERROR: ID3D12Device::CreateComputeShader: Shader uses new Typed UAV Load formats, but the device does not support this. To check for support, check device caps via the CheckFeatureSupport() API [ STATE_CREATION ERROR #622: CREATESHADER_INVALIDBYTECODE]

It seems to me that FSR2 never checks for D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD, even though according to NVIDIA DirectX12 Hardware Features table, the Kepler architecture doesn't support Typed UAV Loads.

I'm not a graphics programmer so maybe I'm missing something, but as far as I can tell, (some?) Kepler GPUs are currently unsupported, and it is not handled gracefully; later on it crashes in the Unreal Engine plugin (FSR2TemporalUpscaler), which I'm assuming is induced by the issue above:

FfxErrorCode ErrorCode = ffxFsr2ContextCreate(&FSR2State->Fsr2, &Params);
check(ErrorCode == FFX_OK); // this check fails
AwayB commented 2 years ago

Hate to be the bringer of bad news, but I'd wager the odds of Kepler or any pre-2016 (perhaps pre-2018) GPU being supported here are close to nonexistent. Perhaps Mesa will look into that, but the official support is extremely unlikely.

KristofMorva commented 2 years ago

Hate to be the bringer of bad news, but I'd wager the odds of Kepler or any pre-2016 (perhaps pre-2018) GPU being supported here are close to nonexistent. Perhaps Mesa will look into that, but the official support is extremely unlikely.

That is really sad news indeed, but thanks for the confirmation that it's not me who has broken something.

If it's officially unsupported, then it'd be really nice if the Unreal Plugin (and I assume whatever other official plugins are available) provided some kind of query to decide if FSR2 is supported or not (IsFSR2Supported()) - because currently it'll just crash on unsupported systems, and the documentation doesn't mention any exceptions to the DX12 & Vulkan support (or maybe I was blind).

PMunkes commented 2 years ago

The documentation clearly states that Shader Model 6.2 support is required for support in DX12 and Vulkan. The situation with the DX11 version may be different. You GPU only has support for Shader model 5.1, well below the required version. https://www.techpowerup.com/gpu-specs/geforce-gt-755m.c2420 https://github.com/microsoft/DirectXShaderCompiler/wiki/Shader-Model-6.2 image

KristofMorva commented 1 year ago

Thanks for the clarification @PMunkes! :) Although I'm unsure now where that excerpt is from, the GitHub README has no mention of it, the official website also just says DX12 (https://gpuopen.com/fidelityfx-superresolution-2/), and I don't remember the UE4 Plugin documentation to have any mention of it.

PMunkes commented 1 year ago

Here you go @KristofMorva, it's directly in the main README.md file: https://github.com/GPUOpen-Effects/FidelityFX-FSR2#shading-language-requirements

KristofMorva commented 1 year ago

Ah, thanks, somehow my eyes skipped right over that 🥲

PMunkes commented 1 year ago

17.09.2022 11:02:48 Morva Kristóf @.***>:

Ah, thanks, somehow my eyes skipped right over that 🥲

— Reply to this email directly, view it on GitHub[https://github.com/GPUOpen-Effects/FidelityFX-FSR2/issues/36#issuecomment-1250024954], or unsubscribe[https://github.com/notifications/unsubscribe-auth/ABRGOVRDA76BHSZ62HBRAFDV6V3KPANCNFSM53X427QQ]. You are receiving this because you were mentioned.[Verfolgungsbild][https://github.com/notifications/beacon/ABRGOVSVRQHRNA7QBUBV4A3V6V3KPA5CNFSM53X427Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOJKA536Q.gif]

You're Welcome.