From a96435a5ddac43222f78d76867c991ba2e81b8d5 Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Thu, 24 Jul 2025 09:43:46 +0200 Subject: [PATCH] ShaderCache: theoretical loading speedup by first checking to see if a shader later in the queue is already compiled --- src/Cafe/HW/Latte/Core/LatteShaderCache.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp b/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp index 9ea3db5a..2e0b98d7 100644 --- a/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp +++ b/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp @@ -102,6 +102,18 @@ void LatteShaderCache_removeFromCompileQueue(sint32 index) */ void LatteShaderCache_updateCompileQueue(sint32 maxRemainingEntries) { + // remove any shaders that are already done + for (size_t i = 0; i < shaderCompileQueue.count; i++) + { + auto shaderEntry = shaderCompileQueue.entry[i].shader; + if (!shaderEntry) + continue; + if (shaderEntry->shader->IsCompiled()) + { + LatteShader_prepareSeparableUniforms(shaderEntry); + LatteShaderCache_removeFromCompileQueue(i); + } + } while (true) { if (shaderCompileQueue.count <= maxRemainingEntries)