mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-08 18:43:24 +09:00
[Refactor] (P13): Espryt's frontend-keyed slot-table entries and the apply-thread refusals go, death notices release twins by handle, and the link ratchet refuses any '# P13' line (49 -> 36 symbols).
This commit is contained in:
@@ -5,24 +5,14 @@
|
||||
# base commit : <unknown>
|
||||
# configure : -DMOBILEGL_BUILD_DISAGGREGATED=ON -DMOBILEGL_BUILD_DISAGGREGATED_INPROC=ON -DCMAKE_BUILD_TYPE=Release
|
||||
# build dir : /home/swung/mgl-p13-split
|
||||
# count : 49
|
||||
# count : 36
|
||||
#
|
||||
# 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
|
||||
# ignores. `# P13` (debts only P13's module work could clear) is refused since
|
||||
# P13 closed them. 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::FramebufferImpl::pDefaultFramebufferInfo
|
||||
MobileGL::MG_Pipe::MGPipeApplierIsUnbarrieredApply() # P13
|
||||
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
|
||||
MobileGL::MG_Pipe::MGPipeSlotAllocator::FindByLifetimeId(MobileGL::MG_Pipe::MGPipeKind, unsigned long) const # P13
|
||||
MobileGL::MG_Pipe::MGPipeSlotAllocator::Free(MobileGL::MG_Pipe::MGPipeKind, MobileGL::MG_Pipe::MGPipeHandle) # P13
|
||||
MobileGL::MG_Pipe::MGPipeSlots() # P13
|
||||
MobileGL::MG_Pipe::PipeInputs::GetBufferBindingPointCount(MobileGL::BufferTarget) const
|
||||
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::ErrorInfo, std::default_delete<MobileGL::ErrorInfo> >)
|
||||
MobileGL::MG_Remote::Client::AdoptTierIsEmulate()
|
||||
@@ -50,14 +40,11 @@ MobileGL::MG_State::GLState::DecodeProgramArchive(unsigned char const*, unsigned
|
||||
MobileGL::MG_State::GLState::GetBufferBackendOps()
|
||||
MobileGL::MG_State::GLState::ProgramArtifactsSchemaFingerprint()
|
||||
MobileGL::MG_State::GLState::ProgramObject::JoinPendingLink() const
|
||||
MobileGL::MG_State::GLState::RenderbufferObject::GetExternalIndex() const
|
||||
MobileGL::MG_State::GLState::SamplerObject::GetAllSamplerParameters() const
|
||||
MobileGL::MG_State::GLState::SamplerObject::GetExternalIndex() const
|
||||
MobileGL::MG_State::GLState::SamplerObject::GetLifetimeId() const
|
||||
MobileGL::MG_State::GLState::SamplerObject::GetVersion() const
|
||||
MobileGL::MG_State::GLState::SetBufferBackendOps(MobileGL::MG_State::GLState::BufferBackendOps const*)
|
||||
MobileGL::MG_State::GLState::TextureObjectBuffer::GetBufferBindingSlot(MobileGL::TextureUploadTarget)
|
||||
MobileGL::MG_State::GLState::TextureUnit::GetAllBindingSlots()
|
||||
MobileGL::MG_State::GLState::TextureUnit::GetSamplerObject() const
|
||||
MobileGL::MG_State::GLState::VertexArrayObject::GetAllAttributes() const
|
||||
MobileGL::MG_State::GLState::VertexArrayObject::GetAttribute(unsigned int) const
|
||||
|
||||
+29
-5
@@ -40,6 +40,11 @@ regression this gate exists to catch: new backend code reaching into a frontend
|
||||
symbols that disappeared, with an instruction to re-baseline in the same commit. Progress is
|
||||
never a red build; new reach always is.
|
||||
|
||||
THE P13 EXIT GATE. A baseline line annotated `# P13` named a debt that only P13's module work
|
||||
could clear. P13 cleared every one, so --assert-monotone now also fails on ANY `# P13`
|
||||
annotation left in (or put back into) the baseline: that class of debt has no later phase to
|
||||
wait for.
|
||||
|
||||
GUARD RAILS. The build must be a disaggregated one
|
||||
(-DMOBILEGL_BUILD_DISAGGREGATED=ON -DMOBILEGL_BUILD_DISAGGREGATED_INPROC=ON; every build pushes
|
||||
since P13 W3a, so MOBILEGL_PIPE_PUSH is no longer an option to check): with the option OFF, MG_Remote is not compiled at all, the SERVER set
|
||||
@@ -176,11 +181,16 @@ A6_TOTAL = 184
|
||||
# known object path rather than by splitting the whole line.
|
||||
NM_BODY_RE = re.compile(r"^\s*([0-9a-fA-F]*)\s+([A-Za-z?])\s(.+)$")
|
||||
|
||||
# A baseline line may carry a trailing ` # note` annotation (ID-P7-7 asks for `# P13` on the
|
||||
# symbols that cannot fall before P13). No demangled C++ name contains " #", so splitting on
|
||||
# A baseline line may carry a trailing ` # note` annotation (ID-P7-7 asked for `# P13` on the
|
||||
# symbols that could not fall before P13). No demangled C++ name contains " #", so splitting on
|
||||
# the first occurrence is unambiguous.
|
||||
BASELINE_ANNOTATION = " #"
|
||||
|
||||
|
||||
def p13_debts(notes):
|
||||
"""The baseline symbols still annotated `# P13` - none may remain after P13 (exit gate)."""
|
||||
return sorted(symbol for symbol, note in notes.items() if note.split()[:1] == ["P13"])
|
||||
|
||||
REQUIRED_FLAGS = (
|
||||
("MOBILEGL_BUILD_DISAGGREGATED", "ON"),
|
||||
("MOBILEGL_BUILD_DISAGGREGATED_INPROC", "ON"),
|
||||
@@ -628,6 +638,11 @@ def self_test():
|
||||
problems.append("baseline annotation not read: {}".format(notes))
|
||||
if len(notes) != 2:
|
||||
problems.append("baseline annotations: {}".format(notes))
|
||||
if p13_debts(notes) != ["MobileGL::MG_Pipe::MGPipeSlots()",
|
||||
"MobileGL::Vec4<int>::Vec4(int, int, int, int)"]:
|
||||
problems.append("P13 exit gate did not name both `# P13` lines: {}".format(p13_debts(notes)))
|
||||
if p13_debts({"x": "P13x", "y": "kept for P14"}):
|
||||
problems.append("P13 exit gate matched a note that is not a `# P13` annotation")
|
||||
finally:
|
||||
os.unlink(tmp)
|
||||
|
||||
@@ -808,6 +823,14 @@ def main():
|
||||
say(" referred by: " + ", ".join(result["referrers"][symbol]))
|
||||
if args.assert_monotone and new:
|
||||
exit_code = 1
|
||||
p13 = p13_debts(baseline_notes)
|
||||
if p13:
|
||||
say("{} baseline symbol(s) still carry a `# P13` annotation; P13 closed that class of "
|
||||
"debt, so none may remain:".format(len(p13)))
|
||||
for symbol in p13:
|
||||
say(" P13: " + symbol)
|
||||
if args.assert_monotone:
|
||||
exit_code = 1
|
||||
if not new and not gone:
|
||||
say("ratchet: unchanged at {} symbol(s)".format(len(result["symbols"])))
|
||||
|
||||
@@ -850,7 +873,8 @@ def main():
|
||||
say("json written to " + args.json)
|
||||
|
||||
if exit_code:
|
||||
say("FAIL --assert-monotone: {} new frontend symbol(s) (named above)".format(len(new)))
|
||||
say("FAIL --assert-monotone: {} new frontend symbol(s), {} `# P13` annotation(s) (named "
|
||||
"above)".format(len(new), len(p13_debts(baseline_notes))))
|
||||
return exit_code
|
||||
|
||||
|
||||
@@ -871,8 +895,8 @@ def write_baseline(path, symbols, notes, cache_values, build_dir):
|
||||
"# count : {}\n"
|
||||
"#\n"
|
||||
"# One demangled symbol per line. A trailing ` # note` is an annotation the parser\n"
|
||||
"# ignores; `# P13` marks a symbol that cannot fall before P13 establishes module\n"
|
||||
"# target boundaries. The LIST is the baseline, not the count: a ratchet that\n"
|
||||
"# ignores. `# P13` (debts only P13's module work could clear) is refused since\n"
|
||||
"# P13 closed them. The LIST is the baseline, not the count: a ratchet that\n"
|
||||
"# stored only a number would go green on the day one symbol is cleared and another\n"
|
||||
"# added (ID-P7-7).\n".format(
|
||||
head, flags, (cache_values or {}).get("CMAKE_BUILD_TYPE", "?"), build_dir,
|
||||
|
||||
Reference in New Issue
Block a user