[Libva] [Libva-intel-driver PATCH 07/27] HEVC: gen9_hcpd_pipe_mode_select();
Xiang, Haihao
haihao.xiang at intel.com
Wed Nov 19 07:05:22 PST 2014
Set HCP_PIPE_MODE_SELECT for HEVC decoding
v2: Fix the command payload
Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
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
More information about the Libva
mailing list