tools/x264_disable_mc_mul: init

This commit is contained in:
2025-04-23 13:52:06 +08:00
parent 9765cccf0f
commit c2ba7f45ab

View File

@@ -0,0 +1,66 @@
import os
from pathlib import Path
from subprocess import Popen
from speccpu import SPEC, check_bench_dir, find_build, get_benchspec_dir, x264
def x264_disable_mc_mul(
spec_dir: Path,
spec_config: str,
spec_outputroot: Path,
):
spec = SPEC(spec_dir)
x264_dir = get_benchspec_dir(spec_outputroot) / "625.x264_s"
check_bench_dir(x264_dir)
x264_build = find_build(x264_dir / "build")
assert x264_build.exists()
assert "x264_src" in os.listdir(x264_build)
mc_path = x264.get_mc_path(x264_build)
assert mc_path.exists()
mc_src = x264.MCBuilder().with_disabled_iscale_mul().build()
# Write mc_src to mc_path, recompile it, and replace resulting exe
with open(mc_path, "w") as f:
f.write(mc_src)
# Recompile
recompiled_x264_path = x264.recompile_mc(mc_path, x264_build, spec.env())
assert recompiled_x264_path.exists()
assert recompiled_x264_path.is_file()
# Execute that new binary
x264.update_exe(recompiled_x264_path, x264_dir / "exe")
with Popen(
spec.mkcmd_runcpu(
spec_config,
["x264"],
setprocgroup=True,
workload="ref",
output_root=spec_outputroot,
)
) as process:
process.wait()
def main():
spec_path = Path("/home/lyc/spec2017-1.1.8-new")
x264_run_id = "f7e8503c-b8ca-47c9-879f-d1e73bbedc99"
x264_config = spec_path / "config" / f"{x264_run_id}.cfg"
x264_outputroot = Path("/home/lyc/work-ts/local/specOutput") / x264_run_id
x264_disable_mc_mul(
spec_path,
str(x264_config),
x264_outputroot,
)
if __name__ == "__main__":
main()