Mesa (master): mesa: call FLUSH_VERTICES() before deleting shaders, buffers , query objects

Brian Paul brianp at kemper.freedesktop.org
Fri Mar 11 16:26:05 UTC 2011


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

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Mar 11 09:25:21 2011 -0700

mesa: call FLUSH_VERTICES() before deleting shaders, buffers, query objects

Need to flush rendering (or at least indicate that the rug might be getting
pulled out from underneath us) when a shader, buffer object or query object
is about to be deleted.

Also, this helps to tell the VBO module to unmap its current vertex buffer.

---

 src/mesa/main/bufferobj.c |    1 +
 src/mesa/main/queryobj.c  |    1 +
 src/mesa/main/shaderapi.c |    3 +++
 3 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 44072fb..3343bb2 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -749,6 +749,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
    GET_CURRENT_CONTEXT(ctx);
    GLsizei i;
    ASSERT_OUTSIDE_BEGIN_END(ctx);
+   FLUSH_VERTICES(ctx, 0);
 
    if (n < 0) {
       _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteBuffersARB(n)");
diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c
index fa35c6c..e9cf5f6 100644
--- a/src/mesa/main/queryobj.c
+++ b/src/mesa/main/queryobj.c
@@ -218,6 +218,7 @@ _mesa_DeleteQueriesARB(GLsizei n, const GLuint *ids)
    GLint i;
    GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END(ctx);
+   FLUSH_VERTICES(ctx, 0);
 
    if (MESA_VERBOSE & VERBOSE_API)
       _mesa_debug(ctx, "glDeleeteQueries(%d)\n", n);
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 11b0f88..6650613 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -1236,6 +1236,7 @@ _mesa_DeleteObjectARB(GLhandleARB obj)
 
    if (obj) {
       GET_CURRENT_CONTEXT(ctx);
+      FLUSH_VERTICES(ctx, 0);
       if (is_program(ctx, obj)) {
          delete_shader_program(ctx, obj);
       }
@@ -1254,6 +1255,7 @@ _mesa_DeleteProgram(GLuint name)
 {
    if (name) {
       GET_CURRENT_CONTEXT(ctx);
+      FLUSH_VERTICES(ctx, 0);
       delete_shader_program(ctx, name);
    }
 }
@@ -1264,6 +1266,7 @@ _mesa_DeleteShader(GLuint name)
 {
    if (name) {
       GET_CURRENT_CONTEXT(ctx);
+      FLUSH_VERTICES(ctx, 0);
       delete_shader(ctx, name);
    }
 }




More information about the mesa-commit mailing list