From f674c5bec718fb4d35c8684e8eccb4224f2e5432 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Tue, 10 Sep 2024 23:31:34 +0300 Subject: [PATCH] added typless checks --- OptiScaler/imgui/Imgui_Dx11.cpp | 2 +- OptiScaler/imgui/imgui_dx12.cpp | 2 +- OptiScaler/imgui/imgui_dx_base.h | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/OptiScaler/imgui/Imgui_Dx11.cpp b/OptiScaler/imgui/Imgui_Dx11.cpp index 55507f83..3fe1d6d7 100644 --- a/OptiScaler/imgui/Imgui_Dx11.cpp +++ b/OptiScaler/imgui/Imgui_Dx11.cpp @@ -32,7 +32,7 @@ void Imgui_Dx11::CreateRenderTarget(ID3D11Resource* out) { D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; ZeroMemory(&rtvDesc, sizeof(rtvDesc)); - rtvDesc.Format = outDesc.Format; + rtvDesc.Format = TranslateTypelessFormats(outDesc.Format); rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; rtvDesc.Texture2D.MipSlice = 0; diff --git a/OptiScaler/imgui/imgui_dx12.cpp b/OptiScaler/imgui/imgui_dx12.cpp index e6a1c1bc..68c9533b 100644 --- a/OptiScaler/imgui/imgui_dx12.cpp +++ b/OptiScaler/imgui/imgui_dx12.cpp @@ -242,7 +242,7 @@ void Imgui_Dx12::CreateRenderTarget(const D3D12_RESOURCE_DESC& InDesc) desc.Height = InDesc.Height; desc.DepthOrArraySize = 1; desc.MipLevels = 1; - desc.Format = InDesc.Format; + desc.Format = TranslateTypelessFormats(InDesc.Format); desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; diff --git a/OptiScaler/imgui/imgui_dx_base.h b/OptiScaler/imgui/imgui_dx_base.h index 86e479e9..a201e1f2 100644 --- a/OptiScaler/imgui/imgui_dx_base.h +++ b/OptiScaler/imgui/imgui_dx_base.h @@ -1,5 +1,6 @@ #include "../pch.h" #include "imgui_common.h" +#include class ImguiDxBase { @@ -15,6 +16,30 @@ protected: long frameCounter = 0; void RenderMenu(); + static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format) + { + switch (format) { + case DXGI_FORMAT_R32G32B32A32_TYPELESS: + return DXGI_FORMAT_R32G32B32A32_FLOAT; + case DXGI_FORMAT_R32G32B32_TYPELESS: + return DXGI_FORMAT_R32G32B32_FLOAT; + case DXGI_FORMAT_R16G16B16A16_TYPELESS: + return DXGI_FORMAT_R16G16B16A16_FLOAT; + case DXGI_FORMAT_R10G10B10A2_TYPELESS: + return DXGI_FORMAT_R10G10B10A2_UINT; + case DXGI_FORMAT_R8G8B8A8_TYPELESS: + 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; + } + } + public: bool IsVisible() const; bool IsInited() const { return _baseInit; }