[Mesa-dev] [Mesa-stable] [PATCH] meta: Fix the pbo usage in meta for GLES{1, 2} contexts
Anuj Phogat
anuj.phogat at gmail.com
Thu Feb 4 17:34:17 UTC 2016
On Thu, Feb 4, 2016 at 3:21 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> Hi Anuj,
>
> On 24 December 2015 at 21:04, 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().
>>
>> 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 | 27 ++++++++++++++++-----------
>> 1 file changed, 16 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/mesa/drivers/common/meta_tex_subimage.c b/src/mesa/drivers/common/meta_tex_subimage.c
>> index 4adaad7..8ef306e 100644
>> --- a/src/mesa/drivers/common/meta_tex_subimage.c
>> +++ b/src/mesa/drivers/common/meta_tex_subimage.c
>> @@ -211,19 +211,21 @@ _mesa_meta_pbo_TexSubImage(struct gl_context *ctx, GLuint dims,
>> */
>> image_height = packing->ImageHeight == 0 ? height : packing->ImageHeight;
>>
>> + if (allocate_storage)
>> + ctx->Driver.AllocTextureImageBuffer(ctx, tex_image);
>> +
>> + _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]);
>> @@ -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)
>
> Seems like this patch fell through the cracks during the holidays. Or
> perhaps there was a discussion about dropping it on IRC ?
I don't remember any such conversation on IRC. This patch needs
review. Thanks for noticing it.
>
> Thanks
> Emil
More information about the mesa-dev
mailing list