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
