From: Zhao Yakui <[email protected]>

Currently it uses the fixed policy to construct encoding command buffer.
(Use CPU or GPU). And it is statically compiled.
But sometimes it needs to choose the different mechanism on the fly instead
of statically compiled mode.

Signed-off-by: Zhao Yakui <[email protected]>
---
 src/gen75_mfc.c    |   15 +++++----------
 src/i965_encoder.h |    1 +
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/gen75_mfc.c b/src/gen75_mfc.c
index 905ceaf..4434f5a 100644
--- a/src/gen75_mfc.c
+++ b/src/gen75_mfc.c
@@ -49,8 +49,6 @@
 #define        AVC_INTER_MV_OFFSET     48
 #define        AVC_RDO_MASK            0xFFFF
 
-#define        MFC_SOFTWARE_HASWELL    0
-
 #define SURFACE_STATE_PADDED_SIZE               
MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
 #define SURFACE_STATE_OFFSET(index)             (SURFACE_STATE_PADDED_SIZE * 
index)
 #define BINDING_TABLE_OFFSET(index)             
(SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
@@ -995,7 +993,6 @@ gen75_mfc_avc_slice_state(VADriverContextP ctx,
 }
 
 
-#if MFC_SOFTWARE_HASWELL
 
 static int
 gen75_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb,
@@ -1278,7 +1275,6 @@ gen75_mfc_avc_software_batchbuffer(VADriverContextP ctx,
     return batch_bo;
 }
 
-#else
 
 static void
 gen75_mfc_batchbuffer_surfaces_input(VADriverContextP ctx,
@@ -1640,7 +1636,6 @@ gen75_mfc_avc_hardware_batchbuffer(VADriverContextP ctx,
     return mfc_context->aux_batchbuffer_surface.bo;
 }
 
-#endif
 
 static void
 gen75_mfc_avc_pipeline_programing(VADriverContextP ctx,
@@ -1656,11 +1651,11 @@ gen75_mfc_avc_pipeline_programing(VADriverContextP ctx,
         return; 
     }
 
-#if MFC_SOFTWARE_HASWELL
-    slice_batch_bo = gen75_mfc_avc_software_batchbuffer(ctx, encode_state, 
encoder_context);
-#else
-    slice_batch_bo = gen75_mfc_avc_hardware_batchbuffer(ctx, encode_state, 
encoder_context);
-#endif
+
+    if (encoder_context->soft_batch_force)
+        slice_batch_bo = gen75_mfc_avc_software_batchbuffer(ctx, encode_state, 
encoder_context);
+    else
+        slice_batch_bo = gen75_mfc_avc_hardware_batchbuffer(ctx, encode_state, 
encoder_context);
 
     // begin programing
     intel_batchbuffer_start_atomic_bcs(batch, 0x4000); 
diff --git a/src/i965_encoder.h b/src/i965_encoder.h
index 13a9ad1..721031f 100644
--- a/src/i965_encoder.h
+++ b/src/i965_encoder.h
@@ -45,6 +45,7 @@ struct intel_encoder_context
     unsigned int rate_control_mode;
     unsigned int quality_level;
     unsigned int quality_range;
+    unsigned int soft_batch_force:1;
     void *vme_context;
     void *mfc_context;
     void (*vme_context_destroy)(void *vme_context);
-- 
1.7.10.1

_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to