April 11, 2024
5:51 a.m.
On Thu Apr 11 10:45:37 2024 +0000, Giovanni Mascellani wrote: > Yeah, I still don't like the way that pass is structured and I think it > would be a better idea to rewrite it in terms of a full program copy > like many other passes are structured. But that's an independent issue > that might be addressed at some point: in terms of software design I > think it's better to lump all these smaller changes to the shader in a > single pass. > However, what do you think of refactoring your MR in a manner [similar > to this](https://gitlab.winehq.org/giomasce/vkd3d/-/commits/proposal) > (last three commits)? Sorry for the double comment, but let me add another couple of remarks: * At some point it might happen that the instruction written by one of the helpers called by `vsir_program_lower_instruction()` should itself be processed again. To handle this we could have the switch cases return `VKD3D_OK` when they did something and `VKD3D_FALSE` when they touched nothing, so that the loop in `vsir_program_lower_instruction()` can decide whether to increment the position or not. * Both the TEXKILL and the MAD helpers currently use a TEMP for storing the intermediate values. This should probably become a SSA at some point; even for SM4 there shouldn't be problem for passes to introduce SSAs, provided that they are written only once and the definition point dominates the usage points. The SPIR-V backend should handle them just fine. This has the advantage of not requiring to pass a pointer to all the helpers to coordinate the TEMP index, and I guess in general the less we use TEMPs the better. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/723#note_67587