From: Anuj Phogat Date: Wed, 4 Feb 2015 00:50:57 +0000 (-0800) Subject: meta: Use GL_STREAM_READ for pbo created with GL_PIXEL_PACK_BUFFER X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=618c4c4b6ab82c606cd2c8f139372502baa06c5f;p=mesa.git meta: Use GL_STREAM_READ for pbo created with GL_PIXEL_PACK_BUFFER create_texture_for_pbo() is used by both _mesa_meta_pbo_GetTexSubImage() and _mesa_meta_pbo_TexSubImage() functions with different PBO targets. Use GL_STREAM_READ with GL_PIXEL_PACK_BUFFER and GL_STREAM_DRAW with GL_PIXEL_UNPACK_BUFFER. Signed-off-by: Anuj Phogat Reviewed-by: Neil Roberts --- diff --git a/src/mesa/drivers/common/meta_tex_subimage.c b/src/mesa/drivers/common/meta_tex_subimage.c index ffbbacd8fd8..ca6fb6a5f21 100644 --- a/src/mesa/drivers/common/meta_tex_subimage.c +++ b/src/mesa/drivers/common/meta_tex_subimage.c @@ -79,6 +79,7 @@ create_texture_for_pbo(struct gl_context *ctx, bool create_pbo, buffer_obj = packing->BufferObj; } else { assert(create_pbo); + bool is_pixel_pack = pbo_target == GL_PIXEL_PACK_BUFFER; _mesa_GenBuffers(1, tmp_pbo); @@ -88,7 +89,12 @@ create_texture_for_pbo(struct gl_context *ctx, bool create_pbo, */ _mesa_BindBuffer(pbo_target, *tmp_pbo); - _mesa_BufferData(pbo_target, row_stride * height, pixels, GL_STREAM_DRAW); + if (is_pixel_pack) + _mesa_BufferData(pbo_target, row_stride * height, pixels, + GL_STREAM_READ); + else + _mesa_BufferData(pbo_target, row_stride * height, pixels, + GL_STREAM_DRAW); buffer_obj = ctx->Unpack.BufferObj; pixels = NULL;