summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-05-09 16:09:13 +1000
committerDave Airlie <airlied@redhat.com>2016-05-10 06:06:09 +1000
commitbbc6a275901b69ea2804f374cc03c2c2448d8e55 (patch)
tree0f1d044015020c3b420540b4510203ecd05b1d54 /src/mesa
parenteafe3905d93efbe5a5f0267d23608cc71c1f96fe (diff)
downloadexternal_mesa3d-bbc6a275901b69ea2804f374cc03c2c2448d8e55.zip
external_mesa3d-bbc6a275901b69ea2804f374cc03c2c2448d8e55.tar.gz
external_mesa3d-bbc6a275901b69ea2804f374cc03c2c2448d8e55.tar.bz2
mesa: don't use genned but unnamed xfb objects.
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. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/api_validate.c9
-rw-r--r--src/mesa/main/objectlabel.c6
2 files changed, 14 insertions, 1 deletions
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 9d29f8d..a714c0a 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -665,6 +665,15 @@ _mesa_validate_DrawTransformFeedback(struct gl_context *ctx,
return GL_FALSE;
}
+ /* From the GL 4.5 specification, page 429:
+ * "An INVALID_VALUE error is generated if id is not the name of a
+ * transform feedback object."
+ */
+ 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..974abbc 100644
--- a/src/mesa/main/objectlabel.c
+++ b/src/mesa/main/objectlabel.c
@@ -176,9 +176,13 @@ get_label_pointer(struct gl_context *ctx, GLenum identifier, GLuint name,
break;
case GL_TRANSFORM_FEEDBACK:
{
+ /* From the GL 4.5 specification, page 536:
+ * "An INVALID_VALUE error is generated if name is not the name of a
+ * valid object of the type specified by identifier."
+ */
struct gl_transform_feedback_object *tfo =
_mesa_lookup_transform_feedback_object(ctx, name);
- if (tfo)
+ if (tfo && tfo->EverBound)
labelPtr = &tfo->Label;
}
break;