summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/softpipe/sp_state_derived.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/softpipe/sp_state_derived.c')
-rw-r--r--src/gallium/drivers/softpipe/sp_state_derived.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/softpipe/sp_state_derived.c b/src/gallium/drivers/softpipe/sp_state_derived.c
index 5310928332..202a2bc94c 100644
--- a/src/gallium/drivers/softpipe/sp_state_derived.c
+++ b/src/gallium/drivers/softpipe/sp_state_derived.c
@@ -34,6 +34,8 @@
#include "sp_context.h"
#include "sp_screen.h"
#include "sp_state.h"
+#include "sp_texture.h"
+#include "sp_tile_cache.h"
/**
@@ -201,10 +203,19 @@ update_tgsi_samplers( struct softpipe_context *softpipe )
softpipe_reset_sampler_varients( softpipe );
for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
- sp_tile_cache_validate_texture( softpipe->tex_cache[i] );
+ struct softpipe_tile_cache *tc = softpipe->tex_cache[i];
+ if (tc->texture) {
+ struct softpipe_texture *spt = softpipe_texture(tc->texture);
+ if (spt->timestamp != tc->timestamp) {
+ sp_tile_cache_validate_texture( tc );
+ _debug_printf("INV %d %d\n", tc->timestamp, spt->timestamp);
+ tc->timestamp = spt->timestamp;
+ }
+ }
}
}
+
/* Hopefully this will remain quite simple, otherwise need to pull in
* something like the state tracker mechanism.
*/