From b3f25a09bb27de1a53897d0e44f5c68bd54ea9cb Mon Sep 17 00:00:00 2001 From: seedds Date: Sun, 18 Oct 2026 23:55:19 +0800 Subject: [PATCH] Shader chain: translator fixes for 39 shaders; compiled shaders cached by their Metal source - Ryujinx (vendored, Instructions.cs GenerateTextureSample): texel offsets read from a register are built with OpCompositeConstruct + Offset, and a four-offset gather becomes four one-offset gathers. Upstream wrote an OpConstantComposite, invalid SPIR-V that SPIRV-Cross refused (2 shaders each in Wonder, Link's Awakening, TOTK, Age of Calamity). - dmsh_xlate: a shader whose SPIR-V declares a 64-bit float is translated again with Ryujinx's DoubleToFloat pass (30 TOTK main-material vertex shaders); TOTK's visibility-counter vertex shader gets MacNativeGames' subgroup lowering (MIT). Every other shader's SPIR-V is byte-identical. - New dm/gfx/tools/dmsh_mtlcache.py: dmsh_build.py compiles each MSL through a cache keyed by the source, the compile flags and the compiler (/cas/metallib/). Before a build it is filled from the earlier b-*/ folders beside the output and IOSOUT, and from DMSH_PREFILL, once a fresh compile of a few of a folder's shaders reproduces their libraries byte for byte. A chain change that leaves a shader's MSL unchanged no longer recompiles it. - dmsh_build.py clones files with the clonefile call instead of one cp per file: each fork of the build process cost about 6 ms and serialized the finishing phase. - TOTK's rebuild after the translator fix: 49 min -> 9 min, libraries byte-identical to the previous build apart from the 39 fixed shaders. All 12 chain versions are new; Dread, 13 Sentinels, Three Houses, TOTK and Wonder are rebuilt (Mac + iOS + c1_full.tsv), the other six follow. --- dm/games/0100000000010000/dmsh_chain.h | 2 +- dm/games/010015100B514000/c1_full.tsv | 2 +- dm/games/010015100B514000/dmsh_chain.h | 2 +- dm/games/010028600EBDA000/dmsh_chain.h | 2 +- dm/games/01002B00111A2000/dmsh_chain.h | 2 +- dm/games/01003FC01670C000/c1_full.tsv | 2 +- dm/games/01003FC01670C000/dmsh_chain.h | 2 +- dm/games/0100535012974000/dmsh_chain.h | 2 +- dm/games/010055D009F78000/c1_full.tsv | 2 +- dm/games/010055D009F78000/dmsh_chain.h | 2 +- dm/games/01006BB00C6F0000/dmsh_chain.h | 2 +- dm/games/01007EF00011E000/dmsh_chain.h | 2 +- dm/games/010093801237C000/c1_full.tsv | 2 +- dm/games/010093801237C000/dmsh_chain.h | 2 +- dm/games/0100A6301214E000/dmsh_chain.h | 2 +- dm/games/0100F2C0115B6000/c1_full.tsv | 2 +- dm/games/0100F2C0115B6000/dmsh_chain.h | 2 +- dm/gfx/tools/dmsh_build.py | 41 ++++--- dm/gfx/tools/dmsh_chain.lock | 8 +- dm/gfx/tools/dmsh_mtlcache.py | 109 ++++++++++++++++++ dm/gfx/tools/dmsh_xlate/Program.cs | 68 ++++++++++- .../tools/dmsh_xlate_bin/Ryujinx.Common.dll | Bin 375808 -> 375808 bytes .../Ryujinx.Graphics.Shader.dll | Bin 643072 -> 644096 bytes dm/gfx/tools/dmsh_xlate_bin/Spv.Generator.dll | Bin 137216 -> 137216 bytes dm/gfx/tools/dmsh_xlate_bin/dmsh_xlate | Bin 124712 -> 124712 bytes dm/gfx/tools/dmsh_xlate_bin/dmsh_xlate.dll | Bin 31232 -> 38912 bytes dm/gfx/tools/dmsh_xlate_bin/dmsh_xlate.pdb | Bin 13832 -> 14564 bytes dm/third_party/README.md | 4 +- dm/third_party/ryujinx/README.md | 7 +- .../CodeGen/Spirv/Instructions.cs | 44 ++++++- docs/development.md | 1 + 31 files changed, 267 insertions(+), 49 deletions(-) create mode 100644 dm/gfx/tools/dmsh_mtlcache.py diff --git a/dm/games/0100000000010000/dmsh_chain.h b/dm/games/0100000000010000/dmsh_chain.h index 558296e..49427c2 100644 --- a/dm/games/0100000000010000/dmsh_chain.h +++ b/dm/games/0100000000010000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 0100000000010000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "123e7650b527" +#define DMSH_CHAIN "d4c4453854a2" diff --git a/dm/games/010015100B514000/c1_full.tsv b/dm/games/010015100B514000/c1_full.tsv index 6e63738..c953b40 100644 --- a/dm/games/010015100B514000/c1_full.tsv +++ b/dm/games/010015100B514000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-8c8ebaa0059a 2026-10-18T10:29:59+08:00 +# chain b-4c64982e23bf 2026-10-18T23:48:25+08:00 35cbc686dd8461b8 4872bec9a5567f8b 54a618792b2d5f0f diff --git a/dm/games/010015100B514000/dmsh_chain.h b/dm/games/010015100B514000/dmsh_chain.h index 1128330..e7a0e70 100644 --- a/dm/games/010015100B514000/dmsh_chain.h +++ b/dm/games/010015100B514000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 010015100B514000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "8c8ebaa0059a" +#define DMSH_CHAIN "4c64982e23bf" diff --git a/dm/games/010028600EBDA000/dmsh_chain.h b/dm/games/010028600EBDA000/dmsh_chain.h index 7399665..1a31e72 100644 --- a/dm/games/010028600EBDA000/dmsh_chain.h +++ b/dm/games/010028600EBDA000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 010028600EBDA000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "fe21bb337dab" +#define DMSH_CHAIN "fa0edc540e9a" diff --git a/dm/games/01002B00111A2000/dmsh_chain.h b/dm/games/01002B00111A2000/dmsh_chain.h index 1285467..896bdec 100644 --- a/dm/games/01002B00111A2000/dmsh_chain.h +++ b/dm/games/01002B00111A2000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 01002B00111A2000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "6322afcaa206" +#define DMSH_CHAIN "5f57cfae0ff6" diff --git a/dm/games/01003FC01670C000/c1_full.tsv b/dm/games/01003FC01670C000/c1_full.tsv index aa928c3..809772d 100644 --- a/dm/games/01003FC01670C000/c1_full.tsv +++ b/dm/games/01003FC01670C000/c1_full.tsv @@ -1 +1 @@ -# chain b-1c784ff32922 2026-10-18T09:51:27+08:00 +# chain b-9e8a8bed7481 2026-10-18T23:25:23+08:00 diff --git a/dm/games/01003FC01670C000/dmsh_chain.h b/dm/games/01003FC01670C000/dmsh_chain.h index 3d27578..4eb551a 100644 --- a/dm/games/01003FC01670C000/dmsh_chain.h +++ b/dm/games/01003FC01670C000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 01003FC01670C000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "1c784ff32922" +#define DMSH_CHAIN "9e8a8bed7481" diff --git a/dm/games/0100535012974000/dmsh_chain.h b/dm/games/0100535012974000/dmsh_chain.h index d5dea3c..9d5fb1e 100644 --- a/dm/games/0100535012974000/dmsh_chain.h +++ b/dm/games/0100535012974000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 0100535012974000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "3aa49d130ba8" +#define DMSH_CHAIN "907d5c3232ae" diff --git a/dm/games/010055D009F78000/c1_full.tsv b/dm/games/010055D009F78000/c1_full.tsv index 1a07db2..c73ab80 100644 --- a/dm/games/010055D009F78000/c1_full.tsv +++ b/dm/games/010055D009F78000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-d2524031d033 2026-10-18T15:24:03+08:00 +# chain b-020352bb86fa 2026-10-18T23:25:58+08:00 a936529cf487e4e0 bf81dc122c781790 diff --git a/dm/games/010055D009F78000/dmsh_chain.h b/dm/games/010055D009F78000/dmsh_chain.h index 7ec5a17..89c7ce6 100644 --- a/dm/games/010055D009F78000/dmsh_chain.h +++ b/dm/games/010055D009F78000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 010055D009F78000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "d2524031d033" +#define DMSH_CHAIN "020352bb86fa" diff --git a/dm/games/01006BB00C6F0000/dmsh_chain.h b/dm/games/01006BB00C6F0000/dmsh_chain.h index 6777cc4..ea12923 100644 --- a/dm/games/01006BB00C6F0000/dmsh_chain.h +++ b/dm/games/01006BB00C6F0000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 01006BB00C6F0000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "7363976f0e53" +#define DMSH_CHAIN "d84b01f127bd" diff --git a/dm/games/01007EF00011E000/dmsh_chain.h b/dm/games/01007EF00011E000/dmsh_chain.h index e865a38..46df90e 100644 --- a/dm/games/01007EF00011E000/dmsh_chain.h +++ b/dm/games/01007EF00011E000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 01007EF00011E000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "428aef474fa8" +#define DMSH_CHAIN "c2bffc1b7bae" diff --git a/dm/games/010093801237C000/c1_full.tsv b/dm/games/010093801237C000/c1_full.tsv index 88b1bb0..18080c8 100644 --- a/dm/games/010093801237C000/c1_full.tsv +++ b/dm/games/010093801237C000/c1_full.tsv @@ -1,3 +1,3 @@ -# chain b-1865e500180e 2026-10-18T11:16:10+08:00 +# chain b-c1dfcd9e019a 2026-10-18T23:25:13+08:00 57eb9f0bae677756 f826f2b59cfa39a8 diff --git a/dm/games/010093801237C000/dmsh_chain.h b/dm/games/010093801237C000/dmsh_chain.h index c4a28b6..d1fb061 100644 --- a/dm/games/010093801237C000/dmsh_chain.h +++ b/dm/games/010093801237C000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 010093801237C000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "1865e500180e" +#define DMSH_CHAIN "c1dfcd9e019a" diff --git a/dm/games/0100A6301214E000/dmsh_chain.h b/dm/games/0100A6301214E000/dmsh_chain.h index dc56293..ede2500 100644 --- a/dm/games/0100A6301214E000/dmsh_chain.h +++ b/dm/games/0100A6301214E000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 0100A6301214E000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "32031379f5b9" +#define DMSH_CHAIN "26bf029c37b4" diff --git a/dm/games/0100F2C0115B6000/c1_full.tsv b/dm/games/0100F2C0115B6000/c1_full.tsv index 5b8ddad..d345f8f 100644 --- a/dm/games/0100F2C0115B6000/c1_full.tsv +++ b/dm/games/0100F2C0115B6000/c1_full.tsv @@ -1,4 +1,4 @@ -# chain b-29bb51ae3ce7 2026-10-18T11:41:59+08:00 +# chain b-e1b1691d9514 2026-10-18T23:35:28+08:00 35cbc686dd8461b8 4872bec9a5567f8b 759c14c6d029f531 diff --git a/dm/games/0100F2C0115B6000/dmsh_chain.h b/dm/games/0100F2C0115B6000/dmsh_chain.h index 7b418db..5d2922d 100644 --- a/dm/games/0100F2C0115B6000/dmsh_chain.h +++ b/dm/games/0100F2C0115B6000/dmsh_chain.h @@ -1,2 +1,2 @@ // 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 0100F2C0115B6000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-/ -#define DMSH_CHAIN "29bb51ae3ce7" +#define DMSH_CHAIN "e1b1691d9514" diff --git a/dm/gfx/tools/dmsh_build.py b/dm/gfx/tools/dmsh_build.py index 2abe593..b04fd74 100644 --- a/dm/gfx/tools/dmsh_build.py +++ b/dm/gfx/tools/dmsh_build.py @@ -2,7 +2,7 @@ # B 路线离线出包:Switch 原版着色器 → SPIR-V(dmsh_xlate,Ryujinx 翻译器)→ spirv-cross MSL → metallib + 回放反射 JSON。 # 运行时不翻译(iOS 无 JIT):产物进着色器缓存目录,文件名 = Switch 控制段键(dm_ctl_sha16,与 shader_map.tsv 第 4 列同)+「_b」。 # 查询作答来源:游戏档案里的作答表 dm/games/<名>/shader_facts.tsv(dmsh_facts.py)——贴图类型、顶点属性 / 片元输出分量类型、计算线程组大小与共享内存;出包不需要 PC 版文件。 -# 用法:dmsh_build.py <输出缓存目录> [键…](不给键 = 全部);产物实际写进 <输出缓存目录>/b-<链版本>/(IOSOUT 同),链版本见 dmsh_chain.py 环境:DM_GAME=游戏档案(缺省 smbw,dm/games/),XLATE=翻译工具路径(缺省仓内 dmsh_xlate_bin),DMSH_CAS=内容寻址缓存目录(缺省为输出缓存目录/cas),J=并发 +# 用法:dmsh_build.py <输出缓存目录> [键…](不给键 = 全部);产物实际写进 <输出缓存目录>/b-<链版本>/(IOSOUT 同),链版本见 dmsh_chain.py 环境:DM_GAME=游戏档案(缺省 smbw,dm/games/),XLATE=翻译工具路径(缺省仓内 dmsh_xlate_bin),DMSH_CAS=内容寻址缓存目录(缺省为输出缓存目录/cas),DMSH_PREFILL=Mac 库根目录[=iOS 库根目录](以 : 分隔,其下 b-*/ 先收进按 MSL 的编译缓存,同级的 b-*/ 总是收),J=并发 # 程序本体内嵌的图形着色器(映射表 main.rodata@偏移 行)从 MAIN(Switch main NSO,缺省 3.3.94012 Update/ExeFS/main)解出;解 NSO 要 lz4,用 dm 的 venv python 跑 # 产物:<键>_b.metallib、<键>_b.json(回放反射,含驱动段 c0 / c2 的运行时读取偏移 drv_reads)、<键>_b.metal(MSL) # 环境 IOSOUT=目录:同一份 MSL 经 dm/ios/tools/ios_metal.compile 同时出 iphoneos metallib + 反射(chain_metal 记 iOS 编译口径) @@ -10,7 +10,7 @@ # Route B offline build: original Switch shaders → SPIR-V (dmsh_xlate, the Ryujinx translator) → spirv-cross MSL → metallib + replay reflection JSON. # No translation at runtime (iOS has no JIT): build output goes into the shader cache directory, file name = Switch control segment key (dm_ctl_sha16, same as column 4 of shader_map.tsv) + "_b". # Source of query answers: the answer table in the game profile, dm/games//shader_facts.tsv (dmsh_facts.py) - texture types, vertex attribute / fragment output component types, compute thread group size and shared memory; the build needs no PC version files. -# Usage: dmsh_build.py [key...] (no keys = all); build output is actually written to /b-/ (same for IOSOUT), for the chain version see dmsh_chain.py Environment: DM_GAME=game profile (default smbw, dm/games/), XLATE=path to the translation tool (default the in-repo dmsh_xlate_bin), DMSH_CAS=content-addressed cache dir (default /cas), J=concurrency +# Usage: dmsh_build.py [key...] (no keys = all); build output is actually written to /b-/ (same for IOSOUT), for the chain version see dmsh_chain.py Environment: DM_GAME=game profile (default smbw, dm/games/), XLATE=path to the translation tool (default the in-repo dmsh_xlate_bin), DMSH_CAS=content-addressed cache dir (default /cas), DMSH_PREFILL=Mac library root[=iOS library root] (separated by :, their b-*/ go into the MSL-keyed compile cache first; sibling b-*/ always do), J=concurrency # Graphics shaders embedded in the executable itself (mapping table rows main.rodata@offset) are extracted from MAIN (Switch main NSO, default 3.3.94012 Update/ExeFS/main); extracting the NSO needs lz4, run with dm's venv python # Build output: _b.metallib, _b.json (replay reflection, including drv_reads, the runtime read offsets into driver segments c0 / c2), _b.metal (MSL) # Environment IOSOUT=dir: the same MSL also goes through dm/ios/tools/ios_metal.compile to produce an iphoneos metallib + reflection (chain_metal records the iOS compile convention) @@ -19,7 +19,7 @@ import ast, inspect, os, re, sys, json, struct, hashlib, shutil, subprocess, tem DM_ROOT = os.environ.get('DM_ROOT') or os.path.expanduser('~/dm-work') # 工作区根目录(游戏文件、产物、运行现场都在它下面) | Workspace root (game files, build outputs and run artifacts are all under it) HOME = os.path.expanduser('~') dm_dir, out = sys.argv[1:3]; want = set(sys.argv[3:]); cache_root = out -sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))); import dmsh_chain, dmsh_fetch, dmsh_facts # 翻译链版本:先核工具与锁文件,产物进 b-/ | translation chain version: verify the tools against the lock file first; build output goes into b-/ +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))); import dmsh_chain, dmsh_fetch, dmsh_facts, dmsh_mtlcache # 翻译链版本:先核工具与锁文件,产物进 b-/ | translation chain version: verify the tools against the lock file first; build output goes into b-/ _bad = dmsh_chain.check_tools() if _bad: sys.exit('\n'.join('【红】翻译链工具与锁文件不符:' + b for b in _bad) + '\n(换了工具就 dmsh_chain.py --update-lock 并入仓;只是没重编翻译器就重编)') CHAIN = dmsh_chain.version(); out = os.path.join(out, 'b-' + CHAIN) @@ -46,6 +46,9 @@ PRE_STATS = collections.Counter() # Super Mario Odyssey draws a depth pre-pass with alRenderDepthOnly, then the G-buffer with another vertex shader and depth test less-or-equal: a hair off and the test failed, leaving those pixels with old content (Cap Kingdom's ground in 32x32 blocks) MAC_METAL = ['xcrun', '-sdk', 'macosx', 'metal', '-c', '-fpreserve-invariance'] MAC_RECORD = ' '.join(MAC_METAL) + '; xcrun -sdk macosx metallib' +def mac_compile(msl, air, lib): # 同 ios_metal.compile 的接口 | same interface as ios_metal.compile + subprocess.run([*MAC_METAL, msl, '-o', air], check=True) + subprocess.run(['xcrun', '-sdk', 'macosx', 'metallib', air, '-o', lib], check=True) # 贴图句柄表(贴图指令立即数句柄所在的驱动段):马力欧(NVN 55)是 0x20 + 8 r、32 槽——全库 4888 个着色器的立即数句柄恰是 0x20..0xF0、步长 8(D2R 的旧驱动是 0x168)。 # 本作只用合并句柄(nvnCommandBufferBindTexture),没有分离采样器;图像句柄表仍在 0x120 + 8 r(8 槽,紧接贴图表之后;agl 的 10 个计算着色器实测 0x120 / 0x128 / 0x130,与 D2R 同址)。 # Texture handle table (the driver segment holding texture instructions' immediate handles): Mario (NVN 55) uses 0x20 + 8 r, 32 slots - the immediate handles of all 4888 shaders are exactly 0x20..0xF0 in steps of 8 (D2R's older driver used 0x168). @@ -64,13 +67,9 @@ def records(d): r = [m.start() for m in re.finditer(b'BTCDBTCD', d)] return [d[x:(r[k + 1] if k + 1 < len(r) else len(d))] for k, x in enumerate(r)] -def clone(src, dst): +def clone(src, dst): # APFS 写时复制,否则普通复制;用 clonefile 调用而不起 cp:本进程内存大,fork 一次约 6 ms | APFS copy-on-write, else a plain copy; the clonefile call, not a cp: a fork of this large process costs about 6 ms os.makedirs(os.path.dirname(dst), exist_ok=True) - tmp = dst + '.tmp-' + str(os.getpid()) + '-' + str(threading.get_ident()) - r = subprocess.run(['cp', '-c', src, tmp], stdout=subprocess.DEVNULL, stderr=subprocess.PIPE, timeout=60) - if r.returncode: - shutil.copyfile(src, tmp) - os.replace(tmp, dst) + dmsh_mtlcache.clone(src, dst) def atomic_json(path, value): os.makedirs(os.path.dirname(path), exist_ok=True) @@ -216,9 +215,8 @@ def fetch_finish(key, src, refl): open(fmsl, 'w').write(fv) fair = fmsl[:-6] + '.air'; flib = os.path.join(out, key + '_bf.metallib') try: - subprocess.run([*MAC_METAL, fmsl, '-o', fair], check=True) tmp_flib = flib + '.tmp-' + str(os.getpid()) - subprocess.run(['xcrun', '-sdk', 'macosx', 'metallib', fair, '-o', tmp_flib], check=True) + mac_compile(fmsl, fair, tmp_flib) os.replace(tmp_flib, flib) ilib = None if IOSOUT: @@ -517,7 +515,7 @@ def vs_depth(src): def finish(key, w, j, c1): name, k = loc[key] - msl = os.path.join(w, key + '.metal'); air = msl[:-6] + '.air'; lib = os.path.join(out, key + '_b.metallib') + msl = os.path.join(w, key + '.metal'); lib = os.path.join(out, key + '_b.metallib') r = subprocess.run(['spirv-cross', *XC, os.path.join(w, key + '.spv'), '--output', msl], capture_output=True, text=True) if r.returncode: return 'MSL 失败', r.stderr.strip()[:160], None src = open(msl).read() @@ -540,19 +538,12 @@ def finish(key, w, j, c1): src, full = vs_depth(src) open(msl, 'w').write(full) res = json.load(open(os.path.join(w, key + '.res.json'))) - try: - subprocess.run([*MAC_METAL, msl, '-o', air], check=True) - tmp_lib = lib + '.tmp-' + str(os.getpid()) - subprocess.run(['xcrun', '-sdk', 'macosx', 'metallib', air, '-o', tmp_lib], check=True) - os.replace(tmp_lib, lib) + try: MTL.compile('mac', msl, lib) # MSL 与以前编过的一样就直接取那次的库(dmsh_mtlcache.py) | MSL identical to one compiled before takes that library (dmsh_mtlcache.py) except subprocess.CalledProcessError as e: return 'metal 失败', str(e)[:160], None clone(msl, os.path.join(out, key + '_b.metal')) if IOSOUT: # iOS:同一份 MSL 走 iOS 的唯一编译口径(dm/ios/tools/ios_metal.py)出 iphoneos metallib | iOS: the same MSL goes through iOS's single compile convention (dm/ios/tools/ios_metal.py) to produce an iphoneos metallib - ilib = os.path.join(IOSOUT, key + '_b.metallib') - try: - ios_metal.compile(msl, msl[:-6] + '.ios.air', ilib + '.tmp') - os.replace(ilib + '.tmp', ilib) + try: MTL.compile('ios', msl, os.path.join(IOSOUT, key + '_b.metallib')) except subprocess.CalledProcessError as e: return 'iOS metal 失败', str(e)[:160], None entry = re.search(r'(vertex|fragment|kernel)\s+\S+\s+(\w+)\s*\(', src) dr = drv_reads(src) @@ -570,6 +561,13 @@ keys = sorted(want) if want else sorted(loc) NJ = int(os.environ.get('J', '8')) os.makedirs(out, exist_ok=True) w = tempfile.mkdtemp(prefix='dmsh_', dir=os.environ.get('WORK')) +MTL = dmsh_mtlcache.Cache(os.path.join(CAS, 'metallib'), {'mac': ('macosx', MAC_RECORD, mac_compile), **({'ios': ('iphoneos', ios_metal.RECORD, ios_metal.compile)} if IOSOUT else {})}, w) +# 先收下早先的链版本留在盘上的库:输出目录同级的 b-*/(iOS 取同名目录)与 DMSH_PREFILL 列的根目录 | first take the libraries earlier chain versions left on disk: the b-*/ beside the output (iOS: the folder of the same name) and the roots DMSH_PREFILL lists +for _spec in [cache_root + ('=' + os.path.dirname(IOSOUT) if IOSOUT else '')] + [x for x in os.environ.get('DMSH_PREFILL', '').split(os.pathsep) if x]: + _mac, _, _ios = _spec.partition('=') + for _b in sorted(os.listdir(_mac)) if os.path.isdir(_mac) else []: + if _b.startswith('b-') and os.path.realpath(os.path.join(_mac, _b)) != os.path.realpath(out): + for _ln in MTL.fill(os.path.join(_mac, _b), os.path.join(_ios, _b) if _ios else None): print(_ln, flush=True) packs, jobs, c1s = {}, {}, {} digests, rule_fps, cache_reasons, cache_hits = {}, {}, {}, set() for key in keys: @@ -619,6 +617,7 @@ print(f'前置缓存:命中 {PRE_STATS["hit"]},重出 {PRE_STATS["miss"]}') for reason in ('新键', '规则变', '代码指纹变化:全部重出'): if PRE_STATS[reason]: print(f' {reason} {PRE_STATS[reason]}') print(f'变体缓存:生成 {BF_STATS["generated"]},命中 {BF_STATS["hit"]},重出 {BF_STATS["miss"]},编译 {BF_STATS["compile"]}') +print(MTL.summary()) for lvl in [k for k in st if k != 'ok']: for e, n in collections.Counter(r[2] for r in res if r[1] == lvl).most_common(10): print(f' [{lvl}] {n:5d} {e}') ok = [r[3] for r in res if r[1] == 'ok'] diff --git a/dm/gfx/tools/dmsh_chain.lock b/dm/gfx/tools/dmsh_chain.lock index b39ba13..8e25e7f 100644 --- a/dm/gfx/tools/dmsh_chain.lock +++ b/dm/gfx/tools/dmsh_chain.lock @@ -1,8 +1,8 @@ # 翻译链工具指纹(dmsh_chain.py --update-lock 生成;换工具后重生成并随提交入仓) -dmsh_xlate.dll bde0f0e23d095ae5 -Ryujinx.Graphics.Shader.dll 950b659a54a52636 -Ryujinx.Common.dll 74f785bc3a81386e -xlate_source 41339b01f7cde45f +dmsh_xlate.dll e85245171dbb3310 +Ryujinx.Graphics.Shader.dll 011c50cb1c08e44f +Ryujinx.Common.dll 5222da62ffb43db1 +xlate_source e5e4cf3ed43f05a2 spirv-cross d9dc197f061b42a5 metal_macosx Apple metal version 32023.921 (metalfe-32023.921.6) metal_iphoneos Apple metal version 32023.921 (metalfe-32023.921.6) diff --git a/dm/gfx/tools/dmsh_mtlcache.py b/dm/gfx/tools/dmsh_mtlcache.py new file mode 100644 index 0000000..6ca4323 --- /dev/null +++ b/dm/gfx/tools/dmsh_mtlcache.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +# Compiled-shader cache keyed by the Metal source (dmsh_build.py): a library is compiled once per (MSL text, compile convention, compiler), so a chain change +# that leaves a shader's MSL as it was (a translator fix, a new rule for other shaders) costs that shader no Metal compile. The Metal compiler is deterministic: +# the same MSL with the same flags gives a byte-identical metallib (checked for macOS and iOS), which is what makes reuse safe. +# Layout: //<2 hex>/.metallib, digest = sha256 over FORMAT, the target's compile convention (the record written into json chain_metal), +# the compiler's identity (metal / metallib --version without the install path, the SDK version and build) and the MSL bytes. +# Filling from earlier builds: a Mac b-/ folder holds _b.metal (the exact source that was compiled) beside _b.metallib, and the iOS b-/ folder +# of the same chain holds the iOS libraries of the same sources. A folder is taken only when its json chain_metal is the current convention and a fresh compile of +# a few of its shaders (two per stage) reproduces their libraries byte for byte; each folder is read once (filled.json remembers it by its number of libraries). +# Not part of the chain version (dmsh_chain.py): the cache never changes an output, it only skips recompiling one. Change FORMAT when what it stores changes. +import os, re, json, shutil, ctypes, hashlib, threading, subprocess, collections + +FORMAT = b'dmsh_mtlcache 1' +_clonefile = getattr(ctypes.CDLL(None, use_errno=True), 'clonefile', None) # APFS copy-on-write copy (no data written); elsewhere a plain copy + + +def clone(src, dst): + tmp = f'{dst}.tmp-{os.getpid()}-{threading.get_ident()}' + if _clonefile is None or _clonefile(os.fsencode(src), os.fsencode(tmp), 0) != 0: shutil.copyfile(src, tmp) + os.replace(tmp, dst) + + +def compiler_id(sdk): + def run(*a): return subprocess.run(['xcrun', '-sdk', sdk, *a], capture_output=True, text=True).stdout + tools = ''.join(run(t, '--version') for t in ('metal', 'metallib')) + return re.sub(r'(?m)^InstalledDir:.*\n?', '', tools) + run('--show-sdk-version') + run('--show-sdk-build-version') # the install path changes with each toolchain mount + + +class Cache: + def __init__(self, root, targets, work): + """targets: {name: (sdk, record, compile)}, compile(msl, air, lib) as ios_metal.compile; work: a folder for temporary .air files""" + self.root, self.targets, self.work = root, targets, work + self.ident = {t: hashlib.sha256(FORMAT + b'\0' + rec.encode() + b'\0' + compiler_id(sdk).encode()).digest() for t, (sdk, rec, _) in targets.items()} + self.stats, self.lock = collections.Counter(), threading.Lock() + + def path(self, target, src): + d = hashlib.sha256(self.ident[target] + b'\0' + src).hexdigest() + return os.path.join(self.root, target, d[:2], d + '.metallib') + + def count(self, what, n=1): + with self.lock: self.stats[what] += n + + def _compile(self, target, msl, lib): + air = os.path.join(self.work, f'mtlcache-{target}-{os.getpid()}-{threading.get_ident()}.air') + try: self.targets[target][2](msl, air, lib) + finally: + if os.path.exists(air): os.unlink(air) + + def compile(self, target, msl, lib): + """msl → lib for target: a clone of the library that the same source compiled to before, or a compile (then kept). Raises CalledProcessError as the compile does""" + p = self.path(target, open(msl, 'rb').read()) + if os.path.exists(p): + clone(p, lib); self.count((target, 'reused')); return + tmp = f'{lib}.tmp-{os.getpid()}-{threading.get_ident()}' + self._compile(target, msl, tmp) + os.replace(tmp, lib) + os.makedirs(os.path.dirname(p), exist_ok=True); clone(lib, p); self.count((target, 'compiled')) + + def _check(self, target, d, stems, mac_dir): + """None if folder d was built with the current convention and compiler, else why not""" + rec, picks = self.targets[target][1], collections.defaultdict(list) + for stem in stems[::max(1, len(stems) // 24)]: + try: j = json.load(open(os.path.join(d, stem + '.json'))) + except (OSError, ValueError): return f'no readable {stem}.json' + if j.get('chain_metal') != rec: return f'built with "{j.get("chain_metal")}"' + if len(picks[j.get('stage')]) < 2: picks[j.get('stage')].append(stem) + for stem in (s for v in picks.values() for s in v): + tmp = os.path.join(self.work, f'mtlcache-check-{target}.metallib') + try: self._compile(target, os.path.join(mac_dir, stem + '.metal'), tmp) + except subprocess.CalledProcessError: return f'{stem}.metal does not compile now' + same = open(tmp, 'rb').read() == open(os.path.join(d, stem + '.metallib'), 'rb').read(); os.unlink(tmp) + if not same: return f'a fresh compile of {stem}.metal differs from its library' + return None + + def fill(self, mac_dir, ios_dir=None): + """Takes the libraries of an earlier build: mac_dir = its Mac b-/ folder, ios_dir = the iOS folder of the same chain (or None). Returns the lines to print""" + stamp_file = os.path.join(self.root, 'filled.json') + try: stamps = json.load(open(stamp_file)) + except (OSError, ValueError): stamps = {} + names = set(os.listdir(mac_dir)); stems = sorted(n[:-6] for n in names if n.endswith('_b.metal')) + todo, notes = {}, [] + for target, d in (('mac', mac_dir), ('ios', ios_dir)): + if target not in self.targets or not d or not os.path.isdir(d): continue + libs = names if d == mac_dir else set(os.listdir(d)) + have = [s for s in stems if s + '.metallib' in libs]; key = os.path.realpath(d) + if not have or stamps.get(key) == len(have): continue + why = self._check(target, d, have, mac_dir) + if why: notes.append(f'Metal cache: not filled from {d}: {why}') + else: todo[target] = (d, set(have)) + stamps[key] = len(have) + added = collections.Counter() + for stem in stems: + ts = [t for t, (d, have) in todo.items() if stem in have] + if not ts: continue + src = open(os.path.join(mac_dir, stem + '.metal'), 'rb').read() + for t in ts: + p = self.path(t, src) + if os.path.exists(p): continue + os.makedirs(os.path.dirname(p), exist_ok=True); clone(os.path.join(todo[t][0], stem + '.metallib'), p); added[t] += 1 + for t, (d, have) in todo.items(): + self.count((t, 'filled'), added[t]); notes.append(f'Metal cache: {added[t]} {t} libraries added from {d} ({len(have)} there)') + os.makedirs(self.root, exist_ok=True) + tmp = f'{stamp_file}.tmp-{os.getpid()}'; json.dump(stamps, open(tmp, 'w'), indent=1); os.replace(tmp, stamp_file) + return notes + + def summary(self): + s = self.stats + return 'Metal cache: ' + '; '.join(f'{t} {s[t, "reused"]} reused, {s[t, "compiled"]} compiled' + (f', {s[t, "filled"]} filled from earlier builds' if s[t, 'filled'] else '') + for t in self.targets) diff --git a/dm/gfx/tools/dmsh_xlate/Program.cs b/dm/gfx/tools/dmsh_xlate/Program.cs index bcc3ba3..bc4fa02 100644 --- a/dm/gfx/tools/dmsh_xlate/Program.cs +++ b/dm/gfx/tools/dmsh_xlate/Program.cs @@ -101,6 +101,21 @@ static class SwshXlate // 作业 reduced = true:放宽精度——翻译器只给强制精确的运算打 NoContraction(缺省全部打:保持 Maxwell 分开舍入的逐位结果,代价是 MSL 里大量禁优化的 spvFMul 等) // Job reduced = true: relaxed precision - the translator marks NoContraction only on operations that must be exact (the default marks all: keeps the bit-exact results of Maxwell's separate rounding, at the cost of many optimization-disabled spvFMul etc. in the MSL) public bool QueryHostReducedPrecision() => _job["reduced"] is JsonNode n && (bool)n; + // Job softfloat64 = true: the host has no FP64, so Ryujinx's DoubleToFloat pass lowers double operations to float (Metal has no double type). Set only on the retry of a + // shader whose first translation declared a 64-bit float (see Main): answering "no" for every shader would also drop the Float64 capability from all the others + public bool QueryHostSupportsShaderFloat64() => !(_job["softfloat64"] is JsonNode n && (bool)n); + } + + // True when the SPIR-V declares a 64-bit float type (OpTypeFloat 64): SPIRV-Cross then writes double, which the Metal compiler rejects + static bool UsesFloat64(byte[] spirv) + { + for (int i = 20; i + 12 <= spirv.Length; ) + { + uint word = BitConverter.ToUInt32(spirv, i); + if ((word & 0xffff) == 22 && (word >> 16) == 3 && BitConverter.ToUInt32(spirv, i + 8) == 64) return true; + i += Math.Max(1, (int)(word >> 16)) * 4; + } + return false; } static int Main(string[] args) @@ -126,7 +141,13 @@ static class SwshXlate var flags = (job["debug"] is JsonNode dbg && !(bool)dbg ? 0 : TranslationFlags.DebugMode) | ((string)job["stage"] == "cs" ? TranslationFlags.Compute : 0); var ctx = Translator.CreateContext(0, acc, new TranslationOptions(TargetLanguage.Spirv, TargetApi.Vulkan, flags)); ShaderProgram p = ctx.Translate(); - File.WriteAllBytes(Path.Combine(outDir, key + ".spv"), p.BinaryCode); + if (UsesFloat64(p.BinaryCode)) // Tears of the Kingdom 1.4.3: 30 shaders used double and failed in the Metal compiler + { + job["softfloat64"] = true; acc = new Accessor(code, job); + ctx = Translator.CreateContext(0, acc, new TranslationOptions(TargetLanguage.Spirv, TargetApi.Vulkan, flags)); + p = ctx.Translate(); acc.Notes.Add("FP64 lowered to FP32 (DoubleToFloat)"); + } + File.WriteAllBytes(Path.Combine(outDir, key + ".spv"), VertexCounterLowering.Apply(code, (string)job["stage"], p.BinaryCode, acc.Notes)); var res = new JsonObject { ["key"] = key, ["stage"] = (string)job["stage"], ["notes"] = new JsonArray(acc.Notes.ConvertAll(n => (JsonNode)n).ToArray()), @@ -146,3 +167,48 @@ static class SwshXlate return bad == 0 ? 0 : 1; } } + +// Tears of the Kingdom 1.4.3 visibility counter (one vertex shader, exact code SHA-256 below): each invocation that passes its test joins a subgroup ballot, and the +// highest active lane adds popcount(ballot) to s1[0]. SPIRV-Cross cannot give a Metal vertex function the subgroup builtins ("Subgroup builtins are not available in +// this type of function"), so the shader never built and its draws were skipped. Lowered to singleton groups: lane id 0 and ballot(true) = (1, 0, 0, 0), so every passing +// invocation adds one; the atomic's result is unused, so the final sum (mod 2^32) is the same. Not a general subgroup fallback: it runs only on these analysed bytes. +// Adapted from MacNativeGames (games/totk/tools/totk_xlate/VertexCounterLowering.cs, https://github.com/ly05010419/MacNativeGames), MIT License: dm/third_party/macnativegames/LICENSE. +static class VertexCounterLowering +{ + const string InstanceCodeHash = "F5F4D23149565ACD852F6B7091F64CC8CB3AA019CCB33BA3F88CED62C6D1FF7B"; + + internal static byte[] Apply(byte[] code, string stage, byte[] spirv, List notes) + { + if (stage != "vs" || Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(code)) != InstanceCodeHash) return spirv; + uint[] w = new uint[spirv.Length / 4]; Buffer.BlockCopy(spirv, 0, w, 0, spirv.Length); + uint lane = 0, uintType = 0, vectorType = 0, trueId = 0; int ballots = 0, loads = 0; + for (int i = 5; i < w.Length; i += (int)(w[i] >> 16)) + { + uint op = w[i] & 65535; + if (op == 71 && w[i + 2] == 11 && w[i + 3] == 41) lane = w[i + 1]; // OpDecorate BuiltIn SubgroupLocalInvocationId + if (op == 21 && w[i + 2] == 32 && w[i + 3] == 0) uintType = w[i + 1]; // OpTypeInt 32 unsigned + if (op == 41) trueId = w[i + 2]; // OpConstantTrue + if (op == 339) { vectorType = w[i + 1]; ballots++; if (w[i + 4] != trueId) throw new InvalidOperationException("visibility counter: ballot predicate changed"); } // OpGroupNonUniformBallot + } + if (lane == 0 || uintType == 0 || vectorType == 0 || ballots != 1) throw new InvalidOperationException("visibility counter: SPIR-V shape changed"); + uint zero = w[3]++, one = w[3]++, mask = w[3]++; // new ids past the bound + var result = new List(w.Length + 16); result.AddRange(w.AsSpan(0, 5).ToArray()); + bool constants = false; + for (int i = 5; i < w.Length; i += (int)(w[i] >> 16)) + { + uint op = w[i] & 65535; + if (op == 54 && !constants) // before the first OpFunction: uint 0, uint 1, uvec4(1, 0, 0, 0) + { + result.AddRange(new uint[] { (4u << 16) | 43, uintType, zero, 0, (4u << 16) | 43, uintType, one, 1, (7u << 16) | 44, vectorType, mask, one, zero, zero, zero }); + constants = true; + } + if (op == 61 && w[i + 3] == lane) { result.AddRange(new uint[] { (4u << 16) | 83, w[i + 1], w[i + 2], zero }); loads++; } // OpLoad lane id -> OpCopyObject 0 + else if (op == 339) result.AddRange(new uint[] { (4u << 16) | 83, w[i + 1], w[i + 2], mask }); // ballot(true) -> OpCopyObject (1, 0, 0, 0) + else result.AddRange(w.AsSpan(i, (int)(w[i] >> 16)).ToArray()); + } + if (loads != 1 || !constants) throw new InvalidOperationException("visibility counter: lane id use changed"); + notes.Add("visibility counter lowered to singleton groups (one atomic add per passing vertex)"); + byte[] output = new byte[result.Count * 4]; Buffer.BlockCopy(result.ToArray(), 0, output, 0, output.Length); + return output; + } +} diff --git a/dm/gfx/tools/dmsh_xlate_bin/Ryujinx.Common.dll b/dm/gfx/tools/dmsh_xlate_bin/Ryujinx.Common.dll index 3ed60709b48711d03db7cd71383090d685fa5e27..7daa2b2c29f7949ffcfd987851df8a35af20f5e6 100644 GIT binary patch delta 6338 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 ABLDyZ delta 6342 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 A3jhEB diff --git a/dm/gfx/tools/dmsh_xlate_bin/Ryujinx.Graphics.Shader.dll b/dm/gfx/tools/dmsh_xlate_bin/Ryujinx.Graphics.Shader.dll index d69218b3ba6c81c4a72c9faeb60a1d3c82751041..9fc0180cddce6b535b2dc22817401875443a5bc8 100644 GIT binary patch delta 192805 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

Jo6VWPzL$*@r30Zj&Hi^wCI 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 delta 191812 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�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 YLTRG!)k839+rU8bJKDEud0N8%17AAczW@LL diff --git a/dm/gfx/tools/dmsh_xlate_bin/Spv.Generator.dll b/dm/gfx/tools/dmsh_xlate_bin/Spv.Generator.dll index c4717731c80e6ed7777c7fe4a29d7c90bda93791..4b81741d34fd0c04db5a1a0b40f7c6a663cdb111 100644 GIT binary patch delta 176 zcmZqJz|pXQV?qbZihb9_hCq=N22&t5WH1Mdm;y;71~VXO3KTH{iUUp9 K9xlqXk_iCl{VfOp delta 176 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 WIeqh-TKDw7zoy delta 11567 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%0D~$zLyg@PP#z;6;673QiERs37IAuD8)Bf$G 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 delta 7149 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 diff --git a/dm/gfx/tools/dmsh_xlate_bin/dmsh_xlate.pdb b/dm/gfx/tools/dmsh_xlate_bin/dmsh_xlate.pdb index 97203a9aa18ed2c77545257c74e1adc2467ee1c9..a17633ca1fa1a8c03650af60636cd2c529f2643d 100644 GIT binary patch delta 2946 zcmZ9O2~d}x!kBQbe##9=b#RgMoJTBEnTbsmK;?ZO5(bhISo-~#A^nahvQw}rd|K0oh?)UEY z?($xC+*!9b-PcY;6BgJTkkA8Yfdc#@QK^#XEOp_-A;FB}o;yNM~Q9aAg zSzI|2X+3yb0l3`ZVwJ7ZKG?fQ*HC-v^zZ-ion^~6Z?+si%@Zk~8|E`LIwFoeLo}P! zLtsjVk{|@pZV3ILP>2OGg+P&`SdBc3l|kyC+)CE43i6<70S!0Nm!88>-eit;<#Kc^ zkE6@b9q2wZ0?G0@iiQ%PG$;$ohl-#|=w0X%bPf6%x&_^X9zyB@j#fbe<*&R9=bcV5|fiP_{`bSA*vvA1kp2d>wf$UI~lW zg71JwFl~%|IyioSqegN>fGaRpE2Rn|!I!~@C5{4L!^<^du2}^!;2*)?OXacPN;I|~ zEJJx5nElS<9WYJ@vkvw`U>{9{LqN=Uhy`ST+t@RZ96X6-@T-NMG8=Irq(FJ5RK5|c z9K|d~HHz7qQG>Ijcvh|<-~SyfK#PEEDIfu?8^vq^>Bn%$7!Do9RfrD*PnPN{0f&Qg zC9cGbMEKyymmFsh5DB(O%vMVjxKLuYlB36P%ovUx#cV)v;3DbyOt4`T%Q3M&=9q#2 z6AE*sfKu=q5|2aqRH*{CjpD~}!YF19CW5C)@hRYB@N|jU7G}R{h!dA6`KVEZ8dzT3 zw=!Ccyqvbfs%ROk4(ozVJ)55pVy`7sJPpF|G@H^{un}Z~jie6PXmQ8Hh&GOn!egKm z*m(K?Hj!q)5`7GD9KT#VWEAuoJW6uGs%QnQ8tZ~Bm<6y}ItZ(ymtpnv zK5U3Mrf|_lP(3_Em7>MA!taS?&2!?Acv>a;yVwYxY%Wgh-P3#pyu9d0Ef7a1VA(0b2Ed+D(63;Xq9w7hrMkr!4_hEr5%2T5JA_I* zHQ4O5-sQGaqsuOk)7B=C!{!vo1$7FIUYC1OSGzzR%}%eF@vb3z!&+*hW^%Pso6XZo zHcuNlsatTn$kk4+4)4rnH`%;iH#uB3yNBF@hZ?%PuxlJPTo-K~G-h#nyf&v7B{qk{ zg%nX84lj8CVA2_#XAe<(+RCu6DMbPg-@fd`YYD)gb3I zZ?5|iYwToTxOy-@{M_*4=Mpz89O}Fo_NR|hFMT$oD(gQSmgcT`uPvn}{iBk{!_|N6 z={cNPhLYCvSL0l7#UEJy-KibrzIjK#zhJAoS^m4qsDBSyP4E0=XYcSk zL$*)OZ_WB4qwl?uzbPIif4HkNGy{I zFy+ffUo2aundaPE{o8}PD@LXateN$&f1s-GV%V-5Rn3|!wFNaN-###SCVeo)+?}la zEY2U;kY;x^b_A+5^_lr=8uJ?kv#Ft=*laCmG#QJFO$AoF#a>WUY_b#^3yUp9#sb0I zcTIC#?mPZpYagZHf{L^2JGL9EdrKX!Uf;I)UkkfBTAH0N2QEX8K8*wIVha`d2h zZPMA#hh}VfIPTnk?%o}!>+*PozQ>^n6SA|gt+ef-SQTuNlmBDfJN&?$ zFpBMp*HDOlb)e34E;U%o1?^mLBNsfx1&?vT-*CZ8T<|^@9ND}aXQy#PAjxPeF;E(h z!^3}2iT&zkhaOl><9Qrw@p5$}ji*8#Ir-{Hie?3clpR6-o$~op0|$)9d}W_*!sm|o zWt2Vh*(x&dv^gF3%+p?v0lMFTu&8Jcw z)$_A-XbZ!bK})02>8uQSpwOJ*!x5a5Qxt(NEDs?wEm?^fXi=i>$h^vMBoXXjS5V-dLO$0W6vlqN5l#694Nw)oX|* z25y+2=d=NM*UbGmvkidRRV;o$WYt2d|c`a7)d)I%Uo9KUk CgBvFR delta 2157 zcmZ9N2~bl<7{|XCLJm0$BwT_O0g=OE2v_i?Xq7`$Fp5W&K*CW1C<$JO0inuR@8>bq zPFw3yEr!zZs#>kp)`J;uWwcYpgN{cPZR^NbTBrYgKBpNr^Z#~#-+p`VzI4oOw5$!Y z7ZXwFL{mO8>VPt(;3Y&_SE4*{XpXJ2q`b(ABCUlF)f8&Tp$%{A#~RW`!}kKL(W34> zO9kspb<_0qf$o&CyB*r+7Y5z&Y04_z%@N6_&Xy>YZbT@PfoO!#p%M@T`9l(@9%2J| zKr9gPq!P<=m2e+ZT4qL|R6|f!PdXbgjF7P#M0ju|fZN+kDitT%Y4K766L{@>PBUXp4va<%> zaMZ%_rx>6HUqa`b!4mv5V3x9+m`yklazVY1Sicx7bz&Cd>coA)GO({0k9s@Fog6Gc z0rnFE0>Mfr#v-U!4|eOp?oOPJcn@$NvA-c;PjH~fX%ah8Z#epjj_(nm0*8nk3-$ts zimU*8_h5Ao);KX+kPkRaY##ykbz&*@UvNYqAP$u=Vn8H#tH^$65G8iNZn1w44sc>N zU=TQ3jAyr>r6`EQGTDK$*Wp6Juu`(Wk4%pFu}8zU*PUj-dceoFY7}g590%JKHg_-K z%+)wmyk5cj3b(=!QA7bW1vU^n#1cC^cK-icR?7)vNhnHL+H%lnW~pED3`NgT@TRYA3i1M12RWjAqNGparj! z`9$R#O;m0yGn1{5O!-ArOckYMw3bmhRnQ!&sIrYNsU)M#R>`->G`?0#g^esFRvQ(f zic05Esd*vs-Liwh&#VcH^_OG!?d;dq@_Mu~{qUh5wm#c6w@*!;ci`FNU)SurEHCBk zvSaFUb@<+4{HT}jR^Bbn+*GZ(@r&Yh!|`e7M;e!J(9})3funHn?HQ-Esx$4~Q-i9r zO;48`dAv+3SND_NTsETdY{KD#b@A&u9zU@UHY6o3%f8Y1S!H|2U&B{tXbw#1lcM=i znsM;yO7~>b`lKqyYD4odMYOW*p|L47o3l%1G@S}wk+``idCSUSEw0V&JJZ#g+`1E2 z)DfY3tzrJ&t$(CWlNX2W-PpEPRs4Iv5mjK9%ziTW+Z@hD99H1q_P5 zIC*7P*4?GqhSrqc1EAm!LPEkSYu{1~Y@#>U+<(*&p%~$+p$kacc zKSuZD<^6`3kDgr0yQa>5@ppZvw)5QS<~0{uv!BncpBdR^3%b|->U#8|L*0hQA1uke zy(v9o!MqhEg#*s_Ep!c#ZM)p9RUD^UzB%|=tQ-fT>Yi!I1c zh>g?dn-dF6T627ouE12Fi;Is<(CbY5Qrz}P{Y$IIU87(LHCDYE)0BKWW&6)@2Nqx4 zwSvDD=bvt}Sa8M89UA_K?zqs&w*0MzqqEXCEX+7?#C-li&YXEMW6kB}N~5i!GUiR} ze*1~Dbcdr=t?pMm&i|CMUX^W$yjJ41&!h?tmDdf$ZPr=%P4UJ+UkZ`n6Ii=NMyXWE zKGk3ajginhd~Cv3>hZ^GJca)|j-vFF(#c;!d~@8HAjfRZQN=k{agJ{}$9J6LD(ASx zIsW0AJ;EitGAW#M;k8LVh4|=u4^C4d^U`L?(R-LD-gvl-`D4cke%(YTKVEZI+ywk_ zkt9A@$P!Y8EHPPze6fD87n&vw^>8B}37%K&MhWG~`KF{iPQknD`*TV@MjxoaS1d9& d(Z3fzN$=0O@gM37JmHEcif3OPx7vn9{{acss1pDH diff --git a/dm/third_party/README.md b/dm/third_party/README.md index 44e7dee..1ba38b6 100644 --- a/dm/third_party/README.md +++ b/dm/third_party/README.md @@ -8,11 +8,11 @@ This is code written by others, shipped with the repository so there is nothing | `libdeflate/` | Decompression library | Upstream commit `92e6a0d`, unmodified | Host: zlib decoding of the game's resource blocks (`dm/host/hle_tact.c`). Only the five decompression-related source files are built; they are listed in `dm/host/Makefile` | `libdeflate/COPYING` (MIT) | | `libvpx/` | The VP9 decoder from libvpx: the 71 source files a VP9-decoder-only build compiles, their headers, and the generated configuration in `config/` | v1.17.0 (upstream commit `6df3ec3`), unmodified | Host: decodes the games' VP9 movies (`dm/host/hle_movie.c`). `dm/host/Makefile` builds it into `gen/vpx/libvpx.a`; the iOS build compiles the same files | `libvpx/LICENSE` (BSD 3-Clause), with the patent grant in `libvpx/PATENTS` | | `stb_vorbis/` | Ogg Vorbis decoder, a single file `stb_vorbis.c` | 1.22 (upstream commit `1ee679c`), unmodified | Host: decodes the Vorbis sound tracks of the games' WebM movies (`dm/host/hle_movie.c`, which includes the file with its push-data API only) | `stb_vorbis/LICENSE` (MIT or public domain, your choice; the same text ends `stb_vorbis.c`) | -| `ryujinx/` | The shader translation library from Ryujinx, three projects: `Ryujinx.Graphics.Shader`, `Ryujinx.Common`, `Spv.Generator` | Ryujinx 1.3.2, unmodified | Referenced by the shader translation tool `dm/gfx/tools/dmsh_xlate`, which translates the original Switch shaders to SPIR-V | `ryujinx/LICENSE.txt` (MIT); `ryujinx/src/Spv.Generator/LICENSE` is that subproject's own license text | +| `ryujinx/` | The shader translation library from Ryujinx, three projects: `Ryujinx.Graphics.Shader`, `Ryujinx.Common`, `Spv.Generator` | Ryujinx 1.3.2, with the local changes listed in `ryujinx/README.md` | Referenced by the shader translation tool `dm/gfx/tools/dmsh_xlate`, which translates the original Switch shaders to SPIR-V | `ryujinx/LICENSE.txt` (MIT); `ryujinx/src/Spv.Generator/LICENSE` is that subproject's own license text | | `vulkan-headers/` | The Vulkan C headers: `vulkan_core.h`, `vk_platform.h`, `vulkan_vi.h` and the `vk_video/` headers they include | Vulkan-Headers 1.4.363, unmodified | Host: the Vulkan layer on Metal (`dm/gfx/vk/hle_vk.m`) that runs Hades | `vulkan-headers/LICENSE.md` (Apache-2.0 or MIT, your choice) | A few more notes: - `flip/tool/` also carries three single-header libraries used by the FLIP command-line tool: `stb_image.h` (2.23), `stb_image_write.h` (1.13) and `tinyexr.h`. Their license notices are in the files themselves. - `libdeflate/VERSION.md`, `libvpx/README.md`, `stb_vorbis/README.md`, `ryujinx/README.md` and `vulkan-headers/README.md` record where each came from and what it is used for. -- Three pieces of third-party code live outside this directory: `dm/gfx/nvn/include/nvn.h` (MIT, author named in the file header), the layout size algorithm in `dm/gfx/nvn/nvn_tex.c`, ported from deko3d (zlib license), and in `dm/gfx/nvn/nvn_mtl.m` the GPU widening of 8-bit indices (`wide_*`) and the in-pass clear triangles (`clear_color_tri` / `clear_ds_tri`), adapted from MacNativeGames' `widen_u8_gpu` and `clear_quad` / `clear_ds_quad` (MIT, license text in `macnativegames/LICENSE`). +- Four pieces of third-party code live outside this directory: `dm/gfx/nvn/include/nvn.h` (MIT, author named in the file header), the layout size algorithm in `dm/gfx/nvn/nvn_tex.c`, ported from deko3d (zlib license), and two adapted from MacNativeGames (MIT, license text in `macnativegames/LICENSE`): in `dm/gfx/nvn/nvn_mtl.m` the GPU widening of 8-bit indices (`wide_*`) and the in-pass clear triangles (`clear_color_tri` / `clear_ds_tri`), from its `widen_u8_gpu` and `clear_quad` / `clear_ds_quad`, and the Tears of the Kingdom visibility-counter lowering in `dm/gfx/tools/dmsh_xlate/Program.cs` (`VertexCounterLowering`). diff --git a/dm/third_party/ryujinx/README.md b/dm/third_party/ryujinx/README.md index f85a8fa..c208e76 100644 --- a/dm/third_party/ryujinx/README.md +++ b/dm/third_party/ryujinx/README.md @@ -1,5 +1,10 @@ # Ryujinx shader translator (vendored subset) -Three projects from Ryujinx 1.3.2, unmodified: `Ryujinx.Graphics.Shader`, `Ryujinx.Common` and `Spv.Generator`. +Three projects from Ryujinx 1.3.2: `Ryujinx.Graphics.Shader`, `Ryujinx.Common` and `Spv.Generator`, with these local changes: + +- `Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs`, `GenerateTextureSample`: + - Texel offsets that are not constants (Maxwell AOFFI / TLD4.PTP offsets read from a register) are built with `OpCompositeConstruct` and passed as `Offset`. A four-offset gather becomes four one-offset gathers, each giving component w. Upstream wrote them as an `OpConstantComposite` with `ConstOffset(s)`, which is invalid SPIR-V; SPIRV-Cross threw `nullptr` and the shader never built (2026-10-18: 8 shaders in Wonder, Link's Awakening, Tears of the Kingdom and Age of Calamity). Marked `nxnative:` in the code. + - Texture coordinates that are NaN are replaced by 0 (the `nfZero` select). This came with the first import. + The shader translation tool in `dm/gfx/tools/dmsh_xlate` references them to translate the original Switch shaders to SPIR-V. License: MIT, see `LICENSE.txt`. Upstream: . diff --git a/dm/third_party/ryujinx/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs b/dm/third_party/ryujinx/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs index 79383ec..8ad6ff7 100644 --- a/dm/third_party/ryujinx/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs +++ b/dm/third_party/ryujinx/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs @@ -1308,6 +1308,11 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv lod = Src(coordType); } + // nxnative: texel offsets read from a register (Maxwell AOFFI / PTP from a non-immediate) are not constants. Upstream put them + // into an OpConstantComposite and passed them as ConstOffset / ConstOffsets: invalid SPIR-V, on which SPIRV-Cross throws "nullptr" + // (the shader never builds). Constant offsets keep the old form byte for byte; runtime ones use Offset (see the gather below) + bool offsetsConst = true; + SpvInstruction AssembleOffsetVector(int count) { if (count > 1) @@ -1321,11 +1326,25 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv SpvInstruction vectorType = context.TypeVector(context.TypeS32(), count); + if (Array.Exists(elems, e => e.Opcode != Op.OpConstant)) + { + offsetsConst = false; + + return context.CompositeConstruct(vectorType, elems); + } + return context.ConstantComposite(vectorType, elems); } else { - return Src(AggregateType.S32); + SpvInstruction elem = Src(AggregateType.S32); + + if (elem.Opcode != Op.OpConstant) + { + offsetsConst = false; + } + + return elem; } } @@ -1398,10 +1417,10 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv if (hasOffset) { - operandsMask |= ImageOperandsMask.ConstOffset; + operandsMask |= offsetsConst ? ImageOperandsMask.ConstOffset : ImageOperandsMask.Offset; operandsList.Add(offsets[0]); } - else if (hasOffsets) + else if (hasOffsets && offsetsConst) { operandsMask |= ImageOperandsMask.ConstOffsets; SpvInstruction arrayv2 = context.TypeArray(context.TypeVector(context.TypeS32(), 2), context.Constant(context.TypeU32(), 4)); @@ -1431,6 +1450,25 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv { result = context.ImageFetch(resultType, image, pCoords, operandsMask, operands); } + else if (isGather && hasOffsets && !offsetsConst) + { + // nxnative: ConstOffsets must be constant. Each texel of a four-offset gather is texel (i0, j0) of a gather at that one offset, + // which is component w of its result (gather order: i0j1, i1j1, i1j0, i0j0) + SpvInstruction[] texels = new SpvInstruction[4]; + + for (int index = 0; index < 4; index++) + { + SpvInstruction[] gatherOperands = [.. operands, offsets[index]]; + ImageOperandsMask gatherMask = operandsMask | ImageOperandsMask.Offset; + SpvInstruction texel4 = isShadow + ? context.ImageDrefGather(resultType, image, pCoords, dRef, gatherMask, gatherOperands) + : context.ImageGather(resultType, image, pCoords, compIdx, gatherMask, gatherOperands); + + texels[index] = context.CompositeExtract(context.TypeFP32(), texel4, 3); + } + + result = context.CompositeConstruct(resultType, texels); + } else if (isGather) { if (isShadow) diff --git a/docs/development.md b/docs/development.md index 599c40d..5d3fde1 100644 --- a/docs/development.md +++ b/docs/development.md @@ -101,6 +101,7 @@ GAME=$G W=$W dm/ios/tools/build_ipa.sh [out.ipa] ``` Notes on these steps: +- `dmsh_build.py` compiles each shader's Metal source through a cache keyed by that source, the compile flags and the compiler (`dm/gfx/tools/dmsh_mtlcache.py`, in `/cas/metallib/`). A chain change that leaves a shader's MSL unchanged, such as a translator fix, costs that shader no Metal compile. Before building, the cache takes the libraries of the earlier `b-*/` folders beside its output (and beside `IOSOUT`), and of `DMSH_PREFILL=[=]` (several separated by `:`). It takes a folder only when its recorded flags are the current ones and a fresh compile of a few of its shaders reproduces their libraries byte for byte. The summary line `Metal cache:` shows reused, compiled and filled counts per target. - `build_ipa.sh` takes the rewritten modules from `$W/build/patched_` and the RomFS from `$W/data//RomFS`; `PATCHED` and `ROMFS` override them. - It also bundles a standard font (macOS's Arial Unicode, `STD_FONT=` overrides it) and the generated `nintendo_ext.ttf`. - The icon is the `icon.jpg` that `nx_extract` saves next to `RomFS/`; `DM_ICON=` points at another image.