[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