[Beignet] [Patch v2 4/4] use sampler to copy image_from_buffer to another image for verification.
Yang, Rong R
rong.r.yang at intel.com
Tue Oct 20 01:54:40 PDT 2015
Pushed.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Friday, October 16, 2015 14:11
> To: Luo, Xionghu; beignet at lists.freedesktop.org
> Cc: Luo, Xionghu
> Subject: Re: [Beignet] [Patch v2 4/4] use sampler to copy image_from_buffer
> to another image for verification.
>
> The whole patch set looks fine, except there is a new empty line in
> kernels/image_from_buffer.cl, 'git am' reports a warning on this.
>
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> xionghu.luo at intel.com
> Sent: Thursday, October 15, 2015 9:31 AM
> To: beignet at lists.freedesktop.org
> Cc: Luo, Xionghu
> Subject: [Beignet] [Patch v2 4/4] use sampler to copy image_from_buffer to
> another image for verification.
>
> From: Luo Xionghu <xionghu.luo at intel.com>
>
> Signed-off-by: Luo Xionghu <xionghu.luo at intel.com>
> ---
> kernels/image_from_buffer.cl | 13 +++++++++++++
> utests/image_from_buffer.cpp | 21 +++++++++++++++++++++
> 2 files changed, 34 insertions(+)
> create mode 100644 kernels/image_from_buffer.cl
>
> diff --git a/kernels/image_from_buffer.cl b/kernels/image_from_buffer.cl
> new file mode 100644 index 0000000..1dc6d1a
> --- /dev/null
> +++ b/kernels/image_from_buffer.cl
> @@ -0,0 +1,13 @@
> +__kernel void image_from_buffer(__read_only image2d_t src,
> __write_only
> +image2d_t dst) {
> + int2 coord;
> + int4 color;
> + coord.x = (int)get_global_id(0);
> + coord.y = (int)get_global_id(1);
> +
> + const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
> + CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
> +
> + color = read_imagei(src, sampler, coord);
> + write_imagei(dst, coord, color);
> +}
> +
> diff --git a/utests/image_from_buffer.cpp b/utests/image_from_buffer.cpp
> index a56e6ff..78d6797 100644
> --- a/utests/image_from_buffer.cpp
> +++ b/utests/image_from_buffer.cpp
> @@ -28,6 +28,8 @@ static void image_from_buffer(void)
> memset(&desc, 0x0, sizeof(cl_image_desc));
> memset(&format, 0x0, sizeof(cl_image_format));
>
> + OCL_CREATE_KERNEL("image_from_buffer");
> +
> // Setup kernel and images
> size_t buffer_sz = sizeof(uint32_t) * w * h;
> //buf_data[0] = (uint32_t*) malloc(buffer_sz); @@ -52,20 +54,38 @@ static
> void image_from_buffer(void)
> desc.buffer = buff;
> OCL_CREATE_IMAGE(buf[1], 0, &format, &desc, NULL);
>
> + desc.buffer = 0;
> + desc.image_row_pitch = 0;
> + OCL_CREATE_IMAGE(buf[2], CL_MEM_WRITE_ONLY, &format, &desc,
> NULL);
> +
> free(buf_data[0]);
> buf_data[0] = NULL;
>
> + OCL_SET_ARG(0, sizeof(cl_mem), &buf[1]); OCL_SET_ARG(1,
> + sizeof(cl_mem), &buf[2]);
> +
> + globals[0] = w;
> + globals[1] = h;
> + locals[0] = 16;
> + locals[1] = 4;
> +
> + OCL_NDRANGE(2);
> +
> // Check result
> OCL_MAP_BUFFER_GTT(0);
> OCL_MAP_BUFFER_GTT(1);
> + OCL_MAP_BUFFER_GTT(2);
> for (uint32_t j = 0; j < h; ++j)
> for (uint32_t i = 0; i < w; i++)
> {
> //printf("%d,%d\n", ((uint32_t*)buf_data[0])[j * w + i],
> ((uint32_t*)buf_data[1])[j * w + i]);
> + //printf("%d,%d,%d,%d\n", j, i, ((uint32_t*)buf_data[0])[j * w +
> + i], ((uint32_t*)buf_data[2])[j * w + i]);
> OCL_ASSERT(((uint32_t*)buf_data[0])[j * w + i] ==
> ((uint32_t*)buf_data[1])[j * w + i]);
> + OCL_ASSERT(((uint32_t*)buf_data[0])[j * w + i] ==
> + ((uint32_t*)buf_data[2])[j * w + i]);
> }
> OCL_UNMAP_BUFFER_GTT(0);
> OCL_UNMAP_BUFFER_GTT(1);
> + OCL_UNMAP_BUFFER_GTT(2);
>
> //spec didn't tell the sequence of release buffer of image. so release either
> buffer or image first is ok here.
> //we follow the rule of destroy the bo at the last release, then the access of
> buffer after release image is legal @@ -77,6 +97,7 @@ static void
> image_from_buffer(void)
> clReleaseMemObject(buff);
> clReleaseMemObject(buf[1]);
> #endif
> + clReleaseMemObject(buf[2]);
> }
>
> MAKE_UTEST_FROM_FUNCTION(image_from_buffer);
> --
> 1.9.1
>
> _______________________________________________
> 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