mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
This can save a significant amount of temp registers because it allows to avoid referencing the temp (and having to store it) when not needed. For instance, this patch lowers the number of required temps for the following ps_2_0 shader from 24 to 19: int i; float3x3 mats[4]; float4 main() : sv_target { return mul(mats[i], float3(1, 2, 3)).xyzz; } Also, it is needed for SM1 vertex shader relative addressing since non-constant loads are required to be directly on the uniform ('c' registers) instead of the temp, and non-constant loads cannot be transformed by copy propagation.