mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Forbid referring to typedefs with "struct".
This commit is contained in:
committed by
Henri Verbeet
parent
8ca50a2f7e
commit
c1adf54a44
Notes:
Henri Verbeet
2025-05-14 15:29:22 +02:00
Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1500
@@ -234,6 +234,8 @@ struct hlsl_type
|
||||
/* Offset where the type's description starts in the output bytecode, in bytes. */
|
||||
size_t bytecode_offset;
|
||||
|
||||
bool is_typedef;
|
||||
|
||||
uint32_t is_minimum_precision : 1;
|
||||
};
|
||||
|
||||
|
@@ -1183,6 +1183,7 @@ static bool add_typedef(struct hlsl_ctx *ctx, struct hlsl_type *const orig_type,
|
||||
|
||||
vkd3d_free((void *)type->name);
|
||||
type->name = v->name;
|
||||
type->is_typedef = true;
|
||||
|
||||
ret = hlsl_scope_add_type(ctx->cur_scope, type);
|
||||
if (!ret)
|
||||
@@ -8219,7 +8220,7 @@ type_no_void:
|
||||
| KW_STRUCT TYPE_IDENTIFIER
|
||||
{
|
||||
$$ = hlsl_get_type(ctx->cur_scope, $2, true, true);
|
||||
if ($$->class != HLSL_CLASS_STRUCT)
|
||||
if ($$->class != HLSL_CLASS_STRUCT || $$->is_typedef)
|
||||
hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_REDEFINED, "\"%s\" is not a structure.", $2);
|
||||
vkd3d_free($2);
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail todo(sm<6)]
|
||||
[pixel shader fail]
|
||||
struct apple
|
||||
{
|
||||
float4 f;
|
||||
|
Reference in New Issue
Block a user