I sent a nitpick for the first one, but in any case, series: Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com>
On 11/02/17 08:52, Kenneth Graunke wrote: > Now that we have OES_tessellation_shader, the same situation can occur > in ES too, not just GL core profile. > > Having a TCS but no TES may confuse drivers - i965 crashes, for example. > > This prevents regressions in > ES31-CTS.core.tessellation_shader.single.xfb_captures_data_from_correct_stage > with some SSO pipeline validation changes I'm making. > > Cc: "17.0" <mesa-sta...@lists.freedesktop.org> > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/main/api_validate.c | 38 +++++++++++++++++++------------------- > 1 file changed, 19 insertions(+), 19 deletions(-) > > diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c > index 6c95701ea0e..d64264fe1e9 100644 > --- a/src/mesa/main/api_validate.c > +++ b/src/mesa/main/api_validate.c > @@ -236,6 +236,25 @@ check_valid_to_render(struct gl_context *ctx, const char > *function) > return false; > } > > + /* The spec argues that this is allowed because a tess ctrl shader > + * without a tess eval shader can be used with transform feedback. > + * However, glBeginTransformFeedback doesn't allow GL_PATCHES and > + * therefore doesn't allow tessellation. > + * > + * Further investigation showed that this is indeed a spec bug and > + * a tess ctrl shader without a tess eval shader shouldn't have been > + * allowed, because there is no API in GL 4.0 that can make use this > + * to produce something useful. > + * > + * Also, all vendors except one don't support a tess ctrl shader without > + * a tess eval shader anyway. > + */ > + if (ctx->TessCtrlProgram._Current && !ctx->TessEvalProgram._Current) { > + _mesa_error(ctx, GL_INVALID_OPERATION, > + "%s(tess eval shader is missing)", function); > + return false; > + } > + > switch (ctx->API) { > case API_OPENGLES2: > /* For ES2, we can draw if we have a vertex program/shader). */ > @@ -260,25 +279,6 @@ check_valid_to_render(struct gl_context *ctx, const char > *function) > return false; > } > > - /* The spec argues that this is allowed because a tess ctrl shader > - * without a tess eval shader can be used with transform feedback. > - * However, glBeginTransformFeedback doesn't allow GL_PATCHES and > - * therefore doesn't allow tessellation. > - * > - * Further investigation showed that this is indeed a spec bug and > - * a tess ctrl shader without a tess eval shader shouldn't have been > - * allowed, because there is no API in GL 4.0 that can make use this > - * to produce something useful. > - * > - * Also, all vendors except one don't support a tess ctrl shader > without > - * a tess eval shader anyway. > - */ > - if (ctx->TessCtrlProgram._Current && !ctx->TessEvalProgram._Current) { > - _mesa_error(ctx, GL_INVALID_OPERATION, > - "%s(tess eval shader is missing)", function); > - return false; > - } > - > /* Section 7.3 (Program Objects) of the OpenGL 4.5 Core Profile spec > * says: > * _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev