expand dx11ue fix for DLSS because of possible RCAS/OS usage

This commit is contained in:
cdozdil
2024-11-07 18:01:16 +03:00
parent 9e3a4a359b
commit ebfd554ca6
3 changed files with 59 additions and 1 deletions
@@ -96,8 +96,29 @@ bool DLSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P
if (!OutputScaler->IsInit())
Config::Instance()->OutputScalingEnabled = false;
if (NVNGXProxy::D3D11_EvaluateFeature() != nullptr)
{
ID3D11ShaderResourceView* restoreSRVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11SamplerState* restoreSamplerStates[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11Buffer* restoreCBVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11UnorderedAccessView* restoreUAVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
for (size_t i = 0; i < 16; i++)
{
InDeviceContext->CSGetShaderResources(i, 1, &restoreSRVs[i]);
InDeviceContext->CSGetSamplers(i, 1, &restoreSamplerStates[i]);
InDeviceContext->CSGetConstantBuffers(i, 1, &restoreCBVs[i]);
InDeviceContext->CSGetUnorderedAccessViews(i, 1, &restoreUAVs[i]);
}
ProcessEvaluateParams(InParameters);
ID3D11Resource* paramOutput = nullptr;
@@ -214,6 +235,14 @@ bool DLSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P
// set original output texture back
InParameters->Set(NVSDK_NGX_Parameter_Output, paramOutput);
for (size_t i = 0; i < 16; i++)
{
InDeviceContext->CSSetShaderResources(i, 1, &restoreSRVs[i]);
InDeviceContext->CSSetSamplers(i, 1, &restoreSamplerStates[i]);
InDeviceContext->CSSetConstantBuffers(i, 1, &restoreCBVs[i]);
InDeviceContext->CSSetUnorderedAccessViews(i, 1, &restoreUAVs[i], 0);
}
}
else
{
@@ -102,6 +102,26 @@ bool DLSSDFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_
if (NVNGXProxy::D3D11_EvaluateFeature() != nullptr)
{
ID3D11ShaderResourceView* restoreSRVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11SamplerState* restoreSamplerStates[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11Buffer* restoreCBVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
ID3D11UnorderedAccessView* restoreUAVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
// backup compute shader resources
for (size_t i = 0; i < 16; i++)
{
InDeviceContext->CSGetShaderResources(i, 1, &restoreSRVs[i]);
InDeviceContext->CSGetSamplers(i, 1, &restoreSamplerStates[i]);
InDeviceContext->CSGetConstantBuffers(i, 1, &restoreCBVs[i]);
InDeviceContext->CSGetUnorderedAccessViews(i, 1, &restoreUAVs[i]);
}
ProcessEvaluateParams(InParameters);
ID3D11Resource* paramOutput = nullptr;
@@ -218,6 +238,15 @@ bool DLSSDFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_
// set original output texture back
InParameters->Set(NVSDK_NGX_Parameter_Output, paramOutput);
// restore compute shader resources
for (size_t i = 0; i < 16; i++)
{
InDeviceContext->CSSetShaderResources(i, 1, &restoreSRVs[i]);
InDeviceContext->CSSetSamplers(i, 1, &restoreSamplerStates[i]);
InDeviceContext->CSSetConstantBuffers(i, 1, &restoreCBVs[i]);
InDeviceContext->CSSetUnorderedAccessViews(i, 1, &restoreUAVs[i], 0);
}
}
else
{
+1 -1
View File
@@ -21,7 +21,7 @@
#define VER_MAJOR_VERSION 0
#define VER_MINOR_VERSION 7
#define VER_HOTFIX_VERSION 0
#define VER_BUILD_NUMBER 39
#define VER_BUILD_NUMBER 43
#define VER_PRE_RELEASE