OSDN Git Service

Try the fast path of CSC/scaling first in va{Get,Put}Image()
authorXiang, Haihao <haihao.xiang@intel.com>
Wed, 2 Aug 2017 02:20:35 +0000 (10:20 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Thu, 17 Aug 2017 04:09:31 +0000 (12:09 +0800)
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
src/i965_post_processing.c

index 95dd3d5..9d902fb 100644 (file)
@@ -40,6 +40,7 @@
 #include "i965_render.h"
 #include "i965_yuv_coefs.h"
 #include "intel_media.h"
+#include "intel_gen_vppapi.h"
 
 #include "gen75_picture_process.h"
 
@@ -5062,6 +5063,16 @@ i965_image_pl1_rgbx_processing(VADriverContextP ctx,
     int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
     VAStatus vaStatus;
 
+    vaStatus = intel_common_scaling_post_processing(ctx,
+                                                    pp_context,
+                                                    src_surface,
+                                                    src_rect,
+                                                    dst_surface,
+                                                    dst_rect);
+
+    if (vaStatus != VA_STATUS_ERROR_UNIMPLEMENTED)
+        return vaStatus;
+
     switch (fourcc) {
     case VA_FOURCC_NV12:
         vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
@@ -5099,6 +5110,16 @@ i965_image_pl3_processing(VADriverContextP ctx,
     int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
     VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
 
+    vaStatus = intel_common_scaling_post_processing(ctx,
+                                                    pp_context,
+                                                    src_surface,
+                                                    src_rect,
+                                                    dst_surface,
+                                                    dst_rect);
+
+    if (vaStatus != VA_STATUS_ERROR_UNIMPLEMENTED)
+        return vaStatus;
+
     switch (fourcc) {
     case VA_FOURCC_NV12:
         vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
@@ -5162,6 +5183,16 @@ i965_image_pl2_processing(VADriverContextP ctx,
     int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
     VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
 
+    vaStatus = intel_common_scaling_post_processing(ctx,
+                                                    pp_context,
+                                                    src_surface,
+                                                    src_rect,
+                                                    dst_surface,
+                                                    dst_rect);
+
+    if (vaStatus != VA_STATUS_ERROR_UNIMPLEMENTED)
+        return vaStatus;
+
     switch (fourcc) {
     case VA_FOURCC_NV12:
         vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
@@ -5231,6 +5262,16 @@ i965_image_pl1_processing(VADriverContextP ctx,
     int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
     VAStatus vaStatus;
 
+    vaStatus = intel_common_scaling_post_processing(ctx,
+                                                    pp_context,
+                                                    src_surface,
+                                                    src_rect,
+                                                    dst_surface,
+                                                    dst_rect);
+
+    if (vaStatus != VA_STATUS_ERROR_UNIMPLEMENTED)
+        return vaStatus;
+
     switch (fourcc) {
     case VA_FOURCC_NV12:
         vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
@@ -5352,6 +5393,16 @@ i965_image_p010_processing(VADriverContextP ctx,
     VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
     int vpp_post = 0;
 
+    vaStatus = intel_common_scaling_post_processing(ctx,
+                                                    pp_context,
+                                                    src_surface,
+                                                    src_rect,
+                                                    dst_surface,
+                                                    dst_rect);
+
+    if (vaStatus != VA_STATUS_ERROR_UNIMPLEMENTED)
+        return vaStatus;
+
     if (HAS_VPP_P010(i965)) {
         vpp_post = 0;
         switch (fourcc) {