summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/common/meta_tex_subimage.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/mesa/drivers/common/meta_tex_subimage.c b/src/mesa/drivers/common/meta_tex_subimage.c
index 639d3236359..330289b6220 100644
--- a/src/mesa/drivers/common/meta_tex_subimage.c
+++ b/src/mesa/drivers/common/meta_tex_subimage.c
@@ -214,20 +214,22 @@ _mesa_meta_pbo_TexSubImage(struct gl_context *ctx, GLuint dims,
*/
image_height = packing->ImageHeight == 0 ? height : packing->ImageHeight;
+ _mesa_meta_begin(ctx, ~(MESA_META_PIXEL_TRANSFER |
+ MESA_META_PIXEL_STORE));
+
pbo_tex_image = create_texture_for_pbo(ctx, create_pbo,
GL_PIXEL_UNPACK_BUFFER,
dims, width, height, depth,
format, type, pixels, packing,
&pbo, &pbo_tex);
- if (!pbo_tex_image)
+ if (!pbo_tex_image) {
+ _mesa_meta_end(ctx);
return false;
+ }
if (allocate_storage)
ctx->Driver.AllocTextureImageBuffer(ctx, tex_image);
- _mesa_meta_begin(ctx, ~(MESA_META_PIXEL_TRANSFER |
- MESA_META_PIXEL_STORE));
-
readFb = ctx->Driver.NewFramebuffer(ctx, 0xDEADBEEF);
if (readFb == NULL)
goto fail;
@@ -361,15 +363,18 @@ _mesa_meta_pbo_GetTexSubImage(struct gl_context *ctx, GLuint dims,
*/
image_height = packing->ImageHeight == 0 ? height : packing->ImageHeight;
+ _mesa_meta_begin(ctx, ~(MESA_META_PIXEL_TRANSFER |
+ MESA_META_PIXEL_STORE));
+
pbo_tex_image = create_texture_for_pbo(ctx, false, GL_PIXEL_PACK_BUFFER,
dims, width, height, depth,
format, type, pixels, packing,
&pbo, &pbo_tex);
- if (!pbo_tex_image)
- return false;
- _mesa_meta_begin(ctx, ~(MESA_META_PIXEL_TRANSFER |
- MESA_META_PIXEL_STORE));
+ if (!pbo_tex_image) {
+ _mesa_meta_end(ctx);
+ return false;
+ }
/* GL_CLAMP_FRAGMENT_COLOR doesn't affect ReadPixels and GettexImage */
if (ctx->Extensions.ARB_color_buffer_float)