[PATCH vkd3d 7/8] vkd3d-shader/hlsl: Allow majority modifiers on function declarations.

Francisco Casas fcasas at codeweavers.com
Mon May 9 12:48:37 CDT 2022


Signed-off-by: Francisco Casas <fcasas at codeweavers.com>


May 5, 2022 9:32 AM, "Giovanni Mascellani" <gmascellani at codeweavers.com> wrote:

> Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
> ---
> libs/vkd3d-shader/hlsl.y | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y
> index 9fe454d0..052d7384 100644
> --- a/libs/vkd3d-shader/hlsl.y
> +++ b/libs/vkd3d-shader/hlsl.y
> @@ -2815,14 +2815,18 @@ func_prototype:
> /* var_modifiers is necessary to avoid shift/reduce conflicts. */
> var_modifiers type var_identifier '(' parameters ')' colon_attribute
> {
> + unsigned int modifiers = $1;
> struct hlsl_ir_var *var;
> + struct hlsl_type *type;
> 
> - if ($1)
> + if (modifiers & ~HLSL_MODIFIERS_MAJORITY_MASK)
> {
> hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
> - "Modifiers are not allowed on functions.");
> + "Only majority modifiers are allowed on functions.");
> YYABORT;
> }
> + if (!(type = apply_type_modifiers(ctx, $2, &modifiers, @1)))
> + YYABORT;
> if ((var = hlsl_get_var(ctx->globals, $3)))
> {
> hlsl_error(ctx, &@3, VKD3D_SHADER_ERROR_HLSL_REDEFINED,
> @@ -2831,7 +2835,7 @@ func_prototype:
> "\"%s\" was previously declared here.", $3);
> YYABORT;
> }
> - if (hlsl_types_are_equal($2, ctx->builtin_types.Void) && $7.semantic.name)
> + if (hlsl_types_are_equal(type, ctx->builtin_types.Void) && $7.semantic.name)
> {
> hlsl_error(ctx, &@7, VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC,
> "Semantics are not allowed on void functions.");
> @@ -2840,7 +2844,7 @@ func_prototype:
> if ($7.reg_reservation.type)
> FIXME("Unexpected register reservation for a function.\n");
> 
> - if (!($$.decl = hlsl_new_func_decl(ctx, $2, $5, &$7.semantic, @3)))
> + if (!($$.decl = hlsl_new_func_decl(ctx, type, $5, &$7.semantic, @3)))
> YYABORT;
> $$.name = $3;
> ctx->cur_function = $$.decl;
> -- 
> 2.36.0



More information about the wine-devel mailing list