Kenneth Graunke <kenn...@whitecape.org> writes: > We handled the unsized case, implicitly sizing arrays to the value > of gl_MaxPatchVertices. But if a size was present, we failed to > raise a compile error if it wasn't the value of gl_MaxPatchVertices. > > Fixes CTS tests: > > *.tessellation_shader.compilation_and_linking_errors. > {tc,te}_invalid_array_size_used_for_input_blocks > > Piglit's tcs-input-read-nonconst-* tests would be broken by this patch, > but the tests are wrong. I've submitted a patch to fix those. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
Reviewed-by: Francisco Jerez <curroje...@riseup.net> > --- > src/compiler/glsl/ast_to_hir.cpp | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/glsl/ast_to_hir.cpp > b/src/compiler/glsl/ast_to_hir.cpp > index 6e9c32e..a7f297e 100644 > --- a/src/compiler/glsl/ast_to_hir.cpp > +++ b/src/compiler/glsl/ast_to_hir.cpp > @@ -4344,10 +4344,23 @@ handle_tess_shader_input_decl(struct > _mesa_glsl_parse_state *state, > if (var->data.patch) > return; > > - /* Unsized arrays are implicitly sized to gl_MaxPatchVertices. */ > + /* The ARB_tessellation_shader spec says: > + * > + * "Declaring an array size is optional. If no size is specified, it > + * will be taken from the implementation-dependent maximum patch size > + * (gl_MaxPatchVertices). If a size is specified, it must match the > + * maximum patch size; otherwise, a compile or link error will occur." > + * > + * This text appears twice, once for TCS inputs, and again for TES inputs. > + */ > if (var->type->is_unsized_array()) { > var->type = glsl_type::get_array_instance(var->type->fields.array, > state->Const.MaxPatchVertices); > + } else if (var->type->length != state->Const.MaxPatchVertices) { > + _mesa_glsl_error(&loc, state, > + "per-vertex tessellation shader input arrays must be " > + "sized to gl_MaxPatchVertices (%d).", > + state->Const.MaxPatchVertices); > } > } > > -- > 2.9.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev