[PATCH vkd3d v2 4/6] vkd3d-shader: Generate the synthetic name for the temp variable instead of the uniform.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Tue Apr 20 10:30:47 CDT 2021
On 4/20/21 3:15 AM, Matteo Bruni wrote:
> Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
> ---
> I think a better way to handle this is to use a separate temp variable
> for each LOAD of the uniform, thus replacing each uniform LOAD with a
> STORE to a temp variable and a LOAD from that. That way we get less
> register pressure without having to complicate the register allocation
> or liveness computation algorithms. That is assuming that register
> pressure on the temporary registers is quite problematic for SM2 or
> even SM3 shaders since there are so few of them and there is no
> spilling to save the day.
>
> Of course there is a complication with that, that is preserving
> "writes" to uniforms. That could be taken into account pretty simply
> with write tracking, but another option is to do the above
> optimization only when legacy mode is not set (AFAIU writing to
> uniforms / globals is only allowed on older d3dx9 / d3dcompiler
> versions).
>
> Just food for thought. Also, ignore everything if you have something
> fancier already queued up.
>
It's a bit orthogonal to this patch, but yes, I see the point. It's not
clear to me that write tracking isn't more complicated, though.
Personally I'm inclined to leave it alone until it actually does become
a problem.
(as a side note—I don't know if it makes sense to try to code register
limits into the HLSL compiler (or validator). As I understand
wined3d/vkd3d shader translation layers won't care, which removes much
of the reason for us to. Not that wine should be considered
vkd3d-shader's only customer, but...)
More information about the wine-devel
mailing list