Browse Source

gallium: Reallocate pipe_texture in st_TexImage if the texture object was used.

Fixes problems with interleaved glTexImage and rendering calls.
tags/mesa_20090313
Michel Dänzer 17 years ago
parent
commit
d4074c509b

+ 2
- 0
src/mesa/state_tracker/st_atom_texture.c View File

} }


st->state.num_textures = su + 1; st->state.num_textures = su + 1;

stObj->teximage_realloc = TRUE;
} }


pt = st_get_stobj_texture(stObj); pt = st_get_stobj_texture(stObj);

+ 7
- 5
src/mesa/state_tracker/st_cb_texture.c View File

* waiting on any outstanding fences. * waiting on any outstanding fences.
*/ */
if (stObj->pt && 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"); DBG("release it\n");
pipe_texture_release(&stObj->pt); pipe_texture_release(&stObj->pt);
assert(!stObj->pt); assert(!stObj->pt);
stObj->teximage_realloc = FALSE;
} }


if (!stObj->pt) { if (!stObj->pt) {

+ 1
- 3
src/mesa/state_tracker/st_texture.h View File

*/ */
struct pipe_texture *pt; struct pipe_texture *pt;


GLboolean imageOverride;
GLint depthOverride;
GLuint pitchOverride;
GLboolean teximage_realloc;
}; };





Loading…
Cancel
Save