mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[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:
@@ -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.
|
||||
//
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user