OpenGL ES 1.0 doesn't support using GL_STREAM_DRAW and both ES 1.0 and 2.0 don't support GL_STREAM_READ in glBufferData(). So, handle it correctly by calling the _mesa_meta_begin() before create_texture_for_pbo().
V2: Remove the changes related to allocate_storage. (Ian) Cc: Ian Romanick <i...@freedesktop.org> Cc: "11.1" <mesa-sta...@lists.freedesktop.org> Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> --- src/mesa/drivers/common/meta_tex_subimage.c | 21 +++++++++++++-------- 1 file 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 4adaad7..4d6f571 100644 --- a/src/mesa/drivers/common/meta_tex_subimage.c +++ b/src/mesa/drivers/common/meta_tex_subimage.c @@ -211,20 +211,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)); - _mesa_GenFramebuffers(2, fbos); _mesa_BindFramebuffer(GL_READ_FRAMEBUFFER, fbos[0]); _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, fbos[1]); @@ -346,15 +348,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) -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev