[Mesa-dev] [PATCH 2/6] mesa intel driver:

Ian Romanick idr at freedesktop.org
Mon Jun 4 14:51:26 PDT 2012


On 06/04/2012 03:00 AM, Zhao, Halley wrote:
> Thanks for careful review.
>
> 1. My mistake for the XXXXs, we can remove it.
> 	There is MESA_FORMAT_YCBCR_REV for UYVY, so MESA_FORMAT_YCBCR is exactly for YUYV format.
> 	GL_LUMINANCE should be ok since YUYV is an luminance format.

If the internal format is supposed to be a GL enum, it should probably 
be GL_YCBCR_MESA.  Even GL_RGB would be closer since the data includes 
chroma.  If this is a packed format, it should be treated just like 
GL_YCBCR_MESA.

> 2. as to intel_image_target_texture_2d(), an error is added for YUYV region.
> 	Updated patch see below.
>
> 3. A test case is added to demonstrate the usage: http://lists.freedesktop.org/archives/mesa-dev/2012-June/022487.html
> 	As to the case when hw overlay is not available, it is considered in following way:
> 	3.1) when client connect to wayland-server, it gets which formats are supported from server in drm_handle_format(). Client sends YUYV buffer to server only when the server supports it.
> 		Client can convert a YUYV/NV12 buffer to XRGB format through libva: http://lists.freedesktop.org/archives/libva/2012-May/000845.html (YUYV<-->NV12/YV12 are supported)
> 	3.2) if Weston want to support YUYV internally, it can depend on libva's color conversion or some special shader to do it.
>
>  From 5356270a25a300bbe7e0d36a79b031d2fb108a88 Mon Sep 17 00:00:00 2001
> From: Zhao halley<halley.zhao at intel.com>
> Date: Fri, 25 May 2012 11:36:48 +0800
> Subject: [PATCH 2/7] mesa intel driver:
>
>   add YUYV format for dri image
>   YUYV image doesn't use for texture
> ---
>   src/mesa/drivers/dri/intel/intel_screen.c    |    5 +++++
>   src/mesa/drivers/dri/intel/intel_tex_image.c |    6 ++++++
>   2 files changed, 11 insertions(+), 0 deletions(-)
>   mode change 100644 =>  100755 src/mesa/drivers/dri/intel/intel_screen.c
>   mode change 100644 =>  100755 src/mesa/drivers/dri/intel/intel_tex_image.c
>
> diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
> old mode 100644
> new mode 100755
> index 458178f..b8d44ba
> --- a/src/mesa/drivers/dri/intel/intel_screen.c
> +++ b/src/mesa/drivers/dri/intel/intel_screen.c
> @@ -216,6 +216,11 @@ intel_create_image_from_name(__DRIscreen *screen,
>          image->internal_format = GL_RGB;
>          image->data_type = GL_UNSIGNED_BYTE;
>          break;
> +    case __DRI_IMAGE_FORMAT_YUYV:
> +       image->format = MESA_FORMAT_YCBCR;
> +       image->internal_format = GL_LUMINANCE;
> +       image->data_type = GL_UNSIGNED_BYTE;
> +      break;
>       default:
>          free(image);
>          return NULL;
> diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
> old mode 100644
> new mode 100755
> index 094d3cd..8b94cb1
> --- a/src/mesa/drivers/dri/intel/intel_tex_image.c
> +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
> @@ -388,6 +388,12 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target,
>      if (image == NULL)
>         return;
>
> +   if (image->format == MESA_FORMAT_YCBCR) {
> +      _mesa_error(&intel->ctx,
> +		  GL_INVALID_OPERATION, "glEGLImageTargetTexture2DOES, attach YUYV region to texture is not supported");
> +      return;
> +    }
> +
>      intel_set_texture_image_region(ctx, texImage, image->region,
>   				  target, image->internal_format, image->format);
>   }



More information about the mesa-dev mailing list