summaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv/vtn_variables.c
diff options
context:
space:
mode:
authorNeil Roberts <[email protected]>2018-01-17 16:35:56 +0100
committerAlejandro Piñeiro <[email protected]>2018-07-31 13:18:28 +0200
commit13b8857fcf575c5b786e055ad4594d8bf6a5c4b6 (patch)
tree5e675f151ae61e17a5bc20edf32d677fd9889aea /src/compiler/spirv/vtn_variables.c
parentd480623bef7cfc632af166a304eb104928c73520 (diff)
spirv: Handle the SpvDecorationStream decoration
From SPIR-V 1.0 spec, section 3.20, "Decoration": "Stream Apply to an object or a member of a structure type. Indicates the stream number to put an output on." Note the "or", so that means that it is allowed for both a full struct or a membef or a struct (although the wording is not really ideal, and somewhat error-prone, imho). We found this with some Geometry Streams tests for ARB_gl_spirv, where the full gl_PerVertex is assigned Stream 0 (default value on OpenGL for gl_PerVertex). So this commit allows structs to have this Decoration, and sets the stream at the nir variable if needed. Signed-off-by: Neil Roberts <[email protected]> Signed-off-by: Alejandro Piñeiro <[email protected]> v2: squash two Decoration Stream patches (Jason) Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/spirv/vtn_variables.c')
-rw-r--r--src/compiler/spirv/vtn_variables.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 6ff2e83515a..8dab86abd74 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1298,7 +1298,6 @@ apply_var_decoration(struct vtn_builder *b,
case SpvDecorationMatrixStride:
case SpvDecorationAliased:
case SpvDecorationUniform:
- case SpvDecorationStream:
case SpvDecorationLinkageAttributes:
break; /* Do nothing with these here */
@@ -1337,6 +1336,10 @@ apply_var_decoration(struct vtn_builder *b,
var_data->offset = dec->literals[0];
break;
+ case SpvDecorationStream:
+ var_data->stream = dec->literals[0];
+ break;
+
case SpvDecorationCPacked:
case SpvDecorationSaturatedConversion:
case SpvDecorationFuncParamAttr: