#916 WIP: perf(nvn): the game's frame limiter waits for the frame before last on the GPU, so heavy scenes run 11 to 15 % faster
Commit
Plan (gpt-6.1-terra)
Steam Deck: compare frame-ahead on and off in the Market and Hyrule Field
In plain words
This plan waits for a Steam Deck tester; none is currently online. In roughly 25 minutes it compares uncapped frame rates and sampled images in the Market and Hyrule Field, with frame-ahead enabled and disabled because the switch controls the changed limiter. The gate save is unavailable, so teleports substitute for the requested gate-to-drawbridge route. A crash, a frame-rate drop over 10%, or a substantial sampled image difference fails the plan; the sampled images cannot establish whether any single dark frame occurred. No tester online now matches steamdeck: that target waits for one.
Asked for
steamdeck, its default settings: Castle Town's south gate (a save at the gate) out to the drawbridge and into Hyrule Field and back, a few minutes, uncapped, the FPS counter on; then the same with HOS_FRAME_AHEAD=0. Expect a higher frame rate in the heavy scenes with the default, and no single frame where Link or the scene goes dark. Please post both frame rates and whether any dark frame was seen.
Raw plan Download plan.json
{
"pass": {
"crash": false,
"fps_mean": {
"min_delta_pct": 10
},
"screenshot": {
"max_diff": 0.15
}
},
"probe": [
{
"kind": "crash"
},
{
"kind": "draws"
},
{
"kind": "frametime"
},
{
"at_s": [
0,
1,
2,
3
],
"kind": "screenshot",
"upload": false,
"compare": "baseline"
}
],
"matrix": {
"pr_only": {
"HOS_FRAME_AHEAD": [
"1",
"0"
]
}
},
"schema": 3,
"target": [
{
"name": "steamdeck",
"tags": [
"steamdeck"
],
"min_reports": 1
}
],
"summary": "Steam Deck: compare frame-ahead on and off in the Market and Hyrule Field",
"baseline": {
"ref": "main"
},
"scenario": [
{
"env": {},
"name": "market-field",
"runs": 1,
"step": [
{
"do": "teleport",
"to": "Market_Child"
},
{
"do": "wait",
"map": "Market_Child",
"event": "map",
"timeout_s": 60
},
{
"do": "measure",
"name": "market",
"warmup_s": 5,
"duration_s": 30
},
{
"do": "shot",
"name": "market",
"upload": false,
"compare": "baseline"
},
{
"do": "teleport",
"to": "HyruleField_Child"
},
{
"do": "wait",
"map": "HyruleField_Child",
"event": "map",
"timeout_s": 60
},
{
"x": 0,
"y": 1,
"do": "stick",
"stick": "L",
"frames": 300
},
{
"do": "measure",
"name": "field",
"warmup_s": 5,
"duration_s": 60
},
{
"do": "shot",
"name": "field",
"upload": false,
"compare": "baseline"
},
{
"do": "teleport",
"to": "Market_Child"
},
{
"do": "wait",
"map": "Market_Child",
"event": "map",
"timeout_s": 60
}
],
"start": "new",
"matrix": true,
"settings": {
"fps_counter": 1,
"frame_rate_cap": 6
}
}
]
}
Targets
| Target | Tier | Reports | Status |
|---|---|---|---|
| steamdeck | reviewed futondestroyer | none yet | 0/1 pass, 0 running, 1 queued |
Reports
No reports yet. Each tester posts one when its job ends.
Jobs
| Job | Commit | Target | State | Tester | Attempts | Note |
|---|---|---|---|---|---|---|
jb_709ea13a0964bc1f | 14e165a | steamdeck | queued | — | 0 |