From c443e7a817d5d5dd8c12c5e57f453e00e187d102 Mon Sep 17 00:00:00 2001 From: Yan Wang Date: Thu, 25 May 2017 10:56:55 +0800 Subject: Add utest to reproduce the bug of imagedim_non_pow_2 cases of conformance test. Signed-off-by: Yan Wang --- utests/compiler_fill_large_image.cpp | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'utests') diff --git a/utests/compiler_fill_large_image.cpp b/utests/compiler_fill_large_image.cpp index 6fb872d3..1ecf65b7 100644 --- a/utests/compiler_fill_large_image.cpp +++ b/utests/compiler_fill_large_image.cpp @@ -118,3 +118,49 @@ static void compiler_fill_large_image_1(void) } MAKE_UTEST_FROM_FUNCTION(compiler_fill_large_image_1); + +static void compiler_fill_large_image_2(void) +{ + const size_t w = 8191; + const size_t h = 8192; + const size_t origin[3] = {0, 0, 0}; + const size_t region[3] = {w, h, 1}; + cl_image_format format; + cl_image_desc desc; + + memset(&desc, 0x0, sizeof(cl_image_desc)); + memset(&format, 0x0, sizeof(cl_image_format)); + + // Setup kernel and images + OCL_CREATE_KERNEL("test_copy_image"); + buf_data[0] = (unsigned char*) malloc(sizeof(unsigned char) * 8192 * 8192 * 4); + buf_data[1] = (unsigned char*) malloc(sizeof(unsigned char) * 8192 * 8192 * 4); + for (uint32_t j = 0; j < h; ++j) + for (uint32_t i = 0; i < w; i++) + for (uint32_t k = 0; k < 4; k++) + ((unsigned char*)buf_data[0])[(j * w + i) * 4 + k] = (unsigned char)rand(); + + format.image_channel_order = CL_RGBA; + format.image_channel_data_type = CL_UNORM_INT8; + desc.image_type = CL_MEM_OBJECT_IMAGE2D; + desc.image_width = w; + desc.image_height = h; + desc.image_row_pitch = 0; + OCL_CREATE_IMAGE(buf[0], 0, &format, &desc, NULL); + OCL_WRITE_IMAGE(buf[0], origin, region, buf_data[0]); + OCL_READ_IMAGE(buf[0], origin, region, buf_data[1]); + + // Check result + for (uint32_t j = 0; j < h; ++j) + for (uint32_t i = 0; i < w; i++) + for (uint32_t k = 0; k < 4; k++) + OCL_ASSERT(((uint8_t*)buf_data[0])[(j * w + i) * 4 + k] == + ((uint8_t*)buf_data[1])[(j * w + i) * 4 + k]); + + free(buf_data[0]); + free(buf_data[1]); + buf_data[0] = NULL; + buf_data[1] = NULL; +} + +MAKE_UTEST_FROM_FUNCTION(compiler_fill_large_image_2); -- cgit v1.2.3