mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[Refactor, Test] (docs/ci, docs/Disaggregated, MG_Backend/MGPipe, MG_Remote/Client, MG_Remote/Transport, MG_Test/Wire, MobileGL, scripts/data, tools/trace_replay): delete the MOBILEGL_IPC_VERB_BARRIER knob
- retires RemoteRunAhead.ClearingTheVerbBarrierDisarmsRunAheadEvenWithTheCapBit
This commit is contained in:
@@ -460,11 +460,11 @@ stacks before treating a local result as a statement about CI.
|
||||
|
||||
`run_tcp_matrix.py` uses a CTest JSON catalog plus the **current** `trace_cases.json`.
|
||||
It does not build, install an APK, or launch the remote server. For the formal
|
||||
P6.5 run-ahead matrix, use `--require-run-ahead`. It forces `MOBILEGL_IPC_RUN_AHEAD=1`
|
||||
and `MOBILEGL_IPC_VERB_BARRIER=1`, then requires `run-ahead ARMED` in each private
|
||||
client log and rejects any `running lockstep` / `DISARMED` marker. The checkpoint
|
||||
records `requested_arm` and `actual_arm`; strict resume cannot reuse an earlier
|
||||
lockstep image pass. Start the intended server first, then run serially:
|
||||
P6.5 run-ahead matrix, use `--require-run-ahead`. It forces `MOBILEGL_IPC_RUN_AHEAD=1`,
|
||||
then requires `run-ahead ARMED` in each private client log and rejects any
|
||||
`running lockstep` / `DISARMED` marker. The checkpoint records `requested_arm` and
|
||||
`actual_arm`; strict resume cannot reuse an earlier lockstep image pass. Start the intended
|
||||
server first, then run serially:
|
||||
|
||||
```bash
|
||||
ctest --test-dir /path/to/retrace-build --show-only=json-v1 > /tmp/trace-catalog.json
|
||||
|
||||
@@ -59,7 +59,7 @@ def measure(args, case, credit, work):
|
||||
env = dict(os.environ, MOBILEGL_TRANSPORT='spawn', MOBILEGL_IPC_CONTROL=args.endpoint,
|
||||
MOBILEGL_IPC_DATA='stream', MOBILEGL_IPC_TOKEN=args.token, MOBILEGL_IPC_REQUIRE_SAME_BUILD='1',
|
||||
MOBILEGL_IPC_LOG_FORWARD='1', MOBILEGL_PIPE_STATS='1', MOBILEGL_PIPE_STATS_PERIOD='1',
|
||||
MOBILEGL_IPC_PRESENT_CREDIT=str(credit), MOBILEGL_IPC_RUN_AHEAD='1', MOBILEGL_IPC_VERB_BARRIER='1',
|
||||
MOBILEGL_IPC_PRESENT_CREDIT=str(credit), MOBILEGL_IPC_RUN_AHEAD='1',
|
||||
MOBILEGL_IPC_BATCH_WAITS='1', MOBILEGL_BACKEND_TYPE='DirectGLES',
|
||||
MOBILEGL_IPC_STRICT_ERRORS='0', MOBILEGL_IPC_ROLE_SPLIT_STATE='0', MOBILEGL_IPC_AUDIT='0')
|
||||
for name in ('MOBILEGL_IPC_DIAL', 'MOBILEGL_IPC_SERVER_PATH'):
|
||||
|
||||
@@ -58,7 +58,7 @@ def run(args, case, transport, repeat):
|
||||
out.mkdir(parents=True)
|
||||
env = dict(os.environ, MOBILEGL_TRANSPORT='spawn', MOBILEGL_BACKEND_TYPE='DirectGLES',
|
||||
MOBILEGL_IPC_SERVER_PATH=str(args.server), MOBILEGL_PIPE_STATS='1', MOBILEGL_PIPE_STATS_PERIOD='1',
|
||||
MOBILEGL_IPC_PRESENT_CREDIT='1', MOBILEGL_IPC_RUN_AHEAD='1', MOBILEGL_IPC_VERB_BARRIER='1',
|
||||
MOBILEGL_IPC_PRESENT_CREDIT='1', MOBILEGL_IPC_RUN_AHEAD='1',
|
||||
MOBILEGL_IPC_BATCH_WAITS='1', MOBILEGL_IPC_SPIN_US='50', MOBILEGL_IPC_STRICT_ERRORS='0',
|
||||
MOBILEGL_IPC_ROLE_SPLIT_STATE='0', MOBILEGL_IPC_AUDIT='0',
|
||||
LIBGL_ALWAYS_SOFTWARE='1', EGL_PLATFORM='surfaceless',
|
||||
|
||||
@@ -36,7 +36,7 @@ def run(args):
|
||||
MOBILEGL_IPC_REQUIRE_SAME_BUILD='1', MOBILEGL_IPC_LOG_FORWARD='1',
|
||||
MOBILEGL_BACKEND_TYPE='DirectGLES', MOBILEGL_PIPE_STATS='1',
|
||||
MOBILEGL_PIPE_STATS_PERIOD='1', MOBILEGL_IPC_RUN_AHEAD='1',
|
||||
MOBILEGL_IPC_VERB_BARRIER='1', MOBILEGL_IPC_PRESENT_CREDIT='1',
|
||||
MOBILEGL_IPC_PRESENT_CREDIT='1',
|
||||
MOBILEGL_LOG_FILE_PATH=str(args.out / 'mobilegl.log'), EGL_PLATFORM='surfaceless')
|
||||
for name in ('MOBILEGL_IPC_DIAL', 'MOBILEGL_IPC_SERVER_PATH'):
|
||||
os.environ.pop(name, None)
|
||||
|
||||
@@ -118,7 +118,7 @@ def run(args, transport, case, repeat):
|
||||
env = dict(os.environ, MOBILEGL_TRANSPORT=transport, MOBILEGL_IPC_SERVER_PATH=str(args.server),
|
||||
MOBILEGL_PIPE_STATS='0', MOBILEGL_IPC_PRESENT_CREDIT='1', MOBILEGL_IPC_RUN_AHEAD='1',
|
||||
MOBILEGL_IPC_STRICT_ERRORS='0', MOBILEGL_IPC_ROLE_SPLIT_STATE='0', MOBILEGL_IPC_AUDIT='0',
|
||||
MOBILEGL_IPC_VERB_BARRIER='1', MOBILEGL_IPC_BATCH_WAITS='1', MOBILEGL_IPC_SPIN_US='50',
|
||||
MOBILEGL_IPC_BATCH_WAITS='1', MOBILEGL_IPC_SPIN_US='50',
|
||||
LIBGL_ALWAYS_SOFTWARE='1', EGL_PLATFORM='surfaceless',
|
||||
MESA_GL_VERSION_OVERRIDE='3.3', MESA_GLSL_VERSION_OVERRIDE='330')
|
||||
for key in ('MOBILEGL_IPC_CONTROL', 'MOBILEGL_IPC_DATA', 'MOBILEGL_IPC_TOKEN', 'MOBILEGL_IPC_DIAL',
|
||||
|
||||
@@ -140,7 +140,6 @@ def case_environment(test, base, args, output=None):
|
||||
MOBILEGL_IPC_PRESENT_CREDIT=str(args.credit))
|
||||
if getattr(args, "require_run_ahead", False):
|
||||
env["MOBILEGL_IPC_RUN_AHEAD"] = "1"
|
||||
env["MOBILEGL_IPC_VERB_BARRIER"] = "1"
|
||||
if output is not None:
|
||||
env["MOBILEGL_LOG_FILE_PATH"] = str(output / "output/mobilegl.log")
|
||||
return env
|
||||
@@ -406,7 +405,7 @@ def run_case(plan, args, row):
|
||||
work = Path(row["work"])
|
||||
console = work.parent / "runner.log"
|
||||
env = case_environment(plan["test"], args.base_env, args, work)
|
||||
row["requested_arm"] = {key: env.get(key) for key in ("MOBILEGL_IPC_RUN_AHEAD", "MOBILEGL_IPC_VERB_BARRIER")}
|
||||
row["requested_arm"] = {key: env.get(key) for key in ("MOBILEGL_IPC_RUN_AHEAD",)}
|
||||
props = properties(plan["test"])
|
||||
cwd = props.get("WORKING_DIRECTORY", str(args.source))
|
||||
def wake():
|
||||
@@ -456,7 +455,7 @@ def main(argv=None):
|
||||
parser.add_argument("--credit", type=int, choices=(1, 2, 3), default=2)
|
||||
parser.add_argument("--resume", action="store_true")
|
||||
parser.add_argument("--require-run-ahead", action="store_true",
|
||||
help="require private-client ARMED proof, no lockstep fallback/DISARMED; force RUN_AHEAD=1 and VERB_BARRIER=1")
|
||||
help="require private-client ARMED proof, no lockstep fallback/DISARMED; force RUN_AHEAD=1")
|
||||
parser.add_argument("--idle-seconds", type=float, default=300)
|
||||
parser.add_argument("--max-seconds", type=float, default=7200)
|
||||
parser.add_argument("--wake-adb-serial", help="explicit opt-in: KEYCODE_WAKEUP every 15 seconds while a case runs")
|
||||
|
||||
@@ -37,7 +37,7 @@ if behavior!='no-result':
|
||||
actual=work/'output/actual.png';actual.write_bytes(b'fixture-image')
|
||||
endpoint=os.environ['MOBILEGL_IPC_CONTROL'].removeprefix('tcp://')
|
||||
arm=os.environ.get('CASE_ARM','armed')
|
||||
if arm=='respect-env':arm='armed' if os.environ.get('MOBILEGL_IPC_RUN_AHEAD')=='1' and os.environ.get('MOBILEGL_IPC_VERB_BARRIER')=='1' else 'lockstep'
|
||||
if arm=='respect-env':arm='armed' if os.environ.get('MOBILEGL_IPC_RUN_AHEAD')=='1' else 'lockstep'
|
||||
line={'armed':'run-ahead ARMED\n','lockstep':'running lockstep\n','disarmed':'run-ahead ARMED\nrun-ahead DISARMED\n','server-only':''}[arm]
|
||||
(work/'output/mobilegl.client.log').write_text('control=tcp data=stream server='+endpoint+' pid=123 dial=connect\n'+line)
|
||||
if arm=='server-only':(work/'output/mobilegl.server.log').write_text('run-ahead ARMED\n')
|
||||
@@ -116,11 +116,11 @@ class MatrixTests(unittest.TestCase):
|
||||
test['properties'][0]['value'] += list(entries)
|
||||
self.catalog.write_text(json.dumps(catalog))
|
||||
|
||||
def test_required_arm_forces_both_environment_knobs_and_records_actual_arm(self):
|
||||
self.set_arm('respect-env',['MOBILEGL_IPC_RUN_AHEAD=0','MOBILEGL_IPC_VERB_BARRIER=0'])
|
||||
def test_required_arm_forces_the_run_ahead_knob_and_records_actual_arm(self):
|
||||
self.set_arm('respect-env',['MOBILEGL_IPC_RUN_AHEAD=0'])
|
||||
self.assertEqual(self.run_main('--require-run-ahead'),0)
|
||||
row=self.checkpoint()[0]
|
||||
self.assertEqual(row['requested_arm'],{'MOBILEGL_IPC_RUN_AHEAD':'1','MOBILEGL_IPC_VERB_BARRIER':'1'})
|
||||
self.assertEqual(row['requested_arm'],{'MOBILEGL_IPC_RUN_AHEAD':'1'})
|
||||
self.assertEqual(row['actual_arm'],{'armed':True,'lockstep':False,'disarmed':False})
|
||||
self.assertEqual(self.run_main('--require-run-ahead','--resume'),0)
|
||||
self.assertEqual(len(self.checkpoint()),1)
|
||||
@@ -337,7 +337,7 @@ class MatrixTests(unittest.TestCase):
|
||||
|
||||
def test_directvulkan_run_ahead_proof_and_checkpoint_keys_are_per_backend(self):
|
||||
self.write_inputs(backends=('DirectGLES','DirectVulkan'))
|
||||
self.set_arm('respect-env',['MOBILEGL_IPC_RUN_AHEAD=0','MOBILEGL_IPC_VERB_BARRIER=0'])
|
||||
self.set_arm('respect-env',['MOBILEGL_IPC_RUN_AHEAD=0'])
|
||||
self.assertEqual(self.run_main('--backend','DirectGLES','--backend','DirectVulkan',
|
||||
'--require-run-ahead'),0)
|
||||
rows=self.checkpoint()
|
||||
|
||||
@@ -259,7 +259,7 @@ class RunTraceCaseTests(unittest.TestCase):
|
||||
'a leg whose transport block was skipped must fail the checker')
|
||||
|
||||
# MGTRACE_EXPECT_IPC: the client's IPC line must carry every token, whole.
|
||||
IPC = 'Config: IPC ring=8MiB verb-barrier=1 run-ahead={ra} present-credit=1 strict={st} audit=0 role-split-state={rs} x'
|
||||
IPC = 'Config: IPC ring=8MiB run-ahead={ra} present-credit=1 strict={st} audit=0 role-split-state={rs} x'
|
||||
|
||||
def ipc_logs(self, ra='1', st='0', rs='1', line=True):
|
||||
logs = good_logs('spawn')
|
||||
|
||||
Reference in New Issue
Block a user