[MG_Pipe] (Disaggregated): P5f fe - retain live capture snapshots across make-current

This commit is contained in:
2026-09-19 22:13:14 -04:00
parent 81d20554aa
commit 19a4400ae8
2 changed files with 7 additions and 2 deletions
@@ -1993,7 +1993,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
xfb.scattered = false;
xfb.scatterProgram.reset();
#if MOBILEGL_BUILD_DISAGGREGATED
xfb.scatterArchive.reset();
xfb.scatterArchive.reset();
#endif
xfb.scatterCapacityVertices = 0;
if (program->NeedsScatteredTransformFeedbackCapture()) {
+6 -1
View File
@@ -1381,7 +1381,9 @@ namespace MobileGL::MG_Pipe {
g_applier.BoundShaderCso = kMGPipeNullHandle;
#if MOBILEGL_BUILD_DISAGGREGATED
g_applier.BoundStreamOutputLifetimeId = 0;
g_applier.StreamOutputSpans.clear();
// Begin is emitted once per span, not on make-current. Its immutable object
// snapshot survives with the resource/program records until End or release;
// set_context_values restores the returning context's bound lifetime id.
#endif
// P5e (sb, CONTRACT-P5E.md §5.6): the three binding-point windows are per-context
// WORKING state and go with the rest of it - a returning context has its own
@@ -1586,6 +1588,9 @@ namespace MobileGL::MG_Pipe {
// memory the rule exists to stop it reading. One store, inert until the caps bit is
// published, and it is what makes the two roles' third clause the same clause.
g_applier.IsTransformFeedbackActive = values.IsTransformFeedbackActive != 0;
#if MOBILEGL_BUILD_DISAGGREGATED
g_applier.BoundStreamOutputLifetimeId = values.BoundTransformFeedbackLifetimeId;
#endif
}
void MGPipeApplySetPatchState(const MGPPatchState& patch) {