[Mesa-dev] [PATCH 1/5] mesa: Do (TCS && !TES) draw time validation in ES as well.
Alejandro Piñeiro
apinheiro at igalia.com
Sat Feb 11 08:22:19 UTC 2017
I sent a nitpick for the first one, but in any case, series:
Reviewed-by: Alejandro Piñeiro <apinheiro at 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-stable at lists.freedesktop.org>
> Signed-off-by: Kenneth Graunke <kenneth at 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:
> *
More information about the mesa-dev
mailing list