A program with any V_MOVREL* instruction declared its whole VGPR file as a 512-entry private array indexed at run time, which Metal spills to thread memory, so every register access became a memory access. Keep one variable per register and resolve relative accesses with a select over the registers the program names. Octopath's instanced vertex shader (1536 x 8124): 112 ms -> 6.4 ms per draw in replay, output byte-identical. |
||
|---|---|---|
| .. | ||
| SharpEmu.Libs.Tests | ||
| SharpEmu.ShaderCompiler.Metal.Tests | ||
| SharpEmu.ShaderCompiler.Tests | ||
| SharpEmu.SourceGenerators.Tests | ||