LGTM, pushed, thanks.
> -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > Pan Xiuli > Sent: Monday, August 31, 2015 11:04 > To: [email protected] > Cc: Pan, Xiuli > Subject: [Beignet] [PATCH] Fix clGetKernelArgInfo fail on piglit > > 1.Change the code for null param_value > 2.Add the return value check for build option "-cl-kernel-arg-info" > 3.Correct one return value typo > > Signed-off-by: Pan Xiuli <[email protected]> > --- > src/cl_api.c | 4 ++++ > src/cl_kernel.c | 18 +++++++++--------- > 2 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/src/cl_api.c b/src/cl_api.c index 5c9b250..d1d7a09 100644 > --- a/src/cl_api.c > +++ b/src/cl_api.c > @@ -1251,6 +1251,10 @@ cl_int clGetKernelArgInfo(cl_kernel kernel, cl_uint > arg_index, cl_kernel_arg_inf > cl_int err = CL_SUCCESS; > CHECK_KERNEL(kernel); > > + if(strstr(kernel->program->build_opts,"-cl-kernel-arg-info") == NULL ) { > + err = CL_KERNEL_ARG_INFO_NOT_AVAILABLE; > + goto error; > + } > if (param_name != CL_KERNEL_ARG_ADDRESS_QUALIFIER > && param_name != CL_KERNEL_ARG_ACCESS_QUALIFIER > && param_name != CL_KERNEL_ARG_TYPE_NAME diff --git > a/src/cl_kernel.c b/src/cl_kernel.c index 28d88b6..286e57c 100644 > --- a/src/cl_kernel.c > +++ b/src/cl_kernel.c > @@ -227,11 +227,11 @@ cl_get_kernel_arg_info(cl_kernel k, cl_uint > arg_index, cl_kernel_arg_info param_ > > switch (param_name) { > case CL_KERNEL_ARG_ADDRESS_QUALIFIER: > - if (param_value_size < sizeof(cl_kernel_arg_address_qualifier)) > - return CL_INVALID_VALUE; > if (param_value_size_ret) > *param_value_size_ret = sizeof(cl_kernel_arg_address_qualifier); > if (!param_value) return CL_SUCCESS; > + if (param_value_size < sizeof(cl_kernel_arg_address_qualifier)) > + return CL_INVALID_VALUE; > if ((cl_ulong)ret_info == 0) { > *(cl_kernel_arg_address_qualifier *)param_value = > CL_KERNEL_ARG_ADDRESS_PRIVATE; > } else if ((cl_ulong)ret_info == 1 || (cl_ulong)ret_info == 4) { @@ > -243,16 > +243,16 @@ cl_get_kernel_arg_info(cl_kernel k, cl_uint arg_index, > cl_kernel_arg_info param_ > } else { > /* If no address qualifier is specified, the default address qualifier > which is CL_KERNEL_ARG_ADDRESS_PRIVATE is returned. */ > - *(cl_kernel_arg_address_qualifier *)param_value = > CL_KERNEL_ARG_ADDRESS_LOCAL; > + *(cl_kernel_arg_address_qualifier *)param_value = > + CL_KERNEL_ARG_ADDRESS_PRIVATE; > } > return CL_SUCCESS; > > case CL_KERNEL_ARG_ACCESS_QUALIFIER: > - if (param_value_size < sizeof(cl_kernel_arg_access_qualifier)) > - return CL_INVALID_VALUE; > if (param_value_size_ret) > *param_value_size_ret = sizeof(cl_kernel_arg_access_qualifier); > if (!param_value) return CL_SUCCESS; > + if (param_value_size < sizeof(cl_kernel_arg_access_qualifier)) > + return CL_INVALID_VALUE; > if (!strcmp((char*)ret_info, "write_only")) { > *(cl_kernel_arg_address_qualifier *)param_value = > CL_KERNEL_ARG_ACCESS_WRITE_ONLY; > } else if (!strcmp((char*)ret_info, "read_only")) { @@ -267,21 +267,21 @@ > cl_get_kernel_arg_info(cl_kernel k, cl_uint arg_index, cl_kernel_arg_info > param_ > case CL_KERNEL_ARG_TYPE_NAME: > case CL_KERNEL_ARG_NAME: > str_len = strlen(ret_info); > - if (param_value_size < str_len + 1) > - return CL_INVALID_VALUE; > if (param_value_size_ret) > *param_value_size_ret = str_len + 1; > if (!param_value) return CL_SUCCESS; > + if (param_value_size < str_len + 1) > + return CL_INVALID_VALUE; > memcpy(param_value, ret_info, str_len); > ((char *)param_value)[str_len] = 0; > return CL_SUCCESS; > > case CL_KERNEL_ARG_TYPE_QUALIFIER: > - if (param_value_size < sizeof(cl_kernel_arg_type_qualifier)) > - return CL_INVALID_VALUE; > if (param_value_size_ret) > *param_value_size_ret = sizeof(cl_kernel_arg_type_qualifier); > if (!param_value) return CL_SUCCESS; > + if (param_value_size < sizeof(cl_kernel_arg_type_qualifier)) > + return CL_INVALID_VALUE; > if (strstr((char*)ret_info, "const") && > (arg_type == GBE_ARG_GLOBAL_PTR || > arg_type == GBE_ARG_CONSTANT_PTR || > -- > 2.1.4 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
