[Mesa-dev] [PATCH 10/10] radeon: implement DRIImage::createImageFromRenderbuffer2
Eric Engestrom
eric.engestrom at imgtec.com
Tue Oct 17 10:40:48 UTC 2017
On Monday, 2017-10-16 16:04:12 +0000, Emil Velikov wrote:
> From: Emil Velikov <emil.velikov at collabora.com>
>
> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> ---
> src/mesa/drivers/dri/radeon/radeon_screen.c | 37 +++++++++++++++++++----------
> 1 file changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
> index 51af452e245..02f0c1a6147 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_screen.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
> @@ -241,8 +241,9 @@ radeon_create_image_from_name(__DRIscreen *screen,
> }
>
> static __DRIimage *
> -radeon_create_image_from_renderbuffer(__DRIcontext *context,
> - int renderbuffer, void *loaderPrivate)
> +radeon_create_image_from_renderbuffer2(__DRIcontext *context,
> + int renderbuffer, void *loaderPrivate,
> + unsigned *error)
> {
> __DRIimage *image;
> radeonContextPtr radeon = context->driverPrivate;
> @@ -251,15 +252,16 @@ radeon_create_image_from_renderbuffer(__DRIcontext *context,
>
> rb = _mesa_lookup_renderbuffer(&radeon->glCtx, renderbuffer);
> if (!rb) {
> - _mesa_error(&radeon->glCtx,
> - GL_INVALID_OPERATION, "glRenderbufferExternalMESA");
> + *error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
> return NULL;
> }
>
> rrb = radeon_renderbuffer(rb);
> image = calloc(1, sizeof *image);
> - if (image == NULL)
> + if (image == NULL) {
> + *error = __DRI_IMAGE_ERROR_BAD_ALLOC;
> return NULL;
> + }
>
> image->internal_format = rb->InternalFormat;
> image->format = rb->Format;
> @@ -273,9 +275,19 @@ radeon_create_image_from_renderbuffer(__DRIcontext *context,
> image->height = rb->Height;
> image->pitch = rrb->pitch / image->cpp;
>
> + *error = __DRI_IMAGE_ERROR_SUCCESS;
> return image;
> }
>
> +static __DRIimage *
> +radeon_create_image_from_renderbuffer(__DRIcontext *context,
> + int renderbuffer, void *loaderPrivate)
> +{
> + unsigned error;
> + return radeon_create_image_from_renderbuffer2(context, renderbuffer,
> + loaderPrivate, &error);
Same as the previous two patches, I think you should keep _mesa_error()
here.
> +}
> +
> static void
> radeon_destroy_image(__DRIimage *image)
> {
> @@ -359,13 +371,14 @@ radeon_query_image(__DRIimage *image, int attrib, int *value)
> }
>
> static const __DRIimageExtension radeonImageExtension = {
> - .base = { __DRI_IMAGE, 1 },
> -
> - .createImageFromName = radeon_create_image_from_name,
> - .createImageFromRenderbuffer = radeon_create_image_from_renderbuffer,
> - .destroyImage = radeon_destroy_image,
> - .createImage = radeon_create_image,
> - .queryImage = radeon_query_image
> + .base = { __DRI_IMAGE, 17 },
> +
> + .createImageFromName = radeon_create_image_from_name,
> + .createImageFromRenderbuffer = radeon_create_image_from_renderbuffer,
> + .destroyImage = radeon_destroy_image,
> + .createImage = radeon_create_image,
> + .queryImage = radeon_query_image,
> + .createImageFromRenderbuffer2 = radeon_create_image_from_renderbuffer2,
> };
>
> static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
> --
> 2.14.1
>
More information about the mesa-dev
mailing list