mesa/main: fix validation of transform-feedback queries
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 7 Nov 2018 15:00:59 +0000 (16:00 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Fri, 23 Nov 2018 09:48:36 +0000 (10:48 +0100)
ctx->Extensions.EXT_transform_feedback is set based on the driver-
capabilities, not based on the context type. We need to check against
_mesa_has_EXT_transform_feedback(ctx) instead to figure out if the
extension is really supported. We also need to check for
OES_geometry_shader.

This turns usage of GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN into an
error on ES 2, as well as usage of GL_PRIMITIVES_GENERATED on ES 3, both
as required by the spec.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/main/queryobj.c

index 9b3671f90a0ca66d666588f1d094af90cbc810e3..bda94ccc7017cf098ce1e0f06cd91fb30cb915f4 100644 (file)
@@ -203,12 +203,13 @@ get_query_binding_point(struct gl_context *ctx, GLenum target, GLuint index)
       else
          return NULL;
    case GL_PRIMITIVES_GENERATED:
-      if (ctx->Extensions.EXT_transform_feedback)
+      if (_mesa_has_EXT_transform_feedback(ctx) ||
+          _mesa_has_OES_geometry_shader(ctx))
          return &ctx->Query.PrimitivesGenerated[index];
       else
          return NULL;
    case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
-      if (ctx->Extensions.EXT_transform_feedback)
+      if (_mesa_has_EXT_transform_feedback(ctx) || _mesa_is_gles3(ctx))
          return &ctx->Query.PrimitivesWritten[index];
       else
          return NULL;