On Wed, Sep 24, 2014 at 01:13:18AM +0000, Luo, Xionghu wrote: > Hi Tom, > According to the opencl-1.2 spec in page 165, the option > CL_KERNEL_GLOBAL_WORK_SIZE for clGetKernelWorkGroupInfo should call built in > kernel or custom device. > > "This provides a mechanism for the > application to query the maximum global > size that can be used to execute a kernel > (i.e. global_work_size argument to > clEnqueueNDRangeKernel) on a custom > device given by device or a built-in kernel > on an OpenCL device given by device. > If device is not a custom device or kernel > is not a built-in kernel, > clGetKernelArgInfo returns the error > CL_INVALID_VALUE." > > And this case called dummy kernel instead of built in kernel, so the return > value is not as expected, my patch could call built in kernel to test the > correct return value of option CL_KERNEL_GLOBAL_WORK_SIZE. >
I'm still confused by this patch, because the CL_KERNEL_GLOBAL_WORK_SIZE enum value does not appear anywhere in this patch or in the file being patched. -Tom > > > Luo Xionghu > Best Regards > > -----Original Message----- > From: Tom Stellard [mailto:[email protected]] > Sent: Friday, September 19, 2014 10:14 PM > To: Luo, Xionghu > Cc: [email protected] > Subject: Re: [Piglit] [PATCH] fix CL_KERNEL_GLOBAL_WORK_SIZE bug. > > On Wed, Sep 17, 2014 at 06:05:12AM +0800, [email protected] wrote: > > 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. > > > > This commit message doesn't seem to match the contents of the patch. > > > 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); > > Won't this call fail if there are no builtin kernels? > > -Tom > > > + 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 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
