From: Luo <[email protected]> the option CL_KERNEL_GLOBAL_WORK_SIZE for clGetKernelWorkGroupInfo should call built in kernel or custom device according to the spec, this patch calls the built in kernel to query the GLOBAL_WOR_SIZ.
Signed-off-by: Luo <[email protected]> --- tests/cl/api/get-kernel-work-group-info.c | 40 ++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tests/cl/api/get-kernel-work-group-info.c b/tests/cl/api/get-kernel-work-group-info.c index 47d09da..2b2c7ba 100644 --- a/tests/cl/api/get-kernel-work-group-info.c +++ b/tests/cl/api/get-kernel-work-group-info.c @@ -60,6 +60,7 @@ piglit_cl_test(const int argc, int i; cl_int errNo; + cl_program built_in_prog; cl_kernel kernel; size_t param_value_size; @@ -70,15 +71,47 @@ piglit_cl_test(const int argc, const cl_kernel_work_group_info* kernel_work_group_infos = PIGLIT_CL_ENUM_ARRAY(cl_kernel_work_group_info); - kernel = clCreateKernel(env->program, - "dummy_kernel", - &errNo); + char* built_in_kernel_names; + char* kernel_name; + size_t built_in_kernels_size; + size_t ret_sz; + + errNo = clGetDeviceInfo(env->device_id, CL_DEVICE_BUILT_IN_KERNELS, 0, 0, &built_in_kernels_size); + if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { + fprintf(stderr, + "Failed (error code: %s): Get Device Info.\n", + piglit_cl_get_error_name(errNo)); + return PIGLIT_FAIL; + } + + built_in_kernel_names = (char* )malloc(built_in_kernels_size * sizeof(char) ); + + errNo = clGetDeviceInfo(env->device_id, CL_DEVICE_BUILT_IN_KERNELS, built_in_kernels_size, (void*)built_in_kernel_names, &ret_sz); + if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { + fprintf(stderr, + "Failed (error code: %s): Get Device Info.\n", + piglit_cl_get_error_name(errNo)); + return PIGLIT_FAIL; + } + + built_in_prog = clCreateProgramWithBuiltInKernels(env->context->cl_ctx, 1, &env->device_id, built_in_kernel_names, &errNo); + if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { + fprintf(stderr, + "Failed (error code: %s): Create BuiltIn Program.\n", + piglit_cl_get_error_name(errNo)); + return PIGLIT_FAIL; + } + + kernel_name = strtok(built_in_kernel_names, ";"); + + kernel = clCreateKernel(built_in_prog, kernel_name, &errNo); if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { fprintf(stderr, "Failed (error code: %s): Create kernel.\n", piglit_cl_get_error_name(errNo)); return PIGLIT_FAIL; } + free(built_in_kernel_names); /*** Normal usage ***/ for(i = 0; i < num_kernel_work_group_infos; i++) { @@ -188,6 +221,7 @@ piglit_cl_test(const int argc, } clReleaseKernel(kernel); + clReleaseProgram(built_in_prog); return result; } -- 1.7.9.5 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
