From a4ad0f0d2b68b69b2844dc693426f385280e6da7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 23 Oct 2025 14:22:41 +0100 Subject: [PATCH] Ensure GL pixel history finds all possible modifying events * All tests must be disabled as much as possible, including depth clipping and depth bounds, as well as binding a fixed shader for potential shader discards. --- renderdoc/driver/gl/gl_pixelhistory.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_pixelhistory.cpp b/renderdoc/driver/gl/gl_pixelhistory.cpp index 7a91605c3..b9f4c7f73 100644 --- a/renderdoc/driver/gl/gl_pixelhistory.cpp +++ b/renderdoc/driver/gl/gl_pixelhistory.cpp @@ -864,13 +864,20 @@ rdcarray QueryModifyingEvents(WrappedOpenGL *driver, GLPixelHistoryR GLRenderState state; state.FetchState(driver); + GLint currentProgram = 0; + driver->glGetIntegerv(eGL_CURRENT_PROGRAM, ¤tProgram); + + if(!IsGLES) + driver->glEnable(eGL_DEPTH_CLAMP); + if(HasExt[EXT_depth_bounds_test]) + driver->glDisable(eGL_DEPTH_BOUNDS_TEST_EXT); driver->glDisable(eGL_DEPTH_TEST); driver->glDisable(eGL_STENCIL_TEST); driver->glDisable(eGL_CULL_FACE); driver->glDisable(eGL_SAMPLE_MASK); - driver->glDisable(eGL_DEPTH_CLAMP); driver->glEnable(eGL_SCISSOR_TEST); driver->glScissor(x, y, 1, 1); + driver->glUseProgram(GetFixedColProgram(driver, driver->GetReplay(), resources, currentProgram)); driver->SetFetchCounters(true); driver->glBeginQuery(eGL_SAMPLES_PASSED, occlusionQueries[i]);