mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-17 08:38:30 +09:00
[Feat] (MG_Remote): land the P5 contract headers and their named-Fatal stubs so all seven parallel packages compile and link on day one
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// MobileGL - MobileGL/MG_Remote/Client/EmitTables.cpp
|
||||
// Copyright (c) 2025-2026 MobileGL-Dev
|
||||
// Licensed under the GNU Lesser General Public License v3.0:
|
||||
// https://www.gnu.org/licenses/gpl-3.0.txt
|
||||
// https://www.gnu.org/licenses/lgpl-3.0.txt
|
||||
// SPDX-License-Identifier: LGPL-3.0-only
|
||||
// End of Source File Header
|
||||
|
||||
// P5 c0 stubs for package c1.
|
||||
|
||||
#include "EmitTables.h"
|
||||
|
||||
#include <MG_Util/Debug/Log.h>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
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
|
||||
// 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) ==
|
||||
sizeof(MG_Backend::GLFunctionsTable) + 2 * sizeof(void (*)()),
|
||||
"GlobalBackendFunctionsTable is no longer GLFunctionsTable + Present + SetSwapInterval");
|
||||
static_assert(sizeof(MG_Backend::GlobalBackendFunctionsTable) ==
|
||||
kRemoteEmitSlotCount * sizeof(void (*)()) + sizeof(void (*)()),
|
||||
"the emit table's 71 slots plus the packed Bool no longer describe the table");
|
||||
|
||||
[[noreturn]] void UnmigratedVerbFatal(const char* slot) {
|
||||
// The same shape as MGPipeInputPoisonFatal (generated/PipeFilled.inc:407-413): names the
|
||||
// slot, live at every log level, aborts. Deliberately NOT MOBILEGL_ASSERT, which is
|
||||
// inert in an INFO build - and INFO is what every device lane runs.
|
||||
MGLOG_F("MGPipe: Fatal{UnmigratedVerb, \"%s\"}", slot);
|
||||
std::abort();
|
||||
}
|
||||
|
||||
const MG_Backend::GlobalBackendFunctionsTable& RemoteEmitTable() {
|
||||
MGLOG_F("MGPipe: Fatal{UnimplementedEmitTable, \"RemoteEmitTable\"} - P5 package c1 has "
|
||||
"not landed this yet; c0 shipped the signature only");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
Uint32 ImplementedVerbCount() { return 0; }
|
||||
|
||||
} // namespace MobileGL::MG_Remote::Client
|
||||
Reference in New Issue
Block a user