diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.cpp
index a1261718..b0c44aa1 100644
--- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.cpp
+++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.cpp
@@ -1807,8 +1807,8 @@ namespace MobileGL::MG_Backend::DirectVulkan {
// SyncTexture reads the frontend ITextureObject: the target, the format, the level
// chain, the dirty scan and - through UploadDirtyMipLevels - the CLIENT's mip shadow
// texels. Under an active transport none of that memory is the server's to read
- // (rule E), which is exactly what Magma's texture-legacy-arm scope has been waiving
- // since P5c. This arm is the same sync re-sourced: the SHAPE comes from the applier's
+ // (rule E), which is exactly what Magma's texture-legacy-arm scope waived from P5c until
+ // P7 retired it (SyncTexture). This arm is the same sync re-sourced: the SHAPE comes from the applier's
// resource record (MGPipeApplier().TextureResources - the resource_create /
// resource_respecify descriptors), the TEXELS from the server's staged-texture store
// (P5c tx, adopted at apply time), and the WHICH-LEVELS from the record's
@@ -2958,16 +2958,16 @@ namespace MobileGL::MG_Backend::DirectVulkan {
Bool VkTextureManager::SyncTexture(MG_State::GLState::ITextureObject &texture,
TextureResource &outResource) {
-#if MOBILEGL_BUILD_DISAGGREGATED
- // P5c (gt): Magma's texture sync still reads - and clears - the CLIENT's mip shadow:
- // the dirty scan below, and UploadDirtyMipLevels' texel reads / region reads /
- // MarkStorageDirty(false) clears. CONTRACT-P5C §2 migrated Espryt's sync and Magma's
- // T5 writes, and left THIS path on the legacy arm; under the verb barrier and one
- // address space the reads answer correctly, and the migration is P7's server-side
- // sync. The scope is the debt's greppable form (MipmapStorage.h); outside it the
- // layer-1 guard still aborts.
- const MG_State::GLState::MGPipeTextureLegacyArmScope textureLegacyArm;
-#endif
+ // This is the FRONTEND-object sync: it reads - and clears - the client's mip shadow (the
+ // dirty scan below, UploadDirtyMipLevels' texel / region reads and MarkStorageDirty(false)
+ // clears), so it belongs to the monolith arm only. Under an active transport every wire
+ // verb syncs through the handle-keyed arm (SyncTextureResourceByHandle, and the sampled
+ // wire descriptors in UniformManager) from the applier's record and the staged-texture
+ // store. P5c's named exemption for this function (MGPipeTextureLegacyArmScope) was retired
+ // in P7 (ratchet88) once a probe proved it never armed on the apply thread; a regression
+ // now meets the layer-1 guard (Fatal{RoleViolation, "texture-legacy-arm"},
+ // MipmapStorage.cpp) by accessor name. This block is exactly as many lines as the one it
+ // replaced: __LINE__ reaches this file's pull .text, and G1 compares the bytes.
// Cross-draw fast path: if the resource is already built and neither the texture's
// pixel content (bumped in MarkStorageDirty), its SHAPE (bumped in BumpShapeVersion)
// nor its params changed since the last sync, there is nothing to re-check or
diff --git a/MobileGL/MG_State/GLState/TextureState/MipmapStorage.cpp b/MobileGL/MG_State/GLState/TextureState/MipmapStorage.cpp
index 322b9016..92b08d97 100644
--- a/MobileGL/MG_State/GLState/TextureState/MipmapStorage.cpp
+++ b/MobileGL/MG_State/GLState/TextureState/MipmapStorage.cpp
@@ -49,14 +49,22 @@ namespace MobileGL {
// instead of rendering from client memory.
//
// A client-thread caller is unaffected (this is the frontend's own state, and the
- // guard returns unless ServerLoop::OnApplyThread()); Magma's texture sync keeps
- // its named scope exemption; the pull build compiles none of it.
+ // guard returns unless ServerLoop::OnApplyThread()); the pull build compiles none
+ // of it.
+ //
+ // P7 (ratchet88): NO EXEMPTION IS LEFT. P5c gave Magma's texture sync a named
+ // scope (MGPipeTextureLegacyArmScope) that waived this guard around
+ // VkTextureManager::SyncTexture on the apply thread. Since P5f's handle-keyed arm
+ // the wire draw, blit, copy, clear, mipmap and readback verbs sync from the
+ // applier's resource record and the staged-texture store, and SyncTexture - the
+ // frontend-object sync - is monolith-only: a probe that aborted whenever the scope
+ // armed on the apply thread stayed silent across the Magma split / spawn / tcp
+ // lanes and their full-binary variants. The scope was retired with it, so a
+ // regression that routes a wire verb back through the frontend object aborts
+ // here BY ACCESSOR NAME rather than being waived.
void RefuseLegacyTextureArmFromApplyThread(const char* surface) {
if (MG_Config::Transport == MG_Config::TransportMode::Monolith) return;
if (!MG_Remote::Server::ServerLoop::OnApplyThread()) return;
- // The named exemption (MipmapStorage.h): Magma's texture sync is tx's
- // declared leftover and retires with P7.
- if (MGPipeTextureLegacyArmScope::ActiveOnApplyThread()) return;
MGLOG_F("MGPipe: Fatal{RoleViolation, \"texture-legacy-arm\"} - the apply thread "
"called TextureObjectMipmap::%s on a frontend object. With an active "
"transport the server reads the staged-texture store and the resource "
@@ -98,34 +106,6 @@ namespace MobileGL {
}
} // namespace
-#if MOBILEGL_BUILD_DISAGGREGATED
- namespace {
- // NOT thread_local (P5d round 3, package D), for hd's reason in
- // MG_Impl/Pipe/SlotAllocator.cpp: RefuseLegacyTextureArmFromApplyThread above
- // is this counter's ONLY reader in the tree and it returns before it looks
- // unless the transport is active and ServerLoop::OnApplyThread() is true, so
- // the apply thread is the only thread whose depth could change an answer. The
- // scope below therefore counts only there, which makes the apply thread the
- // single writer and the single reader - no race to defend, and no
- // __emutls_get_address call per access (7.4% of the apply thread, 7.7% and the
- // top symbol on the monolith's GL thread).
- Uint32 g_textureLegacyArmScopeDepth = 0;
- }
-
- MGPipeTextureLegacyArmScope::MGPipeTextureLegacyArmScope()
- : m_counted(MG_Remote::Server::ServerLoop::OnApplyThread()) {
- if (m_counted) ++g_textureLegacyArmScopeDepth;
- }
-
- MGPipeTextureLegacyArmScope::~MGPipeTextureLegacyArmScope() {
- if (m_counted) --g_textureLegacyArmScopeDepth;
- }
-
- Bool MGPipeTextureLegacyArmScope::ActiveOnApplyThread() {
- return g_textureLegacyArmScopeDepth != 0;
- }
-#endif
-
SizeT MipmapStorage::GetLevelCount() const {
#if MOBILEGL_BUILD_DISAGGREGATED
RefuseLegacyTextureShapeReadFromApplyThread("GetMipmapLevelCount");
diff --git a/MobileGL/MG_State/GLState/TextureState/MipmapStorage.h b/MobileGL/MG_State/GLState/TextureState/MipmapStorage.h
index 0e9c7a59..fe632db4 100644
--- a/MobileGL/MG_State/GLState/TextureState/MipmapStorage.h
+++ b/MobileGL/MG_State/GLState/TextureState/MipmapStorage.h
@@ -38,42 +38,6 @@ namespace MobileGL {
}
};
-#if MOBILEGL_BUILD_DISAGGREGATED
- // P5c (gt, CONTRACT-P5C §6 layer 1): the NAMED EXEMPTION to the texture legacy-arm
- // guard, the texture analogue of hd's MGPipeFrontendKeyedRegistryScope
- // (MG_Impl/Pipe/SlotAllocator.h). Magma's texture sync (VkTextureManager::SyncTexture
- // and the UploadDirtyMipLevels it drives) still reads and clears the CLIENT's mip
- // shadow - the one texture family tx did not migrate (CONTRACT-P5C §2 names Espryt's
- // sync reads and Magma's T5 writes; Magma's upload read path is absent from it), and
- // inproc was green on it because the barrier and the shared address space held.
- // Inside this scope the guard's surfaces stay legal - read-only-or-clean, barrier-
- // held, and greppable as exactly this name; retiring the scope is P7's server-side
- // Magma texture sync. Every OTHER apply-thread touch of a guarded surface is still
- // Fatal{RoleViolation, "texture-legacy-arm"}.
- //
- // The depth is counted ONLY on the apply thread (P5d round 3, package D), exactly
- // as hd's two scopes in MG_Impl/Pipe/SlotAllocator.h are: the guard above is the
- // counter's only reader and it returns before it looks unless
- // ServerLoop::OnApplyThread() is true, so a depth kept on any other thread could
- // never change an answer. m_counted remembers the constructor's decision so the
- // destructor undoes exactly what the constructor did. The query is spelled
- // ActiveOnApplyThread() rather than Active() because the precondition belongs in
- // the name: off the apply thread it now answers false however many scopes are
- // open, and a future second reader must be made to see that rather than trust a
- // bare Active().
- class MGPipeTextureLegacyArmScope {
- public:
- MGPipeTextureLegacyArmScope();
- ~MGPipeTextureLegacyArmScope();
- MGPipeTextureLegacyArmScope(const MGPipeTextureLegacyArmScope&) = delete;
- MGPipeTextureLegacyArmScope& operator=(const MGPipeTextureLegacyArmScope&) = delete;
- static Bool ActiveOnApplyThread();
-
- private:
- Bool m_counted;
- };
-#endif
-
class MipmapStorage {
public:
SizeT GetLevelCount() const;
diff --git a/scripts/data/link_ratchet_baseline.txt b/scripts/data/link_ratchet_baseline.txt
index 16ea5961..9a17f91f 100644
--- a/scripts/data/link_ratchet_baseline.txt
+++ b/scripts/data/link_ratchet_baseline.txt
@@ -2,20 +2,20 @@
# Regenerate: python3 scripts/link_ratchet.py --build-dir
\
# --baseline scripts/data/link_ratchet_baseline.txt \
# --write-baseline scripts/data/link_ratchet_baseline.txt
-# base commit : 6af422b3e85a7d24bcfc32473bd8a0f99afaa3cd
+# base commit : 14e1c8b9b103b6900be8f174cf5f5b1a50dcfd66
# configure : -DMOBILEGL_BUILD_DISAGGREGATED=ON -DMOBILEGL_BUILD_DISAGGREGATED_INPROC=ON -DMOBILEGL_PIPE_PUSH=ON -DCMAKE_BUILD_TYPE=Release
# build dir : build-split
-# count : 173
+# count : 171
#
# One demangled symbol per line. A trailing ` # note` is an annotation the parser
# ignores; `# P13` marks a symbol that cannot fall before P13 establishes module
# target boundaries. The LIST is the baseline, not the count: a ratchet that
# stored only a number would go green on the day one symbol is cleared and another
# added (ID-P7-7).
-MobileGL::MG_Impl::GLImpl::CopyTextureImageToClientOrPBO_State(std::shared_ptr const&, MobileGL::TextureUploadTarget, int, unsigned int, unsigned int, int, void*, char const*)
+MobileGL::MG_Impl::GLImpl::CopyTextureImageToClientOrPBO_State(std::shared_ptr const&, MobileGL::TextureUploadTarget, int, unsigned int, unsigned int, int, void*, char const*) # P13 monolith arm: MGB_CTX accessor / GL readback packer (CONTRACT-P7 §12)
MobileGL::MG_Impl::GLImpl::FramebufferImpl::pDefaultFramebufferInfo
MobileGL::MG_Pipe::MGPipeApplierIsUnbarrieredApply() # P13
-MobileGL::MG_Pipe::MGPipeNoteAggregate(MobileGL::MG_Pipe::MGPipeAggregate)
+MobileGL::MG_Pipe::MGPipeNoteAggregate(MobileGL::MG_Pipe::MGPipeAggregate) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
MobileGL::MG_Pipe::MGPipeRefuseAllocatorFromApplyThread(char const*) # P13
MobileGL::MG_Pipe::MGPipeRefuseFrontendKeyedRegistryFromApplyThread(char const*) # P13
MobileGL::MG_Pipe::MGPipeSlotAllocator::Acquire(MobileGL::MG_Pipe::MGPipeKind, unsigned long) # P13
@@ -24,9 +24,9 @@ MobileGL::MG_Pipe::MGPipeSlotAllocator::Free(MobileGL::MG_Pipe::MGPipeKind, Mobi
MobileGL::MG_Pipe::MGPipeSlots() # P13
MobileGL::MG_Pipe::PipeInputs::GetBufferBindingPointCount(MobileGL::BufferTarget) const
MobileGL::MG_Pipe::PipeInputs::GetProgramObject(unsigned int)
-MobileGL::MG_Pipe::PipeInputs::GetTextureObject(unsigned int)
-MobileGL::MG_Pipe::PipeInputs::HasOpenTransformFeedbackSpan(unsigned long) const
-MobileGL::MG_Pipe::PipeInputs::InvalidateCompileEnv()
+MobileGL::MG_Pipe::PipeInputs::GetTextureObject(unsigned int) # P13 monolith arm: MGB_CTX accessor / GL readback packer (CONTRACT-P7 §12)
+MobileGL::MG_Pipe::PipeInputs::HasOpenTransformFeedbackSpan(unsigned long) const # P13 monolith arm: MGB_CTX accessor / GL readback packer (CONTRACT-P7 §12)
+MobileGL::MG_Pipe::PipeInputs::InvalidateCompileEnv() # P13 monolith arm: MGB_CTX accessor / GL readback packer (CONTRACT-P7 §12)
MobileGL::MG_Pipe::PipeInputs::IsLive() const
MobileGL::MG_Pipe::PipeInputs::RecordError(MobileGL::ErrorCode, std::unique_ptr >)
MobileGL::MG_Pipe::PipeInputs::ValidateProgramName(unsigned int) const
@@ -41,7 +41,7 @@ MobileGL::MG_Remote::Client::ClientSession::Stop()
MobileGL::MG_Remote::Client::ClientSessionInstance()
MobileGL::MG_Remote::Client::EmitObjectDeathRecord(MobileGL::MG_Pipe::MGPipeKind, unsigned long)
MobileGL::MG_State::GLState::BufferObject::DownloadSubData(void*, unsigned long, unsigned long) const
-MobileGL::MG_State::GLState::BufferObject::EnsureGpuResidentStorage()
+MobileGL::MG_State::GLState::BufferObject::EnsureGpuResidentStorage() # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::BufferObject::GetBackendResource() const
MobileGL::MG_State::GLState::BufferObject::GetChangeSerial() const
MobileGL::MG_State::GLState::BufferObject::GetExternalIndex() const
@@ -59,24 +59,22 @@ MobileGL::MG_State::GLState::BufferObject::WritebackFromBackend(MobileGL::DataPt
MobileGL::MG_State::GLState::ClassifyVertexAttribType(unsigned int)
MobileGL::MG_State::GLState::DecodeProgramArchive(unsigned char const*, unsigned long, MobileGL::MG_State::GLState::ProgramArchive&)
MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetRenderbuffer() const
-MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetSize() const
+MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetSize() const # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetTexture() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetTextureLayer() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetTextureLevel() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::GetTextureUploadTarget() const
-MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsComplete() const
+MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsComplete() const # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsEmpty() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsLayered() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsRenderbuffer() const
MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsTexture() const
-MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsValid() const
+MobileGL::MG_State::GLState::FramebufferAttachmentObject::IsValid() const # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::FramebufferObject::GetAllAttachmentObjects() const
MobileGL::MG_State::GLState::FramebufferObject::GetAttachment(MobileGL::FramebufferAttachmentType) const
MobileGL::MG_State::GLState::FramebufferObject::GetDrawBuffers() const
MobileGL::MG_State::GLState::FramebufferObject::GetExternalIndex() const
MobileGL::MG_State::GLState::GetBufferBackendOps()
-MobileGL::MG_State::GLState::MGPipeTextureLegacyArmScope::MGPipeTextureLegacyArmScope()
-MobileGL::MG_State::GLState::MGPipeTextureLegacyArmScope::~MGPipeTextureLegacyArmScope()
MobileGL::MG_State::GLState::ProgramArtifactsSchemaFingerprint()
MobileGL::MG_State::GLState::ProgramObject::JoinPendingLink() const
MobileGL::MG_State::GLState::ProgramObject::JoinPendingSpirv() const
@@ -85,26 +83,26 @@ MobileGL::MG_State::GLState::RenderbufferObject::GetHeight() const
MobileGL::MG_State::GLState::RenderbufferObject::GetInternalFormat() const
MobileGL::MG_State::GLState::RenderbufferObject::GetSamples() const
MobileGL::MG_State::GLState::RenderbufferObject::GetWidth() const
-MobileGL::MG_State::GLState::RenderbufferObject::IsAllocated() const
+MobileGL::MG_State::GLState::RenderbufferObject::IsAllocated() const # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::SamplerObject::GetAllSamplerParameters() const
-MobileGL::MG_State::GLState::SamplerObject::GetBorderColor() const
-MobileGL::MG_State::GLState::SamplerObject::GetBorderColorI() const
-MobileGL::MG_State::GLState::SamplerObject::GetBorderColorUI() const
-MobileGL::MG_State::GLState::SamplerObject::GetCompareMode() const
+MobileGL::MG_State::GLState::SamplerObject::GetBorderColor() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetBorderColorI() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetBorderColorUI() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetCompareMode() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::SamplerObject::GetExternalIndex() const
MobileGL::MG_State::GLState::SamplerObject::GetLifetimeId() const
MobileGL::MG_State::GLState::SamplerObject::GetLodBias() const
-MobileGL::MG_State::GLState::SamplerObject::GetMagFilter() const
-MobileGL::MG_State::GLState::SamplerObject::GetMaxAnisotropy() const
-MobileGL::MG_State::GLState::SamplerObject::GetMaxLod() const
-MobileGL::MG_State::GLState::SamplerObject::GetMinFilter() const
-MobileGL::MG_State::GLState::SamplerObject::GetMinLod() const
-MobileGL::MG_State::GLState::SamplerObject::GetMipmapMode() const
-MobileGL::MG_State::GLState::SamplerObject::GetSamplerCompareFunc() const
+MobileGL::MG_State::GLState::SamplerObject::GetMagFilter() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetMaxAnisotropy() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetMaxLod() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetMinFilter() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetMinLod() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetMipmapMode() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetSamplerCompareFunc() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::SamplerObject::GetVersion() const
-MobileGL::MG_State::GLState::SamplerObject::GetWrapR() const
-MobileGL::MG_State::GLState::SamplerObject::GetWrapS() const
-MobileGL::MG_State::GLState::SamplerObject::GetWrapT() const
+MobileGL::MG_State::GLState::SamplerObject::GetWrapR() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetWrapS() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::SamplerObject::GetWrapT() const # P13 monolith arm: sampler cache reads the app SamplerObject (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::SamplerObject::SamplerObject(unsigned int)
MobileGL::MG_State::GLState::SamplerObject::SetCompareMode(MobileGL::SamplerCompareMode)
MobileGL::MG_State::GLState::SamplerObject::SetMagFilter(MobileGL::SamplerFilterMode)
@@ -114,66 +112,66 @@ MobileGL::MG_State::GLState::SamplerObject::SetSamplerCompareFunc(MobileGL::Samp
MobileGL::MG_State::GLState::SamplerObject::~SamplerObject()
MobileGL::MG_State::GLState::SamplesAsIncompleteTexture(MobileGL::MG_State::GLState::ITextureObject const*, MobileGL::MG_State::GLState::SamplerObject const*)
MobileGL::MG_State::GLState::SetBufferBackendOps(MobileGL::MG_State::GLState::BufferBackendOps const*)
-MobileGL::MG_State::GLState::TextureObject1D::TextureObject1D(unsigned int)
-MobileGL::MG_State::GLState::TextureObject2D::TextureObject2D(unsigned int)
-MobileGL::MG_State::GLState::TextureObject2DCube::TextureObject2DCube(unsigned int)
-MobileGL::MG_State::GLState::TextureObject3D::TextureObject3D(unsigned int)
-MobileGL::MG_State::GLState::TextureObjectBase::GetAllSwizzleParams() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColor() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorForm() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorI() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorUI() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetContentVersion() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetExternalIndex() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetFormat() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetImmutableLevels() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetLevelRange() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetLifetimeId() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetSamplerObject() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetSamples() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetShapeVersion() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetSwizzleParam(MobileGL::TextureSwizzleParam) const
-MobileGL::MG_State::GLState::TextureObjectBase::GetTarget() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetTextureParamsVersion() const
-MobileGL::MG_State::GLState::TextureObjectBase::GetViewStorageOwner() const
-MobileGL::MG_State::GLState::TextureObjectBase::HasFixedSampleLocations() const
-MobileGL::MG_State::GLState::TextureObjectBase::IsImmutable() const
-MobileGL::MG_State::GLState::TextureObjectBase::IsMipmapCompleteForFilterCached(bool) const
-MobileGL::MG_State::GLState::TextureObjectBase::PipePublishParams()
-MobileGL::MG_State::GLState::TextureObjectBase::SetBaseLevel(unsigned int)
-MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColor(MobileGL::Vec4 const&)
-MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColorI(MobileGL::Vec4 const&)
-MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColorUI(MobileGL::Vec4 const&)
-MobileGL::MG_State::GLState::TextureObjectBase::SetFixedSampleLocations(bool)
-MobileGL::MG_State::GLState::TextureObjectBase::SetImmutableLevels(unsigned int)
-MobileGL::MG_State::GLState::TextureObjectBase::SetInternalFormat(MobileGL::TextureInternalFormat)
-MobileGL::MG_State::GLState::TextureObjectBase::SetMaxLevel(unsigned int)
-MobileGL::MG_State::GLState::TextureObjectBase::SetSamples(int)
-MobileGL::MG_State::GLState::TextureObjectBase::SetSwizzleParam(MobileGL::TextureSwizzleParam, MobileGL::TextureSwizzleParam)
-MobileGL::MG_State::GLState::TextureObjectBase::SetSwizzleParamRGBA(MobileGL::Vec4 const&)
-MobileGL::MG_State::GLState::TextureObjectBase::TextureObjectBase(MobileGL::TextureTarget, unsigned int)
-MobileGL::MG_State::GLState::TextureObjectBase::~TextureObjectBase()
+MobileGL::MG_State::GLState::TextureObject1D::TextureObject1D(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObject2D::TextureObject2D(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObject2DCube::TextureObject2DCube(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObject3D::TextureObject3D(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetAllSwizzleParams() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColor() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorForm() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorI() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetBorderColorUI() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetContentVersion() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetExternalIndex() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetFormat() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetImmutableLevels() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetLevelRange() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetLifetimeId() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetSamplerObject() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetSamples() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetShapeVersion() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetSwizzleParam(MobileGL::TextureSwizzleParam) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetTarget() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetTextureParamsVersion() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::GetViewStorageOwner() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::HasFixedSampleLocations() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::IsImmutable() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::IsMipmapCompleteForFilterCached(bool) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::PipePublishParams() # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetBaseLevel(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColor(MobileGL::Vec4 const&) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColorI(MobileGL::Vec4 const&) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetBorderColorUI(MobileGL::Vec4 const&) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetFixedSampleLocations(bool) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetImmutableLevels(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetInternalFormat(MobileGL::TextureInternalFormat) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetMaxLevel(unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetSamples(int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetSwizzleParam(MobileGL::TextureSwizzleParam, MobileGL::TextureSwizzleParam) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::SetSwizzleParamRGBA(MobileGL::Vec4 const&) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::TextureObjectBase(MobileGL::TextureTarget, unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectBase::~TextureObjectBase() # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::TextureObjectBuffer::GetBufferBindingSlot(MobileGL::TextureUploadTarget)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::AllocateStorage(MobileGL::TextureUploadTarget, unsigned int, MobileGL::MG_State::GLState::MipmapInput)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetBaseSize() const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapByteSize(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapCompressedByteSize(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapCompressedFormat(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapLevelCount() const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapRequestedCompressedFormat(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapTexelSize(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetStorageDirtyRects(MobileGL::TextureUploadTarget, unsigned int, MobileGL::MG_State::GLState::MipmapDirtyRegion*, unsigned long) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetStorageDirtyRegion(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::IsComplete() const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::IsStorageDirty(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MapMipmapCompressedImage(MobileGL::TextureUploadTarget, unsigned int) const
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MapMipmapData(MobileGL::TextureUploadTarget, unsigned int)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MarkStorageDirty(MobileGL::TextureUploadTarget, unsigned int, bool)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MarkStorageDirtyRegion(MobileGL::TextureUploadTarget, unsigned int, MobileGL::Vec3, MobileGL::Vec3)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::SetMipmapCompressedImage(MobileGL::TextureUploadTarget, unsigned int, unsigned int, void const*, unsigned long)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::SetMipmapRequestedCompressedFormat(MobileGL::TextureUploadTarget, unsigned int, unsigned int)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::TruncateMipmapLevels(MobileGL::TextureUploadTarget, unsigned int)
-MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::UpdateMipmapSubData(MobileGL::TextureUploadTarget, unsigned int, MobileGL::DataPtr)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::AllocateStorage(MobileGL::TextureUploadTarget, unsigned int, MobileGL::MG_State::GLState::MipmapInput) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetBaseSize() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapByteSize(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapCompressedByteSize(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapCompressedFormat(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapLevelCount() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapRequestedCompressedFormat(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetMipmapTexelSize(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetStorageDirtyRects(MobileGL::TextureUploadTarget, unsigned int, MobileGL::MG_State::GLState::MipmapDirtyRegion*, unsigned long) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::GetStorageDirtyRegion(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::IsComplete() const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::IsStorageDirty(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MapMipmapCompressedImage(MobileGL::TextureUploadTarget, unsigned int) const # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MapMipmapData(MobileGL::TextureUploadTarget, unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MarkStorageDirty(MobileGL::TextureUploadTarget, unsigned int, bool) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::MarkStorageDirtyRegion(MobileGL::TextureUploadTarget, unsigned int, MobileGL::Vec3, MobileGL::Vec3) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::SetMipmapCompressedImage(MobileGL::TextureUploadTarget, unsigned int, unsigned int, void const*, unsigned long) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::SetMipmapRequestedCompressedFormat(MobileGL::TextureUploadTarget, unsigned int, unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::TruncateMipmapLevels(MobileGL::TextureUploadTarget, unsigned int) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+MobileGL::MG_State::GLState::TextureObjectWithOneMipmap::UpdateMipmapSubData(MobileGL::TextureUploadTarget, unsigned int, MobileGL::DataPtr) # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
MobileGL::MG_State::GLState::TextureUnit::GetAllBindingSlots()
MobileGL::MG_State::GLState::TextureUnit::GetBindingSlot(MobileGL::TextureTarget)
MobileGL::MG_State::GLState::TextureUnit::GetSamplerObject() const
@@ -181,7 +179,7 @@ MobileGL::MG_State::GLState::VertexArrayObject::GetAllAttributeVersions() const
MobileGL::MG_State::GLState::VertexArrayObject::GetAllAttributes() const
MobileGL::MG_State::GLState::VertexArrayObject::GetAttribute(unsigned int) const
MobileGL::MG_State::GLState::VertexArrayObject::GetIndexBufferBindingSlot()
-MobileGL::MG_State::GLState::VertexArrayObject::GetIndexBufferBindingSlot() const
+MobileGL::MG_State::GLState::VertexArrayObject::GetIndexBufferBindingSlot() const # P13 monolith arm: reads an app FBO/RBO/VAO/buffer object (CONTRACT-P7 §12)
typeinfo for MobileGL::MG_State::GLState::TextureObjectBase
-typeinfo for MobileGL::MG_State::GLState::TextureObjectWithOneMipmap
-vtable for MobileGL::MG_State::GLState::TextureObjectWithOneMipmap
+typeinfo for MobileGL::MG_State::GLState::TextureObjectWithOneMipmap # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)
+vtable for MobileGL::MG_State::GLState::TextureObjectWithOneMipmap # P13 monolith arm: UniformManager builds frontend TextureObject placeholders (CONTRACT-P7 §12)