From: Junyan He Date: Wed, 26 Jun 2013 03:34:20 +0000 (+0800) Subject: Add the test case for clGetProgramInfo API X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e997d3ff4b1e63e7f8b86ce94bb3acfb8ad632a8;p=contrib%2Fbeignet.git Add the test case for clGetProgramInfo API Signed-off-by: Junyan He Reviewed-by: Zhigang Gong --- diff --git a/utests/compiler_shader_toy.cpp b/utests/compiler_shader_toy.cpp index 6c34003..ead9120 100644 --- a/utests/compiler_shader_toy.cpp +++ b/utests/compiler_shader_toy.cpp @@ -45,7 +45,7 @@ static void run_kernel(int w, int h, const char *name) snprintf(kernel_file, sizeof(kernel_file), "%s.cl", name); snprintf(dst_img, sizeof(dst_img), "%s.bmp", name); snprintf(ref_img, sizeof(ref_img), "%s_ref.bmp", name); - OCL_CALL (cl_kernel_init, kernel_file, name, SOURCE); + OCL_CALL (cl_kernel_init, kernel_file, name, SOURCE, NULL); OCL_CREATE_BUFFER(buf[0], 0, sz, NULL); OCL_CALL (clSetKernelArg, kernel, 0, sizeof(cl_mem), &buf[0]); diff --git a/utests/get_cl_info.cpp b/utests/get_cl_info.cpp index 6d5e7bb..bb31032 100644 --- a/utests/get_cl_info.cpp +++ b/utests/get_cl_info.cpp @@ -154,13 +154,13 @@ Info_Result* cast_as(void *info) } -#define CALL_INFO_AND_RET(TYPE, FUNC, OBJ) \ +#define CALL_INFO_AND_RET(TYPE, FUNC, ...) \ do { \ cl_int ret; \ size_t ret_size; \ \ Info_Result* info = cast_as(x.second); \ - ret = FUNC (OBJ, x.first, \ + ret = FUNC (__VA_ARGS__, x.first, \ info->size, info->get_ret(), &ret_size); \ OCL_ASSERT((!ret)); \ OCL_ASSERT((info->check_result())); \ @@ -317,3 +317,48 @@ void get_queue_info(void) MAKE_UTEST_FROM_FUNCTION(get_queue_info); +/* ***************************************************** * + * clGetProgramBuildInfo * + * ***************************************************** */ +#define CALL_PROG_BUILD_INFO_AND_RET(TYPE) CALL_INFO_AND_RET(TYPE, \ + clGetProgramBuildInfo, program, device) + +void get_program_build_info(void) +{ + map maps; + cl_build_status expect_status; + char build_opt[] = "-emit-llvm"; + char log[] = ""; + int sz; + + OCL_CALL (cl_kernel_init, "compiler_if_else.cl", "compiler_if_else", SOURCE, build_opt); + + /* Do our test.*/ + expect_status = CL_BUILD_SUCCESS; + maps.insert(make_pair(CL_PROGRAM_BUILD_STATUS, + (void *)(new Info_Result(expect_status)))); + sz = strlen(build_opt) + 1; + maps.insert(make_pair(CL_PROGRAM_BUILD_OPTIONS, + (void *)(new Info_Result(build_opt, sz)))); + sz = strlen(log) + 1; + maps.insert(make_pair(CL_PROGRAM_BUILD_LOG, /* not supported now, just "" */ + (void *)(new Info_Result(log, sz)))); + + std::for_each(maps.begin(), maps.end(), [](pair x) { + switch (x.first) { + case CL_PROGRAM_BUILD_STATUS: + CALL_PROG_BUILD_INFO_AND_RET(cl_build_status); + break; + case CL_PROGRAM_BUILD_OPTIONS: + CALL_PROG_BUILD_INFO_AND_RET(char *); + break; + case CL_PROGRAM_BUILD_LOG: + CALL_PROG_BUILD_INFO_AND_RET(char *); + break; + default: + break; + } + }); +} + +MAKE_UTEST_FROM_FUNCTION(get_program_build_info); diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp index 3e73db3..941b5f9 100644 --- a/utests/utest_helper.cpp +++ b/utests/utest_helper.cpp @@ -231,7 +231,7 @@ do_kiss_path(const char *file, cl_device_id device) } int -cl_kernel_init(const char *file_name, const char *kernel_name, int format) +cl_kernel_init(const char *file_name, const char *kernel_name, int format, const char * build_opt) { cl_file_map_t *fm = NULL; char *ker_path = NULL; @@ -259,7 +259,7 @@ cl_kernel_init(const char *file_name, const char *kernel_name, int format) } /* OCL requires to build the program even if it is created from a binary */ - OCL_CALL (clBuildProgram, program, 1, &device, NULL, NULL, NULL); + OCL_CALL (clBuildProgram, program, 1, &device, build_opt, NULL, NULL); /* Create a kernel from the program */ kernel = clCreateKernel(program, kernel_name, &status); @@ -394,7 +394,7 @@ cl_test_init(const char *file_name, const char *kernel_name, int format) goto error; /* Load the kernel */ - if ((status = cl_kernel_init(file_name, kernel_name, format)) != CL_SUCCESS) + if ((status = cl_kernel_init(file_name, kernel_name, format, NULL)) != CL_SUCCESS) goto error; error: diff --git a/utests/utest_helper.hpp b/utests/utest_helper.hpp index d642351..0365040 100644 --- a/utests/utest_helper.hpp +++ b/utests/utest_helper.hpp @@ -62,12 +62,12 @@ extern EGLSurface eglSurface; #define OCL_CREATE_KERNEL(NAME) \ do { \ - OCL_CALL (cl_kernel_init, NAME".cl", NAME, SOURCE); \ + OCL_CALL (cl_kernel_init, NAME".cl", NAME, SOURCE, NULL); \ } while (0) #define OCL_CREATE_KERNEL_FROM_FILE(FILE_NAME, KERNEL_NAME) \ do { \ - OCL_CALL(cl_kernel_init, FILE_NAME".cl", KERNEL_NAME, SOURCE); \ + OCL_CALL(cl_kernel_init, FILE_NAME".cl", KERNEL_NAME, SOURCE, NULL); \ } while (0) #define OCL_FLUSH() \ @@ -177,7 +177,8 @@ enum { extern int cl_ocl_init(void); /* Init program and kernel for the test */ -extern int cl_kernel_init(const char *file_name, const char *kernel_name, int format); +extern int cl_kernel_init(const char *file_name, + const char *kernel_name, int format, const char * build_opt); /* init the bunch of global varaibles here */ extern int cl_test_init(const char *file_name, const char *kernel_name, int format);