[Libva] [PATCH libva-intel-driver] gen8_mfd: free surface used by JPEG decode

U. Artie Eoff ullysses.a.eoff at intel.com
Tue May 19 14:59:26 PDT 2015


This is a follow up to previous commit:

commit 8dda0650b55c467200c34ada127b5d9b54edea5c
Author: Zhao Yakui <yakui.zhao at intel.com>
Date:   Tue May 5 17:56:38 2015 +0800

    Decode: Free the allocated internal surface used by JPEG to avoid memory leak

For GEN8, this code path is normally disabled by default.
However, one can enable this code path by defining JPEG_WA
during compilation.  In that case, we would enable the
same memory leak.  Thus, apply the same fix in gen8_mfd to
fix it.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff at intel.com>
---
 src/gen8_mfd.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c
index 6618740..f045ca4 100644
--- a/src/gen8_mfd.c
+++ b/src/gen8_mfd.c
@@ -3112,8 +3112,11 @@ out:
 static void
 gen8_mfd_context_destroy(void *hw_context)
 {
+    VADriverContextP ctx;
     struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
 
+    ctx = (VADriverContextP)(gen7_mfd_context->driver_context);
+
     dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
     gen7_mfd_context->post_deblocking_output.bo = NULL;
 
@@ -3140,6 +3143,13 @@ gen8_mfd_context_destroy(void *hw_context)
 
     dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
 
+    if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE) {
+        i965_DestroySurfaces(ctx,
+                             &gen7_mfd_context->jpeg_wa_surface_id,
+                             1);
+        gen7_mfd_context->jpeg_wa_surface_object = NULL;
+    }
+
     intel_batchbuffer_free(gen7_mfd_context->base.batch);
     free(gen7_mfd_context);
 }
@@ -3188,5 +3198,7 @@ gen8_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
     default:
         break;
     }
+
+    gen7_mfd_context->driver_context = ctx;
     return (struct hw_context *)gen7_mfd_context;
 }
-- 
1.9.3



More information about the Libva mailing list