[Mesa-dev] [V2 PATCH] meta: Fix the pbo usage in meta for GLES{1, 2} contexts
Anuj Phogat
anuj.phogat at gmail.com
Wed Mar 2 00:49:05 UTC 2016
On Tue, Feb 9, 2016 at 3:28 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> 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 <idr at freedesktop.org>
> Cc: "11.1" <mesa-stable at lists.freedesktop.org>
> Signed-off-by: Anuj Phogat <anuj.phogat at 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
>
Ian, Do you have any other comments on this patch?
More information about the mesa-dev
mailing list