OSDN Git Service

Fix typo of variable name
[android-x86/hardware-intel-common-vaapi.git] / src / gen9_vp9_encoder.c
index f29bbbe..f44f8ab 100644 (file)
@@ -46,6 +46,7 @@
 #include "vp9_probs.h"
 #include "gen9_vp9_const_def.h"
 
+#define MAX_VP9_ENCODER_FRAMERATE       60
 #define MAX_VP9_ENCODER_SURFACES        64
 
 #define MAX_URB_SIZE                    4096 /* In register */
@@ -306,7 +307,7 @@ gen9_vp9_check_dys_surfaces(VADriverContextP ctx,
      * the expected, it is unnecessary to allocate it again
      */
     if (vp9_surface->dys_frame_width == surface_param->frame_width &&
-        vp9_surface->dys_frame_width == surface_param->frame_width)
+        vp9_surface->dys_frame_height == surface_param->frame_height)
         return VA_STATUS_SUCCESS;
 
     if (vp9_surface->dys_4x_surface_obj) {
@@ -1059,7 +1060,7 @@ void gen9_vp9_set_curbe_brc(VADriverContextP ctx,
         cmd->dw13.init_frame_width   = pic_param->frame_width_src;
         cmd->dw13.init_frame_height   = pic_param->frame_height_src;
 
-        cmd->dw15.min_qp          = 0;
+        cmd->dw15.min_qp          = 1;
         cmd->dw15.max_qp          = 255;
 
         cmd->dw16.cq_level            = 30;
@@ -1108,7 +1109,7 @@ void gen9_vp9_set_curbe_brc(VADriverContextP ctx,
         break;
     }
     case VP9_MEDIA_STATE_BRC_UPDATE: {
-        cmd->dw15.min_qp          = 0;
+        cmd->dw15.min_qp          = 1;
         cmd->dw15.max_qp          = 255;
 
         cmd->dw25.frame_number    = param->frame_number;
@@ -1190,7 +1191,7 @@ gen9_brc_init_reset_add_surfaces_vp9(VADriverContextP ctx,
 {
     struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
 
-    gen9_add_buffer_gpe_surface(ctx,
+    i965_add_buffer_gpe_surface(ctx,
                                 gpe_context,
                                 &vme_context->res_brc_history_buffer,
                                 0,
@@ -1198,7 +1199,7 @@ gen9_brc_init_reset_add_surfaces_vp9(VADriverContextP ctx,
                                 0,
                                 VP9_BTI_BRC_HISTORY_G9);
 
-    gen9_add_buffer_2d_gpe_surface(ctx,
+    i965_add_buffer_2d_gpe_surface(ctx,
                                    gpe_context,
                                    &vme_context->s4x_memv_distortion_buffer,
                                    1,
@@ -1286,18 +1287,18 @@ gen9_brc_intra_dist_add_surfaces_vp9(VADriverContextP ctx,
     vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
 
     obj_surface = vp9_priv_surface->scaled_4x_surface_obj;
-    gen9_add_2d_gpe_surface(ctx, gpe_context,
+    i965_add_2d_gpe_surface(ctx, gpe_context,
                             obj_surface,
                             0, 1,
                             I965_SURFACEFORMAT_R8_UNORM,
                             VP9_BTI_BRC_SRCY4X_G9
                            );
 
-    gen9_add_adv_gpe_surface(ctx, gpe_context,
+    i965_add_adv_gpe_surface(ctx, gpe_context,
                              obj_surface,
                              VP9_BTI_BRC_VME_COARSE_INTRA_G9);
 
-    gen9_add_buffer_2d_gpe_surface(ctx,
+    i965_add_buffer_2d_gpe_surface(ctx,
                                    gpe_context,
                                    &vme_context->s4x_memv_distortion_buffer,
                                    1,
@@ -1613,7 +1614,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
     struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
 
     /* 0. BRC history buffer */
-    gen9_add_buffer_gpe_surface(ctx,
+    i965_add_buffer_gpe_surface(ctx,
                                 brc_gpe_context,
                                 &vme_context->res_brc_history_buffer,
                                 0,
@@ -1622,7 +1623,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_HISTORY_G9);
 
     /* 1. Constant data buffer */
-    gen9_add_buffer_gpe_surface(ctx,
+    i965_add_buffer_gpe_surface(ctx,
                                 brc_gpe_context,
                                 &vme_context->res_brc_const_data_buffer,
                                 0,
@@ -1631,7 +1632,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_CONSTANT_DATA_G9);
 
     /* 2. Distortion 2D surface buffer */
-    gen9_add_buffer_2d_gpe_surface(ctx,
+    i965_add_buffer_2d_gpe_surface(ctx,
                                    brc_gpe_context,
                                    &vme_context->s4x_memv_distortion_buffer,
                                    1,
@@ -1639,7 +1640,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                    VP9_BTI_BRC_DISTORTION_G9);
 
     /* 3. pak buffer */
-    gen9_add_buffer_gpe_surface(ctx,
+    i965_add_buffer_gpe_surface(ctx,
                                 brc_gpe_context,
                                 &vme_context->res_brc_mmdk_pak_buffer,
                                 0,
@@ -1664,7 +1665,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                     VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9);
 
     /* 6. BRC_PIC_STATE read buffer */
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_pic_state_brc_read_buffer,
                                 0,
                                 vme_context->res_pic_state_brc_read_buffer.size,
@@ -1672,7 +1673,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_PIC_STATE_INPUT_G9);
 
     /* 7. BRC_PIC_STATE write buffer */
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_pic_state_brc_write_hfw_read_buffer,
                                 0,
                                 vme_context->res_pic_state_brc_write_hfw_read_buffer.size,
@@ -1680,7 +1681,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_PIC_STATE_OUTPUT_G9);
 
     /* 8. SEGMENT_STATE read buffer */
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_seg_state_brc_read_buffer,
                                 0,
                                 vme_context->res_seg_state_brc_read_buffer.size,
@@ -1688,7 +1689,7 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9);
 
     /* 9. SEGMENT_STATE write buffer */
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_seg_state_brc_write_buffer,
                                 0,
                                 vme_context->res_seg_state_brc_write_buffer.size,
@@ -1696,14 +1697,14 @@ gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
                                 VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9);
 
     /* 10. Bitstream size buffer */
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_brc_bitstream_size_buffer,
                                 0,
                                 vme_context->res_brc_bitstream_size_buffer.size,
                                 0,
                                 VP9_BTI_BRC_BITSTREAM_SIZE_G9);
 
-    gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
+    i965_add_buffer_gpe_surface(ctx, brc_gpe_context,
                                 &vme_context->res_brc_hfw_data_buffer,
                                 0,
                                 vme_context->res_brc_hfw_data_buffer.size,
@@ -1973,7 +1974,7 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
         gpe_resource = param->pres_4x_memv_data_buffer;
     }
 
-    gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+    i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                    gpe_resource,
                                    1,
                                    I965_SURFACEFORMAT_R8_UNORM,
@@ -1981,7 +1982,7 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
 
     if (param->b16xme_enabled) {
         gpe_resource = param->pres_16x_memv_data_buffer;
-        gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+        i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                        gpe_resource,
                                        1,
                                        I965_SURFACEFORMAT_R8_UNORM,
@@ -1991,7 +1992,7 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
     if (!param->use_16x_me) {
         gpe_resource = param->pres_me_brc_distortion_buffer;
 
-        gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+        i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                        gpe_resource,
                                        1,
                                        I965_SURFACEFORMAT_R8_UNORM,
@@ -1999,7 +2000,7 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
 
         gpe_resource = param->pres_me_distortion_buffer;
 
-        gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+        i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                        gpe_resource,
                                        1,
                                        I965_SURFACEFORMAT_R8_UNORM,
@@ -2011,7 +2012,7 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
     else
         input_surface = vp9_priv_surface->scaled_4x_surface_obj;
 
-    gen9_add_adv_gpe_surface(ctx, gpe_context,
+    i965_add_adv_gpe_surface(ctx, gpe_context,
                              input_surface,
                              VP9_BTI_ME_CURR_PIC_L0);
 
@@ -2035,10 +2036,10 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
             else
                 input_surface = vp9_priv_surface->dys_4x_surface_obj;
         }
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti);
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti + 1);
         ref_bti += 2;
@@ -2062,10 +2063,10 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
                 input_surface = vp9_priv_surface->dys_4x_surface_obj;
         }
 
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti);
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti + 1);
         ref_bti += 2;
@@ -2088,10 +2089,10 @@ gen9_vp9_send_me_surface(VADriverContextP ctx,
             else
                 input_surface = vp9_priv_surface->dys_4x_surface_obj;
         }
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti);
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  input_surface,
                                  ref_bti + 1);
         ref_bti += 2;
@@ -2268,12 +2269,12 @@ gen9_vp9_send_scaling_surface(VADriverContextP ctx,
     else
         surface_format = I965_SURFACEFORMAT_R8_UNORM;
 
-    gen9_add_2d_gpe_surface(ctx, gpe_context,
+    i965_add_2d_gpe_surface(ctx, gpe_context,
                             scaling_surface_param->input_surface,
                             0, 1, surface_format,
                             scaling_bti->scaling_frame_src_y);
 
-    gen9_add_2d_gpe_surface(ctx, gpe_context,
+    i965_add_2d_gpe_surface(ctx, gpe_context,
                             scaling_surface_param->output_surface,
                             0, 1, surface_format,
                             scaling_bti->scaling_frame_dst_y);
@@ -2524,13 +2525,13 @@ gen9_vp9_send_dys_surface(VADriverContextP ctx,
 {
 
     if (surface_param->input_frame)
-        gen9_add_adv_gpe_surface(ctx,
+        i965_add_adv_gpe_surface(ctx,
                                  gpe_context,
                                  surface_param->input_frame,
                                  VP9_BTI_DYS_INPUT_NV12);
 
     if (surface_param->output_frame) {
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 surface_param->output_frame,
                                 0,
@@ -2538,7 +2539,7 @@ gen9_vp9_send_dys_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R8_UNORM,
                                 VP9_BTI_DYS_OUTPUT_Y);
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 surface_param->output_frame,
                                 1,
@@ -2676,7 +2677,7 @@ gen9_vp9_run_dys_refframes(VADriverContextP ctx,
 
         if (vp9_state->hme_enabled) {
             dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
-            dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
+            dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 4), 16);
             dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
 
             dys_kernel_param.output_width = vp9_state->frame_width_4x;
@@ -3009,7 +3010,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
     case VP9_MEDIA_STATE_MBENC_I_32x32: {
         obj_surface = mbenc_param->curr_frame_obj;
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 0,
@@ -3017,7 +3018,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R8_UNORM,
                                 VP9_BTI_MBENC_CURR_Y_G9);
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 1,
@@ -3027,7 +3028,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
 
 
         if (mbenc_param->segmentation_enabled) {
-            gen9_add_buffer_2d_gpe_surface(ctx,
+            i965_add_buffer_2d_gpe_surface(ctx,
                                            gpe_context,
                                            mbenc_param->pres_segmentation_map,
                                            1,
@@ -3038,7 +3039,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
 
         res_size = 16 * mbenc_param->frame_width_in_mb *
                    mbenc_param->frame_height_in_mb * sizeof(unsigned int);
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mode_decision,
                                     0,
@@ -3051,7 +3052,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
     case VP9_MEDIA_STATE_MBENC_I_16x16: {
         obj_surface = mbenc_param->curr_frame_obj;
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 0,
@@ -3059,7 +3060,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R8_UNORM,
                                 VP9_BTI_MBENC_CURR_Y_G9);
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 1,
@@ -3067,12 +3068,12 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R16_UINT,
                                 VP9_BTI_MBENC_CURR_UV_G9);
 
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  obj_surface,
                                  VP9_BTI_MBENC_CURR_NV12_G9);
 
         if (mbenc_param->segmentation_enabled) {
-            gen9_add_buffer_2d_gpe_surface(ctx,
+            i965_add_buffer_2d_gpe_surface(ctx,
                                            gpe_context,
                                            mbenc_param->pres_segmentation_map,
                                            1,
@@ -3083,7 +3084,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
 
         res_size = 16 * mbenc_param->frame_width_in_mb *
                    mbenc_param->frame_height_in_mb * sizeof(unsigned int);
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mode_decision,
                                     0,
@@ -3106,7 +3107,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
     case VP9_MEDIA_STATE_MBENC_P: {
         obj_surface = mbenc_param->curr_frame_obj;
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 0,
@@ -3114,14 +3115,14 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R8_UNORM,
                                 VP9_BTI_MBENC_CURR_Y_G9);
 
-        gen9_add_2d_gpe_surface(ctx, gpe_context,
+        i965_add_2d_gpe_surface(ctx, gpe_context,
                                 obj_surface,
                                 1,
                                 1,
                                 I965_SURFACEFORMAT_R16_UINT,
                                 VP9_BTI_MBENC_CURR_UV_G9);
 
-        gen9_add_adv_gpe_surface(ctx, gpe_context,
+        i965_add_adv_gpe_surface(ctx, gpe_context,
                                  obj_surface,
                                  VP9_BTI_MBENC_CURR_NV12_G9);
 
@@ -3136,11 +3137,11 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
             else
                 tmp_input = obj_surface;
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_LAST_NV12_G9);
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_LAST_NV12_G9 + 1);
 
@@ -3157,11 +3158,11 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
             else
                 tmp_input = obj_surface;
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_GOLD_NV12_G9);
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_GOLD_NV12_G9 + 1);
 
@@ -3178,24 +3179,24 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
             else
                 tmp_input = obj_surface;
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_ALTREF_NV12_G9);
 
-            gen9_add_adv_gpe_surface(ctx, gpe_context,
+            i965_add_adv_gpe_surface(ctx, gpe_context,
                                      tmp_input,
                                      VP9_BTI_MBENC_ALTREF_NV12_G9 + 1);
 
         }
 
         if (mbenc_param->hme_enabled) {
-            gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+            i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                            mbenc_param->ps4x_memv_data_buffer,
                                            1,
                                            I965_SURFACEFORMAT_R8_UNORM,
                                            VP9_BTI_MBENC_HME_MV_DATA_G9);
 
-            gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
+            i965_add_buffer_2d_gpe_surface(ctx, gpe_context,
                                            mbenc_param->ps4x_memv_distortion_buffer,
                                            1,
                                            I965_SURFACEFORMAT_R8_UNORM,
@@ -3203,7 +3204,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
         }
 
         if (mbenc_param->segmentation_enabled) {
-            gen9_add_buffer_2d_gpe_surface(ctx,
+            i965_add_buffer_2d_gpe_surface(ctx,
                                            gpe_context,
                                            mbenc_param->pres_segmentation_map,
                                            1,
@@ -3214,7 +3215,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
 
         res_size = 16 * mbenc_param->frame_width_in_mb *
                    mbenc_param->frame_height_in_mb * sizeof(unsigned int);
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mode_decision_prev,
                                     0,
@@ -3222,7 +3223,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                     0,
                                     VP9_BTI_MBENC_MODE_DECISION_PREV_G9);
 
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mode_decision,
                                     0,
@@ -3230,7 +3231,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                     0,
                                     VP9_BTI_MBENC_MODE_DECISION_G9);
 
-        gen9_add_buffer_2d_gpe_surface(ctx,
+        i965_add_buffer_2d_gpe_surface(ctx,
                                        gpe_context,
                                        mbenc_param->pres_output_16x16_inter_modes,
                                        1,
@@ -3253,7 +3254,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
     case VP9_MEDIA_STATE_MBENC_TX: {
         obj_surface = mbenc_param->curr_frame_obj;
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 0,
@@ -3261,7 +3262,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 I965_SURFACEFORMAT_R8_UNORM,
                                 VP9_BTI_MBENC_CURR_Y_G9);
 
-        gen9_add_2d_gpe_surface(ctx,
+        i965_add_2d_gpe_surface(ctx,
                                 gpe_context,
                                 obj_surface,
                                 1,
@@ -3270,7 +3271,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                 VP9_BTI_MBENC_CURR_UV_G9);
 
         if (mbenc_param->segmentation_enabled) {
-            gen9_add_buffer_2d_gpe_surface(ctx,
+            i965_add_buffer_2d_gpe_surface(ctx,
                                            gpe_context,
                                            mbenc_param->pres_segmentation_map,
                                            1,
@@ -3281,7 +3282,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
 
         res_size = 16 * mbenc_param->frame_width_in_mb *
                    mbenc_param->frame_height_in_mb * sizeof(unsigned int);
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mode_decision,
                                     0,
@@ -3290,7 +3291,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
                                     VP9_BTI_MBENC_MODE_DECISION_G9);
 
         res_size = frame_width_in_sb * frame_height_in_sb * 4 * sizeof(unsigned int);
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mb_code_surface,
                                     0,
@@ -3302,7 +3303,7 @@ gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
         res_size = frame_width_in_sb * frame_height_in_sb *
                    64 * 16 * sizeof(unsigned int);
 
-        gen9_add_buffer_gpe_surface(ctx,
+        i965_add_buffer_gpe_surface(ctx,
                                     gpe_context,
                                     mbenc_param->pres_mb_code_surface,
                                     0,
@@ -3525,53 +3526,52 @@ gen9_init_vfe_scoreboard_vp9(struct i965_gpe_context *gpe_context,
         gpe_context->vfe_desc5.scoreboard0.mask = 0x0F;
         gpe_context->vfe_desc5.scoreboard0.type = 1;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y0 = -1;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE;
+        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y1 = -2;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3;
+        gpe_context->vfe_desc6.scoreboard1.delta_x2 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 3;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1;
+        gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 1;
     } else {
         // Scoreboard 0
-        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0;
+        gpe_context->vfe_desc6.scoreboard1.delta_x0 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0;
 
         // Scoreboard 1
-        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y1 = -1;
 
         // Scoreboard 2
-        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1;
-        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y2 = -1;
 
         // Scoreboard 3
-        gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y3 = -1;
 
         // Scoreboard 4
-        gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF;
-        gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1;
+        gpe_context->vfe_desc7.scoreboard2.delta_x4 = -1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y4 = 1;
 
         // Scoreboard 5
-        gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0;
-        gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0;
+        gpe_context->vfe_desc7.scoreboard2.delta_y5 = -2;
 
         // Scoreboard 6
-        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1;
-        gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
 
         // Scoreboard 7
-        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF;
-        gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x6 = -1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
     }
 }
 
-#define VP9_MI_BLOCK_MASK     0x07
 #define VP9_VME_REF_WIN       48
 
 static VAStatus
@@ -3596,12 +3596,6 @@ gen9_encode_vp9_check_parameter(VADriverContextP ctx,
     }
     pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer;
 
-    if (pic_param->frame_width_src & VP9_MI_BLOCK_MASK ||
-        pic_param->frame_height_src & VP9_MI_BLOCK_MASK ||
-        pic_param->frame_width_dst & VP9_MI_BLOCK_MASK ||
-        pic_param->frame_height_dst & VP9_MI_BLOCK_MASK)
-        return VA_STATUS_ERROR_INVALID_PARAMETER;
-
     obj_buffer = BUFFER(pic_param->coded_buf);
 
     if (!obj_buffer ||
@@ -3730,6 +3724,11 @@ gen9_encode_vp9_check_parameter(VADriverContextP ctx,
 
             vp9_state->gop_size = encoder_context->brc.gop_size;
             vp9_state->framerate = encoder_context->brc.framerate[0];
+            if ((vp9_state->framerate.num / vp9_state->framerate.den) > MAX_VP9_ENCODER_FRAMERATE) {
+                vp9_state->framerate.num = MAX_VP9_ENCODER_FRAMERATE * vp9_state->framerate.den;
+                i965_log_info(ctx, "gen9_encode_vp9_check_parameter: Too high frame rate(num: %d, den: %d), max supported is %d fps.\n",
+                              vp9_state->framerate.num, vp9_state->framerate.den, MAX_VP9_ENCODER_FRAMERATE);
+            }
 
             if (encoder_context->rate_control_mode == VA_RC_CBR ||
                 !encoder_context->brc.target_percentage[0]) {