From 5df148cb6c5b04a49dfc9fb33edaf9f6f03cf955 Mon Sep 17 00:00:00 2001 From: Turanszki Janos Date: Wed, 20 Sep 2023 08:10:54 +0200 Subject: [PATCH] workaround crash fix for AMD RX 6650 --- WickedEngine/wiRenderer.cpp | 23 +++++++++++++++++++++++ WickedEngine/wiVersion.cpp | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 4cbb0bfb9..9053c5c3a 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -1892,6 +1892,29 @@ void LoadBuffers() device->CreateTexture(&desc, nullptr, &textures[TEXTYPE_3D_WIND]); device->SetName(&textures[TEXTYPE_3D_WIND], "textures[TEXTYPE_3D_WIND]"); } + { + // Note: Create dummy shadow map atlas to avoid issue with AMD RX 6650 GPU + // It seems like it incorectly handles dynamic branch on descriptor index + TextureDesc desc; + desc.width = 1; + desc.height = 1; + desc.format = format_depthbuffer_shadowmap; + desc.bind_flags = BindFlag::DEPTH_STENCIL | BindFlag::SHADER_RESOURCE; + desc.layout = ResourceState::SHADER_RESOURCE; + desc.misc_flags = ResourceMiscFlag::TEXTURE_COMPATIBLE_COMPRESSION; + device->CreateTexture(&desc, nullptr, &shadowMapAtlas); + device->SetName(&shadowMapAtlas, "shadowMapAtlas"); + + desc.format = format_rendertarget_shadowmap; + desc.bind_flags = BindFlag::RENDER_TARGET | BindFlag::SHADER_RESOURCE; + desc.layout = ResourceState::SHADER_RESOURCE; + desc.clear.color[0] = 1; + desc.clear.color[1] = 1; + desc.clear.color[2] = 1; + desc.clear.color[3] = 0; + device->CreateTexture(&desc, nullptr, &shadowMapAtlas_Transparent); + device->SetName(&shadowMapAtlas_Transparent, "shadowMapAtlas_Transparent"); + } } void SetUpStates() { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 8b88f3cc5..690d6913a 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 71; // minor bug fixes, alterations, refactors, updates - const int revision = 290; + const int revision = 291; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);