diff options
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_blit.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json index f26284ababa..ed8018c0893 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -283,7 +283,7 @@ "description": "mesa/st: Finalize the texture before BlitFramebuffer from it.", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index d91cc9623ac..cf55eff6e5c 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -39,6 +39,7 @@ #include "st_cb_bitmap.h" #include "st_cb_blit.h" #include "st_cb_fbo.h" +#include "st_cb_texture.h" #include "st_manager.h" #include "st_scissor.h" #include "st_util.h" @@ -180,6 +181,12 @@ st_BlitFramebuffer(struct gl_context *ctx, blit.mask = PIPE_MASK_RGBA; if (srcAtt->Type == GL_TEXTURE) { + /* Make sure that the st_texture_object->pt is the current storage for + * our miplevel. The finalize would happen at some point anyway, might + * as well be now. + */ + st_finalize_texture(ctx, st->pipe, srcAtt->Texture, srcAtt->CubeMapFace); + struct st_texture_object *srcObj = st_texture_object(srcAtt->Texture); if (!srcObj || !srcObj->pt) { |