diff options
author | Brian <brian.paul@tungstengraphics.com> | 2008-02-20 13:24:52 -0700 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2008-02-20 13:24:52 -0700 |
commit | d5640a2dbdc4454d0405f2cd5b18fc49b1ca7694 (patch) | |
tree | 5e0ed97d89f54d9f40c1911f926ead5a65c7e37d /src/mesa/state_tracker | |
parent | 1d45787d4a70c55e7fa899d13b9139430e2fa3e2 (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.c | 14 |
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; + } + } } |