[Mesa-dev] [PATCH 3/3] i965: add support for sampling from AYUV

Tapani Pälli tapani.palli at intel.com
Fri Nov 9 09:47:38 UTC 2018


LGTM
Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

On 11/8/18 8:23 PM, Lionel Landwerlin wrote:
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
>   src/intel/compiler/brw_compiler.h        | 1 +
>   src/intel/compiler/brw_nir.c             | 1 +
>   src/mesa/drivers/dri/i965/brw_wm.c       | 6 ++++++
>   src/mesa/drivers/dri/i965/intel_screen.c | 3 +++
>   4 files changed, 11 insertions(+)
> 
> diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h
> index d8c9499065f..8adc1ff8115 100644
> --- a/src/intel/compiler/brw_compiler.h
> +++ b/src/intel/compiler/brw_compiler.h
> @@ -195,6 +195,7 @@ struct brw_sampler_prog_key_data {
>      uint32_t y_uv_image_mask;
>      uint32_t yx_xuxv_image_mask;
>      uint32_t xy_uxvx_image_mask;
> +   uint32_t ayuv_image_mask;
>   };
>   
>   /**
> diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
> index cf5a4a96d67..26a5ea04605 100644
> --- a/src/intel/compiler/brw_nir.c
> +++ b/src/intel/compiler/brw_nir.c
> @@ -877,6 +877,7 @@ brw_nir_apply_sampler_key(nir_shader *nir,
>      tex_options.lower_y_u_v_external = key_tex->y_u_v_image_mask;
>      tex_options.lower_yx_xuxv_external = key_tex->yx_xuxv_image_mask;
>      tex_options.lower_xy_uxvx_external = key_tex->xy_uxvx_image_mask;
> +   tex_options.lower_ayuv_external = key_tex->ayuv_image_mask;
>   
>      if (nir_lower_tex(nir, &tex_options)) {
>         nir_validate_shader(nir, "after nir_lower_tex");
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
> index 139ca910f9f..fc64f38c156 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm.c
> @@ -263,6 +263,9 @@ brw_debug_recompile_sampler_key(struct brw_context *brw,
>      found |= key_debug(brw, "xy_uxvx image bound",
>                         old_key->xy_uxvx_image_mask,
>                         key->xy_uxvx_image_mask);
> +   found |= key_debug(brw, "ayuv image bound",
> +                      old_key->ayuv_image_mask,
> +                      key->ayuv_image_mask);
>   
>   
>      for (unsigned int i = 0; i < MAX_SAMPLERS; i++) {
> @@ -412,6 +415,9 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
>               case __DRI_IMAGE_COMPONENTS_Y_UXVX:
>                  key->xy_uxvx_image_mask |= 1 << s;
>                  break;
> +            case __DRI_IMAGE_COMPONENTS_AYUV:
> +               key->ayuv_image_mask |= 1 << s;
> +               break;
>               default:
>                  break;
>               }
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
> index c3bd30f7837..fde26bd58c5 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> @@ -286,6 +286,9 @@ static const struct intel_image_format intel_image_formats[] = {
>        { { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
>          { 1, 1, 0, __DRI_IMAGE_FORMAT_GR88, 2 } } },
>   
> +   { __DRI_IMAGE_FOURCC_AYUV, __DRI_IMAGE_COMPONENTS_AYUV, 1,
> +     { { 0, 0, 0, __DRI_IMAGE_FORMAT_ABGR8888, 4 } } },
> +
>      /* For YUYV and UYVY buffers, we set up two overlapping DRI images
>       * and treat them as planar buffers in the compositors.
>       * Plane 0 is GR88 and samples YU or YV pairs and places Y into
> 


More information about the mesa-dev mailing list