From 80b91346d1dca91c315c7abe6aaadf76fff289ff Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 22 Sep 2026 20:20:04 -0400 Subject: [PATCH] [tools] (P7): a split retrace reds on any MGWIRE-FLOOR unsound-serial-complete line, so the frame-serial floor clamp has a lane Review ID-P7-34, item 2. The primary B3 fix - the clamp in VulkanRenderer::OnSubmitsCompletedUpTo that raises the completed-frame- serial floor only to a serial no in-flight submission still carries - had nothing behind it: deleting the clamp loop left every lane green and the OpenRA picture gold on lavapipe (the host's barriers hide the tear). Its only observable was the per-event MGLOG_W "MGWIRE-FLOOR unsound-serial-complete". run_trace_case.cmake now reads that line out of both roles' logs on every split run, exactly as it already reads Fatal{: the count is printed pass or fail and any nonzero count is a FATAL_ERROR. The R-16 counter (26 -> 0 on the OpenRA retrace) is thereby a gate. Red/green on MobileGLTraceReplay.OpenRA.DirectVulkan.SPLIT / .SPAWN: clamp loop deleted -> both FAIL at ssim 1.000000 / 0 px: MGPipe split: OpenRA DirectVulkan transport=inproc, MGWIRE-FLOOR unsound-serial-complete lines: 26 [mgl-srv-apply/WARN]: MGWIRE-FLOOR unsound-serial-complete #1: advancing the completed frame-serial floor to 3, which submission 3 (serial 3) still carries (spawn: identical, 26) clamp restored -> both PASS, 0 lines. --- tools/trace_replay/run_trace_case.cmake | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tools/trace_replay/run_trace_case.cmake b/tools/trace_replay/run_trace_case.cmake index 71ebe954..571f6f74 100644 --- a/tools/trace_replay/run_trace_case.cmake +++ b/tools/trace_replay/run_trace_case.cmake @@ -394,5 +394,37 @@ if(DEFINED ENV{MOBILEGL_TRANSPORT} AND NOT "$ENV{MOBILEGL_TRANSPORT}" STREQUAL " "them is silenced here: this log is the only place they appear, because the console sink " "is compiled out of the configurations this lane runs.") endif() + # P7 B3 (review ID-P7-34): THE COMPLETED-FRAME-SERIAL FLOOR'S LANE, read exactly like the + # Fatal census above - both roles' logs, every split run, counted even when zero. + # + # VulkanRenderer::OnSubmitsCompletedUpTo logs one "MGWIRE-FLOOR unsound-serial-complete" + # line (MGLOG_W, unconditional, disaggregated builds only) each time it would raise the + # floor to a frame serial that a submission still in flight carries - the defect behind + # the OpenRA device divergence, where a mid-frame pooled-fence submission retiring + # declared its whole serial complete while the Present submission of the same serial was + # still copying. The clamp there makes the line unreachable, and without this red the + # clamp had no lane: deleting it left every lane green and the picture on lavapipe gold, + # because the host's barriers happen to hide the tear. The count was 26 per OpenRA replay + # before the fix and 0 after; any nonzero count is the floor asserting a completion it + # never waited for, whether or not this driver's timing turned it into pixels. + file(STRINGS "${mobilegl_log}" split_floor REGEX "MGWIRE-FLOOR unsound-serial-complete") + if(EXISTS "${mobilegl_server_log}") + file(STRINGS "${mobilegl_server_log}" split_server_floor REGEX "MGWIRE-FLOOR unsound-serial-complete") + list(APPEND split_floor ${split_server_floor}) + endif() + list(LENGTH split_floor split_floor_count) + message(STATUS "MGPipe split: ${split_case} transport=$ENV{MOBILEGL_TRANSPORT}, " + "MGWIRE-FLOOR unsound-serial-complete lines: ${split_floor_count}") + if(split_floor) + list(GET split_floor 0 split_floor_first) + message(STATUS "${split_floor_first}") + message(FATAL_ERROR + "${split_case}: ${split_floor_count} MGWIRE-FLOOR unsound-serial-complete line(s) under " + "MOBILEGL_TRANSPORT=$ENV{MOBILEGL_TRANSPORT}. The completed-frame-serial floor was " + "raised to a serial an in-flight submission still carries, so a streamed buffer write " + "can take the unsynchronised host path over bytes that submission is still copying " + "(magma-b3.md ยง2). The clamp in VulkanRenderer::OnSubmitsCompletedUpTo is what makes " + "this unreachable; a line here means it was removed or bypassed.") + endif() endif() endif()