Mesa (master): mesa: Disallow TransformFeedbackVaryings when active.

Kenneth Graunke kwg at kemper.freedesktop.org
Thu Sep 12 21:41:37 UTC 2013


Module: Mesa
Branch: master
Commit: a7d616da69d631cc088c01b761a8b1b8b36c6b13
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7d616da69d631cc088c01b761a8b1b8b36c6b13

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Fri Sep  6 12:38:12 2013 -0700

mesa: Disallow TransformFeedbackVaryings when active.

Fixes a subcase of Piglit's new ARB_transform_feedback2 api-errors test.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/mesa/main/transformfeedback.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/transformfeedback.c b/src/mesa/main/transformfeedback.c
index 3f8a7f4..eca0e5f 100644
--- a/src/mesa/main/transformfeedback.c
+++ b/src/mesa/main/transformfeedback.c
@@ -611,6 +611,16 @@ _mesa_TransformFeedbackVaryings(GLuint program, GLsizei count,
    GLint i;
    GET_CURRENT_CONTEXT(ctx);
 
+   /* From the ARB_transform_feedback2 specification:
+    * "The error INVALID_OPERATION is generated by TransformFeedbackVaryings
+    *  if the current transform feedback object is active, even if paused."
+    */
+   if (ctx->TransformFeedback.CurrentObject->Active) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+               "glTransformFeedbackVaryings(current object is active)");
+      return;
+   }
+
    switch (bufferMode) {
    case GL_INTERLEAVED_ATTRIBS:
       break;




More information about the mesa-commit mailing list