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 "[