On Wed, Apr 20, 2022 at 8:28 PM Zebediah Figura zfigura@codeweavers.com wrote:
On 4/18/22 01:34, Giovanni Mascellani wrote:
Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com
libs/vkd3d-shader/hlsl.y | 87 +++++++++++++++++++++++++- tests/hlsl-matrix-indexing.shader_test | 8 +-- 2 files changed, 88 insertions(+), 7 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index 291f8392..b6a8e496 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y
- var = hlsl_new_synthetic_var(ctx, name, ret_type, *loc);
- if (!var)
return false;
- for (i = 0; i < mat_type->dimx; ++i)
- {
struct hlsl_ir_node *offset;
struct hlsl_ir_store *store;
struct hlsl_ir_load *value;
struct hlsl_ir_constant *c;
if (!(c = hlsl_new_uint_constant(ctx, i, loc)))
return false;
list_add_tail(instrs, &c->node.entry);
if (!(offset = compute_matrix_offset(ctx, instrs, mat_type, &c->node, index, loc)))
return false;
The signature of this function feels awkward to me. Could we fold the subsequent add_load() call into it, and call it something like add_matrix_scalar_load() instead? Note also that it'd be useful for matrix swizzles in that case, since I think we want to stop generating HLSL_IR_SWIZZLE instructions for those.
Yes, we do.