diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 44c065dc..1525ef62 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -3130,7 +3130,7 @@ namespace MobileGL::MG_Backend::DirectGLES { default: return TextureTarget::Unknown; } } -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM void Ops_H_TextureSubData(MG_Pipe::MGPipeHandle res, const MG_Pipe::MGPSubData& record, const void* bytes, const MG_Pipe::MGPSubRegion* regions) { @@ -3232,7 +3232,7 @@ namespace MobileGL::MG_Backend::DirectGLES { MG_Record::ServerStagedTexture().Drop( MG_Record::StagedTextureStore::KeyForHandle(res)); } -#endif // MOBILEGL_BUILD_DISAGGREGATED +#endif // MOBILEGL_BUILD_RECORD_ARM const MG_Pipe::MGPipeResourceOps g_glesResourceOps = { .Create = Ops_H_Create, @@ -3248,7 +3248,7 @@ namespace MobileGL::MG_Backend::DirectGLES { .TextureSubData = Ops_H_TextureSubData, .TextureRespecify = Ops_H_TextureRespecify, .TextureDestroy = Ops_H_TextureDestroy, -#if defined(__ANDROID__) +#if MOBILEGL_BUILD_DISAGGREGATED && defined(__ANDROID__) // P11 B2 (T0). Android only: nowhere else is there an AHardwareBuffer to import. .ImportExternal = Ops_H_ImportExternalTracked, .SelfTestExternal = Ops_H_SelfTestExternal, @@ -8126,7 +8126,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // pre-P4a expression exactly when MOBILEGL_PIPE_PUSH is off, so the pull build's // preprocessed text, and therefore its object code, is unchanged. Both are #undef'd // immediately after the function. -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5c (tx): THE READS THE FOUR UPLOAD ARMS MAKE, re-sourced. With an active transport the // apply thread may not name the client's TextureObjectMipmap at all (rule E), so on the // handle arm: @@ -8180,7 +8180,7 @@ namespace MobileGL::MG_Backend::DirectGLES { #define MGB_LEVEL_TEXELS(obj, tgt, lvl, site) ((obj)->MapMipmapData(tgt, lvl)) #endif -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P5c (tx): the disaggregated pair adds ONE term and ONE clear to the P4a shapes - the // staged-texture store's GPU-dirty mark (T5: a level the GPU generated dirties the SERVER's // shadow, and the pending set cannot see it). The mark is never set on Espryt today - its diff --git a/MobileGL/MG_Backend/DirectGLES/MultiDraw.cpp b/MobileGL/MG_Backend/DirectGLES/MultiDraw.cpp index 2753fb7f..f435a01c 100644 --- a/MobileGL/MG_Backend/DirectGLES/MultiDraw.cpp +++ b/MobileGL/MG_Backend/DirectGLES/MultiDraw.cpp @@ -125,7 +125,7 @@ namespace MobileGL::MG_Backend::DirectGLES::MultiDrawImpl { const Uint8* HostBytes = nullptr; // HostBytes: null when there is no CPU copy }; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // A missing record on the handle arm is a NAMED refusal and never a quiet fall-back to // the frontend (TASK-mv requirement 2; the shape is Managers.cpp's // RefuseNullFrontendTextureOffTheHandleArm). The frontend element slot is not a second diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp index 46e8c11c..c11c0e32 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp @@ -28,7 +28,7 @@ #include "MG_Util/Metrics/TextureMetrics.h" #include "MG_Util/ShaderTranspiler/Types.h" #include -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #include // P7 wave 0: the seam WireDescriptorFatal dies through. See MG_Pipe/PipeSessionFail.h. #include @@ -43,7 +43,7 @@ #include namespace MobileGL::MG_Backend::DirectVulkan { -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM SizeT UniformManager::WireImageViewKeyHash::operator()(const WireImageViewKey& key) const { SizeT hash = std::hash{}(key.image); const auto mix = [&hash](Uint64 value) { diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h index 0f3975d4..0bb047cf 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h @@ -209,12 +209,20 @@ namespace MobileGL::MG_Backend::DirectVulkan { // wire draw or dispatch being set up samples (VkTextureManager::NoteSharedImageUse) is // acquired from the foreign family before it, when it moved or is not held. void AcquireNotedSharedImages() { +#if MOBILEGL_BUILD_DISAGGREGATED if (m_textureManager && m_textureManager->HasNotedSharedImageUses()) AcquireNotedSharedImagesSlow(); +#endif } // One shared-image texture, before a use: a new write generation, or an image released at // the last frame boundary, is acquired here - an ownership barrier recorded ahead of the // use, the write's fence a wait of the submission carrying it - and noted as read. +#if MOBILEGL_BUILD_DISAGGREGATED void AcquireSharedImage(VkTextureManager::TextureResource& resource); +#else + // P13 W5: no transport, no shared image (only a server allocates one), so a texture's + // sharedImageId is never set and there is nothing to acquire. + void AcquireSharedImage(VkTextureManager::TextureResource&) {} +#endif #endif // FrameContext::IRecordingObserver: prepares the frame's timer-query diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc index a2d1dc67..9592df11 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc @@ -1,6 +1,6 @@ // P5f fm: included by VulkanRenderer.cpp inside the backend namespace. All inputs here // belong to the applier; no frontend object, lifetime-id lookup or allocator is used. -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // P7 wave 0. THE MESSAGE IS UNCHANGED; where it goes is not. This funnel is how eleven of // the fifteen P7-marked refusals die (the other four are WireDescriptorFatal's), and until now // every one of them raised its own abort: no SessionFault frame for the peer, no diff --git a/MobileGL/MG_Backend/Record/StagedTextureStore.h b/MobileGL/MG_Backend/Record/StagedTextureStore.h index c5127e5f..86255d1f 100644 --- a/MobileGL/MG_Backend/Record/StagedTextureStore.h +++ b/MobileGL/MG_Backend/Record/StagedTextureStore.h @@ -114,7 +114,7 @@ #include #include -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM #include #endif @@ -355,7 +355,7 @@ namespace MobileGL::MG_Record { const std::lock_guard lock(m_mutex); LevelShadow& shadow = m_shadows[bucketed].Levels[PackLevel(uploadTarget, level)]; RequireDeclaredLevel(shadow, key, uploadTarget, level, extent); -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // A run can be the first piece of a redefined level. Old coverage // belongs to the previous coordinate system even when the new run // happens to touch its old range; retaining it invents bytes that @@ -1030,7 +1030,7 @@ namespace MobileGL::MG_Record { std::atomic m_any{false}; }; -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // ONE PER PROCESS, and its copying arm is decided ONCE at first use - StagedShadow's // ServerStaged() ruling verbatim: the two arms hold the authoritative bytes in DIFFERENT // places, so an answer that changed mid-run would strand every level already staged. diff --git a/MobileGL/MG_Pipe/PipeApply.cpp b/MobileGL/MG_Pipe/PipeApply.cpp index 99b8e32c..cb27621e 100644 --- a/MobileGL/MG_Pipe/PipeApply.cpp +++ b/MobileGL/MG_Pipe/PipeApply.cpp @@ -182,7 +182,7 @@ namespace MobileGL::MG_Pipe { MGPipeRecordLatchHook MGPipeRecordLatchHookInstalled() { return g_recordLatchHook; } MGPipeRecordLatchedHook MGPipeRecordLatchedHookInstalled() { return g_recordLatchedHook; } -#if MOBILEGL_BUILD_DISAGGREGATED +#if MOBILEGL_BUILD_RECORD_ARM // ---------------------------------------------------------------------------- // THE BACKEND-SIDE SESSION-FAIL SEAM (P7 wave 0). PipeSessionFail.h holds the argument; // this is the whole implementation. @@ -223,6 +223,9 @@ namespace MobileGL::MG_Pipe { std::abort(); } +#endif // MOBILEGL_BUILD_RECORD_ARM + +#if MOBILEGL_BUILD_DISAGGREGATED namespace { MGPipeSessionLatchHook g_sessionLatchHook = nullptr; MGPipeSessionLatchArmedHook g_sessionLatchArmedHook = nullptr;