[Docs] (MG_Backend/Record, MG_Impl/GLImpl, MG_Impl/Pipe, MG_Remote, MG_Remote/Client): cite BackendObject.h symbols, not lines

This commit is contained in:
2026-10-16 05:47:43 -04:00
parent 778014c013
commit f7e065aedb
6 changed files with 9 additions and 9 deletions
@@ -959,7 +959,7 @@ namespace MobileGL::MG_Record {
if (table->GL.ShaderStorageBlockBinding == nullptr) return false;
if (name == nullptr) return false;
// The NAME is the one coordinate the application, the frontend and both backends agree
// on (BackendObject.h:216-221), which is why the row carries a blob rather than the
// on (GLFunctionsTable::ShaderStorageBlockBinding), which is why the row carries a blob rather than the
// application's block INDEX. `name` points into the decoder's bounded local and is
// valid for this call only (rule C); the backend slot copies what it needs.
//
+2 -2
View File
@@ -1528,7 +1528,7 @@ namespace MobileGL::MG_Impl::GLImpl {
if (!MG_Config::Features.DisableTimerQuery) {
// glGetInteger64v(GL_TIMESTAMP). GetGpuTimestampNs is class C - a LIVE GPU
// timestamp is not a static property, so R-15 does not reach it - and the
// documented answer when it is unavailable is 0 (BackendObject.h:192), which
// documented answer when it is unavailable is 0 (GLFunctionsTable::GetGpuTimestampNs), which
// is correct rather than merely quiet. kCapTimerQuery is the published bit.
//
// The POINTER-valued macro, so the init-statement below is unchanged in a pull
@@ -2581,7 +2581,7 @@ namespace MobileGL::MG_Impl::GLImpl {
if (!MG_Config::Features.DisableTimerQuery) {
// glGetInteger64v(GL_TIMESTAMP). GetGpuTimestampNs is class C - a LIVE GPU
// timestamp is not a static property, so R-15 does not reach it - and the
// documented answer when it is unavailable is 0 (BackendObject.h:192), which
// documented answer when it is unavailable is 0 (GLFunctionsTable::GetGpuTimestampNs), which
// is correct rather than merely quiet. kCapTimerQuery is the published bit.
//
// The POINTER-valued macro, so the init-statement below is unchanged in a pull
+1 -1
View File
@@ -1413,7 +1413,7 @@ namespace MobileGL::MG_Record {
// glShaderStorageBlockBinding -> set_storage_block_binding (75), the ONE content-carrying
// row P5b adds. The block is NAMED, not indexed, because the application's index is the
// frontend interface-query enumeration's and no backend shares that index space
// (BackendObject.h:216-221) - the name is the one coordinate all three agree on.
// (GLFunctionsTable::ShaderStorageBlockBinding) - the name is the one coordinate all three agree on.
void EmitShaderStorageBlockBinding(GLuint program, const GLchar* storageBlockName,
GLuint storageBlockBinding) {
VerbChannel session = ChannelFor("ShaderStorageBlockBinding");
+1 -1
View File
@@ -14,7 +14,7 @@
// and HAVE NO SERIALIZER IN THE TREE - the header says so itself above MGPCaps::FormatCapabilities,
// "Their serializers land with the transport (P5)". They are:
//
// FormatCapabilities -> FormatCapabilityCache (MG_Backend/BackendObject.h:93-98):
// FormatCapabilities -> FormatCapabilityCache (BackendCaps.h):
// FullCaps + CaveatCaps (bitfield tables) + SampleCounts, a Vector<Int> per
// (target, format) pair. The Vector is why this cannot be a memcpy.
// RendererInfo -> RendererInfo (MG_Util/Types.h:317): three Strings, an
+2 -2
View File
@@ -59,7 +59,7 @@ namespace MobileGL::MG_Remote::Client {
// F1 (P7 wave 2): IT NEVER ANSWERS FROM A PLACEHOLDER ANY MORE. See RequireFirstSnapshot.
Bool ServerConsumes(Uint64 subsystemBit) const;
// GLFunctionsTable::PrefersCpuXfbPrimitiveAccounting (BackendObject.h:274) does NOT
// GLFunctionsTable::PrefersCpuXfbPrimitiveAccounting (BackendObject.h) does NOT
// ride in MGPCaps::Dynamic - it is a member of the function table, which is precisely
// the thing a split client never receives. Its only non-test client reader is
// GL_Query.cpp:221, and under split it must be answered from kCapCpuXfbPrimitiveAccounting.
@@ -91,7 +91,7 @@ namespace MobileGL::MG_Remote::Client {
// ---- c1's addition to c0's signature block -----------------------------------------
//
// WHY A HOOK AND NOT A READ. BackendObject::GetFormatCapabilities() is NON-VIRTUAL
// (BackendObject.h:594) and returns the base class's own m_formatCapabilities member, so a
// (BackendObject.h) and returns the base class's own m_formatCapabilities member, so a
// remote backend object cannot answer it lazily from the mirror - it has to PUSH the cache
// into that member, and the only moment it can know to is when a snapshot lands. A raw
// function pointer rather than std::function, for ID-8's reason: this can fire on paths
+2 -2
View File
@@ -68,7 +68,7 @@ namespace MobileGL::MG_Remote::Client {
// The slot arithmetic, asserted rather than commented. GlobalBackendFunctionsTable is
// GLFunctionsTable plus Present plus SetSwapInterval; GLFunctionsTable is 69 function
// pointers plus one Bool (PrefersCpuXfbPrimitiveAccounting, BackendObject.h:274). A slot
// pointers plus one Bool (PrefersCpuXfbPrimitiveAccounting). A slot
// added to either without a decision here is a build break, which is the point: R-4 forbids
// a null slot, so a new slot needs an owner on the day it appears.
static_assert(sizeof(MG_Backend::GlobalBackendFunctionsTable) ==
@@ -231,7 +231,7 @@ namespace MobileGL::MG_Remote::Client {
const MG_Backend::DynamicBackendParameters& dynamic = CapsMirrorInstance().Dynamic();
// The ONLY two indexed pnames the device owns; every other indexed pname names
// frontend state and is answered in GL_Getter::GetIntegeri_v before any table is
// consulted (BackendObject.h:196-205). The existing gate is
// consulted (GLFunctionsTable::GetIntegeri_v). The existing gate is
// AdvertisedLimitsScenario.ComputeWorkGroupLimitsAreTheCapsBlocksAnswer, which pins
// that this answer and the caps copy are ONE number.
switch (target) {