The patchset LGTM, pushed, thanks.
> -----Original Message----- > From: Beignet [mailto:beignet-boun...@lists.freedesktop.org] On Behalf Of > yan.w...@linux.intel.com > Sent: Tuesday, May 16, 2017 19:04 > To: beignet@lists.freedesktop.org > Cc: Yan Wang <yan.w...@linux.intel.com> > Subject: [Beignet] [PATCH v3 8/8] Implement TILE_Y large image in > clEnqueueWriteImage. > > From: Yan Wang <yan.w...@linux.intel.com> > > It will fail to copy data from host ptr to TILE_Y large image by memcpy. > Use clEnqueueCopyBufferToImage to do this on GPU side. > > Signed-off-by: Yan Wang <yan.w...@linux.intel.com> > --- > src/cl_api_mem.c | 46 > ++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/src/cl_api_mem.c b/src/cl_api_mem.c index 91525b1..7b58236 > 100644 > --- a/src/cl_api_mem.c > +++ b/src/cl_api_mem.c > @@ -1954,6 +1954,47 @@ clEnqueueReadImage(cl_command_queue > command_queue, > return err; > } > > +static cl_int > +clEnqueueWriteImageByKernel(cl_command_queue command_queue, > + cl_mem mem, > + cl_bool blocking_write, > + const size_t *porigin, > + const size_t *pregion, > + size_t row_pitch, > + size_t slice_pitch, > + const void *ptr, > + cl_uint num_events_in_wait_list, > + const cl_event *event_wait_list, > + cl_event *event) > +{ > + cl_int err = CL_SUCCESS; > + struct _cl_mem_image *image = NULL; > + size_t region[3]; > + size_t origin[3]; > + > + image = cl_mem_image(mem); > + > + err = check_image_region(image, pregion, region); if (err != > + CL_SUCCESS) > + return err; > + > + err = check_image_origin(image, porigin, origin); if (err != > + CL_SUCCESS) > + return err; > + > + if (image->tmp_ker_buf) > + clReleaseMemObject(image->tmp_ker_buf); > + > + image->tmp_ker_buf = clCreateBuffer(command_queue->ctx, > + CL_MEM_USE_HOST_PTR, mem->size, (void*)ptr, &err); if (image- > >tmp_ker_buf == NULL || err != CL_SUCCESS) { > + image->tmp_ker_buf = NULL; > + return err; > + } > + > + return clEnqueueCopyBufferToImage(command_queue, image- > >tmp_ker_buf, mem, 0, origin, region, > + num_events_in_wait_list, event_wait_list, event); } > + > cl_int > clEnqueueWriteImage(cl_command_queue command_queue, > cl_mem mem, > @@ -2039,6 +2080,11 @@ clEnqueueWriteImage(cl_command_queue > command_queue, > break; > } > > + if (image->is_ker_copy) { > + return clEnqueueWriteImageByKernel(command_queue, mem, > blocking_write, origin, > + region, row_pitch, slice_pitch, ptr, num_events_in_wait_list, > event_wait_list, event); > + } > + > err = cl_event_check_waitlist(num_events_in_wait_list, event_wait_list, > event, command_queue->ctx); > if (err != CL_SUCCESS) { > -- > 2.7.4 > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet