From 28facc1c3f3aed876ded9eae15affbd5de291538 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Thu, 9 Jul 2026 12:14:17 +0000 Subject: [PATCH] [Feat] (trace-replay): add Create flywheel indirect and instancing fixtures Two 1.21.1 NeoForge Create in-world captures facing water wheels and a large cogwheel, one per flywheel backend (/flywheel backend indirect and instanced). The indirect trace exercises the compute scatter/cull pipeline, glMultiDrawElementsIndirect with GPU-written commands, and draw-parameter emulation; captured with persistent-map shadowing so the unflushed scatter descriptors Flywheel writes are recorded. Both trimmed to a single frame and brotli-repacked (~7 MiB each). Co-Authored-By: Claude Fable 5 --- tools/trace_replay/README.md | 7 +++++++ ...eoforge-create-indirect-in-world.0000504631.png | 3 +++ ...ft-1.21.1-neoforge-create-indirect-in-world.tgz | 3 +++ ...forge-create-instancing-in-world.0000530333.png | 3 +++ ...-1.21.1-neoforge-create-instancing-in-world.tgz | 3 +++ tools/trace_replay/trace_cases.json | 14 ++++++++++++++ 6 files changed, 33 insertions(+) create mode 100644 tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png create mode 100644 tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.tgz create mode 100644 tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png create mode 100644 tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.tgz diff --git a/tools/trace_replay/README.md b/tools/trace_replay/README.md index 9de625a6..87ab8d8b 100644 --- a/tools/trace_replay/README.md +++ b/tools/trace_replay/README.md @@ -103,6 +103,13 @@ The bundled fixtures cover: - minecraft-1.21.4-fabric-iris-sundial-lite-in-world: captured from Minecraft 1.21.4 Fabric with Sodium, Iris, and Sundial Lite after entering a singleplayer world. ![Minecraft 1.21.4 Fabric Iris Sundial Lite in-world golden](fixtures/minecraft-1.21.4-fabric-iris-sundial-lite-in-world.0000150023.png) +- minecraft-1.21.1-neoforge-create-indirect-in-world: captured from Minecraft 1.21.1 NeoForge with Create, Sodium, + and Iris (no shader pack) in a world facing Create water wheels and a large cogwheel, with Flywheel's + `flywheel:indirect` backend (compute-shader culling, glMultiDrawElementsIndirect, persistent-mapped staging). + ![Minecraft 1.21.1 NeoForge Create indirect in-world golden](fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png) +- minecraft-1.21.1-neoforge-create-instancing-in-world: same world and camera as the indirect case, with Flywheel's + `flywheel:instancing` backend (texture-buffer instance data, glDrawElementsInstancedBaseVertex). + ![Minecraft 1.21.1 NeoForge Create instancing in-world golden](fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png) Build from the MobileGL repository root: diff --git a/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png new file mode 100644 index 00000000..e7682780 --- /dev/null +++ b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:346ef70898a9169446bd6b6a8155ad9470dfc6fd7338705930853becc2b0eb5f +size 280527 diff --git a/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.tgz b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.tgz new file mode 100644 index 00000000..59d840a2 --- /dev/null +++ b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-indirect-in-world.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f22620a6f87cbcf3d5c82cbccd53d21453dd2350dbc187f78cd6ac19218719ed +size 7196659 diff --git a/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png new file mode 100644 index 00000000..b7756c90 --- /dev/null +++ b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee35d41900350b70b322791631a4aa923c0dd7c5f9fbb6a0f526dd27016528b9 +size 280621 diff --git a/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.tgz b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.tgz new file mode 100644 index 00000000..fcf8e760 --- /dev/null +++ b/tools/trace_replay/fixtures/minecraft-1.21.1-neoforge-create-instancing-in-world.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7700eb607003751176efcdd06fa5442b461640b41a83eac850ad7e4bbf9d62f4 +size 7564562 diff --git a/tools/trace_replay/trace_cases.json b/tools/trace_replay/trace_cases.json index 9d2e0fb4..eaa407b0 100644 --- a/tools/trace_replay/trace_cases.json +++ b/tools/trace_replay/trace_cases.json @@ -257,6 +257,20 @@ "golden": "minecraft-1.21.4-fabric-iris-derivative-main-d24.4.14-in-world.0000145353.png", "alternate_golden": "minecraft-1.21.4-fabric-iris-derivative-main-d24.4.14-in-world.0000145353-android-angle.png", "target_call": 145353 + }, + { + "name": "minecraft-1.21.1-neoforge-create-indirect-in-world", + "trace_archive": "minecraft-1.21.1-neoforge-create-indirect-in-world.tgz", + "golden": "minecraft-1.21.1-neoforge-create-indirect-in-world.0000504631.png", + "target_call": 504631, + "timeout_seconds": 1800 + }, + { + "name": "minecraft-1.21.1-neoforge-create-instancing-in-world", + "trace_archive": "minecraft-1.21.1-neoforge-create-instancing-in-world.tgz", + "golden": "minecraft-1.21.1-neoforge-create-instancing-in-world.0000530333.png", + "target_call": 530333, + "timeout_seconds": 1800 } ] }