From 618c4c4b6ab82c606cd2c8f139372502baa06c5f Mon Sep 17 00:00:00 2001 From: Anuj Phogat Date: Tue, 3 Feb 2015 16:50:57 -0800 Subject: [PATCH] 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 --- src/mesa/drivers/common/meta_tex_subimage.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- 2.30.2