[PATCH vkd3d 10/12] vkd3d-shader/hlsl: Detect missing loads on rhs when splitting copies of non-numeric types.
Giovanni Mascellani
gmascellani at codeweavers.com
Tue Apr 19 05:44:16 CDT 2022
Hi,
Il 18/04/22 08:34, Giovanni Mascellani ha scritto:
> Otherwise we can get failed assertions:
> assert(node->type == HLSL_IR_LOAD);
> because broadcasts to these types are not implemented yet.
>
> Signed-off-by: Francisco Casas<fcasas at codeweavers.com>
> ---
> libs/vkd3d-shader/hlsl_codegen.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c
> index 73e3b73f..2104c48b 100644
> --- a/libs/vkd3d-shader/hlsl_codegen.c
> +++ b/libs/vkd3d-shader/hlsl_codegen.c
> @@ -628,6 +628,13 @@ static bool split_array_copies(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
> element_type = type->e.array.type;
> element_size = hlsl_type_get_array_element_reg_size(element_type);
>
> + if (rhs->type != HLSL_IR_LOAD)
> + {
> + hlsl_error(ctx, &instr->loc, VKD3D_SHADER_ERROR_HLSL_NOT_IMPLEMENTED,
> + "array store rhs is not HLSL_IR_LOAD, missing broadcast?");
> + return false;
> + }
If the problem here is that the compiler is missing a feature, then I
don't think hlsl_error() is appropriate, because that would be for a
user error. I guess hlsl_fixme() is what should be used here.
Also, notice that the error message is usually formatted with a leading
upper case letter and with a trailing dot (but no trailing newline).
Last, I am not completely sure of what the issue is here, but if
eventually properly implementing other parts of the compiler will make
this code useless, then I'd add a comment saying that.
Thanks, Giovanni.
More information about the wine-devel
mailing list