summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2008-02-20 13:24:52 -0700
committerBrian <brian.paul@tungstengraphics.com>2008-02-20 13:24:52 -0700
commitd5640a2dbdc4454d0405f2cd5b18fc49b1ca7694 (patch)
tree5e0ed97d89f54d9f40c1911f926ead5a65c7e37d /src/mesa/state_tracker
parent1d45787d4a70c55e7fa899d13b9139430e2fa3e2 (diff)
gallium: new pipe->texture_update() function
Called whenever texture data is changed (glTexImage, glTexSubImage, glCopyTexSubImage, etc).
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_atom_texture.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index 9fead7e314..a4ac726816 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -67,14 +67,20 @@ update_textures(struct st_context *st)
* this table before being deleted, otherwise the pointer
* comparison below could fail.
*/
- if (st->state.sampler_texture[unit] != stObj ||
- (stObj && stObj->dirtyData)) {
+ if (st->state.sampler_texture[unit] != stObj) {
struct pipe_texture *pt = st_get_stobj_texture(stObj);
st->state.sampler_texture[unit] = stObj;
st->pipe->set_sampler_texture(st->pipe, unit, pt);
- if (stObj)
- stObj->dirtyData = GL_FALSE;
}
+
+ stObj = st->state.sampler_texture[unit];
+
+ if (stObj && stObj->dirtyData) {
+ struct pipe_texture *pt = st_get_stobj_texture(stObj);
+ st->pipe->texture_update(st->pipe, pt);
+ stObj->dirtyData = GL_FALSE;
+ }
+
}
}