From f17f127f46ab7691b6c221b094281cdff2c4cdaa Mon Sep 17 00:00:00 2001 From: GPUCode Date: Mon, 11 Sep 2023 01:26:44 +0300 Subject: [PATCH] vk_pipeline_cache: Improve shadow detection --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 5e8e02677..6d4da7127 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -390,7 +390,11 @@ void PipelineCache::UseFragmentShader(const Pica::Regs& regs) { if (new_shader) { const bool use_spirv = Settings::values.spirv_shader_gen.GetValue(); - if (use_spirv && !config.state.shadow_rendering.Value()) { + const auto texture0_type = config.state.texture0_type.Value(); + const bool is_shadow = texture0_type == Pica::TexturingRegs::TextureConfig::Shadow2D || + texture0_type == Pica::TexturingRegs::TextureConfig::ShadowCube || + config.state.shadow_rendering.Value(); + if (use_spirv && !is_shadow) { const std::vector code = GenerateFragmentShaderSPV(config); shader.module = CompileSPV(code, instance.GetDevice()); shader.MarkDone();