diff --git a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt index ad2e54fb..e50407d6 100644 --- a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt +++ b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt @@ -42,12 +42,10 @@ GetFramebufferBindingSlot@ReadPixels # The XFB program check at draw setup (FieldOwnership.def: "P3b/P4b (Espryt), P7 (Magma)"). # 11 entries (the TessellationXfbCapture / XfbCaptureBufferReuse family) GetTransformFeedbackProgram@DrawArrays -# CopyImageSubData resolves both textures through the sticky forward (def: "P7"). -# 6 entries -GetTextureObject@CopyImageSubData -# Magma's Clear path (the two DirectVulkan.Split.NamedBlit entries) - fm's first rows. -# 2 entries -GetFramebufferBindingSlot@Clear +# P5f fm measured retirement: GetTextureObject@CopyImageSubData disappeared via +# the shared fe/fm endpoint-handle seam; those six Espryt cases now reach ReadPixels. +# P5f fm measured retirement: the two Magma NamedBlit entries are green; Clear, +# readback and blit resolve server framebuffer/resource records. # CopyTexImage2D's texture-unit read (def: "P5e (Espryt unbarriered), P7 (Magma)"). # 2 entries GetTextureUnitObject@CopyTexImage2D diff --git a/MobileGL/MG_Pipe/FieldOwnership.def b/MobileGL/MG_Pipe/FieldOwnership.def index 4c3bc75f..c2cea6e2 100644 --- a/MobileGL/MG_Pipe/FieldOwnership.def +++ b/MobileGL/MG_Pipe/FieldOwnership.def @@ -50,6 +50,17 @@ // RetiringPhase is `-` for every class but BARRIER_PULLED, where it is the ROADMAP phase // whose row stops the pull. It is a string, not an enum, because two of them name two // phases for the two backends and flattening that would lose the half that matters. +// +// P5f fm: the Magma transport consumers of the nine object rows below have retired. +// WireDraw/WireFramebuffer and MagmaProgramSource/UniformManager read server records; +// enabled vertex arrays, EBO/indirect/named UBO/SSBO/texel-buffer uses meet the existing +// named P7 buffer refusal before any frontend read. Texture sync uses handle-keyed images +// and staged bytes, never GetTextureObject. The old getters remain reachable only through +// the monolith implementation (or behind the named P7/class-C boundary). Keep these global +// classifications until fe + fm are integrated and the residual-fill/generator invariants +// are retired together; a missing wire branch must still poison, never read a default. +// RecordError belongs to fv. Details and the no-buffer draw counterexample are in +// docs/Disaggregated/notes/p5f/fm-report.md. #define MGP_FIELD_OWNERSHIP_LIST(X) \ /* ---- BARRIER_PULLED: the 9 non-sticky rows the reduced path actually reads ---- */ \ /* scout-unmigrated-census section 3 intersects each verb class's may-read mask with "no */ \