Set HCP_PIPE_MODE_SELECT for HEVC decoding v2: Fix the command payload
Signed-off-by: Xiang, Haihao <[email protected]> --- src/gen9_mfd.c | 25 +++++++++++++++++++++++++ src/i965_defines.h | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/src/gen9_mfd.c b/src/gen9_mfd.c index 44e9c8f..faede7b 100644 --- a/src/gen9_mfd.c +++ b/src/gen9_mfd.c @@ -173,6 +173,29 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx, return VA_STATUS_SUCCESS; } +static void +gen9_hcpd_pipe_mode_select(VADriverContextP ctx, + struct decode_state *decode_state, + int codec, + struct gen9_hcpd_context *gen9_hcpd_context) +{ + struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch; + + assert(codec == HCP_CODEC_HEVC); + + BEGIN_BCS_BATCH(batch, 4); + + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2)); + OUT_BCS_BATCH(batch, + (codec << 5) | + (0 << 3) | /* disable Pic Status / Error Report */ + HCP_CODEC_SELECT_DECODE); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + static VAStatus gen9_hcpd_hevc_decode_picture(VADriverContextP ctx, struct decode_state *decode_state, @@ -189,6 +212,8 @@ gen9_hcpd_hevc_decode_picture(VADriverContextP ctx, intel_batchbuffer_start_atomic_bcs(batch, 0x1000); intel_batchbuffer_emit_mi_flush(batch); + gen9_hcpd_pipe_mode_select(ctx, decode_state, HCP_CODEC_HEVC, gen9_hcpd_context); + intel_batchbuffer_end_atomic(batch); intel_batchbuffer_flush(batch); diff --git a/src/i965_defines.h b/src/i965_defines.h index a67b6e7..7c87274 100755 --- a/src/i965_defines.h +++ b/src/i965_defines.h @@ -892,4 +892,9 @@ #define HEVC_SLICE_P 1 #define HEVC_SLICE_I 2 +#define HCP_CODEC_HEVC 0 + +#define HCP_CODEC_SELECT_DECODE 0 +#define HCP_CODEC_SELECT_ENCODE 1 + #endif /* _I965_DEFINES_H_ */ -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
