glsl: Use Geom.VerticesOut == -1 to specify unset

Because apparently layout(max_vertices=0) is a thing.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Ian Romanick 2016-05-23 15:53:10 -07:00
parent b27dfa5403
commit a428c955ce
3 changed files with 6 additions and 6 deletions

View file

@ -1687,7 +1687,7 @@ set_shader_inout_layout(struct gl_shader *shader,
shader->TessEval.PointMode = state->in_qualifier->point_mode; shader->TessEval.PointMode = state->in_qualifier->point_mode;
break; break;
case MESA_SHADER_GEOMETRY: case MESA_SHADER_GEOMETRY:
shader->Geom.VerticesOut = 0; shader->Geom.VerticesOut = -1;
if (state->out_qualifier->flags.q.max_vertices) { if (state->out_qualifier->flags.q.max_vertices) {
unsigned qual_max_vertices; unsigned qual_max_vertices;
if (state->out_qualifier->max_vertices-> if (state->out_qualifier->max_vertices->

View file

@ -1980,7 +1980,7 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
struct gl_shader **shader_list, struct gl_shader **shader_list,
unsigned num_shaders) unsigned num_shaders)
{ {
linked_shader->Geom.VerticesOut = 0; linked_shader->Geom.VerticesOut = -1;
linked_shader->Geom.Invocations = 0; linked_shader->Geom.Invocations = 0;
linked_shader->Geom.InputType = PRIM_UNKNOWN; linked_shader->Geom.InputType = PRIM_UNKNOWN;
linked_shader->Geom.OutputType = 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; linked_shader->Geom.OutputType = shader->Geom.OutputType;
} }
if (shader->Geom.VerticesOut != 0) { if (shader->Geom.VerticesOut != -1) {
if (linked_shader->Geom.VerticesOut != 0 && if (linked_shader->Geom.VerticesOut != -1 &&
linked_shader->Geom.VerticesOut != shader->Geom.VerticesOut) { linked_shader->Geom.VerticesOut != shader->Geom.VerticesOut) {
linker_error(prog, "geometry shader defined with conflicting " linker_error(prog, "geometry shader defined with conflicting "
"output vertex count (%d and %d)\n", "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; prog->Geom.OutputType = linked_shader->Geom.OutputType;
if (linked_shader->Geom.VerticesOut == 0) { if (linked_shader->Geom.VerticesOut == -1) {
linker_error(prog, linker_error(prog,
"geometry shader didn't declare max_vertices\n"); "geometry shader didn't declare max_vertices\n");
return; return;

View file

@ -232,7 +232,7 @@ init_shader_program(struct gl_shader_program *prog)
prog->FragDataBindings = string_to_uint_map_ctor(); prog->FragDataBindings = string_to_uint_map_ctor();
prog->FragDataIndexBindings = 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.InputType = GL_TRIANGLES;
prog->Geom.OutputType = GL_TRIANGLE_STRIP; prog->Geom.OutputType = GL_TRIANGLE_STRIP;
prog->Geom.UsesEndPrimitive = false; prog->Geom.UsesEndPrimitive = false;