From b16dc2047339f2bda3e94a273b446aa1440c12b2 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 6 Oct 2026 10:51:20 -0400 Subject: [PATCH] [Refactor] (P13 W5 S2): MG_Impl's record-arm guards name MOBILEGL_BUILD_RECORD_ARM. --- .../MG_Impl/GLImpl/Drawing/GL_Drawing.cpp | 2 +- MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp | 2 +- .../MG_Impl/GLImpl/Texture/GL_Texture.cpp | 10 +++---- MobileGL/MG_Impl/Pipe/OwnedDrawInputs.h | 2 +- MobileGL/MG_Impl/Pipe/PipeFill.cpp | 28 +++++++++---------- MobileGL/MG_Impl/Pipe/SamplerEmit.h | 4 +-- MobileGL/MG_Impl/Pipe/TextureEmit.h | 2 +- MobileGL/MG_Impl/Pipe/VertexInputEmit.h | 4 +-- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp b/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp index 2f433775..b6e92b07 100644 --- a/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp +++ b/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp @@ -1332,7 +1332,7 @@ namespace MobileGL::MG_Impl::GLImpl { static_cast(bufferIndex)); const auto& buffer = bindingPoint.GetBoundObject(); if (buffer == nullptr) continue; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // This fixup READS the captured bytes back through the shadow, so it is the one // consumer that cannot simply inherit the deferral EndTransformFeedback's dropped // fence introduces. Under split it pays the reconciliation itself, which is the diff --git a/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp b/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp index 45bd7e00..dc975907 100644 --- a/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp +++ b/MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp @@ -1332,7 +1332,7 @@ namespace MobileGL::MG_Impl::GLImpl { if (MG_Config::Transport == MG_Config::TransportMode::Monolith) { #endif MGP_FILL(GetIntegeri_v); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM } #endif getIntegeri(target, index, &backendValue); diff --git a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp index 74d53248..71041c68 100644 --- a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp +++ b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp @@ -49,7 +49,7 @@ // SyncGpuWrites, exactly as glMapBufferRange and glGetBufferSubData already do. Monolith keeps its // read as it was: its ReadPixels maps the driver PBO back into the shadow inside the call, and the // pull build compiles this to nothing (G1). -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #define MGL_SYNC_PIXEL_UNPACK_SOURCE(buffer) do { if (MG_Config::DataArmIsRecord()) (buffer)->SyncGpuWrites(); } while (0) #else #define MGL_SYNC_PIXEL_UNPACK_SOURCE(buffer) ((void)0) @@ -6121,7 +6121,7 @@ namespace MobileGL::MG_Impl::GLImpl { viewObject->SetInternalFormat(viewInternalFormat); viewObject->SetSamples(storageOwner->GetSamples()); viewObject->SetFixedSampleLocations(storageOwner->HasFixedSampleLocations()); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (MG_Config::DataArmIsRecord()) MG_Pipe::MGPipeEmitSamplerViewCreate(*viewObject); #endif @@ -6586,7 +6586,7 @@ namespace MobileGL::MG_Impl::GLImpl { static void GetTextureImageForUploadTarget(const SharedPtr& textureObject, TextureUploadTarget uploadTarget, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels, const char* caller) { -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (MG_Config::DataArmIsRecord()) { MGP_FILL(GetTextureImage); MG_Backend::gBackendFunctionsTable.GL.GetTextureImage(textureObject, uploadTarget, level, format, type, @@ -6614,7 +6614,7 @@ namespace MobileGL::MG_Impl::GLImpl { return; } auto uploadTarget = GetPrimaryUploadTarget(textureObject); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // Unlike glGetTexImage's face target, this DSA call reads all six faces. if (MG_Config::DataArmIsRecord() && textureObject->GetTarget() == TextureTarget::TextureCubeMap) @@ -6880,7 +6880,7 @@ namespace MobileGL::MG_Impl::GLImpl { void GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels) { if (!GetTexImage_State(target, level, format, type, pixels)) return; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (MG_Config::DataArmIsRecord()) { GetTexImage_Backend(target, level, format, type, pixels); return; diff --git a/MobileGL/MG_Impl/Pipe/OwnedDrawInputs.h b/MobileGL/MG_Impl/Pipe/OwnedDrawInputs.h index ef076859..9fac88dd 100644 --- a/MobileGL/MG_Impl/Pipe/OwnedDrawInputs.h +++ b/MobileGL/MG_Impl/Pipe/OwnedDrawInputs.h @@ -9,7 +9,7 @@ // Client memory becomes ordinary owned buffer resources before a draw. #pragma once -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #include #include #include diff --git a/MobileGL/MG_Impl/Pipe/PipeFill.cpp b/MobileGL/MG_Impl/Pipe/PipeFill.cpp index c715e3b8..ce83df2a 100644 --- a/MobileGL/MG_Impl/Pipe/PipeFill.cpp +++ b/MobileGL/MG_Impl/Pipe/PipeFill.cpp @@ -93,7 +93,7 @@ namespace MobileGL::MG_Pipe { return inputs.m_currentVertexAttribute; } -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5e (ra, CONTRACT-P5E §2.3). THE FOUR O-CLASS ROWS, AND ONLY THEY: these are the only // members of this block that own a frontend object rather than point into one, so they // are the only ones through which the apply thread can become a last owner. The raw @@ -684,7 +684,7 @@ namespace MobileGL::MG_Pipe { if (&self != &gPipeInputs || !g_verify.Enabled) return; const auto index = static_cast(field); if (kMGPipeInputFieldSticky[index]) return; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (self.ServerStampedVerb() && field == MGPipeInputField::GetPixelStoreParameters) { // Compare the backend's pack field against the last payload applied to this // context, including the neutral-pack override during readback. Never obtain @@ -1096,7 +1096,7 @@ namespace MobileGL::MG_Pipe { // one was emitted, so this cannot be false - but a zeroed record (null // handle, size 0) is not the answer if that pre-pass is ever relaxed. if (!MGPipeBuildSubDataRecord(handle, at, length, record, /*verbatimShadow=*/true)) return; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5 (b1): the live-host-writes bit rides the content record, because // "someone may be writing these bytes without telling you" is a fact about the // CONTENT and not about the storage. It is set from the object's PUBLISHED @@ -1130,7 +1130,7 @@ namespace MobileGL::MG_Pipe { // store, or the pattern FillSubData expanded locally, and neither is this // client's untransformed shadow of the level. if (!MGPipeBuildSubDataRecord(handle, at, length, record, /*verbatimShadow=*/false)) return; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5 (b1): THE SECOND CONTENT EMITTER, and it has to speak for the same reason // the first does. ApplyBufferWrite ASSIGNS the bit - a content record emitted // while nothing maps the buffer is how the state goes back to false - so a @@ -2223,7 +2223,7 @@ namespace MobileGL::MG_Pipe { // a server-stamped verb, so InvalidateCompileEnv keeps being reachable from backend // initialisation - the case the exemption was written for - and every monolith lane, split // build included, behaves as it does today. -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #define MGP_STICKY_FORWARD_PULL(Field) MGPipeStickyForwardPull(MGPipeInputField::Field) #else #define MGP_STICKY_FORWARD_PULL(Field) ((void)0) @@ -2260,7 +2260,7 @@ namespace MobileGL::MG_Pipe { } Bool PipeInputs::HasOpenTransformFeedbackSpan(Uint64 lifetimeId) const { -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (MG_Config::DataArmIsRecord()) { return lifetimeId != 0 && MGPipeApplier().StreamOutputSpans.count(lifetimeId) != 0; } @@ -2359,7 +2359,7 @@ namespace MobileGL::MG_Pipe { // stamped, so every stamp this verb made falls behind the serial. ++MGPipeFillAccess::Filled(inputs).CurrentVerbSerial; #endif -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM MGPipeClientClearVerbBoundary(); #endif MGPipeFillAccess::SetVerb(inputs, MGPipeVerb::kVerbCount); @@ -2907,7 +2907,7 @@ namespace MobileGL::MG_Pipe { Bool ApplierDerives = false; Bool ContextValuesWireLive = false; Bool P4aConsumer = false; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM Uint64 CapsGeneration = 0; #endif // One bit per FIELD - not per verb class. The class mask is applied at the walk @@ -3115,7 +3115,7 @@ namespace MobileGL::MG_Pipe { // `g_attribDefaultLastHeader`, which is what it just published; there is nothing // the mirror could add that the wire does not already carry. A build that ever // needs the repair arm again has to earn it with a barriered row. -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (ClientRunsAhead()) return sizeof(MGPVertexAttribDefaults) + header.Count * sizeof(MGPAttribValue); #endif const auto* mirror = MGPipeFillAccess::VertexAttribDefaultsOf(MGPipeClientInputs()); @@ -3134,7 +3134,7 @@ namespace MobileGL::MG_Pipe { return sizeof(MGPVertexAttribDefaults) + header.Count * sizeof(MGPAttribValue); } -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // set_context_values (P5c rv, CONTRACT-P5C.md §5.3): the residual-value record. One // POD carrying every value-class field no other set_* supplies - the two texture-unit // counters, the 15 per-target touched-buffer-binding counts and the five XFB values - @@ -3393,7 +3393,7 @@ namespace MobileGL::MG_Pipe { // is the CLIENT-role block and gPipeInputs is the server's alone; off, or under // monolith transport, it folds back onto gPipeInputs and nothing below changes. PipeInputs& inputs = MGPipeClientInputs(); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // ---- P5e (ra), CONTRACT-P5E §3: WHO OWNS gPipeInputs FOR THIS VERB ---------------- // // Under run-ahead the block is SERVER-ROLE MEMORY for an unbarriered record: the @@ -3469,7 +3469,7 @@ namespace MobileGL::MG_Pipe { // Fatal{UnmigratedPipeInput, "@"} rather than default storage. ++MGPipeFillAccess::Filled(inputs).CurrentVerbSerial; #endif -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // The client is filling, so whatever the server stamped at its last verb boundary // is withdrawn: the stamps below are the CLIENT's again and a stale read is a // defect, not a residual pull. Disarming here rather than at the end of the @@ -3618,7 +3618,7 @@ namespace MobileGL::MG_Pipe { } #endif MGPipeCsoCacheInstance().Reset(); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (!resetCrossed) #endif MGPipeApplierReset(); @@ -3732,7 +3732,7 @@ namespace MobileGL::MG_Pipe { payloadBytes += EmitVertexAttribDefaults(*ctx, tracker.FreshlyPrimed()); } -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5c rv (CONTRACT-P5C.md §5.3): the residual-value record, emitted when any covered // value moved. THE GATE IS THE SUBSYSTEM BIT PLUS THE WIRE BEING LIVE - the family has // no dirty bit (NoDirtyBitOwnsTheResidualSubsystem) and no P4a consumer predicate (it diff --git a/MobileGL/MG_Impl/Pipe/SamplerEmit.h b/MobileGL/MG_Impl/Pipe/SamplerEmit.h index ea513672..04ba2ef2 100644 --- a/MobileGL/MG_Impl/Pipe/SamplerEmit.h +++ b/MobileGL/MG_Impl/Pipe/SamplerEmit.h @@ -37,7 +37,7 @@ // detection. Neither is reproduced here and neither may be. // // HEADER-ONLY, for the ownership reason Tracker.h and ResourceTracker.h both state. -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #include #endif #include @@ -220,7 +220,7 @@ namespace MobileGL::MG_Pipe { // tokens are minted once and never reused (EGLState::CreateContext), which is what makes them // usable as an identity; 0 is "no EGL context", the server's "no context" applier. inline Uint64 MGPipeCurrentShareGroupToken() { -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM Uint64 bound = 0; if (MG_Impl::EGLImpl::StreamBoundShareGroupToken(&bound)) return bound; #endif diff --git a/MobileGL/MG_Impl/Pipe/TextureEmit.h b/MobileGL/MG_Impl/Pipe/TextureEmit.h index a1d8b785..0f7002ae 100644 --- a/MobileGL/MG_Impl/Pipe/TextureEmit.h +++ b/MobileGL/MG_Impl/Pipe/TextureEmit.h @@ -899,7 +899,7 @@ namespace MobileGL::MG_Pipe { MGPRespecifiedLevel key{}; key.UploadTarget = packedTarget; key.Level = static_cast(firstLevel + i); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM const auto* mipmap = MG_State::GLState::AsMipmapTexture(&texture); if (mipmap == nullptr) { MGLOG_E_ONCE("MGPipe: a per-level texture respecify had no mipmap storage; it was not emitted"); diff --git a/MobileGL/MG_Impl/Pipe/VertexInputEmit.h b/MobileGL/MG_Impl/Pipe/VertexInputEmit.h index f732bb08..22bfce7a 100644 --- a/MobileGL/MG_Impl/Pipe/VertexInputEmit.h +++ b/MobileGL/MG_Impl/Pipe/VertexInputEmit.h @@ -382,7 +382,7 @@ namespace MobileGL::MG_Pipe { for (SizeT i = 0; i < kAttribs; ++i) { m_attributes[i] = MGPipeBuildVertexAttribWire(vao.GetAttribute(static_cast(i)), vao.GetAttributeBindingIndex(static_cast(i))); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // Client addresses never cross the transport. Draw emission snapshots // their referenced elements into owned buffers with a zero byte origin. if (MG_Config::DataArmIsRecord() && @@ -391,7 +391,7 @@ namespace MobileGL::MG_Pipe { } for (SizeT i = 0; i < kBindings; ++i) { m_bindingPoints[i] = MGPipeBuildVertexBindingPointWire(vao.GetBindingPoint(static_cast(i))); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM if (MG_Config::DataArmIsRecord() && !vao.GetBindingPoint(static_cast(i)).Buffer) m_bindingPoints[i].Offset = 0; #endif