[PATCH vkd3d v2 2/9] vkd3d-shader/hlsl: Check types when folding constants.

Zebediah Figura zfigura at codeweavers.com
Tue Mar 29 15:59:33 CDT 2022


On 3/29/22 04:47, Giovanni Mascellani wrote:
> Hi,
> 
> Il 28/03/22 20:35, Zebediah Figura ha scritto:
>> We currently can't construct HLSL_IR_CONSTANT nodes that aren't vectors
>> anyway, though (as evidenced by patch 6/9). Is there a real situation,
>> now or in the future, where we might need this?
> 
> WRT the check on the arguments, as you say no HLSL_IR_CONSTANT object
> should ever be of type > VECTOR, which is why the check is an assert().
> Any assert() is strictly speaking not necessary, but they are useful for
> making the code easier to read.
> 
> As for the check on the result type, let us consider the expression
> "(float1x4)float4(1.0, 2.0, 3.0, 4.0)". Unless I am missing something
> (and supposing that the compiler was able to see "float4(1.0, 2.0, 3.0,
> 4.0)" as a constant), hlsl_fold_constants() would see that it is an
> expression with constant operands, and would try to create an
> HLSL_IR_CONSTANT to accommodate the result, without realizing that it is
> a matrix type. This would introduce an inconsistency. So I think it is
> appropriate to have one additional check.

Right, that makes sense.

> I guess in the long run this problem would go away because eventually
> all matrix types will have been lowered before we go through constant
> folding, but we're not still there.



More information about the wine-devel mailing list