diff options
author | Michel Dänzer <michel@tungstengraphics.com> | 2008-05-02 16:22:20 +0100 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2008-05-02 16:22:20 +0100 |
commit | d4074c509b5d28be0a2ec51d40329e1aed7047ef (patch) | |
tree | b213c5c6c470c4b6d7ce1351f09bbf47cb16a4c0 /src/mesa/state_tracker | |
parent | be8a42b4fcad0e0c7803e63f9c4b488c2f618cef (diff) | |
download | external_mesa3d-d4074c509b5d28be0a2ec51d40329e1aed7047ef.zip external_mesa3d-d4074c509b5d28be0a2ec51d40329e1aed7047ef.tar.gz external_mesa3d-d4074c509b5d28be0a2ec51d40329e1aed7047ef.tar.bz2 |
gallium: Reallocate pipe_texture in st_TexImage if the texture object was used.
Fixes problems with interleaved glTexImage and rendering calls.
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_atom_texture.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_texture.c | 12 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_texture.h | 4 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index f42b2f8..767654f 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -90,6 +90,8 @@ update_textures(struct st_context *st) } st->state.num_textures = su + 1; + + stObj->teximage_realloc = TRUE; } pt = st_get_stobj_texture(stObj); diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 5fd192a..8012254 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -556,15 +556,17 @@ st_TexImage(GLcontext * ctx, * waiting on any outstanding fences. */ if (stObj->pt && - /*stObj->pt->first_level == level &&*/ - stObj->pt->last_level == level && - stObj->pt->target != PIPE_TEXTURE_CUBE && - !st_texture_match_image(stObj->pt, &stImage->base, - stImage->face, stImage->level)) { + (stObj->teximage_realloc || + (/*stObj->pt->first_level == level &&*/ + stObj->pt->last_level == level && + stObj->pt->target != PIPE_TEXTURE_CUBE && + !st_texture_match_image(stObj->pt, &stImage->base, + stImage->face, stImage->level)))) { DBG("release it\n"); pipe_texture_release(&stObj->pt); assert(!stObj->pt); + stObj->teximage_realloc = FALSE; } if (!stObj->pt) { diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index 7abccb3..b057621 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -68,9 +68,7 @@ struct st_texture_object */ struct pipe_texture *pt; - GLboolean imageOverride; - GLint depthOverride; - GLuint pitchOverride; + GLboolean teximage_realloc; }; |