[Beignet] [PATCH 2/2] Refine error check in clCreateProgramFromSource() and clCreateKernel()

Zhigang Gong zhigang.gong at linux.intel.com
Thu Jun 13 20:37:50 PDT 2013


LGTM, will push this patchset latter. Thanks.

On Thu, Jun 13, 2013 at 09:40:17AM +0800, Ruiling Song wrote:
> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
> ---
>  src/cl_api.c     |   15 +++++++++++----
>  src/cl_program.c |    7 -------
>  2 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/src/cl_api.c b/src/cl_api.c
> index fd707e5..f14bee4 100644
> --- a/src/cl_api.c
> +++ b/src/cl_api.c
> @@ -616,8 +616,17 @@ clCreateProgramWithSource(cl_context     context,
>  {
>    cl_program program = NULL;
>    cl_int err = CL_SUCCESS;
> +  cl_uint i;
>  
>    CHECK_CONTEXT (context);
> +  INVALID_VALUE_IF (count == 0);
> +  INVALID_VALUE_IF (strings == NULL);
> +  for(i = 0; i < count; i++) {
> +    if(UNLIKELY(strings[i] == NULL)) {
> +      err = CL_INVALID_VALUE;
> +      goto error;
> +    }
> +  }
>    program = cl_program_create_from_source(context,
>                                            count,
>                                            strings,
> @@ -691,10 +700,7 @@ clBuildProgram(cl_program            program,
>    /* Everything is easy. We only support one device anyway */
>    if (num_devices != 0) {
>      assert(program->ctx);
> -    if (UNLIKELY(device_list[0] != program->ctx->device)) {
> -      err = CL_INVALID_DEVICE;
> -      goto error;
> -    }
> +    INVALID_DEVICE_IF (device_list[0] != program->ctx->device);
>    }
>  
>    /* TODO support create program from binary */
> @@ -752,6 +758,7 @@ clCreateKernel(cl_program   program,
>      err = CL_INVALID_PROGRAM_EXECUTABLE;
>      goto error;
>    }
> +  INVALID_VALUE_IF (kernel_name == NULL);
>    kernel = cl_program_create_kernel(program, kernel_name, &err);
>  
>  error:
> diff --git a/src/cl_program.c b/src/cl_program.c
> index 0c48ef3..6acf31f 100644
> --- a/src/cl_program.c
> +++ b/src/cl_program.c
> @@ -236,8 +236,6 @@ cl_program_create_from_source(cl_context ctx,
>    cl_uint i;
>  
>    assert(ctx);
> -  INVALID_VALUE_IF (count == 0);
> -  INVALID_VALUE_IF (strings == NULL);
>  
>    // the real compilation step will be done at build time since we do not have
>    // yet the compilation options
> @@ -297,11 +295,6 @@ cl_program_create_kernel(cl_program p, const char *name, cl_int *errcode_ret)
>    cl_int err = CL_SUCCESS;
>    uint32_t i = 0;
>  
> -  if (UNLIKELY(name == NULL)) {
> -    err = CL_INVALID_KERNEL_NAME;
> -    goto error;
> -  }
> -
>    /* Find the program first */
>    for (i = 0; i < p->ker_n; ++i) {
>      assert(p->ker[i]);
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list