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