[Beignet] [PATCH] Runtime: don't use map_gtt for cl buffer.

Zhigang Gong zhigang.gong at linux.intel.com
Mon May 5 01:17:46 PDT 2014


You are correct. We have to use asynchronous map function here.
And after discussion, I found we only need to increase the global
memory to 1GB memory to satisfy most of the application including
darktable and no need to change the map method here.

On Mon, May 05, 2014 at 03:11:15AM +0000, Yang, Rong R wrote:
> It can't use cl_mem_map here. Because function _cl_map_mem is used for clEnqueueMapBuffer and clEnqueueMapImage, which request unsynchronized map.
> Unfortunately libdrm only provide unsynchronized map GTT. There is no unsynchronized version drm_intel_gem_bo_map.
> 
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of Zhigang Gong
> Sent: Sunday, May 04, 2014 9:42 AM
> To: beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: [Beignet] [PATCH] Runtime: don't use map_gtt for cl buffer.
> 
> We only need to map gtt for image. Map gtt may fail for large buffers.
> 
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
>  src/cl_api.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/src/cl_api.c b/src/cl_api.c index 03a1cda..774ca8f 100644
> --- a/src/cl_api.c
> +++ b/src/cl_api.c
> @@ -2172,9 +2172,16 @@ static cl_int _cl_map_mem(cl_mem mem, void **ptr, void **mem_ptr, size_t offset,
>      sub_offset = buffer->sub_offset;
>    }
>  
> -  if (!(*ptr = cl_mem_map_gtt_unsync(mem))) {
> -    err = CL_MAP_FAILURE;
> -    goto error;
> +  if (mem->type == CL_MEM_IMAGE_TYPE) {
> +    if (!(*ptr = cl_mem_map_gtt_unsync(mem))) {
> +      err = CL_MAP_FAILURE;
> +      goto error;
> +    }
> +  } else {
> +    if (!(*ptr = cl_mem_map(mem))) {
> +      err = CL_MAP_FAILURE;
> +      goto error;
> +    }
>    }
>    *ptr = (char*)(*ptr) + offset + sub_offset;
>    if(mem->flags & CL_MEM_USE_HOST_PTR) {
> --
> 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


More information about the Beignet mailing list