diff options
author | Yan Wang <yan.wang@linux.intel.com> | 2017-05-25 10:56:55 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2017-05-25 17:56:50 +0800 |
commit | c443e7a817d5d5dd8c12c5e57f453e00e187d102 (patch) | |
tree | d4d5f68ff8d39b2b07d7c33b3676f67c8b0ebad5 /utests | |
parent | dc69332f39c06f52268caceab3ea8ed58e433bbb (diff) |
Add utest to reproduce the bug of imagedim_non_pow_2 cases of conformance test.
Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
Diffstat (limited to 'utests')
-rw-r--r-- | utests/compiler_fill_large_image.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
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); |