On 08/01/2016 10:29 AM, Kenneth Graunke wrote: > This error condition is not implementable when using tessellation or > geometry shaders. The text was also removed from the ES 3.2 spec. > I believe the intended behavior is to remove the error condition > when either OES_geometry_shader or OES_tessellation_shader are > exposed. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/main/api_validate.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c > index 2ee2cd8..68f55b6 100644 > --- a/src/mesa/main/api_validate.c > +++ b/src/mesa/main/api_validate.c > @@ -546,8 +546,20 @@ validate_draw_arrays(struct gl_context *ctx, const char > *func, > * > * This is in contrast to the behaviour of desktop GL, where the extra > * primitives are silently dropped from the transform feedback buffer. > + * > + * This text is removed in ES 3.2, presumably because it's not really > + * implementable with geometry and tessellation shaders. In fact, > + * issue 13 of the OES_geometry_shader spec says: > + * > + * "Since we no longer require being able to predict how much geometry > will > + * be generated [...]" > + * > + * It isn't speaking about this condition specifically, but speaks of > + * lifting similar transform feedback drawing restrictions. > */
This is the spec text that I quoted in my similar patch: + * + * The OES_geometry_shader spec says: + * + * Issues: + * + * (13) Does this extension change how transform feedback operates + * compared to unextended OpenGL ES 3.0 or 3.1? + * + * RESOLVED: Yes. Because dynamic geometry amplification in a geometry + * shader can make it difficult if not impossible to predict the amount + * of geometry that may be generated in advance of executing the shader, + * the draw-time error for transform feedback buffer overflow conditions + * is removed and replaced with the GL behavior (primitives are not + * written and the corresponding counter is not updated)... > - if (_mesa_is_gles3(ctx) && _mesa_is_xfb_active_and_unpaused(ctx)) { > + if (_mesa_is_gles3(ctx) && _mesa_is_xfb_active_and_unpaused(ctx) && > + !_mesa_has_OES_geometry_shader(ctx) && > + !_mesa_has_OES_tessellation_shader(ctx)) { > size_t prim_count = vbo_count_tessellated_primitives(mode, count, 1); > if (xfb_obj->GlesRemainingPrims < prim_count) { > _mesa_error(ctx, GL_INVALID_OPERATION, > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev