From ca4841d6d39f114986ed45a7baf2be12d3ea7a68 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Tue, 10 Sep 2024 23:27:06 +0300 Subject: [PATCH] added more typless formats --- OptiScaler/bias/Bias_Dx11.cpp | 4 ++++ OptiScaler/bias/Bias_Dx12.cpp | 4 ++++ OptiScaler/output_scaling/OS_Dx11.cpp | 6 +++++- OptiScaler/output_scaling/OS_Dx12.cpp | 4 ++++ OptiScaler/rcas/RCAS_Dx11.cpp | 4 ++++ OptiScaler/rcas/RCAS_Dx12.cpp | 29 +++++++++++++++++---------- 6 files changed, 39 insertions(+), 12 deletions(-) diff --git a/OptiScaler/bias/Bias_Dx11.cpp b/OptiScaler/bias/Bias_Dx11.cpp index 069a1670..6eed9bb7 100644 --- a/OptiScaler/bias/Bias_Dx11.cpp +++ b/OptiScaler/bias/Bias_Dx11.cpp @@ -20,6 +20,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } diff --git a/OptiScaler/bias/Bias_Dx12.cpp b/OptiScaler/bias/Bias_Dx12.cpp index 7fc7730f..fc114df6 100644 --- a/OptiScaler/bias/Bias_Dx12.cpp +++ b/OptiScaler/bias/Bias_Dx12.cpp @@ -20,6 +20,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } diff --git a/OptiScaler/output_scaling/OS_Dx11.cpp b/OptiScaler/output_scaling/OS_Dx11.cpp index 6f8c9895..517ec50f 100644 --- a/OptiScaler/output_scaling/OS_Dx11.cpp +++ b/OptiScaler/output_scaling/OS_Dx11.cpp @@ -11,7 +11,7 @@ #include "../Config.h" -inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) +inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) { switch (format) { case DXGI_FORMAT_R32G32B32A32_TYPELESS: @@ -26,6 +26,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } diff --git a/OptiScaler/output_scaling/OS_Dx12.cpp b/OptiScaler/output_scaling/OS_Dx12.cpp index f8e9983f..174cd3e1 100644 --- a/OptiScaler/output_scaling/OS_Dx12.cpp +++ b/OptiScaler/output_scaling/OS_Dx12.cpp @@ -26,6 +26,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } diff --git a/OptiScaler/rcas/RCAS_Dx11.cpp b/OptiScaler/rcas/RCAS_Dx11.cpp index 93bcf69f..c445496f 100644 --- a/OptiScaler/rcas/RCAS_Dx11.cpp +++ b/OptiScaler/rcas/RCAS_Dx11.cpp @@ -19,6 +19,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } diff --git a/OptiScaler/rcas/RCAS_Dx12.cpp b/OptiScaler/rcas/RCAS_Dx12.cpp index 0cf4d778..ed543360 100644 --- a/OptiScaler/rcas/RCAS_Dx12.cpp +++ b/OptiScaler/rcas/RCAS_Dx12.cpp @@ -19,6 +19,10 @@ inline static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) return DXGI_FORMAT_R8G8B8A8_UNORM; case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_FLOAT; + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_FLOAT; default: return format; } @@ -191,6 +195,20 @@ bool RCAS_Dx12::Dispatch(ID3D12Device* InDevice, ID3D12GraphicsCommandList* InCm InDevice->CreateUnorderedAccessView(OutResource, nullptr, &uavDesc, _cpuUavHandle[_counter]); + if (_constantBuffer == nullptr) + { + D3D12_RESOURCE_DESC desc = CD3DX12_RESOURCE_DESC::Buffer(sizeof(InternalConstants)); + auto heapProps = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD); + + auto result = InDevice->CreateCommittedResource(&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(&_constantBuffer)); + + if (result != S_OK) + { + LOG_ERROR("[{0}] CreateCommittedResource error {1:x}", _name, (unsigned int)result); + return false; + } + } + InternalConstants constants{}; constants.DisplayHeight = InConstants.DisplayHeight; constants.DisplayWidth = InConstants.DisplayWidth; @@ -335,17 +353,6 @@ RCAS_Dx12::RCAS_Dx12(std::string InName, ID3D12Device* InDevice) : _name(InName) rootSigDesc.pStaticSamplers = nullptr; rootSigDesc.Flags = D3D12_ROOT_SIGNATURE_FLAG_NONE; - D3D12_RESOURCE_DESC desc = CD3DX12_RESOURCE_DESC::Buffer(sizeof(InternalConstants)); - auto heapProps = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD); - - auto result = InDevice->CreateCommittedResource(&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(&_constantBuffer)); - - if (result != S_OK) - { - LOG_ERROR("[{0}] CreateCommittedResource error {1:x}", _name, (unsigned int)result); - return; - } - ID3DBlob* errorBlob; ID3DBlob* signatureBlob;