diff --git a/CyberXeSS/CyberXeSS.vcxproj b/CyberXeSS/CyberXeSS.vcxproj
index 3704d586..5408c950 100644
--- a/CyberXeSS/CyberXeSS.vcxproj
+++ b/CyberXeSS/CyberXeSS.vcxproj
@@ -82,7 +82,7 @@
$(SolutionDir)external\simpleini;$(SolutionDir)external\nvngx_dlss_sdk;$(SolutionDir)external\unordered_dense\include;$(SolutionDir)external\xess\inc\xess;$(SolutionDir)external\vulkan\include;$(SolutionDir)external\ffx-sdk\sdk\include;$(SolutionDir)external\fmt\include;$(SolutionDir)external\spdlog\include;C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;$(IncludePath)
$(SolutionDir)external\xess\lib;C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x64;$(LibraryPath)
nvngx
- E:\Games\God of War
+ D:\Folders\Games\Deep Rock Galactic\FSD\Binaries\Win64\
$(SolutionDir)external\simpleini;$(SolutionDir)external\nvngx_dlss_sdk;$(SolutionDir)external\unordered_dense\include;$(SolutionDir)external\xess\inc\xess;$(SolutionDir)external\vulkan\include;$(SolutionDir)external\ffx-sdk\sdk\include;$(SolutionDir)external\fmt\include;$(SolutionDir)external\spdlog\include;C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;$(IncludePath)
diff --git a/CyberXeSS/NVNGX_DLSS_Dx11.cpp b/CyberXeSS/NVNGX_DLSS_Dx11.cpp
index 69c40c6a..ab2d0e8f 100644
--- a/CyberXeSS/NVNGX_DLSS_Dx11.cpp
+++ b/CyberXeSS/NVNGX_DLSS_Dx11.cpp
@@ -268,16 +268,16 @@ NVSDK_NGX_Result NVSDK_NGX_D3D11_EvaluateFeature(ID3D11DeviceContext* InDevCtx,
}
}
- if (!deviceContext->IsInited())
- {
- deviceContext->Init(D3D11Device, InDevCtx, InParameters);
+ //if (!deviceContext->IsInited())
+ //{
+ // deviceContext->Init(D3D11Device, InDevCtx, InParameters);
- if (!deviceContext->IsInited())
- {
- spdlog::error("NVSDK_NGX_D3D11_EvaluateFeature deviceContext.XessInit is false, init failed!");
- return NVSDK_NGX_Result_Fail;
- }
- }
+ // if (!deviceContext->IsInited())
+ // {
+ // spdlog::error("NVSDK_NGX_D3D11_EvaluateFeature deviceContext.XessInit is false, init failed!");
+ // return NVSDK_NGX_Result_Fail;
+ // }
+ //}
NVSDK_NGX_Result evResult = NVSDK_NGX_Result_Success;
if (!deviceContext->Evaluate(InDevCtx, InParameters))
diff --git a/CyberXeSS/NVNGX_DLSS_Dx12.cpp b/CyberXeSS/NVNGX_DLSS_Dx12.cpp
index 13a9923f..62a3c22a 100644
--- a/CyberXeSS/NVNGX_DLSS_Dx12.cpp
+++ b/CyberXeSS/NVNGX_DLSS_Dx12.cpp
@@ -262,26 +262,26 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_EvaluateFeature(ID3D12GraphicsCom
}
}
- if (!deviceContext->IsInited())
- {
- ID3D12Device* device;
- spdlog::debug("NVSDK_NGX_D3D12_EvaluateFeature Get D3d12 device from InCmdList!");
- auto deviceResult = InCmdList->GetDevice(IID_PPV_ARGS(&device));
+ //if (!deviceContext->IsInited())
+ //{
+ // ID3D12Device* device;
+ // spdlog::debug("NVSDK_NGX_D3D12_EvaluateFeature Get D3d12 device from InCmdList!");
+ // auto deviceResult = InCmdList->GetDevice(IID_PPV_ARGS(&device));
- if (deviceResult != S_OK || device == nullptr)
- {
- spdlog::error("NVSDK_NGX_D3D12_EvaluateFeature Can't get Dx12Device from InCmdList!");
- return NVSDK_NGX_Result_Fail;
- }
+ // if (deviceResult != S_OK || device == nullptr)
+ // {
+ // spdlog::error("NVSDK_NGX_D3D12_EvaluateFeature Can't get Dx12Device from InCmdList!");
+ // return NVSDK_NGX_Result_Fail;
+ // }
- deviceContext->Init(device, InParameters);
+ // deviceContext->Init(device, InParameters);
- if (!deviceContext->IsInited())
- {
- spdlog::error("NVSDK_NGX_D3D12_EvaluateFeature deviceContext.XessInit is false, init failed!");
- return NVSDK_NGX_Result_Fail;
- }
- }
+ // if (!deviceContext->IsInited())
+ // {
+ // spdlog::error("NVSDK_NGX_D3D12_EvaluateFeature deviceContext.XessInit is false, init failed!");
+ // return NVSDK_NGX_Result_Fail;
+ // }
+ //}
//dumpParams.frame_count = 1;
//dumpParams.frame_idx = cnt++;
diff --git a/CyberXeSS/XeSSFeature_Dx11.cpp b/CyberXeSS/XeSSFeature_Dx11.cpp
index ae1ceeec..1fdda55d 100644
--- a/CyberXeSS/XeSSFeature_Dx11.cpp
+++ b/CyberXeSS/XeSSFeature_Dx11.cpp
@@ -298,7 +298,7 @@ bool XeSSFeatureDx11::Init(ID3D11Device* device, ID3D11DeviceContext* context, c
spdlog::debug("XeSSFeatureDx11::Init calling InitXeSS");
- if (!InitXeSS(Dx12on11Device, initParams))
+ if (Dx12on11Device && !InitXeSS(Dx12on11Device, initParams))
{
spdlog::error("XeSSFeatureDx11::Init InitXeSS fail!");
return false;
@@ -309,13 +309,10 @@ bool XeSSFeatureDx11::Init(ID3D11Device* device, ID3D11DeviceContext* context, c
bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, const NVSDK_NGX_Parameter* InParameters)
{
- if (!IsInited() || !_xessContext)
- return false;
-
ID3D11DeviceContext4* dc;
auto result = InDeviceContext->QueryInterface(IID_PPV_ARGS(&dc));
- if (result!= S_OK)
+ if (result != S_OK)
{
spdlog::error("XeSSFeatureDx11::Evaluate CreateFence d3d12fence error: {0:x}", result);
return false;
@@ -328,18 +325,30 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, const NVSDK
Dx11DeviceContext = dc;
}
- if (!Dx12on11Device)
+ if (!IsInited() || !_xessContext)
{
- auto fl = Dx11Device->GetFeatureLevel();
- auto result = CreateDx12Device(fl);
-
- if (result != S_OK || !Dx12on11Device)
+ if (!Dx12on11Device)
{
- spdlog::error("XeSSFeatureDx11::Init QueryInterface Dx12Device result: {0:x}", result);
- return false;
+ auto fl = Dx11Device->GetFeatureLevel();
+ result = CreateDx12Device(fl);
+
+ if (result != S_OK || !Dx12on11Device)
+ {
+ spdlog::error("XeSSFeatureDx11::Init QueryInterface Dx12Device result: {0:x}", result);
+ return false;
+ }
+
+ if (!IsInited() && Dx12on11Device && !InitXeSS(Dx12on11Device, InParameters))
+ {
+ spdlog::error("XeSSFeatureDx11::Init InitXeSS fail!");
+ return false;
+ }
}
+ else
+ return false;
}
+
// Fence for syncing
ID3D12Fence* d3d12Fence;
result = Dx12on11Device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence));
@@ -694,7 +703,7 @@ XeSSFeatureDx11::~XeSSFeatureDx11()
ReleaseSharedResources();
}
-void IFeature_Dx11::Shutdown()
+void IFeature_Dx11::Shutdown()
{
SAFE_RELEASE(Dx12CommandList);
SAFE_RELEASE(Dx12CommandQueue);