[Libva] [Libva-intel-driver][PATCH 2/2] Encode: Set cost for MODE_CHROMA_INTRA/MODE_REFID_COST

Sean V Kelley seanvk at posteo.de
Fri Jul 29 21:51:11 UTC 2016


On Mon, 2016-07-25 at 16:53 +0800, Xiang, Haihao wrote:
> > 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 <elaine.wang at intel.com>
> > Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>


Reviewed, tested.

Thanks applied.

> ---
 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;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libva/attachments/20160729/a9210c4b/attachment.html>


More information about the Libva mailing list