This fixes the remaining issues mentioned in 
https://bugs.freedesktop.org/show_bug.cgi?id=96703
after applying commit 3699c14

On GEN75+, driver copies vme_context->vme_state_message to VME kernel curbe 
buffer and
VME kernel uses the data in curbe buffer to initialize VME message payload.
vme_context->vme_state_message is set up in intel_vme_update_mbmv_cost(), which 
doesn't
set all costs for used modes in VME kernels. The uninitialized mode cost will 
result in
difference in VME output. Thanks for Elaine's finding that the issue disappears 
after
initializing VME state message buffer with zeros.

Signed-off-by: Elaine Wang <[email protected]>
Signed-off-by: Xiang, Haihao <[email protected]>
---
 src/gen6_mfc_common.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c
index 2f9f761..c3e4d80 100644
--- a/src/gen6_mfc_common.c
+++ b/src/gen6_mfc_common.c
@@ -790,6 +790,11 @@ void intel_vme_update_mbmv_cost(VADriverContextP ctx,
 
     assert(qp <= QP_MAX); 
     lambda = intel_lambda_qp(qp);
+
+    m_cost = lambda;
+    vme_state_message[MODE_CHROMA_INTRA] = intel_format_lutvalue(m_cost, 0x8f);
+    vme_state_message[MODE_REFID_COST] = intel_format_lutvalue(m_cost, 0x8f);
+
     if (slice_type == SLICE_TYPE_I) {
         vme_state_message[MODE_INTRA_16X16] = 0;
         m_cost = lambda * 4;
-- 
1.9.1

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

Reply via email to