On 11/25/2016 04:40 PM, Xiang, Haihao wrote:

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?

Background color is cleared on the total surface width/height.
But the csc/scaling conversion is executed on part region of one surface.
They are for the different purpose. So it is not appropriate that the CSC and clearing backgroud color are combined together.

Thanks
  Yakui


The following conversion is supported:
NV12->NV12
NV12->I420
I420->NV12
I420->I420

Signed-off-by: Zhao Yakui<[email protected]>
---
  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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to