From f9c0e7ec43c64dbf69a0c4214f951ac3d1d90ea5 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 8 Sep 2026 18:11:04 -0400 Subject: [PATCH] [Fix] (Test): read the DIRECTION of the subsystem refusal, so the two dependency lanes stop accepting each other's sentence --- .../ObjectSubsystemControlScenario.cpp | 215 ++++++++++++++++-- 1 file changed, 199 insertions(+), 16 deletions(-) diff --git a/MobileGL/MG_IntegrationTest/Scenarios/ObjectSubsystemControlScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/ObjectSubsystemControlScenario.cpp index e94002ef..4e03fc5e 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/ObjectSubsystemControlScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/ObjectSubsystemControlScenario.cpp @@ -91,6 +91,7 @@ #include #include "../Harness/HeadlessGL.h" +#include "../Harness/PipeApplyPeek.h" #include "../Harness/PipeStatsWindow.h" #include "../Harness/ScenarioFixture.h" @@ -114,11 +115,23 @@ namespace MGITest { constexpr const char* kLaneRefused = "refused"; // D-K2's FOURTH row (ID-15): bit 10 without bit 11. 0x5ff is 0x1ff plus bit 10. constexpr const char* kLaneRefusedTexture = "refused-texture"; + // c0f's two halves (ID-39/ID-40), run at the phase default on BOTH backends: the client + // GATE (a P4a family emits only where a backend registered MGPipeResourceOps) and the + // applier's BELT (every P4a entry point refuses and counts RefusedNoConsumer when none + // did). One lane per backend, because the interesting one is the backend with NO + // consumer - Magma - and the other is the control that says the assertion is not + // vacuously true of a tree where nothing emits at all. + constexpr const char* kLaneConsumer = "consumer"; + constexpr const char* kLaneNoConsumer = "no-consumer"; bool LaneIsARefusalLane(const std::string& lane) { return lane == kLaneRefused || lane == kLaneRefusedTexture; } + bool LaneIsAConsumerLane(const std::string& lane) { + return lane == kLaneConsumer || lane == kLaneNoConsumer; + } + constexpr int kInset = 2; constexpr int kTextureSize = 4; // Enough frames that a per-frame emitter and a per-draw emitter read differently, and few @@ -168,21 +181,53 @@ void main() { oColor = texture(uTex, vUv); } // * at ERROR severity - the library writes "[