mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-15 14:03:23 +09:00
[Perf] (MG_Remote/Transport): the reply-wait metric gains a per-op tally, and the measurement says which rows actually buy the waits
- The handoff measured the total (55,428 reply waits in one Minecraft frame) and left "which rows" open: a total is the same number whether the waits are uploads, creates or parameter sets, and those three have different fixes - so knowing the split is what says whether P12 item B is the whole story or a fraction of one. - LinkMetricsBeginReply now takes the op and Window carries a per-op tally, so LinkMetricsReplyWaitsFor(op) reads back what the P65LinkMetrics line prints as `wait_replies` split by row. Same activation as everything else in that file (MOBILEGL_PIPE_STATS=1), one array in the window, and a value past the table lands on the last slot so the per-op numbers still SUM to the total. - RemoteClientControls.ReplyWaitsByOpForAnAtlasShapedLoad drives the two shapes a stitcher produces and prints the table: an atlas stitch (64 glTexSubImage2D into one level) goes from 64 reply waits to ZERO, and a texture per sprite (64 textures, 256 glTexParameteri) from 384 to 320 with the remainder all ResourceCreate 76 / ResourceRespecify 130 / SetTextureParams 130. - It prints before it asserts: the table is the point of the case, and a gate that fired first would hide the numbers on exactly the run that needs them - the red one. The assertions are the structural ones that can be wrong about the mechanism (upload rows zero, the other rows not, the per-op tally summing to the total); the numbers themselves are recorded, not gated. - The A/B is a real run: with the wire-arm arm test removed the case goes red with the full table, which is where the 64 and 384 above come from.
This commit is contained in:
@@ -1877,7 +1877,10 @@ namespace MobileGL::MG_Remote::Client {
|
||||
// Publish the head, record submittedSeq, THEN ring - in that order, which is
|
||||
// SessionProducer's one job and RingTest.cpp:446's pin. Notify-then-publish loses the
|
||||
// wakeup.
|
||||
const auto replyMetricStart = Transport::LinkMetricsBeginReply(ownsReplySlot);
|
||||
// The op goes with the tally (P12): a total cannot say whether the waits are uploads,
|
||||
// creates or parameter sets, and those three have different fixes.
|
||||
const auto replyMetricStart =
|
||||
Transport::LinkMetricsBeginReply(ownsReplySlot, static_cast<std::uint32_t>(op));
|
||||
m_producer.PublishAndNotify(seq);
|
||||
if (op == MG_Pipe::MGPWireOp::Present) {
|
||||
// A credit is permission to run ahead, not permission to retain the
|
||||
|
||||
Reference in New Issue
Block a user