[Beignet] [PATCH] Fix clGetKernelArgInfo fail on piglit
Yang, Rong R
rong.r.yang at intel.com
Tue Sep 1 22:29:26 PDT 2015
LGTM, pushed, thanks.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Pan Xiuli
> Sent: Monday, August 31, 2015 11:04
> To: beignet at lists.freedesktop.org
> 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 <xiuli.pan at intel.com>
> ---
> 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
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list