[PATCH vkd3d 2/3] vkd3d-shader/hlsl: Take writemask into account when emitting a SM4 constant.

Giovanni Mascellani gmascellani at codeweavers.com
Mon Nov 22 04:41:40 CST 2021


Hi,

the patch has already been accepted, but since this discussion also 
concerns more long term work...

On 18/11/21 18:19, Zebediah Figura (she/her) wrote:
>> What I'm getting at is this kind of half one thing, half the opposite
>> is bad. I think we should move towards eventually making struct
>> sm4_instruction a proper IR and every time there is a chance of making
>> progress in that direction we should take it.
> 
> I don't think I see why this is half of anything. We have to translate 
> between the hlsl_ir representation of swizzles and the DXBC 
> representation of swizzles somewhere, why not here?

Agreed, neither I can see what would be the two half things. As I see 
it, write_sm4_instruction is basically a serialization function, which 
is useful as it is and shouldn't do anything else than serialization, 
and struct sm4_instruction is just a way to provide structured input to 
write_sm4_instruction. I find it logical that all processing is done 
before data is fed to write_sm4_instruction, so processing and 
serialization are well separated.

I think it might make sense to have another optimization framework which 
is lower level than IR, but this should happen before 
write_sm4_instruction and be essentially independent of it. It might 
reuse struct sm4_instruction, possibly with some changes to make it 
easier to manipulate (like, for example, store it in a linked list).

If this were to happen, my guess is that it would make sense to have 
this pass at an actual lower level than our current IR, therefore drop 
out knowledge of the IR variables and temporaries, implying that we 
store the "actual" writemasks and swizzles, not those that make sense 
given the IR variables and temporaries. But this can only be evaluated 
once some actual optimization pass is there.

Just my two cents!

Giovanni.



More information about the wine-devel mailing list