diff options
| -rw-r--r-- | src/mesa/state_tracker/st_cb_texture.c | 3 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_gen_mipmap.c | 6 | 
2 files changed, 8 insertions, 1 deletions
| diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index d0fb6301b0..866426a754 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -1855,8 +1855,9 @@ st_finalize_texture(struct gl_context *ctx,      * will match.      */     if (firstImage->pt && +       stObj->pt &&         firstImage->pt != stObj->pt && -       firstImage->pt->last_level >= stObj->lastLevel) { +       firstImage->pt->last_level >= stObj->pt->last_level) {        pipe_resource_reference(&stObj->pt, firstImage->pt);        pipe_sampler_view_reference(&stObj->sampler_view, NULL);     } diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index 2472c0bcf1..c5f6008a22 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -370,6 +370,12 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,        pt = stObj->pt;     } +   else { +      /* Make sure that the base texture image data is present in the +       * texture buffer. +       */ +      st_finalize_texture(ctx, st->pipe, texObj); +   }     assert(pt->last_level >= lastLevel); | 
