LGTM, will push latter. Thanks.
On Wed, May 28, 2014 at 05:02:26PM +0800, Yang Rong wrote: > And move the function cl_image_byte_per_pixel call before > cl_image_get_supported_fmt > to return correct error code when format invalid. > > Signed-off-by: Yang Rong <[email protected]> > --- > src/cl_image.c | 3 +++ > src/cl_mem.c | 8 +++++--- > src/intel/intel_driver.c | 4 +++- > 3 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/src/cl_image.c b/src/cl_image.c > index f89bcae..ced9789 100644 > --- a/src/cl_image.c > +++ b/src/cl_image.c > @@ -28,6 +28,9 @@ cl_image_byte_per_pixel(const cl_image_format *fmt, > uint32_t *bpp) > { > assert(bpp); > > + if(fmt == NULL) > + return CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; > + > const uint32_t type = fmt->image_channel_data_type; > const uint32_t order = fmt->image_channel_order; > switch (type) { > diff --git a/src/cl_mem.c b/src/cl_mem.c > index 87ea317..dfe9bcb 100644 > --- a/src/cl_mem.c > +++ b/src/cl_mem.c > @@ -561,7 +561,7 @@ _cl_mem_new_image(cl_context ctx, > /* Only a sub-set of the formats are supported */ > intel_fmt = cl_image_get_intel_format(fmt); > if (UNLIKELY(intel_fmt == INTEL_UNSUPPORTED_FORMAT)) { > - err = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; > + err = CL_IMAGE_FORMAT_NOT_SUPPORTED; > goto error; > } > > @@ -1347,14 +1347,16 @@ LOCAL cl_mem cl_mem_new_libva_image(cl_context ctx, > struct _cl_mem_image *image = NULL; > uint32_t intel_fmt, bpp; > > + /* Get the size of each pixel */ > + if (UNLIKELY((err = cl_image_byte_per_pixel(&fmt, &bpp)) != CL_SUCCESS)) > + goto error; > + > intel_fmt = cl_image_get_intel_format(&fmt); > if (intel_fmt == INTEL_UNSUPPORTED_FORMAT) { > err = CL_IMAGE_FORMAT_NOT_SUPPORTED; > goto error; > } > > - cl_image_byte_per_pixel(&fmt, &bpp); > - > mem = cl_mem_allocate(CL_MEM_IMAGE_TYPE, ctx, 0, 0, 0, &err); > if (mem == NULL || err != CL_SUCCESS) { > err = CL_OUT_OF_HOST_MEMORY; > diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c > index 08d6bc0..76b9ea3 100644 > --- a/src/intel/intel_driver.c > +++ b/src/intel/intel_driver.c > @@ -560,10 +560,12 @@ intel_alloc_buffer_from_texture_egl(cl_context ctx, > unsigned int target, > region.tiling = get_cl_tiling(region.tiling); > if (cl_get_clformat_from_texture(region.gl_format, &cl_format) != 0) > goto error; > + > + if (cl_image_byte_per_pixel(&cl_format, &bpp) != CL_SUCCESS) > + goto error; > intel_fmt = cl_image_get_intel_format(&cl_format); > if (intel_fmt == INTEL_UNSUPPORTED_FORMAT) > goto error; > - cl_image_byte_per_pixel(&cl_format, &bpp); > cl_mem_object_type image_type; > if (get_mem_type_from_target(target, &image_type) != 0) > goto error; > -- > 1.9.1 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
