vkd3d-shader/hlsl: Store original semantic name.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov
2024-05-31 12:25:12 +02:00
committed by Henri Verbeet
parent 47d077e5ce
commit 1124ea46ee
Notes: Henri Verbeet 2024-06-11 17:09:32 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/902
4 changed files with 27 additions and 8 deletions

View File

@@ -2335,14 +2335,10 @@ static void declare_var(struct hlsl_ctx *ctx, struct parse_variable_def *v)
if (!(var_name = vkd3d_strdup(v->name)))
return;
new_semantic = v->semantic;
if (v->semantic.name)
if (!hlsl_clone_semantic(ctx, &new_semantic, &v->semantic))
{
if (!(new_semantic.name = vkd3d_strdup(v->semantic.name)))
{
vkd3d_free(var_name);
return;
}
vkd3d_free(var_name);
return;
}
if (!(var = hlsl_new_var(ctx, var_name, type, &v->loc, &new_semantic, modifiers, &v->reg_reservation)))
@@ -6433,6 +6429,9 @@ semantic:
{
char *p;
if (!($$.raw_name = hlsl_strdup(ctx, $2)))
YYABORT;
for (p = $2 + strlen($2); p > $2 && isdigit(p[-1]); --p)
;
$$.name = $2;