summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2010-02-12 05:03:27 +0100
committerMarek Olšák <maraeo@gmail.com>2010-02-13 15:44:43 +0100
commit43b4d2a048ee8e89e7b8ab38d0ad2bc2daae8402 (patch)
tree0c3e210ef224d4ab269d9a84458a4428605b5b8e /src/gallium/drivers/r300
parent8eb4cd5b825db7bf26da240ccddaf9a7e5e55a62 (diff)
r300g: do not invalidate texture caches when only sampler state is changed
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_emit.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 3b59367a0b..5a4196c5e3 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -1148,14 +1148,15 @@ void r300_emit_dirty_state(struct r300_context* r300)
for (i = 0; i < MIN2(r300->sampler_count, r300->texture_count); i++) {
if (r300->dirty_state &
((R300_NEW_SAMPLER << i) | (R300_NEW_TEXTURE << i))) {
- if (r300->textures[i])
+ if (r300->textures[i]) {
r300_emit_texture(r300,
r300->sampler_states[i],
r300->textures[i],
i);
+ dirty_tex |= r300->dirty_state & (R300_NEW_TEXTURE << i);
+ }
r300->dirty_state &=
~((R300_NEW_SAMPLER << i) | (R300_NEW_TEXTURE << i));
- dirty_tex++;
}
}
r300->dirty_state &= ~(R300_ANY_NEW_SAMPLERS | R300_ANY_NEW_TEXTURES);