diff options
author | Ian Romanick <[email protected]> | 2016-05-23 15:53:10 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2016-06-01 11:11:39 -0700 |
commit | a428c955ce5d039e035e49da6daa13088ec8617c (patch) | |
tree | 9431528290322fa34a3142cd5c6e358c01745e57 /src | |
parent | b27dfa5403ed1884999524417c08d2bc50365965 (diff) |
glsl: Use Geom.VerticesOut == -1 to specify unset
Because apparently layout(max_vertices=0) is a thing.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Ilia Mirkin <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Cc: "12.0" <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/glsl/glsl_parser_extras.cpp | 2 | ||||
-rw-r--r-- | src/compiler/glsl/linker.cpp | 8 | ||||
-rw-r--r-- | src/mesa/main/shaderobj.c | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index 843998dc9fc..2e3395ec416 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -1687,7 +1687,7 @@ set_shader_inout_layout(struct gl_shader *shader, shader->TessEval.PointMode = state->in_qualifier->point_mode; break; case MESA_SHADER_GEOMETRY: - shader->Geom.VerticesOut = 0; + shader->Geom.VerticesOut = -1; if (state->out_qualifier->flags.q.max_vertices) { unsigned qual_max_vertices; if (state->out_qualifier->max_vertices-> diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index e712ee3873b..9e6559005d7 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -1980,7 +1980,7 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, struct gl_shader **shader_list, unsigned num_shaders) { - linked_shader->Geom.VerticesOut = 0; + linked_shader->Geom.VerticesOut = -1; linked_shader->Geom.Invocations = 0; linked_shader->Geom.InputType = PRIM_UNKNOWN; linked_shader->Geom.OutputType = PRIM_UNKNOWN; @@ -2024,8 +2024,8 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, linked_shader->Geom.OutputType = shader->Geom.OutputType; } - if (shader->Geom.VerticesOut != 0) { - if (linked_shader->Geom.VerticesOut != 0 && + if (shader->Geom.VerticesOut != -1) { + if (linked_shader->Geom.VerticesOut != -1 && linked_shader->Geom.VerticesOut != shader->Geom.VerticesOut) { linker_error(prog, "geometry shader defined with conflicting " "output vertex count (%d and %d)\n", @@ -2067,7 +2067,7 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, } prog->Geom.OutputType = linked_shader->Geom.OutputType; - if (linked_shader->Geom.VerticesOut == 0) { + if (linked_shader->Geom.VerticesOut == -1) { linker_error(prog, "geometry shader didn't declare max_vertices\n"); return; diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c index 274cb129b07..189317c3a46 100644 --- a/src/mesa/main/shaderobj.c +++ b/src/mesa/main/shaderobj.c @@ -232,7 +232,7 @@ init_shader_program(struct gl_shader_program *prog) prog->FragDataBindings = string_to_uint_map_ctor(); prog->FragDataIndexBindings = string_to_uint_map_ctor(); - prog->Geom.VerticesOut = 0; + prog->Geom.VerticesOut = -1; prog->Geom.InputType = GL_TRIANGLES; prog->Geom.OutputType = GL_TRIANGLE_STRIP; prog->Geom.UsesEndPrimitive = false; |