Bläddra i källkod

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 år sedan
förälder
incheckning
d4074c509b

+ 2
- 0
src/mesa/state_tracker/st_atom_texture.c Visa fil

@@ -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);

+ 7
- 5
src/mesa/state_tracker/st_cb_texture.c Visa fil

@@ -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) {

+ 1
- 3
src/mesa/state_tracker/st_texture.h Visa fil

@@ -68,9 +68,7 @@ struct st_texture_object
*/
struct pipe_texture *pt;

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



Laddar…
Avbryt
Spara