Clear cache on reload shaders

This commit is contained in:
Jason Mitchell authored and Jason Mitchell committed 2026-03-22 11:07:37 -07:00
1 parent aff5ff7e7b
commit 09cc557be0
2 files changed
+7

No files matched your search

@@ -45,6 +45,7 @@ import net.coderbot.iris.postprocess.BufferFlipper;
import net.coderbot.iris.postprocess.CenterDepthSampler;
import net.coderbot.iris.postprocess.CompositeRenderer;
import net.coderbot.iris.postprocess.FinalPassRenderer;
import net.coderbot.iris.postprocess.FullScreenQuadRenderer;
import net.coderbot.iris.postprocess.ProgramBuildContext;
import net.coderbot.iris.rendertarget.IRenderTargetExt;
import net.coderbot.iris.rendertarget.NativeImageBackedSingleColorTexture;
@@ -1028,6 +1029,7 @@ public class DeferredWorldRenderingPipeline implements WorldRenderingPipeline, R
BlendModeOverride.restore();
AlphaTestOverride.restore();
FullScreenQuadRenderer.clearLocCache();
destroyPasses(table);
// Destroy the composite rendering pipeline
@@ -78,6 +78,11 @@ public class FullScreenQuadRenderer {
/** Per-program cached uniform locations: [mvLoc, projLoc]. Populated on first miss. */
private static final Int2ObjectOpenHashMap<int[]> compositeLocCache = new Int2ObjectOpenHashMap<>();
/** Clear cached uniform locations. Must be called when composite programs are destroyed (e.g. shader reload). */
public static void clearLocCache() {
compositeLocCache.clear();
}
public static void uploadCompositeMatrices() {
final int program = GLStateManager.glGetInteger(GL20.GL_CURRENT_PROGRAM);
if (program == 0) return;