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 <anuj.pho...@gmail.com> --- 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 cd87a72..efcbce6 100644 --- a/src/mesa/drivers/common/meta_tex_subimage.c +++ b/src/mesa/drivers/common/meta_tex_subimage.c @@ -81,6 +81,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); @@ -90,7 +91,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; -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev