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.
This commit is contained in:
baldurk
2025-10-27 11:50:17 +00:00
parent 724bce2d20
commit a4ad0f0d2b
+8 -1
View File
@@ -864,13 +864,20 @@ rdcarray<EventUsage> QueryModifyingEvents(WrappedOpenGL *driver, GLPixelHistoryR
GLRenderState state;
state.FetchState(driver);
GLint currentProgram = 0;
driver->glGetIntegerv(eGL_CURRENT_PROGRAM, &currentProgram);
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]);