[Beignet] [PATCH] runtime: fix bug in cl_enqueue_read_buffer.
Zhenyu Wang
zhenyuw at linux.intel.com
Thu Nov 13 19:30:52 PST 2014
yeah, also need for enqueue write for userptr buffer.
On 2014.11.13 06:52:39 +0000, Guo, Yejun wrote:
> LGTM, thanks.
>
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of Zhigang Gong
> Sent: Thursday, November 13, 2014 1:43 PM
> To: beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: [Beignet] [PATCH] runtime: fix bug in cl_enqueue_read_buffer.
>
> If the buffer is a userptr buffer, we should copy it directly.
> Otherwise, it fails in libdrm. As drm_intel_gem_bo_subdata() refuses
> to read a userptr buffer object.
>
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
> src/cl_enqueue.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/cl_enqueue.c b/src/cl_enqueue.c
> index fcffd05..5798e20 100644
> --- a/src/cl_enqueue.c
> +++ b/src/cl_enqueue.c
> @@ -31,13 +31,18 @@
>
> cl_int cl_enqueue_read_buffer(enqueue_data* data)
> {
> + cl_int err = CL_SUCCESS;
> cl_mem mem = data->mem_obj;
> assert(mem->type == CL_MEM_BUFFER_TYPE ||
> mem->type == CL_MEM_SUBBUFFER_TYPE);
> struct _cl_mem_buffer* buffer = (struct _cl_mem_buffer*)mem;
> -
> - return cl_buffer_get_subdata(mem->bo, data->offset + buffer->sub_offset,
> - data->size, data->ptr);
> + if (!mem->is_userptr) {
> + if (cl_buffer_get_subdata(mem->bo, data->offset + buffer->sub_offset,
> + data->size, data->ptr) != 0)
> + err = CL_MAP_FAILURE;
> + } else
> + memcpy(data->ptr, (char*)mem->host_ptr + data->offset + buffer->sub_offset, data->size);
> + return err;
> }
>
> cl_int cl_enqueue_read_buffer_rect(enqueue_data* data)
> --
> 1.8.3.2
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
--
Open Source Technology Center, Intel ltd.
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/beignet/attachments/20141114/730705ad/attachment.sig>
More information about the Beignet
mailing list