i965_drv_video: handle VPP buffers
authorXiang, Haihao <haihao.xiang@intel.com>
Fri, 15 Jul 2011 08:34:47 +0000 (16:34 +0800)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 25 Aug 2011 12:29:01 +0000 (14:29 +0200)
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
src/i965_drv_video.c
src/i965_post_processing.c

index 2557dd5..3f14015 100644 (file)
@@ -1014,6 +1014,11 @@ i965_create_buffer_internal(VADriverContextP ctx,
     case VAEncPackedSequenceParameterBufferType:
     case VAEncPackedPictureParameterBufferType:
     case VAEncPackedSliceParameterBufferType:
+    case VAProcPipelineParameterBufferType:
+    case VAProcInputParameterBufferType:
+    case VAProcFilterBaseParameterBufferType:
+    case VAProcFilterDeinterlacingParameterBufferType:
+    case VAProcFilterProcAmpParameterBufferType:
 
         /* Ok */
         break;
@@ -1269,6 +1274,10 @@ i965_BeginPicture(VADriverContextP ctx,
         vaStatus = VA_STATUS_SUCCESS;
         break;
 
+    case VAProfileNone:
+        vaStatus = VA_STATUS_SUCCESS;
+        break;
+
     default:
         assert(0);
         vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
index cb10040..b2e7435 100644 (file)
@@ -2397,14 +2397,18 @@ i965_proc_picture(VADriverContextP ctx,
                   union codec_state *codec_state,
                   struct hw_context *hw_context)
 {
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
     struct i965_proc_context *proc_context = (struct i965_proc_context *)hw_context;
     struct proc_state *proc_state = &codec_state->proc;
     VAProcPipelineParameterBuffer *pipeline_param = (VAProcPipelineParameterBuffer *)proc_state->pipeline_param->buffer;
     VAProcInputParameterBuffer *input_param = (VAProcInputParameterBuffer *)proc_state->input_param->buffer;
+    struct object_surface *obj_surface;
 
     assert(input_param->surface != VA_INVALID_ID);
     assert(proc_state->current_render_target != VA_INVALID_ID);
 
+    obj_surface = SURFACE(proc_state->current_render_target);
+    i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC('N','V','1','2'));
     i965_post_processing_internal(ctx, &proc_context->pp_context,
                                   input_param->surface, proc_state->current_render_target,
                                   &input_param->region, &pipeline_param->output_region,