diff --git a/dm/games/0100000000010000/c1_full.tsv b/dm/games/0100000000010000/c1_full.tsv index a3ca56e..5461958 100644 --- a/dm/games/0100000000010000/c1_full.tsv +++ b/dm/games/0100000000010000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-fc3150ef3ee3 2026-10-23T08:37:08+08:00 (list carried over from b-30fd9f023111: that chain change did not touch any c1 read) +# chain b-9172252ffef7 2026-10-23T22:04:35+08:00 (list carried over from b-fc3150ef3ee3: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 6405f3e55facc7c9 d9097b8aba3a7080 diff --git a/dm/games/0100000000010000/cb_extent.tsv b/dm/games/0100000000010000/cb_extent.tsv index 3a70cdf..a049a14 100644 --- a/dm/games/0100000000010000/cb_extent.tsv +++ b/dm/games/0100000000010000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-fc3150ef3ee3 2026-10-23T08:37:08+08:00 (list carried over from b-30fd9f023111: that chain change did not touch any uniform read) +# chain b-9172252ffef7 2026-10-23T22:04:35+08:00 (list carried over from b-fc3150ef3ee3: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00008cfe4fc1d31b 5:304 6:1856 7:64 12:16 0004d9615081f2dd 5:304 6:1856 7:64 diff --git a/dm/games/0100000000010000/dmsh_chain.h b/dm/games/0100000000010000/dmsh_chain.h index a553acb..bf3d48e 100644 --- a/dm/games/0100000000010000/dmsh_chain.h +++ b/dm/games/0100000000010000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100000000010000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "fc3150ef3ee3" +#define DMSH_CHAIN "9172252ffef7" diff --git a/dm/games/010005501E68C000/c1_full.tsv b/dm/games/010005501E68C000/c1_full.tsv index 129f592..69e347b 100644 --- a/dm/games/010005501E68C000/c1_full.tsv +++ b/dm/games/010005501E68C000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-a3db86312571 2026-10-23T08:37:08+08:00 (list carried over from b-831e1579101c: that chain change did not touch any c1 read) +# chain b-7cb671cb35dd 2026-10-23T20:36:21+08:00 (list carried over from b-a3db86312571: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 0ffd2c92087e4b54 69d3868c8d828fe6 8a06e3dda01235c1 diff --git a/dm/games/010005501E68C000/dmsh_chain.h b/dm/games/010005501E68C000/dmsh_chain.h index af2302e..829d0f2 100644 --- a/dm/games/010005501E68C000/dmsh_chain.h +++ b/dm/games/010005501E68C000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010005501E68C000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "a3db86312571" +#define DMSH_CHAIN "7cb671cb35dd" diff --git a/dm/games/010013C00E930000/c1_full.tsv b/dm/games/010013C00E930000/c1_full.tsv index d9bca7c..6164266 100644 --- a/dm/games/010013C00E930000/c1_full.tsv +++ b/dm/games/010013C00E930000/c1_full.tsv @@ -1,2 +1,2 @@ -# chain b-20cad5a9f1b4 2026-10-23T08:37:08+08:00 (list carried over from b-01976727008f: that chain change did not touch any c1 read) +# chain b-f06d2f4504e6 2026-10-23T20:36:21+08:00 (list carried over from b-20cad5a9f1b4: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 945bb048ae22abe1 diff --git a/dm/games/010013C00E930000/cb_extent.tsv b/dm/games/010013C00E930000/cb_extent.tsv index 5c2da45..f59fb7d 100644 --- a/dm/games/010013C00E930000/cb_extent.tsv +++ b/dm/games/010013C00E930000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-20cad5a9f1b4 2026-10-23T08:37:08+08:00 (list carried over from b-01976727008f: that chain change did not touch any uniform read) +# chain b-f06d2f4504e6 2026-10-23T20:36:21+08:00 (list carried over from b-20cad5a9f1b4: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0010cf4b20f7be14 1:192 002ce0a8f6daf45e 0:32 diff --git a/dm/games/010013C00E930000/dmsh_chain.h b/dm/games/010013C00E930000/dmsh_chain.h index d560987..5c9678d 100644 --- a/dm/games/010013C00E930000/dmsh_chain.h +++ b/dm/games/010013C00E930000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010013C00E930000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "20cad5a9f1b4" +#define DMSH_CHAIN "f06d2f4504e6" diff --git a/dm/games/010014E00DB56000/dmsh_chain.h b/dm/games/010014E00DB56000/dmsh_chain.h index 3f8e4e0..3b2611f 100644 --- a/dm/games/010014E00DB56000/dmsh_chain.h +++ b/dm/games/010014E00DB56000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010014E00DB56000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "99fb1fe75e8a" +#define DMSH_CHAIN "517b0349bc5f" diff --git a/dm/games/010015100B514000/c1_full.tsv b/dm/games/010015100B514000/c1_full.tsv index 5920c27..9aecebe 100644 --- a/dm/games/010015100B514000/c1_full.tsv +++ b/dm/games/010015100B514000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-3a29fbc0a763 2026-10-23T08:37:08+08:00 (list carried over from b-31715bf5b70d: that chain change did not touch any c1 read) +# chain b-0476ee28f82f 2026-10-23T22:04:35+08:00 (list carried over from b-3a29fbc0a763: that chain change did not touch any c1 read) 35cbc686dd8461b8 4872bec9a5567f8b 54a618792b2d5f0f diff --git a/dm/games/010015100B514000/cb_extent.tsv b/dm/games/010015100B514000/cb_extent.tsv index 0bd8735..0e1c272 100644 --- a/dm/games/010015100B514000/cb_extent.tsv +++ b/dm/games/010015100B514000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-3a29fbc0a763 2026-10-23T08:37:08+08:00 (list carried over from b-31715bf5b70d: that chain change did not touch any uniform read) +# chain b-0476ee28f82f 2026-10-23T22:04:35+08:00 (list carried over from b-3a29fbc0a763: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000429e5b56f54be 0:304 2:528 3:704 0011e7066f8b040e 0:144 1:224 2:112 diff --git a/dm/games/010015100B514000/dmsh_chain.h b/dm/games/010015100B514000/dmsh_chain.h index d5d0908..5606299 100644 --- a/dm/games/010015100B514000/dmsh_chain.h +++ b/dm/games/010015100B514000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010015100B514000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "3a29fbc0a763" +#define DMSH_CHAIN "0476ee28f82f" diff --git a/dm/games/0100152000022000/c1_full.tsv b/dm/games/0100152000022000/c1_full.tsv index 56cecae..0c4bafe 100644 --- a/dm/games/0100152000022000/c1_full.tsv +++ b/dm/games/0100152000022000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-9d8c16eac7d2 2026-10-23T19:09:02+08:00 +# chain b-ae313b896ff8 2026-10-23T22:08:06+08:00 (list carried over from b-9d8c16eac7d2, made with the geometry kernels of bb585cd: the precise:: min / max / clamp change touches no c1 read, and none of its vertex shaders writes the clip distances the capture now takes) 44647df962f9d27b 4f5975d315f7ead3 diff --git a/dm/games/0100152000022000/cb_extent.tsv b/dm/games/0100152000022000/cb_extent.tsv index 6728c04..fdcc6eb 100644 --- a/dm/games/0100152000022000/cb_extent.tsv +++ b/dm/games/0100152000022000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-9d8c16eac7d2 2026-10-23T19:09:24+08:00 +# chain b-ae313b896ff8 2026-10-23T22:08:06+08:00 (list carried over from b-9d8c16eac7d2, made with the geometry kernels of bb585cd: the precise:: min / max / clamp change touches no uniform read, and none of its vertex shaders writes the clip distances the capture now takes) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000758544342e551 0:224 2:208 3:224 0008e4057abcfa0f 0:176 diff --git a/dm/games/0100152000022000/dmsh_chain.h b/dm/games/0100152000022000/dmsh_chain.h index d7b84d1..3e26045 100644 --- a/dm/games/0100152000022000/dmsh_chain.h +++ b/dm/games/0100152000022000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100152000022000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "9d8c16eac7d2" +#define DMSH_CHAIN "ae313b896ff8" diff --git a/dm/games/010020400E1C2000/c1_full.tsv b/dm/games/010020400E1C2000/c1_full.tsv index 16a72b0..069f328 100644 --- a/dm/games/010020400E1C2000/c1_full.tsv +++ b/dm/games/010020400E1C2000/c1_full.tsv @@ -1,2 +1,2 @@ -# chain b-23c04521114d 2026-10-23T08:37:08+08:00 (list carried over from b-44feffcaa378: that chain change did not touch any c1 read) +# chain b-9481e9cb1e53 2026-10-23T22:04:35+08:00 (list made on b-b128293f316d; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) e440538898747ac7 diff --git a/dm/games/010020400E1C2000/cb_extent.tsv b/dm/games/010020400E1C2000/cb_extent.tsv index c8bd171..74e1e3f 100644 --- a/dm/games/010020400E1C2000/cb_extent.tsv +++ b/dm/games/010020400E1C2000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-23c04521114d 2026-10-23T08:37:08+08:00 (list carried over from b-44feffcaa378: that chain change did not touch any uniform read) +# chain b-9481e9cb1e53 2026-10-23T22:04:35+08:00 (list made on b-b128293f316d; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 01a9bfc6429fdac1 0:176 047be45bfb59f454 0:16 diff --git a/dm/games/010020400E1C2000/dmsh_chain.h b/dm/games/010020400E1C2000/dmsh_chain.h index 1cde8c3..3e7161e 100644 --- a/dm/games/010020400E1C2000/dmsh_chain.h +++ b/dm/games/010020400E1C2000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010020400E1C2000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "23c04521114d" +#define DMSH_CHAIN "9481e9cb1e53" diff --git a/dm/games/010020D01AD24000/c1_full.tsv b/dm/games/010020D01AD24000/c1_full.tsv index 88ae10e..454c0c6 100644 --- a/dm/games/010020D01AD24000/c1_full.tsv +++ b/dm/games/010020D01AD24000/c1_full.tsv @@ -1 +1 @@ -# chain b-282aee24a653 2026-10-23T15:01:28+08:00 +# chain b-6a4fd7111a5f 2026-10-23T22:04:35+08:00 (list made on b-12812d0ed9cf; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) diff --git a/dm/games/010020D01AD24000/cb_extent.tsv b/dm/games/010020D01AD24000/cb_extent.tsv index f02fe9e..2de6d44 100644 --- a/dm/games/010020D01AD24000/cb_extent.tsv +++ b/dm/games/010020D01AD24000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-282aee24a653 2026-10-23T15:01:29+08:00 +# chain b-6a4fd7111a5f 2026-10-23T22:04:35+08:00 (list made on b-12812d0ed9cf; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 06493e7bf3cdabdc 0:1408 2:16 091c95d8f3925b01 0:1408 2:16 diff --git a/dm/games/010020D01AD24000/dmsh_chain.h b/dm/games/010020D01AD24000/dmsh_chain.h index c24aa73..c0b60f9 100644 --- a/dm/games/010020D01AD24000/dmsh_chain.h +++ b/dm/games/010020D01AD24000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010020D01AD24000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "282aee24a653" +#define DMSH_CHAIN "6a4fd7111a5f" diff --git a/dm/games/010028600EBDA000/c1_full.tsv b/dm/games/010028600EBDA000/c1_full.tsv index a701e8b..86de59c 100644 --- a/dm/games/010028600EBDA000/c1_full.tsv +++ b/dm/games/010028600EBDA000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-4b2324faaaed 2026-10-23T08:37:08+08:00 (list carried over from b-3072ceed2048: that chain change did not touch any c1 read) +# chain b-4cf9d18f6cda 2026-10-23T22:04:35+08:00 (list carried over from b-4b2324faaaed: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 25c5829f891f9b2c 976839d3ba92c8f3 diff --git a/dm/games/010028600EBDA000/cb_extent.tsv b/dm/games/010028600EBDA000/cb_extent.tsv index 7daf40d..542852a 100644 --- a/dm/games/010028600EBDA000/cb_extent.tsv +++ b/dm/games/010028600EBDA000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-4b2324faaaed 2026-10-23T08:37:08+08:00 (list carried over from b-3072ceed2048: that chain change did not touch any uniform read) +# chain b-4cf9d18f6cda 2026-10-23T22:04:35+08:00 (list carried over from b-4b2324faaaed: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000064cdb6305b93 5:304 7:64 12:320 00021722b48824b8 5:304 6:1872 7:112 diff --git a/dm/games/010028600EBDA000/dmsh_chain.h b/dm/games/010028600EBDA000/dmsh_chain.h index 293da46..488715f 100644 --- a/dm/games/010028600EBDA000/dmsh_chain.h +++ b/dm/games/010028600EBDA000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010028600EBDA000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "4b2324faaaed" +#define DMSH_CHAIN "4cf9d18f6cda" diff --git a/dm/games/01002B00111A2000/c1_full.tsv b/dm/games/01002B00111A2000/c1_full.tsv index 0ba0779..c9cdabf 100644 --- a/dm/games/01002B00111A2000/c1_full.tsv +++ b/dm/games/01002B00111A2000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-4a6765f2a0d5 2026-10-23T08:37:08+08:00 (list carried over from b-c749bfe5b64f: that chain change did not touch any c1 read) +# chain b-4c902904ace7 2026-10-23T22:04:35+08:00 (list carried over from b-4a6765f2a0d5: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 0002d193f6c52811 0010e810186cdc91 001299ca51e856c2 diff --git a/dm/games/01002B00111A2000/cb_extent.tsv b/dm/games/01002B00111A2000/cb_extent.tsv index fa4ea0d..74dd5cf 100644 --- a/dm/games/01002B00111A2000/cb_extent.tsv +++ b/dm/games/01002B00111A2000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-4a6765f2a0d5 2026-10-23T08:37:08+08:00 (list carried over from b-c749bfe5b64f: that chain change did not touch any uniform read) +# chain b-4c902904ace7 2026-10-23T22:04:35+08:00 (list carried over from b-4a6765f2a0d5: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0002d193f6c52811 0:1872 00088e149f8757ca 0:1872 diff --git a/dm/games/01002B00111A2000/dmsh_chain.h b/dm/games/01002B00111A2000/dmsh_chain.h index 7c1f4b9..b011412 100644 --- a/dm/games/01002B00111A2000/dmsh_chain.h +++ b/dm/games/01002B00111A2000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01002B00111A2000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "4a6765f2a0d5" +#define DMSH_CHAIN "4c902904ace7" diff --git a/dm/games/01002B30028F6000/c1_full.tsv b/dm/games/01002B30028F6000/c1_full.tsv index a65ffe8..545ce94 100644 --- a/dm/games/01002B30028F6000/c1_full.tsv +++ b/dm/games/01002B30028F6000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-d254bf1ddd26 2026-10-23T08:37:08+08:00 (list carried over from b-68d03f3ffe08: that chain change did not touch any c1 read) +# chain b-7a4400bf4aa7 2026-10-23T20:36:21+08:00 (list carried over from b-d254bf1ddd26: that chain change did not touch any c1 read) 2b34d193d87075d5 da9c1ded21a21fb9 diff --git a/dm/games/01002B30028F6000/cb_extent.tsv b/dm/games/01002B30028F6000/cb_extent.tsv index 34e29d7..594455e 100644 --- a/dm/games/01002B30028F6000/cb_extent.tsv +++ b/dm/games/01002B30028F6000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-d254bf1ddd26 2026-10-23T08:37:08+08:00 (list carried over from b-68d03f3ffe08: that chain change did not touch any uniform read) +# chain b-7a4400bf4aa7 2026-10-23T20:36:21+08:00 (list carried over from b-d254bf1ddd26: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 02f3f795ba2726da 0:16 1e5020d03a2d979c 0:16 diff --git a/dm/games/01002B30028F6000/dmsh_chain.h b/dm/games/01002B30028F6000/dmsh_chain.h index bab9bca..84d27d4 100644 --- a/dm/games/01002B30028F6000/dmsh_chain.h +++ b/dm/games/01002B30028F6000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01002B30028F6000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "d254bf1ddd26" +#define DMSH_CHAIN "7a4400bf4aa7" diff --git a/dm/games/010036E00FB20000/c1_full.tsv b/dm/games/010036E00FB20000/c1_full.tsv index 538d193..2263fd8 100644 --- a/dm/games/010036E00FB20000/c1_full.tsv +++ b/dm/games/010036E00FB20000/c1_full.tsv @@ -1 +1 @@ -# chain b-c95559fd0ad0 2026-10-23T08:37:08+08:00 (list carried over from b-de7ca3ec166a: that chain change did not touch any c1 read) +# chain b-fdf58b5e09d1 2026-10-23T20:36:21+08:00 (list carried over from b-c95559fd0ad0: that chain change did not touch any c1 read) diff --git a/dm/games/010036E00FB20000/cb_extent.tsv b/dm/games/010036E00FB20000/cb_extent.tsv index d5aee74..678e7bd 100644 --- a/dm/games/010036E00FB20000/cb_extent.tsv +++ b/dm/games/010036E00FB20000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-c95559fd0ad0 2026-10-23T08:37:08+08:00 (list carried over from b-de7ca3ec166a: that chain change did not touch any uniform read) +# chain b-fdf58b5e09d1 2026-10-23T20:36:21+08:00 (list carried over from b-c95559fd0ad0: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 01705ebebe3e302b 0:64 1:16 2:304 020b72102b82b310 0:64 diff --git a/dm/games/010036E00FB20000/dmsh_chain.h b/dm/games/010036E00FB20000/dmsh_chain.h index 8a5f423..1de3103 100644 --- a/dm/games/010036E00FB20000/dmsh_chain.h +++ b/dm/games/010036E00FB20000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010036E00FB20000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "c95559fd0ad0" +#define DMSH_CHAIN "fdf58b5e09d1" diff --git a/dm/games/010038B015560000/c1_full.tsv b/dm/games/010038B015560000/c1_full.tsv index d0b20b8..ff717e5 100644 --- a/dm/games/010038B015560000/c1_full.tsv +++ b/dm/games/010038B015560000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-7a29586ca75d 2026-10-23T08:37:08+08:00 (list carried over from b-acdadd26e140: that chain change did not touch any c1 read) +# chain b-ece8c845aa92 2026-10-23T22:04:35+08:00 (list made on b-7bf6fd2f2a4c; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 1b5e5c3e653702d2 1bfeb381d95d18c6 280094f212199d77 diff --git a/dm/games/010038B015560000/cb_extent.tsv b/dm/games/010038B015560000/cb_extent.tsv index 3e3975b..37ae30d 100644 --- a/dm/games/010038B015560000/cb_extent.tsv +++ b/dm/games/010038B015560000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-7a29586ca75d 2026-10-23T08:37:08+08:00 (list carried over from b-acdadd26e140: that chain change did not touch any uniform read) +# chain b-ece8c845aa92 2026-10-23T22:04:35+08:00 (list made on b-7bf6fd2f2a4c; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 01058b659b699495 0:288 0117c03be720951e 0:560 @@ -122,6 +122,7 @@ 76c636ff880863ce 0:288 778d2908858fc398 0:64 1:16 s0 7b34b81a83f8abef 0:32 +7e9d62fedb21324b 0:160 7ebb51692b288cae 0:64 1:16 s0 8047d70d37b55174 0:48 808cffffab9e8a3b 0:288 diff --git a/dm/games/010038B015560000/dmsh_chain.h b/dm/games/010038B015560000/dmsh_chain.h index 1a58236..72cda12 100644 --- a/dm/games/010038B015560000/dmsh_chain.h +++ b/dm/games/010038B015560000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010038B015560000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "7a29586ca75d" +#define DMSH_CHAIN "ece8c845aa92" diff --git a/dm/games/01003FC01670C000/c1_full.tsv b/dm/games/01003FC01670C000/c1_full.tsv index ea19888..ce794a4 100644 --- a/dm/games/01003FC01670C000/c1_full.tsv +++ b/dm/games/01003FC01670C000/c1_full.tsv @@ -1 +1 @@ -# chain b-e089af9ff789 2026-10-23T08:37:08+08:00 (list carried over from b-9f34046acf7c: that chain change did not touch any c1 read) +# chain b-b38ccc4d4afd 2026-10-23T22:04:35+08:00 (list made on b-d48695f6487d; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) diff --git a/dm/games/01003FC01670C000/cb_extent.tsv b/dm/games/01003FC01670C000/cb_extent.tsv index 9c2ab9d..4a6c10c 100644 --- a/dm/games/01003FC01670C000/cb_extent.tsv +++ b/dm/games/01003FC01670C000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-e089af9ff789 2026-10-23T08:37:08+08:00 (list carried over from b-9f34046acf7c: that chain change did not touch any uniform read) +# chain b-b38ccc4d4afd 2026-10-23T22:04:35+08:00 (list made on b-d48695f6487d; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0040f948baa144f4 0:1904 00870f86a49cf3b9 0:1904 12:64 diff --git a/dm/games/01003FC01670C000/dmsh_chain.h b/dm/games/01003FC01670C000/dmsh_chain.h index c1689dd..21ef4bc 100644 --- a/dm/games/01003FC01670C000/dmsh_chain.h +++ b/dm/games/01003FC01670C000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01003FC01670C000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "e089af9ff789" +#define DMSH_CHAIN "b38ccc4d4afd" diff --git a/dm/games/01004AB00A260000/c1_full.tsv b/dm/games/01004AB00A260000/c1_full.tsv index 49a5d10..693f7f0 100644 --- a/dm/games/01004AB00A260000/c1_full.tsv +++ b/dm/games/01004AB00A260000/c1_full.tsv @@ -1 +1 @@ -# chain b-3da3f5a07222 2026-10-23T08:37:08+08:00 (list carried over from b-20bba58478c1: that chain change did not touch any c1 read) +# chain b-8b36975c9b36 2026-10-23T22:04:35+08:00 (list made on b-fcb83391e670; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) diff --git a/dm/games/01004AB00A260000/cb_extent.tsv b/dm/games/01004AB00A260000/cb_extent.tsv index 3c642e2..3fecb4d 100644 --- a/dm/games/01004AB00A260000/cb_extent.tsv +++ b/dm/games/01004AB00A260000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-3da3f5a07222 2026-10-23T08:37:08+08:00 (list carried over from b-20bba58478c1: that chain change did not touch any uniform read) +# chain b-8b36975c9b36 2026-10-23T22:04:35+08:00 (list made on b-fcb83391e670; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000aff2be40dd329 0:2928 11:32 0022dfa412d83223 0:2928 11:32 diff --git a/dm/games/01004AB00A260000/dmsh_chain.h b/dm/games/01004AB00A260000/dmsh_chain.h index 67e2d3e..8772ade 100644 --- a/dm/games/01004AB00A260000/dmsh_chain.h +++ b/dm/games/01004AB00A260000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01004AB00A260000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "3da3f5a07222" +#define DMSH_CHAIN "8b36975c9b36" diff --git a/dm/games/010051701FB46000/c1_full.tsv b/dm/games/010051701FB46000/c1_full.tsv index c58256f..96de107 100644 --- a/dm/games/010051701FB46000/c1_full.tsv +++ b/dm/games/010051701FB46000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-f96f20dd6c1d 2026-10-23T08:37:08+08:00 (list carried over from b-465220a39fe0: that chain change did not touch any c1 read) +# chain b-3d0ce4077073 2026-10-23T20:36:21+08:00 (list carried over from b-f96f20dd6c1d: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 0652e521bacb65a2 53c800e241e297d7 a96f3e01b8c90fdb diff --git a/dm/games/010051701FB46000/cb_extent.tsv b/dm/games/010051701FB46000/cb_extent.tsv index e20acc3..7c907f6 100644 --- a/dm/games/010051701FB46000/cb_extent.tsv +++ b/dm/games/010051701FB46000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-f96f20dd6c1d 2026-10-23T08:37:08+08:00 (list carried over from b-465220a39fe0: that chain change did not touch any uniform read) +# chain b-3d0ce4077073 2026-10-23T20:36:21+08:00 (list carried over from b-f96f20dd6c1d: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00003ec4155e1ea7 1:32 00006d27a6185657 1:288 diff --git a/dm/games/010051701FB46000/dmsh_chain.h b/dm/games/010051701FB46000/dmsh_chain.h index 2d496eb..572f1d9 100644 --- a/dm/games/010051701FB46000/dmsh_chain.h +++ b/dm/games/010051701FB46000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010051701FB46000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "f96f20dd6c1d" +#define DMSH_CHAIN "3d0ce4077073" diff --git a/dm/games/01005270232F2000/c1_full.tsv b/dm/games/01005270232F2000/c1_full.tsv index 08fbbb0..d48aeb6 100644 --- a/dm/games/01005270232F2000/c1_full.tsv +++ b/dm/games/01005270232F2000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-3745ff14103e 2026-10-23T08:37:08+08:00 (list carried over from b-6a66db710cd5: that chain change did not touch any c1 read) +# chain b-9fa1cfbe11a5 2026-10-23T20:36:21+08:00 (list carried over from b-3745ff14103e: that chain change did not touch any c1 read) 006a737523e70720 00da789b4ca18c03 00e5f2d3b5851fab diff --git a/dm/games/01005270232F2000/dmsh_chain.h b/dm/games/01005270232F2000/dmsh_chain.h index f4e22b4..940e74b 100644 --- a/dm/games/01005270232F2000/dmsh_chain.h +++ b/dm/games/01005270232F2000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01005270232F2000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "3745ff14103e" +#define DMSH_CHAIN "9fa1cfbe11a5" diff --git a/dm/games/0100535012974000/dmsh_chain.h b/dm/games/0100535012974000/dmsh_chain.h index d7ea699..619e979 100644 --- a/dm/games/0100535012974000/dmsh_chain.h +++ b/dm/games/0100535012974000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100535012974000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "41ee26461e66" +#define DMSH_CHAIN "806c0cc34311" diff --git a/dm/games/010055D009F78000/c1_full.tsv b/dm/games/010055D009F78000/c1_full.tsv index ec39bf1..5a82a42 100644 --- a/dm/games/010055D009F78000/c1_full.tsv +++ b/dm/games/010055D009F78000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-8d71e0f70bfd 2026-10-23T08:37:08+08:00 (list carried over from b-16a81b23fe2d: that chain change did not touch any c1 read) +# chain b-9474997db7fd 2026-10-23T22:04:35+08:00 (list made on b-e342eeee64f9; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 1a2b65cd05ff557c 21c7ff0d9591a637 33e4340e5bcbc5c6 diff --git a/dm/games/010055D009F78000/cb_extent.tsv b/dm/games/010055D009F78000/cb_extent.tsv index 59716c5..2135f8b 100644 --- a/dm/games/010055D009F78000/cb_extent.tsv +++ b/dm/games/010055D009F78000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-8d71e0f70bfd 2026-10-23T08:37:08+08:00 (list carried over from b-16a81b23fe2d: that chain change did not touch any uniform read) +# chain b-9474997db7fd 2026-10-23T22:04:35+08:00 (list made on b-e342eeee64f9; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00388ae860457bd9 0:160 00594ba9ee2875cd 0:896 @@ -838,6 +838,7 @@ cd7f83e16d1af298 0:128 cd87c6f4d1b1ae4e 0:384 cdd6dc587caa5196 0:112 cde7914df040d097 0:96 1:16 +cdf3e15ca13348cc 0:16 sNone cdfc82e91087b50d 0:544 ce0043d7219e00f6 0:32 ce252341f6c97fc7 0:32 @@ -942,6 +943,7 @@ e7d293aa0214df38 0:320 e82ad8a8a85b7356 0:256 e8af5512ed96c288 0:32 e8e08f8c0a84a8c0 0:368 +e93939ed3962a20d sNone e9575a5ebc04b3cd 0:528 e97cefa39c99c746 0:256 e9d45c2d689dbd70 0:32 diff --git a/dm/games/010055D009F78000/dmsh_chain.h b/dm/games/010055D009F78000/dmsh_chain.h index 89ae55a..a6037f8 100644 --- a/dm/games/010055D009F78000/dmsh_chain.h +++ b/dm/games/010055D009F78000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010055D009F78000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "8d71e0f70bfd" +#define DMSH_CHAIN "9474997db7fd" diff --git a/dm/games/0100606026F12000/c1_full.tsv b/dm/games/0100606026F12000/c1_full.tsv index d7b2e7d..d7afca6 100644 --- a/dm/games/0100606026F12000/c1_full.tsv +++ b/dm/games/0100606026F12000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-67802dfe9729 2026-10-23T08:37:08+08:00 (list carried over from b-650bb0cacdba: that chain change did not touch any c1 read) +# chain b-e3afba9007bc 2026-10-23T20:36:21+08:00 (list carried over from b-67802dfe9729: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 114ba379d35f98ac 12041d2a0d717938 18ccc110f0abf48e diff --git a/dm/games/0100606026F12000/cb_extent.tsv b/dm/games/0100606026F12000/cb_extent.tsv index bc60056..0e2db09 100644 --- a/dm/games/0100606026F12000/cb_extent.tsv +++ b/dm/games/0100606026F12000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-67802dfe9729 2026-10-23T08:37:08+08:00 (list carried over from b-650bb0cacdba: that chain change did not touch any uniform read) +# chain b-e3afba9007bc 2026-10-23T20:36:21+08:00 (list carried over from b-67802dfe9729: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00027f49897b311c 0:5104 1:16 2:1712 3:64 s0 0002807399346266 0:2448 1:224 s0 s1 s2 s3 diff --git a/dm/games/0100606026F12000/dmsh_chain.h b/dm/games/0100606026F12000/dmsh_chain.h index 3de2a1b..8a6155f 100644 --- a/dm/games/0100606026F12000/dmsh_chain.h +++ b/dm/games/0100606026F12000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100606026F12000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "67802dfe9729" +#define DMSH_CHAIN "e3afba9007bc" diff --git a/dm/games/0100620012D6E000/c1_full.tsv b/dm/games/0100620012D6E000/c1_full.tsv index 3d166bb..259be63 100644 --- a/dm/games/0100620012D6E000/c1_full.tsv +++ b/dm/games/0100620012D6E000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-5e8899a7ba9f 2026-10-23T08:37:08+08:00 (list carried over from b-47b0bfe87cd2: that chain change did not touch any c1 read) +# chain b-ea02d29cc857 2026-10-23T20:36:21+08:00 (list carried over from b-5e8899a7ba9f: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 3a24a7c1351c6492 5c116cabc36aeae3 diff --git a/dm/games/0100620012D6E000/cb_extent.tsv b/dm/games/0100620012D6E000/cb_extent.tsv index 9bb6fcf..79f542f 100644 --- a/dm/games/0100620012D6E000/cb_extent.tsv +++ b/dm/games/0100620012D6E000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-5e8899a7ba9f 2026-10-23T08:37:08+08:00 (list carried over from b-47b0bfe87cd2: that chain change did not touch any uniform read) +# chain b-ea02d29cc857 2026-10-23T20:36:21+08:00 (list carried over from b-5e8899a7ba9f: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 003b9b8d92206318 1:1616 2:48 4:832 6:624 s0 005efd060ad46799 1:1616 4:832 6:592 s0 diff --git a/dm/games/0100620012D6E000/dmsh_chain.h b/dm/games/0100620012D6E000/dmsh_chain.h index e598e0c..84dc4ec 100644 --- a/dm/games/0100620012D6E000/dmsh_chain.h +++ b/dm/games/0100620012D6E000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100620012D6E000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "5e8899a7ba9f" +#define DMSH_CHAIN "ea02d29cc857" diff --git a/dm/games/010069401ADB8000/c1_full.tsv b/dm/games/010069401ADB8000/c1_full.tsv index e8ca9d5..781bb29 100644 --- a/dm/games/010069401ADB8000/c1_full.tsv +++ b/dm/games/010069401ADB8000/c1_full.tsv @@ -1 +1 @@ -# chain b-1e5b9ae168be 2026-10-23T08:37:08+08:00 (list carried over from b-a4ced3549458: that chain change did not touch any c1 read) +# chain b-a79f94f0e4a1 2026-10-23T20:36:21+08:00 (list carried over from b-1e5b9ae168be: that chain change did not touch any c1 read) diff --git a/dm/games/010069401ADB8000/dmsh_chain.h b/dm/games/010069401ADB8000/dmsh_chain.h index a5284bf..6fc8eaa 100644 --- a/dm/games/010069401ADB8000/dmsh_chain.h +++ b/dm/games/010069401ADB8000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010069401ADB8000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "1e5b9ae168be" +#define DMSH_CHAIN "a79f94f0e4a1" diff --git a/dm/games/01006BB00C6F0000/c1_full.tsv b/dm/games/01006BB00C6F0000/c1_full.tsv index 1291d42..624039c 100644 --- a/dm/games/01006BB00C6F0000/c1_full.tsv +++ b/dm/games/01006BB00C6F0000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-335f288e04a2 2026-10-23T08:37:08+08:00 (list carried over from b-b861ebd5472d: that chain change did not touch any c1 read) +# chain b-fbc8f074f058 2026-10-23T22:04:35+08:00 (list carried over from b-335f288e04a2: that chain change did not touch any c1 read) 26c5fd7adbc12cc0 67f23f4ad5925e06 96a3e288731b2433 diff --git a/dm/games/01006BB00C6F0000/cb_extent.tsv b/dm/games/01006BB00C6F0000/cb_extent.tsv index 7cc3b6a..4ba81f5 100644 --- a/dm/games/01006BB00C6F0000/cb_extent.tsv +++ b/dm/games/01006BB00C6F0000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-335f288e04a2 2026-10-23T08:37:08+08:00 (list carried over from b-b861ebd5472d: that chain change did not touch any uniform read) +# chain b-fbc8f074f058 2026-10-23T22:04:35+08:00 (list carried over from b-335f288e04a2: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00008ab75998b65a 0:16 2:16 3:16 5:16 6:16 000be95364b95b90 0:416 1:880 4:816 6:16 s0 s1 diff --git a/dm/games/01006BB00C6F0000/dmsh_chain.h b/dm/games/01006BB00C6F0000/dmsh_chain.h index 32bc90f..a54584e 100644 --- a/dm/games/01006BB00C6F0000/dmsh_chain.h +++ b/dm/games/01006BB00C6F0000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01006BB00C6F0000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "335f288e04a2" +#define DMSH_CHAIN "fbc8f074f058" diff --git a/dm/games/01006C300E9F0000/c1_full.tsv b/dm/games/01006C300E9F0000/c1_full.tsv index 9211b4b..846c447 100644 --- a/dm/games/01006C300E9F0000/c1_full.tsv +++ b/dm/games/01006C300E9F0000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-1f45f2814b3b 2026-10-23T08:37:08+08:00 (list carried over from b-f48652b0908b: that chain change did not touch any c1 read) +# chain b-130bc16dd3e5 2026-10-23T20:36:21+08:00 (list carried over from b-1f45f2814b3b: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 026f2479adc13489 10b8a90504eb68ad 2a0fa3cfc6a8391f diff --git a/dm/games/01006C300E9F0000/cb_extent.tsv b/dm/games/01006C300E9F0000/cb_extent.tsv index e4262d1..b0df1c7 100644 --- a/dm/games/01006C300E9F0000/cb_extent.tsv +++ b/dm/games/01006C300E9F0000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-1f45f2814b3b 2026-10-23T08:37:08+08:00 (list carried over from b-f48652b0908b: that chain change did not touch any uniform read) +# chain b-130bc16dd3e5 2026-10-23T20:36:21+08:00 (list carried over from b-1f45f2814b3b: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0000cefe47f6c37f 0:1936 1:176 2:16 000369ccbda98f21 0:2096 1:256 2:32 diff --git a/dm/games/01006C300E9F0000/dmsh_chain.h b/dm/games/01006C300E9F0000/dmsh_chain.h index 220baad..d917ff3 100644 --- a/dm/games/01006C300E9F0000/dmsh_chain.h +++ b/dm/games/01006C300E9F0000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01006C300E9F0000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "1f45f2814b3b" +#define DMSH_CHAIN "130bc16dd3e5" diff --git a/dm/games/01006F8002326000/c1_full.tsv b/dm/games/01006F8002326000/c1_full.tsv index 1968c0f..1dd35e5 100644 --- a/dm/games/01006F8002326000/c1_full.tsv +++ b/dm/games/01006F8002326000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-70d2e911c881 2026-10-23T08:37:08+08:00 (list carried over from b-87eb0f1ee74a: that chain change did not touch any c1 read) +# chain b-de566a052820 2026-10-23T20:36:21+08:00 (list carried over from b-70d2e911c881: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 25c5829f891f9b2c 976839d3ba92c8f3 eb2c7c961766bc61 diff --git a/dm/games/01006F8002326000/cb_extent.tsv b/dm/games/01006F8002326000/cb_extent.tsv index 7ceabe3..ec6960c 100644 --- a/dm/games/01006F8002326000/cb_extent.tsv +++ b/dm/games/01006F8002326000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-70d2e911c881 2026-10-23T08:37:08+08:00 (list carried over from b-87eb0f1ee74a: that chain change did not touch any uniform read) +# chain b-de566a052820 2026-10-23T20:36:21+08:00 (list carried over from b-70d2e911c881: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00000b0b62850e7a 0:176 1:48 4:112 5:752 0003d299bcfe7e17 0:736 2:384 5:928 diff --git a/dm/games/01006F8002326000/dmsh_chain.h b/dm/games/01006F8002326000/dmsh_chain.h index 0c8da35..9d88c8b 100644 --- a/dm/games/01006F8002326000/dmsh_chain.h +++ b/dm/games/01006F8002326000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01006F8002326000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "70d2e911c881" +#define DMSH_CHAIN "de566a052820" diff --git a/dm/games/0100713016CCC000/c1_full.tsv b/dm/games/0100713016CCC000/c1_full.tsv index 89f7caa..9ae3e11 100644 --- a/dm/games/0100713016CCC000/c1_full.tsv +++ b/dm/games/0100713016CCC000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-0379eb846acf 2026-10-23T15:33:22+08:00 +# chain b-4963f4147256 2026-10-23T22:04:35+08:00 (list carried over from b-0379eb846acf: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 003b10eff97cf9df 00403447654bcff9 00bd5c7f7e8a2f43 diff --git a/dm/games/0100713016CCC000/cb_extent.tsv b/dm/games/0100713016CCC000/cb_extent.tsv index eaedac1..537420b 100644 --- a/dm/games/0100713016CCC000/cb_extent.tsv +++ b/dm/games/0100713016CCC000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-0379eb846acf 2026-10-23T15:33:28+08:00 +# chain b-4963f4147256 2026-10-23T22:04:35+08:00 (list carried over from b-0379eb846acf: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000b420e2806f338 1:384 2:16 3:80 000f4f482ea4d3a1 1:128 3:96 diff --git a/dm/games/0100713016CCC000/dmsh_chain.h b/dm/games/0100713016CCC000/dmsh_chain.h index 9e1b32d..918eaec 100644 --- a/dm/games/0100713016CCC000/dmsh_chain.h +++ b/dm/games/0100713016CCC000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100713016CCC000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "0379eb846acf" +#define DMSH_CHAIN "4963f4147256" diff --git a/dm/games/01007EF00011E000/c1_full.tsv b/dm/games/01007EF00011E000/c1_full.tsv index 55296eb..2d67818 100644 --- a/dm/games/01007EF00011E000/c1_full.tsv +++ b/dm/games/01007EF00011E000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-534b10d1d578 2026-10-23T08:37:08+08:00 (list carried over from b-8293dac47208: that chain change did not touch any c1 read) +# chain b-19aa554b98df 2026-10-23T22:04:35+08:00 (list carried over from b-534b10d1d578: that chain change did not touch any c1 read) 21fe759b8114941c 60e2041ed375cae1 diff --git a/dm/games/01007EF00011E000/cb_extent.tsv b/dm/games/01007EF00011E000/cb_extent.tsv index 16633a8..e2cabe8 100644 --- a/dm/games/01007EF00011E000/cb_extent.tsv +++ b/dm/games/01007EF00011E000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-534b10d1d578 2026-10-23T08:37:08+08:00 (list carried over from b-8293dac47208: that chain change did not touch any uniform read) +# chain b-19aa554b98df 2026-10-23T22:04:35+08:00 (list carried over from b-534b10d1d578: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0002f3adb60ad088 5:304 6:1792 7:112 10:64 13:32 0006cbc2ca63e38b 6:1520 12:432 diff --git a/dm/games/01007EF00011E000/dmsh_chain.h b/dm/games/01007EF00011E000/dmsh_chain.h index cf1520f..62eedc2 100644 --- a/dm/games/01007EF00011E000/dmsh_chain.h +++ b/dm/games/01007EF00011E000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01007EF00011E000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "534b10d1d578" +#define DMSH_CHAIN "19aa554b98df" diff --git a/dm/games/010089B00D09C000/c1_full.tsv b/dm/games/010089B00D09C000/c1_full.tsv index 80758f1..ec79d99 100644 --- a/dm/games/010089B00D09C000/c1_full.tsv +++ b/dm/games/010089B00D09C000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-3b3046f76f22 2026-10-23T16:15:22+08:00 +# chain b-fb800e90de17 2026-10-23T22:08:06+08:00 (list carried over from b-3b3046f76f22, made with the geometry kernels of bb585cd: the precise:: min / max / clamp change touches no c1 read, and none of its vertex shaders writes the clip distances the capture now takes) 0ed22b53c3db7a71 623b686baab08b30 738bc739393f913b diff --git a/dm/games/010089B00D09C000/cb_extent.tsv b/dm/games/010089B00D09C000/cb_extent.tsv index c2401b0..3bc0fdc 100644 --- a/dm/games/010089B00D09C000/cb_extent.tsv +++ b/dm/games/010089B00D09C000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-3b3046f76f22 2026-10-23T16:15:23+08:00 +# chain b-fb800e90de17 2026-10-23T22:08:06+08:00 (list carried over from b-3b3046f76f22, made with the geometry kernels of bb585cd: the precise:: min / max / clamp change touches no uniform read, and none of its vertex shaders writes the clip distances the capture now takes) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00005528b1b0e2cd 0:512 0003d30f7a6c71b2 0:320 diff --git a/dm/games/010089B00D09C000/dmsh_chain.h b/dm/games/010089B00D09C000/dmsh_chain.h index 3d7b24d..69957a2 100644 --- a/dm/games/010089B00D09C000/dmsh_chain.h +++ b/dm/games/010089B00D09C000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010089B00D09C000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "3b3046f76f22" +#define DMSH_CHAIN "fb800e90de17" diff --git a/dm/games/01008BC024FDE000/c1_full.tsv b/dm/games/01008BC024FDE000/c1_full.tsv index 673276e..18c7c41 100644 --- a/dm/games/01008BC024FDE000/c1_full.tsv +++ b/dm/games/01008BC024FDE000/c1_full.tsv @@ -1 +1 @@ -# chain b-de816a27c566 2026-10-23T08:37:08+08:00 (list carried over from b-60dcdd3b2f22: that chain change did not touch any c1 read) +# chain b-be987aacfc19 2026-10-23T20:36:21+08:00 (list carried over from b-de816a27c566: that chain change did not touch any c1 read) diff --git a/dm/games/01008BC024FDE000/cb_extent.tsv b/dm/games/01008BC024FDE000/cb_extent.tsv index 405a99f..3e86de1 100644 --- a/dm/games/01008BC024FDE000/cb_extent.tsv +++ b/dm/games/01008BC024FDE000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-de816a27c566 2026-10-23T08:37:08+08:00 (list carried over from b-60dcdd3b2f22: that chain change did not touch any uniform read) +# chain b-be987aacfc19 2026-10-23T20:36:21+08:00 (list carried over from b-de816a27c566: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00298d8d603fb418 0:16 00ba482babf36d17 0:16 diff --git a/dm/games/01008BC024FDE000/dmsh_chain.h b/dm/games/01008BC024FDE000/dmsh_chain.h index 240b1cf..7a6df0b 100644 --- a/dm/games/01008BC024FDE000/dmsh_chain.h +++ b/dm/games/01008BC024FDE000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01008BC024FDE000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "de816a27c566" +#define DMSH_CHAIN "be987aacfc19" diff --git a/dm/games/010093801237C000/c1_full.tsv b/dm/games/010093801237C000/c1_full.tsv index 512982c..e95856e 100644 --- a/dm/games/010093801237C000/c1_full.tsv +++ b/dm/games/010093801237C000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-93ddb1bd055e 2026-10-23T08:37:08+08:00 (list carried over from b-5ab3f27aecda: that chain change did not touch any c1 read) +# chain b-0df8d3b148bd 2026-10-23T22:04:35+08:00 (list made on b-025dc61d55ac; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 57eb9f0bae677756 f826f2b59cfa39a8 diff --git a/dm/games/010093801237C000/cb_extent.tsv b/dm/games/010093801237C000/cb_extent.tsv index 6d7494f..a9de327 100644 --- a/dm/games/010093801237C000/cb_extent.tsv +++ b/dm/games/010093801237C000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-93ddb1bd055e 2026-10-23T08:37:08+08:00 (list carried over from b-5ab3f27aecda: that chain change did not touch any uniform read) +# chain b-0df8d3b148bd 2026-10-23T22:04:35+08:00 (list made on b-025dc61d55ac; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 003b38fe9b3627ba 0:192 2:64 00500b94cf88443d 0:1168 diff --git a/dm/games/010093801237C000/dmsh_chain.h b/dm/games/010093801237C000/dmsh_chain.h index 55f76dc..10b448a 100644 --- a/dm/games/010093801237C000/dmsh_chain.h +++ b/dm/games/010093801237C000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010093801237C000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "93ddb1bd055e" +#define DMSH_CHAIN "0df8d3b148bd" diff --git a/dm/games/010099C022B96000/dmsh_chain.h b/dm/games/010099C022B96000/dmsh_chain.h index 82c6984..1b52c30 100644 --- a/dm/games/010099C022B96000/dmsh_chain.h +++ b/dm/games/010099C022B96000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010099C022B96000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "8f0b14deb4ee" +#define DMSH_CHAIN "d24bb153d3d1" diff --git a/dm/games/01009BF0072D4000/c1_full.tsv b/dm/games/01009BF0072D4000/c1_full.tsv index aa126f8..ea841ac 100644 --- a/dm/games/01009BF0072D4000/c1_full.tsv +++ b/dm/games/01009BF0072D4000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-0eb56727d9ae 2026-10-23T08:37:08+08:00 (list carried over from b-7b21be8a83b8: that chain change did not touch any c1 read) +# chain b-01c8f27d203f 2026-10-23T20:36:21+08:00 (list carried over from b-0eb56727d9ae: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 01a847b848df5e33 5fb90d2733898803 diff --git a/dm/games/01009BF0072D4000/cb_extent.tsv b/dm/games/01009BF0072D4000/cb_extent.tsv index aed615b..21b9214 100644 --- a/dm/games/01009BF0072D4000/cb_extent.tsv +++ b/dm/games/01009BF0072D4000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-0eb56727d9ae 2026-10-23T08:37:08+08:00 (list carried over from b-7b21be8a83b8: that chain change did not touch any uniform read) +# chain b-01c8f27d203f 2026-10-23T20:36:21+08:00 (list carried over from b-0eb56727d9ae: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000325b608b12e54 1:448 9:32 10:288 000b783c5701c854 1:112 diff --git a/dm/games/01009BF0072D4000/dmsh_chain.h b/dm/games/01009BF0072D4000/dmsh_chain.h index 8a73a32..735f0d5 100644 --- a/dm/games/01009BF0072D4000/dmsh_chain.h +++ b/dm/games/01009BF0072D4000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 01009BF0072D4000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "0eb56727d9ae" +#define DMSH_CHAIN "01c8f27d203f" diff --git a/dm/games/0100A00019DE0000/c1_full.tsv b/dm/games/0100A00019DE0000/c1_full.tsv index 16b4d6a..337fc4a 100644 --- a/dm/games/0100A00019DE0000/c1_full.tsv +++ b/dm/games/0100A00019DE0000/c1_full.tsv @@ -1 +1 @@ -# chain b-0dbcf06eb52a 2026-10-23T08:37:08+08:00 (list carried over from b-46b0ba355217: that chain change did not touch any c1 read) +# chain b-c79f78cffe09 2026-10-23T20:36:22+08:00 (list carried over from b-0dbcf06eb52a: that chain change did not touch any c1 read) diff --git a/dm/games/0100A00019DE0000/cb_extent.tsv b/dm/games/0100A00019DE0000/cb_extent.tsv index 9a4badd..bb631ce 100644 --- a/dm/games/0100A00019DE0000/cb_extent.tsv +++ b/dm/games/0100A00019DE0000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-0dbcf06eb52a 2026-10-23T08:37:08+08:00 (list carried over from b-46b0ba355217: that chain change did not touch any uniform read) +# chain b-c79f78cffe09 2026-10-23T20:36:22+08:00 (list carried over from b-0dbcf06eb52a: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00b66ee69b7fde95 1:16 2:80 02d134235f7f498b 0:128 1:16 diff --git a/dm/games/0100A00019DE0000/dmsh_chain.h b/dm/games/0100A00019DE0000/dmsh_chain.h index 62d872f..cd271fc 100644 --- a/dm/games/0100A00019DE0000/dmsh_chain.h +++ b/dm/games/0100A00019DE0000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100A00019DE0000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "0dbcf06eb52a" +#define DMSH_CHAIN "c79f78cffe09" diff --git a/dm/games/0100A5C00D162000/c1_full.tsv b/dm/games/0100A5C00D162000/c1_full.tsv index 9e31828..e76f670 100644 --- a/dm/games/0100A5C00D162000/c1_full.tsv +++ b/dm/games/0100A5C00D162000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-7a31130fc966 2026-10-23T08:37:08+08:00 (list carried over from b-7af9dd150799: that chain change did not touch any c1 read) +# chain b-73dd6f20c76d 2026-10-23T22:04:35+08:00 (list made on b-8b1c3262585a; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 101c4d73dbb253e2 a277d45a64c92ab6 b14f0b0add21e60a diff --git a/dm/games/0100A5C00D162000/cb_extent.tsv b/dm/games/0100A5C00D162000/cb_extent.tsv index fd145c2..d60c5e8 100644 --- a/dm/games/0100A5C00D162000/cb_extent.tsv +++ b/dm/games/0100A5C00D162000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-7a31130fc966 2026-10-23T08:37:08+08:00 (list carried over from b-7af9dd150799: that chain change did not touch any uniform read) +# chain b-73dd6f20c76d 2026-10-23T22:04:35+08:00 (list made on b-8b1c3262585a; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00336aabde0f0d1f 0:160 006b3aaf17be0cf3 0:144 diff --git a/dm/games/0100A5C00D162000/dmsh_chain.h b/dm/games/0100A5C00D162000/dmsh_chain.h index d893501..ea62ddc 100644 --- a/dm/games/0100A5C00D162000/dmsh_chain.h +++ b/dm/games/0100A5C00D162000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100A5C00D162000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "7a31130fc966" +#define DMSH_CHAIN "73dd6f20c76d" diff --git a/dm/games/0100A6301214E000/c1_full.tsv b/dm/games/0100A6301214E000/c1_full.tsv index 940e4dd..616e046 100644 --- a/dm/games/0100A6301214E000/c1_full.tsv +++ b/dm/games/0100A6301214E000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-1617cfc10e08 2026-10-23T08:37:08+08:00 (list carried over from b-850cb0b1c78a: that chain change did not touch any c1 read) +# chain b-e37b6b7ffb86 2026-10-23T22:04:35+08:00 (list made on b-a4ed90cf06e6; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 001275671d2c9985 0021d75a567e2122 00a98da1158c6f14 diff --git a/dm/games/0100A6301214E000/cb_extent.tsv b/dm/games/0100A6301214E000/cb_extent.tsv index f3c7754..92cf0fd 100644 --- a/dm/games/0100A6301214E000/cb_extent.tsv +++ b/dm/games/0100A6301214E000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-1617cfc10e08 2026-10-23T08:37:08+08:00 (list carried over from b-850cb0b1c78a: that chain change did not touch any uniform read) +# chain b-e37b6b7ffb86 2026-10-23T22:04:35+08:00 (list made on b-a4ed90cf06e6; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0005f969d0503763 2:160 3:16 4:96 001275671d2c9985 0:160 3:128 @@ -443,6 +443,7 @@ 0c9919bb0940bd40 1:352 0c9bb91a324a75f4 1:480 0c9ea87cb294f4de 0:272 +0ca24e51ec58f3f7 1:16 0ca3f047494b50ad 0:144 s0 0ca4e61322fccb87 1:112 3:208 4:112 5:48 0ca542c7414f7f18 0:64 diff --git a/dm/games/0100A6301214E000/dmsh_chain.h b/dm/games/0100A6301214E000/dmsh_chain.h index b3fb962..7d64b26 100644 --- a/dm/games/0100A6301214E000/dmsh_chain.h +++ b/dm/games/0100A6301214E000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100A6301214E000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "1617cfc10e08" +#define DMSH_CHAIN "e37b6b7ffb86" diff --git a/dm/games/0100A83022A22000/c1_full.tsv b/dm/games/0100A83022A22000/c1_full.tsv index d9c4e10..84250d3 100644 --- a/dm/games/0100A83022A22000/c1_full.tsv +++ b/dm/games/0100A83022A22000/c1_full.tsv @@ -1 +1 @@ -# chain b-77436eb10e34 2026-10-23T08:37:08+08:00 (list carried over from b-6176962c721e: that chain change did not touch any c1 read) +# chain b-3a3a10378f1a 2026-10-23T20:36:22+08:00 (list carried over from b-77436eb10e34: that chain change did not touch any c1 read) diff --git a/dm/games/0100A83022A22000/cb_extent.tsv b/dm/games/0100A83022A22000/cb_extent.tsv index 4e2c335..0292d6a 100644 --- a/dm/games/0100A83022A22000/cb_extent.tsv +++ b/dm/games/0100A83022A22000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-77436eb10e34 2026-10-23T08:37:08+08:00 (list carried over from b-6176962c721e: that chain change did not touch any uniform read) +# chain b-3a3a10378f1a 2026-10-23T20:36:22+08:00 (list carried over from b-77436eb10e34: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 004a663e75543071 0:192 014cebfd5986868a 0:64 diff --git a/dm/games/0100A83022A22000/dmsh_chain.h b/dm/games/0100A83022A22000/dmsh_chain.h index 53c321c..c019b9b 100644 --- a/dm/games/0100A83022A22000/dmsh_chain.h +++ b/dm/games/0100A83022A22000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100A83022A22000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "77436eb10e34" +#define DMSH_CHAIN "3a3a10378f1a" diff --git a/dm/games/0100A9D01C446000/c1_full.tsv b/dm/games/0100A9D01C446000/c1_full.tsv index 49cf2f5..ec3a484 100644 --- a/dm/games/0100A9D01C446000/c1_full.tsv +++ b/dm/games/0100A9D01C446000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-09fb4a2c536e 2026-10-23T08:37:08+08:00 (list carried over from b-817a4ea96c63: that chain change did not touch any c1 read) +# chain b-94031cb2e33a 2026-10-23T22:04:35+08:00 (list carried over from b-09fb4a2c536e: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) 0023e10429f49c99 002639655a5d5205 002a91845ac7d766 diff --git a/dm/games/0100A9D01C446000/cb_extent.tsv b/dm/games/0100A9D01C446000/cb_extent.tsv index 5e02721..2dc74fe 100644 --- a/dm/games/0100A9D01C446000/cb_extent.tsv +++ b/dm/games/0100A9D01C446000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-09fb4a2c536e 2026-10-23T08:37:08+08:00 (list carried over from b-817a4ea96c63: that chain change did not touch any uniform read) +# chain b-94031cb2e33a 2026-10-23T22:04:35+08:00 (list carried over from b-09fb4a2c536e: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0000211bd8d2a67c 0:16 00019b89a7f0e0fa 0:3776 1:416 2:2128 3:112 5:192 6:288 diff --git a/dm/games/0100A9D01C446000/dmsh_chain.h b/dm/games/0100A9D01C446000/dmsh_chain.h index d9fbf90..5b82053 100644 --- a/dm/games/0100A9D01C446000/dmsh_chain.h +++ b/dm/games/0100A9D01C446000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100A9D01C446000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "09fb4a2c536e" +#define DMSH_CHAIN "94031cb2e33a" diff --git a/dm/games/0100B04011742000/c1_full.tsv b/dm/games/0100B04011742000/c1_full.tsv index b65470d..29eafd1 100644 --- a/dm/games/0100B04011742000/c1_full.tsv +++ b/dm/games/0100B04011742000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-3b4222394225 2026-10-23T08:37:08+08:00 (list carried over from b-b59a7dc05029: that chain change did not touch any c1 read) +# chain b-8f5abdfbe523 2026-10-23T22:03:19+08:00 00096443b71e7fef 001540067ae4cdf5 002e5538fc05267e @@ -305,6 +305,11 @@ 10ec00bad206aa89 10ed4554a0763445 10ed71590cb849b5 +10ff5a1d85d41f4d_bg0 +10ff5a1d85d41f4d_bg1 +10ff5a1d85d41f4d_bg2 +10ff5a1d85d41f4d_bg3 +10ff5a1d85d41f4d_bg4 1111a4ba4b50cebd 11299b08262675af 112c998155f4fde6 @@ -689,6 +694,11 @@ 2332eb80584960f5 2348104ca14d55b5 234cc0a40cc90616 +234e528b367938cf_bg0 +234e528b367938cf_bg1 +234e528b367938cf_bg2 +234e528b367938cf_bg3 +234e528b367938cf_bg4 2361d6de38a64e0f 236b3b1f48bee63e 236c4e4dfc6495f4 @@ -3732,6 +3742,11 @@ c01f5f8b10584b2e c0300399df913550 c04abe00f268b24b c05610ea59f03091 +c077bd847f79c117_bg0 +c077bd847f79c117_bg1 +c077bd847f79c117_bg2 +c077bd847f79c117_bg3 +c077bd847f79c117_bg4 c088921900390802 c09f4291bb330c9d c0cc1c21065073c0 @@ -4516,6 +4531,11 @@ e934f41e47999bc8 e936704abb59a712 e93de3448fd2d745 e94062b68ded5aad +e94405699098b356_bg0 +e94405699098b356_bg1 +e94405699098b356_bg2 +e94405699098b356_bg3 +e94405699098b356_bg4 e9444ca62fe2a41b e9805a76739a05a5 e981a88d0c5bce3e diff --git a/dm/games/0100B04011742000/cb_extent.tsv b/dm/games/0100B04011742000/cb_extent.tsv index 8e3a2d1..5c51310 100644 --- a/dm/games/0100B04011742000/cb_extent.tsv +++ b/dm/games/0100B04011742000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-3b4222394225 2026-10-23T08:37:08+08:00 (list carried over from b-b59a7dc05029: that chain change did not touch any uniform read) +# chain b-8f5abdfbe523 2026-10-23T22:04:35+08:00 (list carried over from b-3b4222394225: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000034e55812e369 0:64 1:16 2:16 3:48 4:32 s1 s2 s3 s4 00066a38d5c8ec32 0:112 diff --git a/dm/games/0100B04011742000/dmsh_chain.h b/dm/games/0100B04011742000/dmsh_chain.h index 2d96d0e..22416ff 100644 --- a/dm/games/0100B04011742000/dmsh_chain.h +++ b/dm/games/0100B04011742000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100B04011742000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "3b4222394225" +#define DMSH_CHAIN "8f5abdfbe523" diff --git a/dm/games/0100BF00112C0000/c1_full.tsv b/dm/games/0100BF00112C0000/c1_full.tsv index c859581..7ce59c3 100644 --- a/dm/games/0100BF00112C0000/c1_full.tsv +++ b/dm/games/0100BF00112C0000/c1_full.tsv @@ -1 +1 @@ -# chain b-7aae2e1f0c83 2026-10-23T08:37:08+08:00 (list carried over from b-78dacedca5e6: that chain change did not touch any c1 read) +# chain b-d93ccdee9f2b 2026-10-23T20:36:22+08:00 (list carried over from b-7aae2e1f0c83: that chain change did not touch any c1 read) diff --git a/dm/games/0100BF00112C0000/cb_extent.tsv b/dm/games/0100BF00112C0000/cb_extent.tsv index e4f916c..60e0437 100644 --- a/dm/games/0100BF00112C0000/cb_extent.tsv +++ b/dm/games/0100BF00112C0000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-7aae2e1f0c83 2026-10-23T08:37:08+08:00 (list carried over from b-78dacedca5e6: that chain change did not touch any uniform read) +# chain b-d93ccdee9f2b 2026-10-23T20:36:22+08:00 (list carried over from b-7aae2e1f0c83: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000e6f8b046611e5 0:64 1:144 2:64 3:16 4:32 5:16 0025660fe0427290 0:80 1:32 2:32 3:64 diff --git a/dm/games/0100BF00112C0000/dmsh_chain.h b/dm/games/0100BF00112C0000/dmsh_chain.h index b061883..7cb85a5 100644 --- a/dm/games/0100BF00112C0000/dmsh_chain.h +++ b/dm/games/0100BF00112C0000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100BF00112C0000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "7aae2e1f0c83" +#define DMSH_CHAIN "d93ccdee9f2b" diff --git a/dm/games/0100D9F01D474000/c1_full.tsv b/dm/games/0100D9F01D474000/c1_full.tsv index e16b831..a8a217f 100644 --- a/dm/games/0100D9F01D474000/c1_full.tsv +++ b/dm/games/0100D9F01D474000/c1_full.tsv @@ -1 +1 @@ -# chain b-65e27beff2b1 2026-10-23T08:37:08+08:00 (list carried over from b-03af566f4e07: that chain change did not touch any c1 read) +# chain b-c54437137182 2026-10-23T20:36:22+08:00 (list carried over from b-65e27beff2b1: that chain change did not touch any c1 read) diff --git a/dm/games/0100D9F01D474000/dmsh_chain.h b/dm/games/0100D9F01D474000/dmsh_chain.h index b504ba9..6cf249f 100644 --- a/dm/games/0100D9F01D474000/dmsh_chain.h +++ b/dm/games/0100D9F01D474000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100D9F01D474000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "65e27beff2b1" +#define DMSH_CHAIN "c54437137182" diff --git a/dm/games/0100DCA0064A6000/c1_full.tsv b/dm/games/0100DCA0064A6000/c1_full.tsv index 0d5acb3..2d77d25 100644 --- a/dm/games/0100DCA0064A6000/c1_full.tsv +++ b/dm/games/0100DCA0064A6000/c1_full.tsv @@ -1,3 +1,33 @@ -# chain b-aa5d178bcc08 2026-10-23T04:05:27+08:00 +# chain b-21015a145194 2026-10-23T20:37:52+08:00 +3190f30b989e314e_bg0 +3190f30b989e314e_bg1 +3190f30b989e314e_bg2 +3190f30b989e314e_bg3 +3190f30b989e314e_bg4 35e1865e313f0553 +3a6ba698f2b1d9a2_bg0 +3a6ba698f2b1d9a2_bg1 +3a6ba698f2b1d9a2_bg2 +3a6ba698f2b1d9a2_bg3 +3a6ba698f2b1d9a2_bg4 +7f77b7ff5c812554_bg0 +7f77b7ff5c812554_bg1 +7f77b7ff5c812554_bg2 +7f77b7ff5c812554_bg3 +7f77b7ff5c812554_bg4 +8b771499d5dda384_bg0 +8b771499d5dda384_bg1 +8b771499d5dda384_bg2 +8b771499d5dda384_bg3 +8b771499d5dda384_bg4 +969276bbb0cf6982_bg0 +969276bbb0cf6982_bg1 +969276bbb0cf6982_bg2 +969276bbb0cf6982_bg3 +969276bbb0cf6982_bg4 +9f8e5fc523370d1e_bg0 +9f8e5fc523370d1e_bg1 +9f8e5fc523370d1e_bg2 +9f8e5fc523370d1e_bg3 +9f8e5fc523370d1e_bg4 cec643c043d05fb3 diff --git a/dm/games/0100DCA0064A6000/cb_extent.tsv b/dm/games/0100DCA0064A6000/cb_extent.tsv index 84dd5ca..9164b5e 100644 --- a/dm/games/0100DCA0064A6000/cb_extent.tsv +++ b/dm/games/0100DCA0064A6000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-aa5d178bcc08 2026-10-23T04:05:28+08:00 +# chain b-21015a145194 2026-10-23T20:37:53+08:00 # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000483d44214de14 0:384 0006d94c66b7bcfa 0:16 @@ -253,6 +253,7 @@ 0e9cb8924ea2906a 0:304 0ec0946ed46d9ab5 0:288 0ee390fcc3937335 0:224 +0eee2d58f9893b7d 0:80 0f0680af1d84d574 0:48 0f08c1331314cd04 0:240 0f0f675b843f7cff 0:48 @@ -663,6 +664,7 @@ 271b88be7c4adced 0:240 2732c81f59039b0d 0:288 273a90011a4c5aed 0:16 +273f17f9470839e8 0:80 27462941eab7e66c 0:64 2748498993df2c70 0:208 274b28b89f066c47 0:96 @@ -861,6 +863,7 @@ 316cc925db2fdd79 0:448 3170ab775e78d116 0:32 3180ddc91eeec210 0:672 +3190f30b989e314e 0:144 31a1211754211464 0:688 31b0e20dc7ff6574 0:80 31b5e3bc574caa86 0:128 @@ -1006,6 +1009,7 @@ 3a2a7df9afde73ba 0:48 3a2e812e61358b1e 0:224 3a5835d777947d44 0:128 +3a6ba698f2b1d9a2 0:144 3a6fa23bef4ed980 0:240 3a82d05add24a521 0:16 3adc4e2a99bb9edd 0:32 @@ -2347,6 +2351,7 @@ 7f60c65a6802a649 0:32 7f62ca62e2a2a668 0:400 7f6322d3fb585661 0:416 +7f77b7ff5c812554 0:144 7f79700eb0d3f6ee 0:16 7f817f88c1e3f474 0:272 7f956bd64b5f3d8f 0:288 @@ -2503,6 +2508,7 @@ 8693d1bb121e03e6 0:736 86950fab5e24590e 0:128 86a717e8761ea056 0:400 +86a76ee7f14336b3 0:64 86cbf799e459ffd6 0:304 86f5267872076226 0:416 8707dff1431df7a4 0:288 @@ -2585,6 +2591,7 @@ 8b3703389c78ff91 0:320 8b58aa0178639c53 0:16 8b607148971ef29e 0:416 +8b771499d5dda384 0:144 8bbba38a71d8abdf 0:32 8bc28b56a3a5ea33 0:272 8bcb0bcbab13db52 0:64 @@ -2802,6 +2809,7 @@ 96768faba5d0346c 0:240 9680ada8a0352f4d 0:64 9689e3d6ed439948 0:16 +969276bbb0cf6982 0:144 96a2666d7d691558 0:272 96a7e79fca541a64 0:672 96c4ac2c9d72eb1a 0:48 @@ -2968,6 +2976,7 @@ 9f7cef2968709a6d 0:208 9f7e6d1f79b4b2f0 0:16 9f898d892f317a09 0:304 +9f8e5fc523370d1e 0:144 9fb6bb2f604d404b 0:64 9fc0aad872e55ee3 0:304 9fc92868dc50a924 0:144 diff --git a/dm/games/0100DCA0064A6000/dmsh_chain.h b/dm/games/0100DCA0064A6000/dmsh_chain.h index f6eb85d..13dba7d 100644 --- a/dm/games/0100DCA0064A6000/dmsh_chain.h +++ b/dm/games/0100DCA0064A6000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100DCA0064A6000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "aa5d178bcc08" +#define DMSH_CHAIN "21015a145194" diff --git a/dm/games/0100E44016C22000/c1_full.tsv b/dm/games/0100E44016C22000/c1_full.tsv index 5d83ef1..f31ea0d 100644 --- a/dm/games/0100E44016C22000/c1_full.tsv +++ b/dm/games/0100E44016C22000/c1_full.tsv @@ -1,2 +1,2 @@ -# chain b-0258de6fc0a3 2026-10-23T08:37:08+08:00 (list carried over from b-e6130d638618: that chain change did not touch any c1 read) +# chain b-832e3f9025e7 2026-10-23T20:36:22+08:00 (list carried over from b-0258de6fc0a3: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) c62d1fc4921c1377 diff --git a/dm/games/0100E44016C22000/cb_extent.tsv b/dm/games/0100E44016C22000/cb_extent.tsv index 32ac09a..1fb4597 100644 --- a/dm/games/0100E44016C22000/cb_extent.tsv +++ b/dm/games/0100E44016C22000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-0258de6fc0a3 2026-10-23T08:37:08+08:00 (list carried over from b-e6130d638618: that chain change did not touch any uniform read) +# chain b-832e3f9025e7 2026-10-23T20:36:22+08:00 (list carried over from b-0258de6fc0a3: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 00398cc3ae952e94 0:336 007b5324a6b09547 1:144 diff --git a/dm/games/0100E44016C22000/dmsh_chain.h b/dm/games/0100E44016C22000/dmsh_chain.h index 6ccea8a..d7366c1 100644 --- a/dm/games/0100E44016C22000/dmsh_chain.h +++ b/dm/games/0100E44016C22000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100E44016C22000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "0258de6fc0a3" +#define DMSH_CHAIN "832e3f9025e7" diff --git a/dm/games/0100ECD018EBE000/c1_full.tsv b/dm/games/0100ECD018EBE000/c1_full.tsv index a88aef2..dbe9321 100644 --- a/dm/games/0100ECD018EBE000/c1_full.tsv +++ b/dm/games/0100ECD018EBE000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-a8cf6af5688d 2026-10-23T08:37:08+08:00 (list carried over from b-af5565ab55e6: that chain change did not touch any c1 read) +# chain b-476fbfed4a48 2026-10-23T22:04:35+08:00 (list made on b-b967363a94ed; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) 000adfc610bcaf6e 013b83fddcc0a33c 0172e5256cad5785 diff --git a/dm/games/0100ECD018EBE000/cb_extent.tsv b/dm/games/0100ECD018EBE000/cb_extent.tsv index a2c6714..3bb2201 100644 --- a/dm/games/0100ECD018EBE000/cb_extent.tsv +++ b/dm/games/0100ECD018EBE000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-a8cf6af5688d 2026-10-23T08:37:08+08:00 (list carried over from b-af5565ab55e6: that chain change did not touch any uniform read) +# chain b-476fbfed4a48 2026-10-23T22:04:35+08:00 (list made on b-b967363a94ed; this chain only adds the clip-distance output forms to the geometry capture, which none of this game's vertex shaders write) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 000ad4e5922aea9d 2:336 4:64 11:32 000adfc610bcaf6e 0:448 2:48 3:32 4:144 11:16 diff --git a/dm/games/0100ECD018EBE000/dmsh_chain.h b/dm/games/0100ECD018EBE000/dmsh_chain.h index f2bb07d..f5f2fee 100644 --- a/dm/games/0100ECD018EBE000/dmsh_chain.h +++ b/dm/games/0100ECD018EBE000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100ECD018EBE000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "a8cf6af5688d" +#define DMSH_CHAIN "476fbfed4a48" diff --git a/dm/games/0100F2C0115B6000/c1_full.tsv b/dm/games/0100F2C0115B6000/c1_full.tsv index e4174ef..91f766a 100644 --- a/dm/games/0100F2C0115B6000/c1_full.tsv +++ b/dm/games/0100F2C0115B6000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-48c8ffd4ea2c 2026-10-23T08:37:08+08:00 (list carried over from b-ed0049c9c26f: that chain change did not touch any c1 read) +# chain b-1f5406b48926 2026-10-23T22:04:35+08:00 (list carried over from b-48c8ffd4ea2c: that chain change did not touch any c1 read) 35cbc686dd8461b8 4872bec9a5567f8b 759c14c6d029f531 diff --git a/dm/games/0100F2C0115B6000/cb_extent.tsv b/dm/games/0100F2C0115B6000/cb_extent.tsv index ee959d2..e608e6a 100644 --- a/dm/games/0100F2C0115B6000/cb_extent.tsv +++ b/dm/games/0100F2C0115B6000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-48c8ffd4ea2c 2026-10-23T08:37:08+08:00 (list carried over from b-ed0049c9c26f: that chain change did not touch any uniform read) +# chain b-1f5406b48926 2026-10-23T22:04:35+08:00 (list carried over from b-48c8ffd4ea2c: that chain change did not touch any uniform read) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 0001a896bf9bd7cc 5:496 6:2256 12:432 00027f7dc4646be2 5:496 6:2320 7:112 10:96 12:944 s4 diff --git a/dm/games/0100F2C0115B6000/dmsh_chain.h b/dm/games/0100F2C0115B6000/dmsh_chain.h index fb8cbce..265d493 100644 --- a/dm/games/0100F2C0115B6000/dmsh_chain.h +++ b/dm/games/0100F2C0115B6000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100F2C0115B6000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "48c8ffd4ea2c" +#define DMSH_CHAIN "1f5406b48926" diff --git a/dm/games/0100F43008C44000/c1_full.tsv b/dm/games/0100F43008C44000/c1_full.tsv index 056da1e..c5c3a59 100644 --- a/dm/games/0100F43008C44000/c1_full.tsv +++ b/dm/games/0100F43008C44000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-accb143dd11f 2026-10-23T08:37:08+08:00 (list carried over from b-e198d1b0da05: that chain change did not touch any c1 read) +# chain b-67a0957df269 2026-10-23T20:36:22+08:00 (list carried over from b-accb143dd11f: that chain change did not touch any c1 read) 000566ec19dc74f7 000b591830b6fa73 0027e56f73d8e10e diff --git a/dm/games/0100F43008C44000/dmsh_chain.h b/dm/games/0100F43008C44000/dmsh_chain.h index b566c88..6821987 100644 --- a/dm/games/0100F43008C44000/dmsh_chain.h +++ b/dm/games/0100F43008C44000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100F43008C44000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "accb143dd11f" +#define DMSH_CHAIN "67a0957df269" diff --git a/dm/games/0100F5D01DA3A000/c1_full.tsv b/dm/games/0100F5D01DA3A000/c1_full.tsv index 7027d6a..e8b0534 100644 --- a/dm/games/0100F5D01DA3A000/c1_full.tsv +++ b/dm/games/0100F5D01DA3A000/c1_full.tsv @@ -1,2 +1,2 @@ -# chain b-c37bfc7e0b56 2026-10-23T08:37:08+08:00 (list carried over from b-557796155445: that chain change did not touch any c1 read) +# chain b-577add4eb8d5 2026-10-23T20:36:22+08:00 (list carried over from b-c37bfc7e0b56: the precise:: min / max / clamp change touches no c1 read; its geometry shaders, built as compute kernels since bb585cd, were not checked) e5ac49d4582a339c diff --git a/dm/games/0100F5D01DA3A000/cb_extent.tsv b/dm/games/0100F5D01DA3A000/cb_extent.tsv index c4a0b4e..37bd100 100644 --- a/dm/games/0100F5D01DA3A000/cb_extent.tsv +++ b/dm/games/0100F5D01DA3A000/cb_extent.tsv @@ -1,4 +1,4 @@ -# chain b-c37bfc7e0b56 2026-10-23T08:37:08+08:00 (list carried over from b-557796155445: that chain change did not touch any uniform read) +# chain b-577add4eb8d5 2026-10-23T20:36:22+08:00 (list carried over from b-c37bfc7e0b56: the precise:: min / max / clamp change touches no uniform read; its geometry shaders, built as compute kernels since bb585cd, were not checked) # shader key, then reg:bytes for each uniform slot whose reads stay inside its first bytes, and s for each storage slot it never writes (cb_extent.py) 008f89e94d37f17f 1:144 00a30a0f46c385b7 1:512 diff --git a/dm/games/0100F5D01DA3A000/dmsh_chain.h b/dm/games/0100F5D01DA3A000/dmsh_chain.h index 8263900..15b5ef4 100644 --- a/dm/games/0100F5D01DA3A000/dmsh_chain.h +++ b/dm/games/0100F5D01DA3A000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100F5D01DA3A000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "c37bfc7e0b56" +#define DMSH_CHAIN "577add4eb8d5" diff --git a/dm/games/0100FD8022DAA000/dmsh_chain.h b/dm/games/0100FD8022DAA000/dmsh_chain.h index 6f8273c..0d3c670 100644 --- a/dm/games/0100FD8022DAA000/dmsh_chain.h +++ b/dm/games/0100FD8022DAA000/dmsh_chain.h @@ -1,2 +1,2 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100FD8022DAA000): the B shader library translation chain version this source tree expects (default options); the host loads only /b-/ -#define DMSH_CHAIN "5642e10f5c16" +#define DMSH_CHAIN "19f3169e6337" diff --git a/dm/gfx/tools/dmsh_build.py b/dm/gfx/tools/dmsh_build.py index 63319e9..e2b217a 100644 --- a/dm/gfx/tools/dmsh_build.py +++ b/dm/gfx/tools/dmsh_build.py @@ -28,7 +28,11 @@ MAP = str(GAME.table('shader_map.tsv')) BF_WANT_FILE = str(GAME.table('bf_want.tsv')) BF_WANT = {line.strip() for line in open(BF_WANT_FILE) if line.strip() and not line.lstrip().startswith('#')} if os.path.exists(BF_WANT_FILE) else set() XC = ['--msl', '--msl-version', '20300', '--msl-argument-buffers', '--msl-texture-buffer-native', '--msl-pad-fragment-output'] -CAS = os.environ.get('DMSH_CAS', os.path.join(cache_root, 'cas')) +# spirv-cross writes the translator's FMin / FMax / FClamp as fast::min / max / clamp, whose result for a NaN operand is the GPU's choice; Maxwell's FMNMX returns the other operand +# and its saturation gives 0, as Metal's precise:: functions (IEEE fmin / fmax) do on every GPU. The M4 Pro's fast ones happen to agree, an A20 Pro's do not: Super Mario Galaxy 2's +# GX lighting takes max(0, NaN) from light directions left at zero, and the half of Mario its fill light faces came out white on the iPhone (GitHub issue 72; vk_shaders.py PRECISE) +def precise(msl): return re.sub(r'\bfast::(min|max|clamp)\(', r'precise::\1(', msl) +CAS =os.environ.get('DMSH_CAS', os.path.join(cache_root, 'cas')) CAS_LOCKS, CAS_LOCKS_GUARD = {}, threading.Lock() PRE_STATS = collections.Counter() # -fpreserve-invariance: vertex positions are marked [[invariant]], but without this flag Metal does not promise that two different shaders compute the same expression to the same value; on Maxwell the same multiply-adds always agree. @@ -746,7 +750,7 @@ def geometry_finish(key, w, j, c1): dmsh_geometry.flatten_sets(spv) r = subprocess.run(['spirv-cross', *XC, spv], capture_output=True, text=True) if r.returncode: return 'geometry MSL failed', r.stderr.strip()[:160], None - src = dmsh_geometry.topology_pointer(r.stdout) + src = dmsh_geometry.topology_pointer(precise(r.stdout)) res = json.load(open(os.path.join(w, k + '.res.json'))) refl = {'key': key + '_bg' + str(t), 'route': 'B', 'chain': CHAIN, 'dm_ctl': key, 'source': f'{loc[key][0]}#{loc[key][1]}', 'pc_paired': pc_of[key], 'stage': 'gs', @@ -769,7 +773,7 @@ def geometry_finish(key, w, j, c1): spv = os.path.join(w, k + '.reader.spv'); dmsh_geometry.flatten_sets(spv) r = subprocess.run(['spirv-cross', *XC, spv], capture_output=True, text=True) if r.returncode: return 'geometry reader failed', r.stderr.strip()[:160], None - reader = vs_layer(vs_init(r.stdout)) + reader = vs_layer(vs_init(precise(r.stdout))) analysis, full = vs_depth(reader) meta = {'key': key + '_bgv', 'route': 'B', 'chain': CHAIN, 'dm_ctl': key, 'stage': 'vs', 'entry': 'main0', 'entry_z': 'main0_z', 'msl_entry_kind': 'vertex', @@ -805,6 +809,7 @@ def finish(key, w, j, c1): r = subprocess.run(['spirv-cross', *XC, os.path.join(w, key + '.spv'), '--output', msl], capture_output=True, text=True) if r.returncode: return 'MSL failed', r.stderr.strip()[:160], None src = open(msl).read() + src = precise(src); open(msl, 'w').write(src) # min / max / clamp with Maxwell's NaN results (see precise) pad = [] if j['stage'] == 'vs': # outputs start as (0,0,0,1) (see vs_init); no point size beside a layer output (see vs_layer) src = vs_layer(vs_init(src)); open(msl, 'w').write(src) diff --git a/dm/gfx/tools/dmsh_geometry.py b/dm/gfx/tools/dmsh_geometry.py index 9504a9e..8537356 100644 --- a/dm/gfx/tools/dmsh_geometry.py +++ b/dm/gfx/tools/dmsh_geometry.py @@ -54,9 +54,14 @@ def capture(src): offset = {'point_size': 4, 'render_target_array_index': 13, 'viewport_array_index': 14}[v[3]] stores.append(f'dm_p[{offset}] = as_type(out.{v[2]});') continue - v = re.fullmatch(r'float (\w+)\[(\d+)\] \[\[clip_distance\]\];', line) - if v and int(v[2]) <= 8: - stores += [f'dm_p[{5 + c}] = as_type(out.{v[1]}[{c}]);' for c in range(int(v[2]))] + # spirv-cross writes the array size after the attribute (float gl_ClipDistance [[clip_distance]] [8]; Luigi's Mansion 3's vertex shaders) + v = re.fullmatch(r'float (\w+)(?:\[(\d+)\])? \[\[clip_distance\]\](?: \[(\d+)\])?;', line) + if v and (v[2] or v[3]) and int(v[2] or v[3]) <= 8: + stores += [f'dm_p[{5 + c}] = as_type(out.{v[1]}[{c}]);' for c in range(int(v[2] or v[3]))] + continue + v = re.fullmatch(r'float (\w+) \[\[user\(clip(\d)\)\]\];', line) # the same distances again as varyings for the pixel stage (gl_ClipDistance_0 [[user(clip0)]]) + if v: + stores.append(f'dm_p[{5 + int(v[2])}] = as_type(out.{v[1]});') continue raise ValueError('geometry capture: unknown output ' + line) params += f', constant dm_geometry_capture& dm_gs [[buffer({CAPTURE_SLOT})]]' diff --git a/dm/gfx/tools/gl_shaders.py b/dm/gfx/tools/gl_shaders.py index 24b7f6d..0f048ee 100644 --- a/dm/gfx/tools/gl_shaders.py +++ b/dm/gfx/tools/gl_shaders.py @@ -123,6 +123,7 @@ def translate(src, stage, key, tmp): m = open(msl).read() # Varyings by name: the out struct of a vertex shader and the in struct of a fragment shader (stage_in members of a vertex shader are [[attribute(n)]]) m = re.sub(r'(\b(\w+)\s+\[\[)user\(locn\d+\)', lambda x: f'{x.group(1)}user({x.group(2)})', m) + m = re.sub(r'\bfast::(min|max|clamp)\(', r'precise::\1(', m) # a NaN operand gives the other one, as on the Switch's GPU (vk_shaders.py PRECISE) open(msl, 'w').write(m) f = [] if stage == 'vert': @@ -195,7 +196,7 @@ def main(): + ' '.join((lambda r: r.stdout + r.stderr)(subprocess.run(['spirv-cross', '--revision'], capture_output=True, text=True)).split())] tsv += [f'{k[0]}\t{v[0]}\t{" ".join(v[1])}\t{v[3]}' for k, v in sorted(seen.items())] dirs = [(os.path.join(out, 'gl'), 'macosx', [])] - if ios: dirs.append((os.path.join(ios, 'gl'), 'iphoneos', ['-mios-version-min=18.0'])) + if ios: dirs.append((os.path.join(ios, 'gl'), 'iphoneos', ['-mios-version-min=18.0', '-fmetal-math-mode=relaxed'])) # relaxed as in vk_shaders.py and ios_metal.py: no NaN / Inf assumption on the iPhone's GPU compiler msls = [v[2] for v in seen.values()] for d, sdk, extra in dirs: lib = metallib(msls, d, sdk, extra) diff --git a/dm/gfx/tools/vk_shaders.py b/dm/gfx/tools/vk_shaders.py index 37deb98..fa63f43 100644 --- a/dm/gfx/tools/vk_shaders.py +++ b/dm/gfx/tools/vk_shaders.py @@ -28,6 +28,11 @@ OP_DECORATE, OP_MEMBER_DECORATE, OP_TYPE_ARRAY, OP_TYPE_RTARRAY, OP_TYPE_STRUCT DEC_ARRAY_STRIDE, DEC_BINDING, DEC_SET = 6, 33, 34 KINDS = {'ubos': 'u', 'ssbos': 'b', 'separate_images': 't', 'images': 't', 'separate_samplers': 's', 'textures': 'c'} SLOT_CLASS = {'u': 'buffer', 'b': 'buffer', 't': 'texture', 's': 'sampler', 'c': 'texture', 'p': 'buffer'} +# GLSL's FMin / FMax / FClamp, which spirv-cross writes as fast::min / max / clamp, leave a NaN operand's result to the GPU; the Switch's GPU returns the other operand, as Metal's +# precise:: functions (IEEE fmin / fmax) do on every GPU. Super Mario Galaxy 2's GX lighting normalizes light directions the game leaves at (0, 0, 0) (the key and fill lights of +# its characters) and takes max(0, dot(ldir, NaN)) as the spot term: 0 on the Switch and on the M4 Pro, so the attenuation is 1; on an A20 Pro (iPhone) the half of Mario +# that the fill light (from the camera's left) faces came out white (GitHub issue 72) +PRECISE = re.compile(r'\bfast::(min|max|clamp)\(') def red(msg): sys.exit('[RED] ' + msg) @@ -126,6 +131,7 @@ def one(path, tmp, root): res.append(f'p:0.0={pc_slot}') used = {(c, int(n)) for c, n in re.findall(r'\[\[(buffer|texture|sampler)\((\d+)\)\]\]', m.group(1))} res = [x for x in res if (SLOT_CLASS[x[0]], int(x.rsplit('=', 1)[1].split('*')[0])) in used] + src = PRECISE.sub(r'precise::\1(', src); open(msl, 'w').write(src) msls = [msl] if stage == 'frag' and '[[color(1)]]' in src: # dual-source variant vk__d: the output at location 1 becomes the second blend source of attachment 0 msl_d = os.path.join(tmp, key + '_d.metal'); msls.append(msl_d) @@ -167,7 +173,9 @@ def main(): '# spirv-cross ' + ' '.join((lambda r: r.stdout + r.stderr)(subprocess.run(['spirv-cross', '--revision'], capture_output=True, text=True)).split())] tsv += [f'{k}\t{v[0]}\t{" ".join(v[1])}\t{v[3]}' for k, v in sorted(seen.items())] dirs = [(os.path.join(out, 'vk'), 'macosx', [])] - if ios: dirs.append((os.path.join(ios, 'vk'), 'iphoneos', ['-mios-version-min=18.0'])) + # The iPhone library is compiled with -fmetal-math-mode=relaxed, as the NVN chain's (dm/ios/tools/ios_metal.py): the default fast mode lets the GPU compiler assume there is + # no NaN / Inf, which would let it drop the NaN handling of the precise:: functions above + if ios: dirs.append((os.path.join(ios, 'vk'), 'iphoneos', ['-mios-version-min=18.0', '-fmetal-math-mode=relaxed'])) for d, sdk, extra in dirs: lib = metallib(msls, d, sdk, extra) open(os.path.join(d, 'vk_shaders.tsv'), 'w').write('\n'.join(tsv) + '\n') diff --git a/docs/agents/04-graphics.md b/docs/agents/04-graphics.md index 0242e26..e37319a 100644 --- a/docs/agents/04-graphics.md +++ b/docs/agents/04-graphics.md @@ -108,7 +108,8 @@ So the translator leaves z alone (`QueryGraphicsState` depth mode false in `Prog - **Positions must be invariant across shaders.** A game may draw the same geometry with two programs and rely on identical depth, for example a depth pre-pass and then a less-or-equal G-buffer pass (Super Mario Odyssey). Maxwell evaluates identical position math identically; Metal only does for outputs marked `[[invariant]]` (the translation marks `gl_Position`) when compiled with `-fpreserve-invariance`, which `dmsh_build.py` (Mac) and `ios_metal.py` (iOS) pass to every compile. Without it Odyssey's ground kept stale 32×32 blocks where the G-buffer draw failed the depth test. - **A geometry shader that only picks the layer** (DRAGON QUEST XI S: Unreal Engine 4.18 builds its 32×32×32 colour-grading LUT with `WriteToSliceMainVS` + `FWriteToSliceGS`, one slice per instance; without it the tone mapper read an empty LUT and the screen came out a flat blue). Metal has no geometry stage. `dmsh_build.py` recognises such a shader in its SPIR-V (`gs_slice`: triangles in, at most 3 vertices out, positions and other inputs copied, `gl_Layer` taking the bits of one input component). It builds no library for it and records the component in its reflection. Each vertex shader that writes integer bits from the instance index into an output component gets two more entry points (`vs_layer_entry`: `main0_l` / `main0_lz` write that component as `[[render_target_array_index]]`). At bind time `prog_fold_gs` (`nvn_mtl.m`) swaps the vertex shader for its layer variant and drops the geometry stage when the components match. Unreal binds each stage from a program of its own, so a vertex shader is often paired for a moment with the previous draw's geometry shader. A stub that does not fit stays in the program, and only a draw that uses it prints a red line (`draw_gs_check`). The other 22 geometry shaders in DQ11 (one-pass cube shadows that emit transformed triangles) still do not build. - **Cube map arrays count layer-faces** (DRAGON QUEST XI S, when its prologue movie ends: an abort in `MTLTextureDescriptor` validation, `arrayLength (510) … greater than the max allowed size (341)`) → as in OpenGL, an NVN cube map array's depth is its number of layer-faces (a multiple of 6: 510 for 85 cubes), while a Metal cube array's `arrayLength` counts cubes. The host took the depth as a cube count in three places: the Metal texture, the upload's layer count and the guest layout (`nvn_tex.c` `shape`), so `GetStorageSize` reported six times the storage. A cube array is now created like a cube, as a 2D array of all its faces, and `tex_fit` makes the cube-array view a shader asks for (`t_nvn` checks the storage size against a 2D array's). -- **iOS math mode**: the iOS libraries are compiled with `-fmetal-math-mode=relaxed` (`dm/ios/tools/ios_metal.py`). The translated shaders reproduce Maxwell's NaN behaviour with `isnan` selects (8,337 of 12,809 use them), and the default fast mode allows the GPU compiler to assume there is no NaN. Relaxed keeps fast math's reassociation but not that assumption. +- **iOS math mode**: the iOS libraries are compiled with `-fmetal-math-mode=relaxed` (`dm/ios/tools/ios_metal.py`; the Vulkan and GL libraries in `vk_shaders.py` and `gl_shaders.py` too). The translated shaders reproduce Maxwell's NaN behaviour with `isnan` selects (8,337 of 12,809 use them), and the default fast mode allows the GPU compiler to assume there is no NaN. Relaxed keeps fast math's reassociation but not that assumption. +- **min / max / clamp with a NaN operand** (every game; GitHub issue 72, Super Mario Galaxy 2 on an iPhone: the half of Mario facing the camera's left was white). spirv-cross writes `FMin` / `FMax` / `FClamp` as `fast::min` / `max` / `clamp`, which leave a NaN operand's result to the GPU; Maxwell's `FMNMX` returns the other operand and its saturation gives 0, as Metal's `precise::` functions (IEEE `fmin` / `fmax`) do, so `dmsh_build.py` (`precise`), `vk_shaders.py` and `gl_shaders.py` write those instead. Plain `max` / `min` / `clamp` compile to the `fast_` intrinsics in every Metal math mode, relaxed included. The NVN chain had about 124,000 `fast::max`, 98,000 `fast::clamp` and 41,000 `fast::min` in Paper Mario: The Thousand-Year Door, none guarded by its `isnan` selects. Galaxy's GX lighting normalizes light directions the game leaves at (0, 0, 0) (the key and fill lights of its characters) and takes `max(0, dot(ldir, NaN))` as the spot term: 0 on the M4 Pro with either function, so the attenuation is 1. The fill light sits at the camera's left in view space, so its terminator runs down the middle of a character facing the camera. - **Dynamic present interval (Mario 1.2.1 on the iPhone)**: Mario times every frame (`main+0xcfd24`); after a frame that ran past one vertical sync it sets present interval 2 for the next frame *and* sets its own time step to the interval (a float at `main+0x36ceff0`), so that frame catches up 2/60 s. A user's 2-minute iPhone session switched 123 times, mostly for one frame. In `display` mode those frames were shown for 16.7 ms and the game visibly jumped ahead ("sometimes the speed increases when jumping"). In `game` mode (the default since 2026-10-15) the display-link callback keeps a frame whose period is over 25 ms on screen for its whole period before taking the next one (`g_link_hold_until` in `nvn_mtl.m`; the `display link up to tick` log line counts these ticks as `held for the present interval`), and the 30 fps target that drops the display link to 30 Hz (`nvn_game_fps` in `hle_nvn.c`) waits until interval 2 has held for a full second, so one-frame switches no longer flip the display-link mode. **Fixed: the game side of that hold (BotW on the iPhone, "when pressing B, Link's move pace is speeding up").** The acquire waited for one display-link tick per frame whatever the interval, so the game kept producing frames every 16.7 ms while the screen held each interval-2 frame for 33 ms and dropped the one in between (`old frames dropped by merging`). BotW sprinting flaps between interval 1 and 2 for runs of 6 or more frames, and its VFR time step at interval 2 is a whole 30 fps tick, so those runs went at double speed. `mtl_link_wait_tick` now waits for as many ticks as the game's present interval (times 2 on the 120 Hz link, half rounded up on the 30 Hz link), as the Switch blocks the next acquire for N vertical syncs. The windowless Mac host was never affected: there the acquire sleeps until the interval's slot. `DM_NVN_TSV` writes each frame's interval as `@itv`. `DM_TEST_PRESENT_LAG=90,30` (sleep 30 ms before every 90th present) makes Mario do this on the Mac; run it with `DM_WINDOW=1` to get the display link. - **Screens whose rate is not a multiple of 60 (144 or 165 Hz Mac displays; from PR #27)**: asked for 60 Hz, the system fires the display link on every third refresh of a 165 Hz screen, 55 Hz, so games paced by it ran at 55 fps (27.5 at 30). There `link_range` (`nvn_mtl.m`) runs the link at the screen's rate and counts as ticks only the refreshes nearest a steady 1/60 s clock: 60 a second on average, each frame shown 12.1 or 18.2 ms at 165 Hz. A tick lies up to half a refresh off its slot, so two ticks can be one refresh nearer each other than their slots: the hold of frames over 25 ms tolerates one refresh more (in a simulation of the callback without it, 30 fps frames held a third tick: 22.5 fps at 165 Hz, 24 at 144), and the frame step lets a frame on time show one refresh longer than its hold (`shown_slack`, `nvn_fstep.h`; a cheap 50 ms frame shows 54.5 ms at 165 Hz, and counted as late it kept Breath of the Wild at 20 fps for good). `DM_LINK_VTICK=0` keeps the system's choice. iOS screens run at multiples of 60 and are not affected. Not yet run on such a screen here; the PR's author measured at 165 Hz.