From 19372867986aa887412cd1f825debd57c8a74ec9 Mon Sep 17 00:00:00 2001 From: MaranBr Date: Wed, 24 Sep 2025 00:58:28 +0200 Subject: [PATCH] [video_core] Improve asynchronous shader building (#2560) This improves the asynchronous shader building process. Fixes a TOTK inventory bug that caused some icons to be missing under certain circumstances when using asynchronous shader building. Fixes an issue in Kirby and the Forgotten Land where arriving at the checkpoint would cause a graphical bug in the building when asynchronous shader building was enabled. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2560 Reviewed-by: CamilleLaVey Reviewed-by: crueter Co-authored-by: MaranBr Co-committed-by: MaranBr --- src/video_core/renderer_opengl/gl_shader_cache.cpp | 5 ----- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 5 ----- 2 files changed, 10 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index b6ce57b819..c2ead26bd9 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -399,11 +399,6 @@ GraphicsPipeline* ShaderCache::BuiltPipeline(GraphicsPipeline* pipeline) const n if (!use_asynchronous_shaders) { return pipeline; } - // If something is using depth, we can assume that games are not rendering anything which - // will be used one time. - if (maxwell3d->regs.zeta_enable) { - return nullptr; - } // If games are using a small index count, we can assume these are full screen quads. // Usually these shaders are only used once for building textures so we can assume they // can't be built async diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index e4b6527db0..2fd0b59b3a 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -603,11 +603,6 @@ GraphicsPipeline* PipelineCache::BuiltPipeline(GraphicsPipeline* pipeline) const if (!use_asynchronous_shaders) { return pipeline; } - // If something is using depth, we can assume that games are not rendering anything which - // will be used one time. - if (maxwell3d->regs.zeta_enable) { - return nullptr; - } // If games are using a small index count, we can assume these are full screen quads. // Usually these shaders are only used once for building textures so we can assume they // can't be built async