From ca1beb6958730894b30fceef22f80f2510a7c204 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Fri, 18 Sep 2026 08:30:18 -0400 Subject: [PATCH] [MG_Backend] (Disaggregated): P5e fb - revert the tx2 scaffold; the seam goes back to c0e's stub - Reverts f4675d1a. tx2 owns TextureImpl::SyncTextureToBackendByHandle and BackendTextureObject::SyncMipmapsToBackendByHandle; fb bodied them temporarily only so that fb's own integration-split and strict lanes could be measured at all, and this puts the c0e stubs back so the two packages cannot collide at the merge. - WHAT THIS COSTS, AND IT IS SAID HERE RATHER THAN DISCOVERED: with the stubs back, every integration-split entry whose framebuffer has a TEXTURE attachment - or whose draw binds an image - aborts on Fatal{UnmigratedVerb, "TextureImpl::SyncTextureToBackendByHandle"} rather than on anything fb wrote. fb's lane is green the moment tx2 lands beside it; the numbers measured with the scaffold are in the package report, with the scaffold's own cost (a GetTextureObject pull per call) named. --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 41 ++------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index cb29827d..46cacf4e 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -14193,48 +14193,15 @@ namespace MobileGL::MG_Backend::DirectGLES { } // namespace namespace TextureImpl { - // ================================================================================ - // P5e SCAFFOLD (fb) - THIS COMMIT IS REVERTED BEFORE fb's HEAD. DO NOT LAND IT. - // ================================================================================ - // tx2 owns these two bodies and is being written in parallel. fb CALLS them from the - // attachment surface sync, the two attachment texture lists, the image sweep and the - // named blit, so with the c0e stubs in place every integration-split entry that touches - // a texture aborts on the seam rather than on anything fb wrote - which leaves fb's own - // isplit and strict numbers unmeasurable. - // - // So these two are bodied HERE, temporarily, in the ONLY way that does not pre-empt - // tx2's design: the frontend texture is resolved from the record's own GL name through - // the BARRIER-PULLED sticky forward GetTextureObject - exactly as the copy-image sink - // resolves its endpoints (PipeApplier.cpp) - and the existing frontend overloads then - // do the work. That is correct under lockstep (the client is parked, which is what - // makes a sticky forward legal) and it is deliberately NOT what tx2 will write: tx2 - // drives the storage from the descriptor and has no frontend object at all. - // - // What it costs, and what to read past when reading fb's numbers: each call adds a - // GetTextureObject pull, so the strict lane sees GetTextureObject@ markers that - // belong to this scaffold and not to fb. SharedPtr& SyncTextureToBackendByHandle(MG_Pipe::MGPipeHandle texture, Bool imageBindableStorageRequired) { - static SharedPtr s_scaffoldNone; - const auto* record = PipeTextureRecordForHandle(texture); - if (record == nullptr) { - s_scaffoldNone = nullptr; - return s_scaffoldNone; - } - const auto& stateObj = MGB_CTX->GetTextureObject(static_cast(record->Desc.GlNameForDiag)); - if (!stateObj) { - s_scaffoldNone = nullptr; - return s_scaffoldNone; - } - return SyncTextureObjectToBackend(stateObj, imageBindableStorageRequired); + (void)imageBindableStorageRequired; + MGPipeP5eSeamNotLanded("TextureImpl::SyncTextureToBackendByHandle", "tx2", texture); } void BackendTextureObject::SyncMipmapsToBackendByHandle(MG_Pipe::MGPipeHandle texture) { - const auto* record = PipeTextureRecordForHandle(texture); - if (record == nullptr) return; - const auto& stateObj = MGB_CTX->GetTextureObject(static_cast(record->Desc.GlNameForDiag)); - if (!stateObj) return; - SyncMipmapsToBackend(stateObj); + MGPipeP5eSeamNotLanded("BackendTextureObject::SyncMipmapsToBackendByHandle", "tx2", + texture); } } // namespace TextureImpl