From: Dave Airlie <airl...@redhat.com>

If we try to draw or query an XFB object that hasn't been bound,
we shouldn't return any information.

This fixes a couple if cases in:
GL33-CTS.transform_feedback.api_errors_test

The ObjectLabel test is inspired by another test.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/mesa/main/api_validate.c | 5 +++++
 src/mesa/main/objectlabel.c  | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 6ec65e5..7fa8f21 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -665,6 +665,11 @@ _mesa_validate_DrawTransformFeedback(struct gl_context 
*ctx,
       return GL_FALSE;
    }
 
+   if (!obj->EverBound) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTransformFeedback*(name)");
+      return GL_FALSE;
+   }
+
    if (stream >= ctx->Const.MaxVertexStreams) {
       _mesa_error(ctx, GL_INVALID_VALUE,
                   "glDrawTransformFeedbackStream*(index>=MaxVertexStream)");
diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c
index 5070b00..e4f42d0 100644
--- a/src/mesa/main/objectlabel.c
+++ b/src/mesa/main/objectlabel.c
@@ -179,7 +179,8 @@ get_label_pointer(struct gl_context *ctx, GLenum 
identifier, GLuint name,
          struct gl_transform_feedback_object *tfo =
             _mesa_lookup_transform_feedback_object(ctx, name);
          if (tfo)
-            labelPtr = &tfo->Label;
+            if (tfo->EverBound)
+               labelPtr = &tfo->Label;
       }
       break;
    case GL_SAMPLER:
-- 
2.5.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to