[Beignet] [PATCH] Fix the compare_image_2d_and_1d_array test case bug

Zhigang Gong zhigang.gong at linux.intel.com
Mon Oct 27 18:51:25 PDT 2014


LGTM, will push latter, thanks.

On Mon, Oct 27, 2014 at 03:34:11PM +0800, junyan.he at inbox.com wrote:
> From: Junyan He <junyan.he at linux.intel.com>
> 
> The test case use OCL_MAP_BUFFER_GTT to map the image
> buffers and then do the result comparison, which may
> cause problems.
> On IVB and HSW, the slice pitch is equal but on BDW,
> because we change the slice pitch of image array, it
> cause this bug.
> Modify it by using the standard clEnqueueReadImage API.
> 
> Signed-off-by: Junyan He <junyan.he at linux.intel.com>
> ---
>  utests/compare_image_2d_and_1d_array.cpp |   21 ++++++++++++++++-----
>  1 file changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/utests/compare_image_2d_and_1d_array.cpp b/utests/compare_image_2d_and_1d_array.cpp
> index f2c828e..a2de507 100644
> --- a/utests/compare_image_2d_and_1d_array.cpp
> +++ b/utests/compare_image_2d_and_1d_array.cpp
> @@ -8,6 +8,10 @@ static void compare_image_2d_and_1d_array(void)
>    cl_image_format format;
>    cl_image_desc desc;
>    cl_sampler sampler;
> +  uint32_t* dst0;
> +  uint32_t* dst1;
> +  size_t origin[3] = { };
> +  size_t region[3];
>  
>    // Create the 1D array buffer.
>    memset(&desc, 0x0, sizeof(cl_image_desc));
> @@ -60,19 +64,26 @@ static void compare_image_2d_and_1d_array(void)
>    locals[1] = 16;
>    OCL_NDRANGE(2);
>  
> -  OCL_MAP_BUFFER_GTT(0);
> -  OCL_MAP_BUFFER_GTT(1);
> +  // Check result
> +  region[0] = w;
> +  region[1] = h;
> +  region[2] = 1;
> +  dst0 = (uint32_t*)malloc(w*h*sizeof(uint32_t));
> +  dst1 = (uint32_t*)malloc(w*h*sizeof(uint32_t));
> +  OCL_READ_IMAGE(buf[0], origin, region, dst0);
> +  OCL_READ_IMAGE(buf[1], origin, region, dst1);
> +
>    for (int j = 0; j < h; ++j) {
>      for (int i = 0; i < w; i++) {
>        // Because the array index will not join the sample caculation, the result should
>        // be different between the 2D and 1D_array.
>        if (j % 2 == 0)
> -        OCL_ASSERT(((uint32_t*)buf_data[0])[j * w + i] == ((uint32_t*)buf_data[1])[j * w + i]);
> +        OCL_ASSERT(dst0[j * w + i] == dst1[j * w + i]);
>      }
>    }
> -  OCL_UNMAP_BUFFER_GTT(0);
> -  OCL_UNMAP_BUFFER_GTT(1);
>  
> +  free(dst0);
> +  free(dst1);
>    OCL_CALL(clReleaseSampler, sampler);
>  }
>  
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list