mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Error out when an output semantic is used more than once.
The use of the hlsl_semantic.reported_duplicated_output_next_index field
allows reporting multiple overlapping indexes, such as in the following
vertex shader:
void main(out float1x3 x : OVERLAP0, out float1x3 y : OVERLAP1)
{
x = float3(1.0, 2.0, 3.2);
y = float3(5.0, 6.0, 5.0);
}
apple.hlsl:1:41: E5013: Output semantic "OVERLAP1" is used multiple times.
apple.hlsl:1:13: First use of "OVERLAP1" is here.
apple.hlsl:1:41: E5013: Output semantic "OVERLAP2" is used multiple times.
apple.hlsl:1:13: First use of "OVERLAP2" is here.
While at the same time avoiding reporting overlaps more than once for
large arrays:
struct apple
{
float2 p : sv_position;
};
void main(out apple aps[4])
{
}
apple.hlsl:3:8: E5013: Output semantic "sv_position0" is used multiple times.
apple.hlsl:3:8: First use of "sv_position0" is here.
This commit is contained in:
committed by
Alexandre Julliard
parent
edc72fdefc
commit
d96e9665b1
Notes:
Alexandre Julliard
2023-05-01 22:24:44 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/148
@@ -212,6 +212,9 @@ struct hlsl_semantic
|
||||
|
||||
/* If the variable or field that stores this hlsl_semantic has already reported that it is missing. */
|
||||
bool reported_missing;
|
||||
/* In case the variable or field that stores this semantic has already reported to use a
|
||||
* duplicated output semantic, this value stores the last reported index + 1. Otherwise it is 0. */
|
||||
uint32_t reported_duplicated_output_next_index;
|
||||
};
|
||||
|
||||
/* A field within a struct type declaration, used in hlsl_type.e.fields. */
|
||||
|
||||
Reference in New Issue
Block a user