Mesa (master): softpipe: more texture transfer fixes.

Brian Paul brianp at kemper.freedesktop.org
Wed Mar 18 16:24:41 UTC 2009


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

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Mar 18 10:17:48 2009 -0600

softpipe: more texture transfer fixes.

Need to null-out pointers after freeing transfer objects.
Fix mix-ups between tc->transfer and tc->tex_trans fields.

---

 src/gallium/drivers/softpipe/sp_tile_cache.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.c b/src/gallium/drivers/softpipe/sp_tile_cache.c
index 6db7930..6929275 100644
--- a/src/gallium/drivers/softpipe/sp_tile_cache.c
+++ b/src/gallium/drivers/softpipe/sp_tile_cache.c
@@ -246,8 +246,8 @@ sp_tile_cache_set_texture(struct pipe_context *pipe,
 
    pipe_texture_reference(&tc->texture, texture);
 
-   if (tc->transfer) {
-      struct pipe_screen *screen = tc->transfer->texture->screen;
+   if (tc->tex_trans) {
+      struct pipe_screen *screen = tc->tex_trans->texture->screen;
 
       if (tc->tex_trans_map) {
          screen->transfer_unmap(screen, tc->tex_trans);
@@ -255,6 +255,7 @@ sp_tile_cache_set_texture(struct pipe_context *pipe,
       }
 
       screen->tex_transfer_destroy(tc->tex_trans);
+      tc->tex_trans = NULL;
    }
 
    /* mark as entries as invalid/empty */
@@ -556,11 +557,14 @@ sp_get_cached_tile_tex(struct softpipe_context *sp,
           tc->tex_z != z) {
          /* get new transfer (view into texture) */
 
-         if (tc->transfer) {
-            if (tc->tex_trans_map)
+         if (tc->tex_trans) {
+            if (tc->tex_trans_map) {
                tc->screen->transfer_unmap(tc->screen, tc->tex_trans);
+               tc->tex_trans_map = NULL;
+            }
 
             screen->tex_transfer_destroy(tc->tex_trans);
+            tc->tex_trans = NULL;
          }
 
          tc->tex_trans = screen->get_tex_transfer(screen, tc->texture, face, level, z, 




More information about the mesa-commit mailing list