feat(bench): automate B7 shader profiles, wire B12b trials, settle 45s

- gen_shader_profiles.py + shader-profiles/: Iris per-pack option files
  resolved from each pack's profile.* lines (Iris has no profile key)
- bench.py: flag rows shader_not_loaded when Iris falls back to vanilla
  rendering (analyze.py treats it as invalid)
- matrix: shader_options session key, trial jar globs pinned to the
  downloaded Modrinth builds, post-join settle 45 s (B0 v1 showed rep 1
  still warming at 10 s)
This commit is contained in:
logan committed 2026-10-16 23:34:52 -04:00
1 parent a15c912ad0
commit 4fa9a6ab81
13 files changed
+552 -31

No files matched your search

+16 -1
View File
@@ -1066,6 +1066,21 @@ def options_values(game, keys):
return vals
SHADER_FAIL_RE = re.compile(
r"Falling back to normal rendering without shaders|Failed to compile shaders|"
r"Failed to create shader rendering pipeline|Failed to load the shaderpack|"
r"Shaders are disabled because|is not valid! Can't load it")
def shader_flags(shader, lines):
"""['shader_not_loaded'] when a shader was requested but Iris didn't load it."""
if not shader or shader == "off":
return []
ok = any("Using shaderpack: " in ln for ln in lines)
bad = any(SHADER_FAIL_RE.search(ln) for ln in lines)
return ["shader_not_loaded"] if bad or not ok else []
def env_flags(gpus, server_running):
"""Warn flags for uncontrolled noise sources."""
flags = []
@@ -1311,7 +1326,7 @@ def _record_session(a, sid, plan, tail, t_launch, outcome, detail, jvm_flags, cf
"join_s": round(ev["joined_t"] - t_launch, 2) if ev["joined_t"] else None,
"atlas": ev["atlas"], "log": log_path, **meta, "mem_available_after_mb": mem_after,
}
noise = env_flags(meta["gpus"], meta["server_running"])
noise = env_flags(meta["gpus"], meta["server_running"]) + shader_flags(a.shader, lines)
if restore_failed:
noise.append("restore_failed")
n_ok = 0