> V1->V2: Add the support of clearing background color for NV12

Is it possible to clear the background in your new media kernel instead
of BLT?


> The following conversion is supported:
> NV12->NV12
> NV12->I420
> I420->NV12
> I420->I420
> 
> Signed-off-by: Zhao Yakui <yakui.z...@intel.com>
> ---
>  src/Makefile.am                                |   1 +
>  src/gen75_picture_process.c                    | 140 ++++++++++
>  src/gen8_post_processing.c                     |   5 +
>  src/gen9_post_processing.c                     | 281
> ++++++++++++++++++-
>  src/i965_post_processing.h                     |   5 +
>  src/intel_common_vpp_internal.c                |  74 +++++
>  src/intel_common_vpp_internal.h                |   8 +
>  src/intel_gen_vppapi.h                         |  12 +
>  src/shaders/post_processing/gen9/Makefile.am   |   5 +-
>  src/shaders/post_processing/gen9/conv_nv12.g9b | 368
> +++++++++++++++++++++++++
>  10 files changed, 891 insertions(+), 8 deletions(-)
>  create mode 100644 src/intel_common_vpp_internal.c
>  create mode 100644 src/shaders/post_processing/gen9/conv_nv12.g9b
> 
> diff --git a/src/Makefile.am b/src/Makefile.am
> index c262820..424812b 100755
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -101,6 +101,7 @@ source_c = \
>       gen9_vp9_encoder_kernels.c      \
>       gen9_vp9_const_def.c      \
>       gen9_vp9_encoder.c      \
> +     intel_common_vpp_internal.c           \
>       $(NULL)
>  
>  source_h = \
> diff --git a/src/gen75_picture_process.c
> b/src/gen75_picture_process.c
> index 380015d..d4106f3 100644
> --- a/src/gen75_picture_process.c
> +++ b/src/gen75_picture_process.c
> @@ -103,6 +103,106 @@ static int
> intel_gpe_support_10bit_scaling(struct intel_video_process_context *p
>          return 0;
>  }
>  
> +static void
> +rgb_to_yuv(unsigned int argb,
> +           unsigned char *y,
> +           unsigned char *u,
> +           unsigned char *v,
> +           unsigned char *a)
> +{
> +    int r = ((argb >> 16) & 0xff);
> +    int g = ((argb >> 8) & 0xff);
> +    int b = ((argb >> 0) & 0xff);
> +
> +    *y = (257 * r + 504 * g + 98 * b) / 1000 + 16;
> +    *v = (439 * r - 368 * g - 71 * b) / 1000 + 128;
> +    *u = (-148 * r - 291 * g + 439 * b) / 1000 + 128;
> +    *a = ((argb >> 24) & 0xff);
> +}
> +
> +static void
> +gen8plus_vpp_clear_surface(VADriverContextP ctx,
> +                       struct i965_post_processing_context
> *pp_context,
> +                       struct object_surface *obj_surface,
> +                       unsigned int color)
> +{
> +    struct intel_batchbuffer *batch = pp_context->batch;
> +    unsigned int blt_cmd, br13;
> +    unsigned int tiling = 0, swizzle = 0;
> +    int pitch;
> +    unsigned char y, u, v, a = 0;
> +    int region_width, region_height;
> +
> +    /* Currently only support NV12 surface */
> +    if (!obj_surface || obj_surface->fourcc != VA_FOURCC_NV12)
> +        return;
> +
> +    rgb_to_yuv(color, &y, &u, &v, &a);
> +
> +    if (a == 0)
> +        return;
> +
> +    dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
> +    blt_cmd = GEN8_XY_COLOR_BLT_CMD;
> +    pitch = obj_surface->width;
> +
> +    if (tiling != I915_TILING_NONE) {
> +        assert(tiling == I915_TILING_Y);
> +        // blt_cmd |= XY_COLOR_BLT_DST_TILED;
> +        // pitch >>= 2;
> +    }
> +
> +    br13 = 0xf0 << 16;
> +    br13 |= BR13_8;
> +    br13 |= pitch;
> +
> +    intel_batchbuffer_start_atomic_blt(batch, 56);
> +    BEGIN_BLT_BATCH(batch, 14);
> +
> +    region_width = obj_surface->width;
> +    region_height = obj_surface->height;
> +
> +    OUT_BATCH(batch, blt_cmd);
> +    OUT_BATCH(batch, br13);
> +    OUT_BATCH(batch,
> +              0 << 16 |
> +              0);
> +    OUT_BATCH(batch,
> +              region_height << 16 |
> +              region_width);
> +    OUT_RELOC64(batch, obj_surface->bo,
> +              I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
> +              0);
> +    OUT_BATCH(batch, y);
> +
> +    br13 = 0xf0 << 16;
> +    br13 |= BR13_565;
> +    br13 |= pitch;
> +
> +    region_width = obj_surface->width / 2;
> +    region_height = obj_surface->height / 2;
> +
> +    if (tiling == I915_TILING_Y) {
> +        region_height = ALIGN(obj_surface->height / 2, 32);
> +    }
> +
> +    OUT_BATCH(batch, blt_cmd);
> +    OUT_BATCH(batch, br13);
> +    OUT_BATCH(batch,
> +              0 << 16 |
> +              0);
> +    OUT_BATCH(batch,
> +              region_height << 16 |
> +              region_width);
> +    OUT_RELOC64(batch, obj_surface->bo,
> +              I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
> +              obj_surface->width * obj_surface->y_cb_offset);
> +    OUT_BATCH(batch, v << 8 | u);
> +
> +    ADVANCE_BATCH(batch);
> +    intel_batchbuffer_end_atomic(batch);
> +}
> +
>  VAStatus 
>  gen75_proc_picture(VADriverContextP ctx,
>                     VAProfile profile,
> @@ -208,6 +308,7 @@ gen75_proc_picture(VADriverContextP ctx,
>  #define SRC_10BIT_420    (5 << 0)
>  #define SRC_10BIT_422    (6 << 0)
>  #define SRC_10BIT_444    (7 << 0)
> +#define SRC_8BIT_420     (1 << 0)
>  
>  /* The Bit 6 is used to indicate that it is 10bit or 8bit.
>   * The Bit 5/4 is used to indicate the 420/422/444 format
> @@ -215,6 +316,7 @@ gen75_proc_picture(VADriverContextP ctx,
>  #define DST_10BIT_420    (5 << 4)
>  #define DST_10BIT_422    (6 << 4)
>  #define DST_10BIT_444    (7 << 4)
> +#define DST_8BIT_420     (1 << 4)
>  
>  /* This is mainly for YUY2/RGBA. It is reserved for further */
>  #define SRC_YUV_PACKED   (1 << 3)
> @@ -222,6 +324,7 @@ gen75_proc_picture(VADriverContextP ctx,
>  
>  #define MASK_CSC         (0xFF)
>  #define SCALE_10BIT_420  (SRC_10BIT_420 | DST_10BIT_420)
> +#define SCALE_8BIT_420  (SRC_8BIT_420 | DST_8BIT_420)
>  
>          unsigned int scale_flag;
>  
> @@ -234,6 +337,14 @@ gen75_proc_picture(VADriverContextP ctx,
>              obj_dst_surf->fourcc == VA_FOURCC_I010)
>              scale_flag |= DST_10BIT_420;
>  
> +        if (obj_src_surf->fourcc == VA_FOURCC_NV12 ||
> +            obj_src_surf->fourcc == VA_FOURCC_I420)
> +            scale_flag |= SRC_8BIT_420;
> +
> +        if (obj_dst_surf->fourcc == VA_FOURCC_NV12 ||
> +            obj_dst_surf->fourcc == VA_FOURCC_I420)
> +            scale_flag |= DST_8BIT_420;
> +
>          /* If P010 is converted without resolution change,
>           * fall back to VEBOX
>           */
> @@ -267,6 +378,35 @@ gen75_proc_picture(VADriverContextP ctx,
>                                                       &src_surface,
> &src_rect,
>                                                       &dst_surface,
> &dst_rect);
>          }
> +        if (((scale_flag & MASK_CSC) == SCALE_8BIT_420) &&
> +             intel_vpp_support_yuv420p8_scaling(proc_ctx)) {
> +            struct i965_proc_context *gpe_proc_ctx;
> +            struct i965_surface src_surface, dst_surface;
> +            unsigned int tmp_width, tmp_x;
> +
> +
> +            src_surface.base = (struct object_base *)obj_src_surf;
> +            src_surface.type = I965_SURFACE_TYPE_SURFACE;
> +            dst_surface.base = (struct object_base *)obj_dst_surf;
> +            dst_surface.type = I965_SURFACE_TYPE_SURFACE;
> +            gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
> >vpp_fmt_cvt_ctx;
> +
> +            tmp_x = ALIGN_FLOOR(dst_rect.x, 4);
> +            tmp_width = dst_rect.x + dst_rect.width;
> +            tmp_width = tmp_width - tmp_x;
> +            dst_rect.x = tmp_x;
> +            dst_rect.width = tmp_width;
> +
> +            if (obj_dst_surf->fourcc == VA_FOURCC_NV12 &&
> +                pipeline_param->output_background_color)
> +                gen8plus_vpp_clear_surface(ctx, &gpe_proc_ctx-
> >pp_context,
> +                                           obj_dst_surf,
> +                                           pipeline_param-
> >output_background_color);
> +
> +            return intel_yuv420p8_scaling_post_processing(ctx,
> &gpe_proc_ctx->pp_context,
> +                                                     &src_surface,
> &src_rect,
> +                                                     &dst_surface,
> &dst_rect);
> +        }
>      }
>  
>      proc_ctx->surface_render_output_object = obj_dst_surf;
> diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
> index 5ef8cbf..a70814c 100644
> --- a/src/gen8_post_processing.c
> +++ b/src/gen8_post_processing.c
> @@ -1544,6 +1544,11 @@
> gen8_post_processing_context_finalize(VADriverContextP ctx,
>          pp_context->scaling_context_initialized = 0;
>      }
>  
> +    if (pp_context->scaling_8bit_initialized & VPPGPE_8BIT_420) {
> +        gen8_gpe_context_destroy(&pp_context-
> >scaling_yuv420p8_context);
> +        pp_context->scaling_8bit_initialized &= ~(VPPGPE_8BIT_420);
> +    }
> +
>      if(pp_context->vebox_proc_ctx){
>         gen75_vebox_context_destroy(ctx,pp_context->vebox_proc_ctx);
>         pp_context->vebox_proc_ctx = NULL;
> diff --git a/src/gen9_post_processing.c b/src/gen9_post_processing.c
> index efa8216..88d092b 100644
> --- a/src/gen9_post_processing.c
> +++ b/src/gen9_post_processing.c
> @@ -38,6 +38,7 @@
>  #include "intel_media.h"
>  
>  #include "gen8_post_processing.h"
> +#include "gen75_picture_process.h"
>  #include "intel_gen_vppapi.h"
>  #include "intel_common_vpp_internal.h"
>  
> @@ -113,6 +114,10 @@ static const uint32_t pp_10bit_scaling_gen9[][4]
> = {
>  #include "shaders/post_processing/gen9/conv_p010.g9b"
>  };
>  
> +static const uint32_t pp_yuv420p8_scaling_gen9[][4] = {
> +#include "shaders/post_processing/gen9/conv_nv12.g9b"
> +};
> +
>  static struct pp_module pp_modules_gen9[] = {
>      {
>          {
> @@ -449,7 +454,7 @@ gen9_post_processing(VADriverContextP ctx,
>  }
>  
>  static void
> -gen9_p010_scaling_sample_state(VADriverContextP ctx,
> +gen9_vpp_scaling_sample_state(VADriverContextP ctx,
>                                 struct i965_gpe_context *gpe_context,
>                                 VARectangle *src_rect,
>                                 VARectangle *dst_rect)
> @@ -533,6 +538,45 @@
> gen9_post_processing_context_init(VADriverContextP ctx,
>  
>      gen8_gpe_context_init(ctx, gpe_context);
>      pp_context->scaling_context_initialized = 1;
> +
> +    /* initialize the YUV420 8-Bit scaling context. The below is
> supported.
> +     * NV12 ->NV12
> +     * NV12 ->I420
> +     * I420 ->I420
> +     * I420 ->NV12
> +     */
> +    gpe_context = &pp_context->scaling_yuv420p8_context;
> +    memset(&scaling_kernel, 0, sizeof(scaling_kernel));
> +    scaling_kernel.bin = pp_yuv420p8_scaling_gen9;
> +    scaling_kernel.size = sizeof(pp_yuv420p8_scaling_gen9);
> +    gen8_gpe_load_kernels(ctx, gpe_context, &scaling_kernel, 1);
> +    gpe_context->idrt.entry_size = ALIGN(sizeof(struct
> gen8_interface_descriptor_data), 64);
> +    gpe_context->idrt.max_entries = 1;
> +    gpe_context->sampler.entry_size = ALIGN(sizeof(struct
> gen8_sampler_state), 64);
> +    gpe_context->sampler.max_entries = 1;
> +    gpe_context->curbe.length = ALIGN(sizeof(struct
> scaling_input_parameter), 32);
> +
> +    gpe_context->surface_state_binding_table.max_entries =
> MAX_SCALING_SURFACES;
> +    gpe_context->surface_state_binding_table.binding_table_offset =
> 0;
> +    gpe_context->surface_state_binding_table.surface_state_offset =
> ALIGN(MAX_SCALING_SURFACES * 4, 64);
> +    gpe_context->surface_state_binding_table.length =
> ALIGN(MAX_SCALING_SURFACES * 4, 64) + ALIGN(MAX_SCALING_SURFACES *
> SURFACE_STATE_PADDED_SIZE_GEN9, 64);
> +
> +    if (i965->intel.eu_total > 0) {
> +        gpe_context->vfe_state.max_num_threads = i965-
> >intel.eu_total * 6;
> +    } else {
> +        if (i965->intel.has_bsd2)
> +            gpe_context->vfe_state.max_num_threads = 300;
> +        else
> +            gpe_context->vfe_state.max_num_threads = 60;
> +    }
> +
> +    gpe_context->vfe_state.curbe_allocation_size = 37;
> +    gpe_context->vfe_state.urb_entry_size = 16;
> +    gpe_context->vfe_state.num_urb_entries = 127;
> +    gpe_context->vfe_state.gpgpu_mode = 0;
> +
> +    gen8_gpe_context_init(ctx, gpe_context);
> +    pp_context->scaling_8bit_initialized = VPPGPE_8BIT_420;
>      return;
>  }
>  
> @@ -699,13 +743,13 @@
> gen9_pp_context_get_surface_conf(VADriverContextP ctx,
>          pitch[0] = obj_surface->width;
>          bo_offset[0] = 0;
>  
> -        if (fourcc == VA_FOURCC_P010) {
> +        if (fourcc == VA_FOURCC_P010 || fourcc == VA_FOURCC_NV12) {
>              width[1] = width[0] / 2;
>              height[1] = height[0] / 2;
>              pitch[1] = obj_surface->cb_cr_pitch;
>              bo_offset[1] = obj_surface->width * obj_surface-
> >y_cb_offset;
>          } else {
> -            /* I010 format */
> +            /* I010/I420 format */
>              width[1] = width[0] / 2;
>              height[1] = height[0] / 2;
>              pitch[1] = obj_surface->cb_cr_pitch;
> @@ -726,13 +770,13 @@
> gen9_pp_context_get_surface_conf(VADriverContextP ctx,
>          pitch[0] = obj_image->image.pitches[0];
>          bo_offset[0] = obj_image->image.offsets[0];
>  
> -        if (fourcc == VA_FOURCC_P010) {
> +        if (fourcc == VA_FOURCC_P010 || fourcc == VA_FOURCC_NV12) {
>              width[1] = width[0] / 2;
>              height[1] = height[0] / 2;
>              pitch[1] = obj_image->image.pitches[1];
>              bo_offset[1] = obj_image->image.offsets[1];
>          } else {
> -            /* I010 format */
> +            /* I010/I420 format */
>              width[1] = width[0] / 2;
>              height[1] = height[0] / 2;
>              pitch[1] = obj_image->image.pitches[1];
> @@ -887,7 +931,7 @@ gen9_p010_scaling_post_processing(
>      gpe_context = &pp_context->scaling_10bit_context;
>  
>      gen8_gpe_context_init(ctx, gpe_context);
> -    gen9_p010_scaling_sample_state(ctx, gpe_context, src_rect,
> dst_rect);
> +    gen9_vpp_scaling_sample_state(ctx, gpe_context, src_rect,
> dst_rect);
>      gen9_gpe_reset_binding_table(ctx, gpe_context);
>      gen9_gpe_context_p010_scaling_curbe(ctx, gpe_context,
>                                          src_rect, src_surface,
> @@ -912,3 +956,228 @@ gen9_p010_scaling_post_processing(
>  
>      return VA_STATUS_SUCCESS;
>  }
> +
> +static void
> +gen9_gpe_context_yuv420p8_scaling_curbe(VADriverContextP ctx,
> +                               struct i965_gpe_context *gpe_context,
> +                               VARectangle *src_rect,
> +                               struct i965_surface *src_surface,
> +                               VARectangle *dst_rect,
> +                               struct i965_surface *dst_surface)
> +{
> +    struct scaling_input_parameter *scaling_curbe;
> +    float src_width, src_height;
> +    float coeff;
> +    unsigned int fourcc;
> +
> +    if ((gpe_context == NULL) ||
> +        (src_rect == NULL) || (src_surface == NULL) ||
> +        (dst_rect == NULL) || (dst_surface == NULL))
> +        return;
> +
> +    scaling_curbe = i965_gpe_context_map_curbe(gpe_context);
> +
> +    if (!scaling_curbe)
> +        return;
> +
> +    memset(scaling_curbe, 0, sizeof(struct
> scaling_input_parameter));
> +
> +    scaling_curbe->bti_input = BTI_SCALING_INPUT_Y;
> +    scaling_curbe->bti_output = BTI_SCALING_OUTPUT_Y;
> +
> +    /* As the src_rect/dst_rect is already checked, it is skipped.*/
> +    scaling_curbe->x_dst     = dst_rect->x;
> +    scaling_curbe->y_dst     = dst_rect->y;
> +
> +    src_width = src_rect->x + src_rect->width;
> +    src_height = src_rect->y + src_rect->height;
> +
> +    scaling_curbe->inv_width = 1 / src_width;
> +    scaling_curbe->inv_height = 1 / src_height;
> +
> +    coeff = (float) (src_rect->width) / dst_rect->width;
> +    scaling_curbe->x_factor = coeff / src_width;
> +    scaling_curbe->x_orig = (float)(src_rect->x) / src_width;
> +
> +    coeff = (float) (src_rect->height) / dst_rect->height;
> +    scaling_curbe->y_factor = coeff / src_height;
> +    scaling_curbe->y_orig = (float)(src_rect->y) / src_height;
> +
> +    fourcc = pp_get_surface_fourcc(ctx, src_surface);
> +    if (fourcc == VA_FOURCC_NV12) {
> +        scaling_curbe->dw7.src_packed = 1;
> +    }
> +
> +    fourcc = pp_get_surface_fourcc(ctx, dst_surface);
> +
> +    if (fourcc == VA_FOURCC_NV12) {
> +        scaling_curbe->dw7.dst_packed = 1;
> +    }
> +
> +    i965_gpe_context_unmap_curbe(gpe_context);
> +}
> +
> +static void
> +gen9_gpe_context_yuv420p8_scaling_surfaces(VADriverContextP ctx,
> +                               struct i965_gpe_context *gpe_context,
> +                               VARectangle *src_rect,
> +                               struct i965_surface *src_surface,
> +                               VARectangle *dst_rect,
> +                               struct i965_surface *dst_surface)
> +{
> +    unsigned int fourcc;
> +    int width[3], height[3], pitch[3], bo_offset[3];
> +    dri_bo *bo;
> +    struct object_surface *obj_surface;
> +    struct object_image *obj_image;
> +    int bti;
> +
> +    if ((gpe_context == NULL) ||
> +        (src_rect == NULL) || (src_surface == NULL) ||
> +        (dst_rect == NULL) || (dst_surface == NULL))
> +        return;
> +
> +    if (src_surface->base == NULL || dst_surface->base == NULL)
> +        return;
> +
> +    fourcc = pp_get_surface_fourcc(ctx, src_surface);
> +
> +    if (src_surface->type == I965_SURFACE_TYPE_SURFACE) {
> +        obj_surface = (struct object_surface *)src_surface->base;
> +        bo = obj_surface->bo;
> +    } else {
> +        obj_image = (struct object_image *)src_surface->base;
> +        bo = obj_image->bo;
> +    }
> +
> +    bti = 0;
> +    if (gen9_pp_context_get_surface_conf(ctx, src_surface, src_rect,
> +                                         width, height, pitch,
> +                                         bo_offset)) {
> +        bti = BTI_SCALING_INPUT_Y;
> +        /* Input surface */
> +        gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[0],
> +                                           width[0], height[0],
> +                                           pitch[0], 0,
> +                                           I965_SURFACEFORMAT_R8_UNO
> RM,
> +                                           bti, 0);
> +        if (fourcc == VA_FOURCC_NV12) {
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[1],
> +                                           width[1], height[1],
> +                                           pitch[1], 0,
> +                                           I965_SURFACEFORMAT_R8G8_U
> NORM,
> +                                           bti + 1, 0);
> +        } else {
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[1],
> +                                           width[1], height[1],
> +                                           pitch[1], 0,
> +                                           I965_SURFACEFORMAT_R8_UNO
> RM,
> +                                           bti + 1, 0);
> +
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[2],
> +                                           width[2], height[2],
> +                                           pitch[2], 0,
> +                                           I965_SURFACEFORMAT_R8_UNO
> RM,
> +                                           bti + 2, 0);
> +        }
> +    }
> +
> +    fourcc = pp_get_surface_fourcc(ctx, dst_surface);
> +
> +    if (dst_surface->type == I965_SURFACE_TYPE_SURFACE) {
> +        obj_surface = (struct object_surface *)dst_surface->base;
> +        bo = obj_surface->bo;
> +    } else {
> +        obj_image = (struct object_image *)dst_surface->base;
> +        bo = obj_image->bo;
> +    }
> +
> +    if (gen9_pp_context_get_surface_conf(ctx, dst_surface, dst_rect,
> +                                         width, height, pitch,
> +                                         bo_offset)) {
> +        bti = BTI_SCALING_OUTPUT_Y;
> +        /* Input surface */
> +        gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[0],
> +                                           width[0], height[0],
> +                                           pitch[0], 1,
> +                                           I965_SURFACEFORMAT_R8_UIN
> T,
> +                                           bti, 0);
> +        if (fourcc == VA_FOURCC_NV12) {
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[1],
> +                                           width[1] * 2, height[1],
> +                                           pitch[1], 1,
> +                                           I965_SURFACEFORMAT_R16_UI
> NT,
> +                                           bti + 1, 0);
> +        } else {
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[1],
> +                                           width[1], height[1],
> +                                           pitch[1], 1,
> +                                           I965_SURFACEFORMAT_R8_UIN
> T,
> +                                           bti + 1, 0);
> +
> +            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
> +                                           bo_offset[2],
> +                                           width[2], height[2],
> +                                           pitch[2], 1,
> +                                           I965_SURFACEFORMAT_R8_UIN
> T,
> +                                           bti + 2, 0);
> +        }
> +    }
> +
> +    return;
> +}
> +
> +VAStatus
> +gen9_yuv420p8_scaling_post_processing(
> +    VADriverContextP   ctx,
> +    struct i965_post_processing_context *pp_context,
> +    struct i965_surface *src_surface,
> +    VARectangle *src_rect,
> +    struct i965_surface *dst_surface,
> +    VARectangle *dst_rect)
> +{
> +    struct i965_gpe_context *gpe_context;
> +    struct gpe_media_object_walker_parameter
> media_object_walker_param;
> +    struct intel_vpp_kernel_walker_parameter kernel_walker_param;
> +
> +    if (!pp_context || !src_surface || !src_rect || !dst_surface ||
> !dst_rect)
> +        return VA_STATUS_ERROR_INVALID_PARAMETER;
> +
> +    if (!(pp_context->scaling_8bit_initialized & VPPGPE_8BIT_420))
> +        return VA_STATUS_ERROR_UNIMPLEMENTED;
> +
> +    gpe_context = &pp_context->scaling_yuv420p8_context;
> +
> +    gen8_gpe_context_init(ctx, gpe_context);
> +    gen9_vpp_scaling_sample_state(ctx, gpe_context, src_rect,
> dst_rect);
> +    gen9_gpe_reset_binding_table(ctx, gpe_context);
> +    gen9_gpe_context_yuv420p8_scaling_curbe(ctx, gpe_context,
> +                                        src_rect, src_surface,
> +                                        dst_rect, dst_surface);
> +
> +    gen9_gpe_context_yuv420p8_scaling_surfaces(ctx, gpe_context,
> +                                        src_rect, src_surface,
> +                                        dst_rect, dst_surface);
> +
> +    gen8_gpe_setup_interface_data(ctx, gpe_context);
> +
> +    memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
> +    kernel_walker_param.resolution_x = ALIGN(dst_rect->width, 16) >>
> 4;
> +    kernel_walker_param.resolution_y = ALIGN(dst_rect->height, 16)
> >> 4;
> +    kernel_walker_param.no_dependency = 1;
> +
> +    intel_vpp_init_media_object_walker_parameter(&kernel_walker_para
> m, &media_object_walker_param);
> +
> +    gen9_run_kernel_media_object_walker(ctx, pp_context->batch,
> +                                        gpe_context,
> +                                        &media_object_walker_param);
> +
> +    return VA_STATUS_SUCCESS;
> +}
> diff --git a/src/i965_post_processing.h b/src/i965_post_processing.h
> index e55bf0b..ef1e676 100755
> --- a/src/i965_post_processing.h
> +++ b/src/i965_post_processing.h
> @@ -600,6 +600,11 @@ struct i965_post_processing_context
>  
>      struct i965_gpe_context scaling_10bit_context;
>      int scaling_context_initialized;
> +    struct i965_gpe_context scaling_yuv420p8_context;
> +#define VPPGPE_8BIT_420    (1 << 0)
> +#define VPPGPE_8BIT_422    (1 << 1)
> +#define VPPGPE_8BIT_444    (1 << 2)
> +    unsigned int scaling_8bit_initialized;
>  };
>  
>  struct i965_proc_context
> diff --git a/src/intel_common_vpp_internal.c
> b/src/intel_common_vpp_internal.c
> new file mode 100644
> index 0000000..4da056f
> --- /dev/null
> +++ b/src/intel_common_vpp_internal.c
> @@ -0,0 +1,74 @@
> +/*
> + * Copyright © 2016 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person
> obtaining a
> + * copy of this software and associated documentation files (the
> + * "Software"), to deal in the Software without restriction,
> including
> + * without limitation the rights to use, copy, modify, merge,
> publish,
> + * distribute, sub license, and/or sell copies of the Software, and
> to
> + * permit persons to whom the Software is furnished to do so,
> subject to
> + * the following conditions:
> + *
> + * The above copyright notice and this permission notice (including
> the
> + * next paragraph) shall be included in all copies or substantial
> portions
> + * of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
> INFRINGEMENT.
> + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE
> LIABLE FOR
> + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
> CONTRACT,
> + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> + *
> + */
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +#include <assert.h>
> +
> +#include "intel_batchbuffer.h"
> +#include "intel_driver.h"
> +#include "i965_drv_video.h"
> +#include "i965_post_processing.h"
> +#include "gen75_picture_process.h"
> +
> +#include "intel_gen_vppapi.h"
> +#include "intel_common_vpp_internal.h"
> +
> +int
> +intel_vpp_support_yuv420p8_scaling(struct
> intel_video_process_context *proc_ctx)
> +{
> +    struct i965_proc_context *gpe_proc_ctx;
> +
> +    if (!proc_ctx || !proc_ctx->vpp_fmt_cvt_ctx)
> +        return 0;
> +
> +    gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
> >vpp_fmt_cvt_ctx;
> +
> +    if (gpe_proc_ctx->pp_context.scaling_8bit_initialized &
> VPPGPE_8BIT_420)
> +        return 1;
> +    else
> +        return 0;
> +}
> +
> +VAStatus
> +intel_yuv420p8_scaling_post_processing(
> +    VADriverContextP   ctx,
> +    struct i965_post_processing_context *pp_context,
> +    struct i965_surface *src_surface,
> +    VARectangle *src_rect,
> +    struct i965_surface *dst_surface,
> +    VARectangle *dst_rect)
> +{
> +    VAStatus va_status;
> +
> +    va_status = gen9_yuv420p8_scaling_post_processing(ctx,
> pp_context,
> +                                                      src_surface,
> +                                                      src_rect,
> +                                                      dst_surface,
> +                                                      dst_rect);
> +
> +    return va_status;
> +}
> diff --git a/src/intel_common_vpp_internal.h
> b/src/intel_common_vpp_internal.h
> index 5917533..7575041 100644
> --- a/src/intel_common_vpp_internal.h
> +++ b/src/intel_common_vpp_internal.h
> @@ -63,5 +63,13 @@ struct scaling_input_parameter {
>      unsigned int bti_output;
>  };
>  
> +VAStatus
> +gen9_yuv420p8_scaling_post_processing(
> +    VADriverContextP   ctx,
> +    struct i965_post_processing_context *pp_context,
> +    struct i965_surface *src_surface,
> +    VARectangle *src_rect,
> +    struct i965_surface *dst_surface,
> +    VARectangle *dst_rect);
>  
>  #endif  // _INTEL_COMMON_VPP_INTERNAL_H_
> diff --git a/src/intel_gen_vppapi.h b/src/intel_gen_vppapi.h
> index 270219e..9fe82c9 100644
> --- a/src/intel_gen_vppapi.h
> +++ b/src/intel_gen_vppapi.h
> @@ -46,4 +46,16 @@ gen9_p010_scaling_post_processing(
>      struct i965_surface *dst_surface,
>      VARectangle *dst_rect);
>  
> +extern int
> +intel_vpp_support_yuv420p8_scaling(struct
> intel_video_process_context *proc_ctx);
> +
> +extern VAStatus
> +intel_yuv420p8_scaling_post_processing(
> +    VADriverContextP   ctx,
> +    struct i965_post_processing_context *pp_context,
> +    struct i965_surface *src_surface,
> +    VARectangle *src_rect,
> +    struct i965_surface *dst_surface,
> +    VARectangle *dst_rect);
> +
>  #endif  // _INTE_GEN_VPPAPI_H_
> diff --git a/src/shaders/post_processing/gen9/Makefile.am
> b/src/shaders/post_processing/gen9/Makefile.am
> index 4155cff..7cbacd9 100644
> --- a/src/shaders/post_processing/gen9/Makefile.am
> +++ b/src/shaders/post_processing/gen9/Makefile.am
> @@ -2,7 +2,8 @@ SRCDIR =
> $(top_srcdir)/src/shaders/post_processing/gen8
>  VPATH = $(SRCDIR)
>  
>  INTEL_PP_PRE_G9B =           \
> -     conv_p010.g9b
> +     conv_p010.g9b           \
> +        conv_nv12.g9b
>  
>  INTEL_PP_G9B = \
>       pl2_to_pl2.g9b          \
> @@ -73,7 +74,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
>  
>  EXTRA_DIST = \
>       $(INTEL_PP_G9B) \
> -     $(INTEL_PP_PRE_G9B)
> +     $(INTEL_PP_PRE_G9B) \
>       $(NULL)
>  
>  # Extra clean files so that maintainer-clean removes *everything*
> diff --git a/src/shaders/post_processing/gen9/conv_nv12.g9b
> b/src/shaders/post_processing/gen9/conv_nv12.g9b
> new file mode 100644
> index 0000000..cf3c68f
> --- /dev/null
> +++ b/src/shaders/post_processing/gen9/conv_nv12.g9b
> @@ -0,0 +1,368 @@
> +{ 0x00600001, 0x20602648, 0x00000000, 0x76543210 },
> +{ 0x00000005, 0x26c0124c, 0x16000004, 0x07ff07ff },
> +{ 0x00600001, 0x26e01208, 0x008d0060, 0x00000000 },
> +{ 0x00000005, 0x26c2124c, 0x16000006, 0x07ff07ff },
> +{ 0x00000041, 0x20a01208, 0x160006c0, 0x00100010 },
> +{ 0x00600040, 0x27000208, 0x168d06e0, 0x00080008 },
> +{ 0x00000041, 0x20801228, 0x160006c2, 0x00100010 },
> +{ 0x00000040, 0x26c40228, 0x02000040, 0x000000a0 },
> +{ 0x00800040, 0x26e00208, 0x028d06e0, 0x000000a0 },
> +{ 0x00000041, 0x21003ae8, 0x3e000048, 0x3f000000 },
> +{ 0x00000041, 0x21603ae8, 0x3e00004c, 0x3f000000 },
> +{ 0x00800001, 0x212002e8, 0x00000080, 0x00000000 },
> +{ 0x00800001, 0x20c002e8, 0x008d06e0, 0x00000000 },
> +{ 0x0080015b, 0x3b1e0000, 0xc020b001, 0x02472004 },
> +{ 0x0080015b, 0x391e0000, 0x80208001, 0x01872004 },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x00000054 },
> +{ 0x00800040, 0x27203ae8, 0x3a8d0720, 0x00000050 },
> +{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
> +{ 0x00000001, 0x28a00208, 0x0000005c, 0x00000000 },
> +{ 0x00000040, 0x26c80228, 0x02000044, 0x00000080 },
> +{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
> +{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
> +{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
> +{ 0x02800031, 0x21800268, 0x00000060, 0x00000200 },
> +{ 0x00000001, 0x21c01ee8, 0x00000000, 0x00ff00ff },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
> +{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22400208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x22200208, 0x008d0060, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
> +{ 0x00800001, 0x22800208, 0x008d0760, 0x00000000 },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
> +{ 0x00800001, 0x24600608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x24201ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x23a00208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x23800208, 0x008d0220, 0x00000000 },
> +{ 0x00800001, 0x23e00208, 0x008d0760, 0x00000000 },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
> +{ 0x00800001, 0x25c00608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x25801ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x25000208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x24e00208, 0x008d0380, 0x00000000 },
> +{ 0x00800001, 0x25400208, 0x008d0760, 0x00000000 },
> +{ 0x00600001, 0x2640020c, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
> +{ 0x00000001, 0x2644020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x2640020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x2648060c, 0x00000000, 0x0003000f },
> +{ 0x05000010, 0x20000a23, 0x1e0006cc, 0x00040004 },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
> +{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
> +{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
> +{ 0x00600001, 0x22003a28, 0x008d01a0, 0x00000000 },
> +{ 0x00600001, 0x21e03a28, 0x008d0180, 0x00000000 },
> +{ 0x02800031, 0x21800268, 0x00000220, 0x00000200 },
> +{ 0x00600001, 0x27a82288, 0x00cf0200, 0x00000000 },
> +{ 0x00600001, 0x27a02288, 0x00cf01e0, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
> +{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
> +{ 0x00600001, 0x23603a28, 0x008d01a0, 0x00000000 },
> +{ 0x00600001, 0x23403a28, 0x008d0180, 0x00000000 },
> +{ 0x02800031, 0x21800268, 0x00000380, 0x00000200 },
> +{ 0x00600001, 0x27b82288, 0x00cf0360, 0x00000000 },
> +{ 0x00600001, 0x27b02288, 0x00cf0340, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
> +{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
> +{ 0x00600001, 0x24c03a28, 0x008d01a0, 0x00000000 },
> +{ 0x00600001, 0x24a03a28, 0x008d0180, 0x00000000 },
> +{ 0x02800031, 0x21800268, 0x000004e0, 0x00000200 },
> +{ 0x00600001, 0x27c82288, 0x00cf04c0, 0x00000000 },
> +{ 0x00600001, 0x27c02288, 0x00cf04a0, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060008a0, 0x020a8000 },
> +{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
> +{ 0x00600001, 0x26203a28, 0x008d01a0, 0x00000000 },
> +{ 0x00600001, 0x26003a28, 0x008d0180, 0x00000000 },
> +{ 0x00600001, 0x27d82288, 0x00cf0620, 0x00000000 },
> +{ 0x00600001, 0x27d02288, 0x00cf0600, 0x00000000 },
> +{ 0x0c600033, 0x0003d014, 0x00002642, 0x00000000 },
> +{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffc00 },
> +{ 0x00600001, 0x20602668, 0x00000000, 0x76543210 },
> +{ 0x00000041, 0x20a01228, 0x160006c2, 0x00100010 },
> +{ 0x00600009, 0x27001a08, 0x168d0060, 0x00010001 },
> +{ 0x00000041, 0x20801208, 0x160006c0, 0x00100010 },
> +{ 0x00600001, 0x20c00a08, 0x000000a0, 0x00000000 },
> +{ 0x00600001, 0x26e00208, 0x008d0700, 0x00000000 },
> +{ 0x00600040, 0x20e00208, 0x168d00c0, 0x00020002 },
> +{ 0x00800040, 0x26e00208, 0x028d06e0, 0x00000080 },
> +{ 0x00800001, 0x216002e8, 0x008d00c0, 0x00000000 },
> +{ 0x00800001, 0x212002e8, 0x008d06e0, 0x00000000 },
> +{ 0x00000005, 0x21a00208, 0x1600003c, 0x000c000c },
> +{ 0x0080015b, 0x3b1e0000, 0xc0202a01, 0x02c72004 },
> +{ 0x0080015b, 0x391e0000, 0x80202801, 0x02472004 },
> +{ 0x00000040, 0x21000228, 0x02000044, 0x000000a0 },
> +{ 0x02000010, 0x20000202, 0x160001a0, 0x000c000c },
> +{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x00000038 },
> +{ 0x00800040, 0x27203ae8, 0x3a8d0720, 0x00000034 },
> +{ 0x00000040, 0x26d00208, 0x16000058, 0x00010001 },
> +{ 0x00000040, 0x26d40208, 0x16000058, 0x00020002 },
> +{ 0x00000040, 0x26d80208, 0x1600005c, 0x00010001 },
> +{ 0x00000040, 0x26dc0208, 0x1600005c, 0x00020002 },
> +{ 0x0000000c, 0x26c80a28, 0x1e000100, 0x00010001 },
> +{ 0x00010020, 0x34000006, 0x0e001400, 0x00000370 },
> +{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
> +{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
> +{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
> +{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
> +{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
> +{ 0x00000001, 0x22603ee8, 0x00000000, 0x40800000 },
> +{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04c00404 },
> +{ 0x00800001, 0x23600608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x23201ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22a00208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x22800208, 0x008d0060, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
> +{ 0x00800001, 0x22e00208, 0x008d0760, 0x00000000 },
> +{ 0x00600001, 0x2460020c, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
> +{ 0x00000001, 0x2464020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x2460020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x2468060c, 0x00000000, 0x0003000f },
> +{ 0x05000010, 0x20000a21, 0x1e0006cc, 0x00020002 },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04c00404 },
> +{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
> +{ 0x00600001, 0x22203a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x21e03a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x21c03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x21a03a28, 0x008d07e0, 0x00000000 },
> +{ 0x02800031, 0x27e00268, 0x00000280, 0x00000200 },
> +{ 0x00600001, 0x62400a88, 0x008d0220, 0x00000000 },
> +{ 0x00600001, 0x62000a88, 0x008d01e0, 0x00000000 },
> +{ 0x00600001, 0x47b02288, 0x00cf01c0, 0x00000000 },
> +{ 0x00600001, 0x47a02288, 0x00cf01a0, 0x00000000 },
> +{ 0x00600001, 0x47b12288, 0x00600240, 0x00000000 },
> +{ 0x00600001, 0x47a12288, 0x00600200, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
> +{ 0x00600001, 0x24203a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x23e03a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x23c03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x23a03a28, 0x008d07e0, 0x00000000 },
> +{ 0x00600001, 0x64400a88, 0x008d0420, 0x00000000 },
> +{ 0x00600001, 0x64000a88, 0x008d03e0, 0x00000000 },
> +{ 0x00600001, 0x47d02288, 0x00cf03c0, 0x00000000 },
> +{ 0x00600001, 0x47c02288, 0x00cf03a0, 0x00000000 },
> +{ 0x00600001, 0x47d12288, 0x00600440, 0x00000000 },
> +{ 0x00600001, 0x47c12288, 0x00600400, 0x00000000 },
> +{ 0x0c600033, 0x0003d014, 0x00002462, 0x00000000 },
> +{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffcb0 },
> +{ 0x00000020, 0x34000004, 0x0e001400, 0x00000cc0 },
> +{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
> +{ 0x02000010, 0x20000200, 0x16000060, 0x00040004 },
> +{ 0x00010020, 0x34000004, 0x0e001400, 0x000003a0 },
> +{ 0x0000000c, 0x26c40a28, 0x1e0006c4, 0x00010001 },
> +{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
> +{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
> +{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
> +{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
> +{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
> +{ 0x00000001, 0x22203ee8, 0x00000000, 0x40800000 },
> +{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04400404 },
> +{ 0x00800001, 0x23200608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22e01ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22600208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x22400208, 0x008d0060, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
> +{ 0x00800001, 0x22a00208, 0x008d0760, 0x00000000 },
> +{ 0x00600001, 0x23e0020c, 0x008d0000, 0x00000000 },
> +{ 0x00000001, 0x23e4020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x23e0020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x23e8060c, 0x00000000, 0x00030007 },
> +{ 0x00600001, 0x2400020c, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
> +{ 0x00000001, 0x2404020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x2400020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x2408060c, 0x00000000, 0x00030007 },
> +{ 0x05000010, 0x20000a23, 0x1e0006cc, 0x00020002 },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04400404 },
> +{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
> +{ 0x00600001, 0x22003a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x21e03a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x21c03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x21a03a28, 0x008d07e0, 0x00000000 },
> +{ 0x02800031, 0x27e00268, 0x00000240, 0x00000200 },
> +{ 0x00600001, 0x28882288, 0x00cf0200, 0x00000000 },
> +{ 0x00600001, 0x28682288, 0x00cf01c0, 0x00000000 },
> +{ 0x00600001, 0x28602288, 0x00cf01a0, 0x00000000 },
> +{ 0x00600001, 0x28802288, 0x00cf01e0, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
> +{ 0x00600001, 0x23803a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x23603a28, 0x008d07e0, 0x00000000 },
> +{ 0x00600001, 0x28782288, 0x00cf0380, 0x00000000 },
> +{ 0x00600001, 0x28702288, 0x00cf0360, 0x00000000 },
> +{ 0x0c600033, 0x00043014, 0x000023e1, 0x00000000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
> +{ 0x00600001, 0x23c03a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x23a03a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x28982288, 0x00cf03c0, 0x00000000 },
> +{ 0x00600001, 0x28902288, 0x00cf03a0, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006dc, 0x020a8000 },
> +{ 0x0c600033, 0x00044014, 0x00002401, 0x00000000 },
> +{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffc90 },
> +{ 0x00000020, 0x34000004, 0x0e001400, 0x000008f0 },
> +{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
> +{ 0x02000010, 0x20000202, 0x16000060, 0x00080008 },
> +{ 0x00010020, 0x34000006, 0x0e001400, 0x00000450 },
> +{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
> +{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
> +{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
> +{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
> +{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
> +{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21e00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x21a00208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
> +{ 0x00600001, 0x23a00208, 0x008d0180, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
> +{ 0x00600001, 0x24c00208, 0x008d03a0, 0x00000000 },
> +{ 0x02800031, 0x28200268, 0x00000180, 0x00000200 },
> +{ 0x00000001, 0x23803ee8, 0x00000000, 0x40800000 },
> +{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x07000404 },
> +{ 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x24401ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x23c00208, 0x008d0720, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
> +{ 0x00800001, 0x24000208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x25a00608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x25601ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x24e00208, 0x008d0720, 0x00000000 },
> +{ 0x00800001, 0x25200208, 0x008d0760, 0x00000000 },
> +{ 0x00600001, 0x26a0020c, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
> +{ 0x00000001, 0x26a4020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x26a0020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x26a8060c, 0x00000000, 0x0003000f },
> +{ 0x05000010, 0x20000a21, 0x1e0006cc, 0x00020002 },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x07000404 },
> +{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
> +{ 0x00600001, 0x22e03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x22c03a28, 0x008d07e0, 0x00000000 },
> +{ 0x02800031, 0x27e00268, 0x000003a0, 0x00000200 },
> +{ 0x00600001, 0x47b02288, 0x00cf02e0, 0x00000000 },
> +{ 0x00600001, 0x47a02288, 0x00cf02c0, 0x00000000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
> +{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
> +{ 0x00600001, 0x23403a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x23003a28, 0x008d0820, 0x00000000 },
> +{ 0x02800031, 0x28200268, 0x000004c0, 0x00000200 },
> +{ 0x00600001, 0x63600a88, 0x008d0340, 0x00000000 },
> +{ 0x00600001, 0x63200a88, 0x008d0300, 0x00000000 },
> +{ 0x00600001, 0x47b12288, 0x00600360, 0x00000000 },
> +{ 0x00600001, 0x47a12288, 0x00600320, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
> +{ 0x00600001, 0x26003a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x25e03a28, 0x008d07e0, 0x00000000 },
> +{ 0x00600001, 0x47d02288, 0x00cf0600, 0x00000000 },
> +{ 0x00600001, 0x47c02288, 0x00cf05e0, 0x00000000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
> +{ 0x00600001, 0x26603a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x26203a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x66800a88, 0x008d0660, 0x00000000 },
> +{ 0x00600001, 0x66400a88, 0x008d0620, 0x00000000 },
> +{ 0x00600001, 0x47d12288, 0x00600680, 0x00000000 },
> +{ 0x00600001, 0x47c12288, 0x00600640, 0x00000000 },
> +{ 0x0c600033, 0x0003d014, 0x000026a2, 0x00000000 },
> +{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffbd0 },
> +{ 0x00000020, 0x34000004, 0x0e001400, 0x00000470 },
> +{ 0x0000000c, 0x26c40a28, 0x1e0006c4, 0x00010001 },
> +{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
> +{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
> +{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
> +{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
> +{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
> +{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x21e00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x21a00208, 0x008d0720, 0x00000000 },
> +{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
> +{ 0x00600001, 0x23600208, 0x008d0180, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
> +{ 0x00600001, 0x24800208, 0x008d0360, 0x00000000 },
> +{ 0x02800031, 0x28200268, 0x00000180, 0x00000200 },
> +{ 0x00000001, 0x23403ee8, 0x00000000, 0x40800000 },
> +{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x06800404 },
> +{ 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x24001ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x23800208, 0x008d0720, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
> +{ 0x00800001, 0x23c00208, 0x008d0760, 0x00000000 },
> +{ 0x00800001, 0x25600608, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x25201ee8, 0x00000000, 0x00000000 },
> +{ 0x00800001, 0x24a00208, 0x008d0720, 0x00000000 },
> +{ 0x00800001, 0x24e00208, 0x008d0760, 0x00000000 },
> +{ 0x00600001, 0x2620020c, 0x008d0000, 0x00000000 },
> +{ 0x00000001, 0x2624020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x2620020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x2628060c, 0x00000000, 0x00030007 },
> +{ 0x00600001, 0x2640020c, 0x008d0000, 0x00000000 },
> +{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
> +{ 0x00000001, 0x2644020c, 0x000006c8, 0x00000000 },
> +{ 0x00000001, 0x2640020c, 0x000006c4, 0x00000000 },
> +{ 0x00000001, 0x2648060c, 0x00000000, 0x00030007 },
> +{ 0x05000010, 0x20000a20, 0x1e0006cc, 0x00020002 },
> +{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x06800404 },
> +{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
> +{ 0x00600001, 0x22e03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x22c03a28, 0x008d07e0, 0x00000000 },
> +{ 0x02800031, 0x27e00268, 0x00000360, 0x00000200 },
> +{ 0x00600001, 0x28682288, 0x00cf02e0, 0x00000000 },
> +{ 0x00600001, 0x28602288, 0x00cf02c0, 0x00000000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
> +{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
> +{ 0x00600001, 0x23203a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x23003a28, 0x008d0820, 0x00000000 },
> +{ 0x02800031, 0x28200268, 0x00000480, 0x00000200 },
> +{ 0x00600001, 0x28882288, 0x00cf0320, 0x00000000 },
> +{ 0x00600001, 0x28802288, 0x00cf0300, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
> +{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
> +{ 0x00600001, 0x25c03a28, 0x008d0800, 0x00000000 },
> +{ 0x00600001, 0x25a03a28, 0x008d07e0, 0x00000000 },
> +{ 0x00600001, 0x28782288, 0x00cf05c0, 0x00000000 },
> +{ 0x00600001, 0x28702288, 0x00cf05a0, 0x00000000 },
> +{ 0x0c600033, 0x00043014, 0x00002621, 0x00000000 },
> +{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
> +{ 0x00600001, 0x26003a28, 0x008d0840, 0x00000000 },
> +{ 0x00600001, 0x25e03a28, 0x008d0820, 0x00000000 },
> +{ 0x00600001, 0x28982288, 0x00cf0600, 0x00000000 },
> +{ 0x00000040, 0x22000204, 0x060006dc, 0x020a8000 },
> +{ 0x00600001, 0x28902288, 0x00cf05e0, 0x00000000 },
> +{ 0x0c600033, 0x00044014, 0x00002641, 0x00000000 },
> +{ 0x00010020, 0x34000004, 0x0e001400, 0xfffffbb0 },
> +{ 0x00600001, 0x2fe0020c, 0x008d0000, 0x00000000 },
> +{ 0x07000031, 0x20000200, 0x06000fe0, 0x82000010 },
_______________________________________________
Libva mailing list
Libva@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to