From 851757c18d9d42b4331b606714e717b9be764e37 Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Wed, 21 Nov 2018 15:31:14 +0800 Subject: intel-vaapi-driver 2.3.0.pre1 Update NEWS and bump a new version Signed-off-by: Haihao Xiang --- NEWS | 11 ++++++++++- configure.ac | 4 ++-- meson.build | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 1678d45a..67b1b274 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,15 @@ -intel-vaapi-driver NEWS -- summary of changes. 2018-07-11 +intel-vaapi-driver NEWS -- summary of changes. 2018-11-xxx Copyright (C) 2009-2018 Intel Corporation +Version 2.3.0 - DD.Nov.2018 +* Bump version to 2.3.0 +* Add new PCI ID for KBL and CFL +* Fix frame corruption when there are big MVs in VP8 encoding +* Fix dynamically bitrate resetting in AVC encoding +* Fix build errors when the toolchain doesn't support -fstack-protector +* Make sure the achieved bitrate meet the requirement VP8 encoding +* Optimize VPP on GEN8 + Version 2.2.0 - 11.Jul.2018 * Bump version to 2.2.0 * Add new PCI ID for KBL-Y diff --git a/configure.ac b/configure.ac index cb5c1e71..0397985e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ # intel-vaapi-driver package version number m4_define([intel_vaapi_driver_major_version], [2]) -m4_define([intel_vaapi_driver_minor_version], [2]) +m4_define([intel_vaapi_driver_minor_version], [3]) m4_define([intel_vaapi_driver_micro_version], [0]) -m4_define([intel_vaapi_driver_pre_version], [0]) +m4_define([intel_vaapi_driver_pre_version], [1]) m4_define([intel_vaapi_driver_version], [intel_vaapi_driver_major_version.intel_vaapi_driver_minor_version.intel_vaapi_driver_micro_version]) m4_if(intel_vaapi_driver_pre_version, [0], [], [ diff --git a/meson.build b/meson.build index 6a9b50ab..94672eff 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project( 'intel-vaapi-driver', 'c', - version : '2.2.0', + version : '2.3.0.1', meson_version : '>= 0.43.0', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1 From 65ce90040a158fc3a31e801ea0103aae5932416f Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Wed, 5 Dec 2018 14:41:00 +0800 Subject: Fix memory leak Signed-off-by: Haihao Xiang --- src/gen8_post_processing.c | 5 +++++ src/gen9_hevc_encoder.c | 55 ++++++++++++++++++++++++---------------------- src/gen9_hevc_encoder.h | 3 +++ src/i965_drv_video.c | 1 + src/i965_encoder_vp8.c | 2 ++ 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c index 36610731..c3a911b9 100644 --- a/src/gen8_post_processing.c +++ b/src/gen8_post_processing.c @@ -1621,6 +1621,11 @@ gen8_post_processing_context_finalize(VADriverContextP ctx, pp_context->scaling_gpe_context_initialized = 0; } + if (pp_context->clear_gpe_context_initialized) { + gen8_gpe_context_destroy(&pp_context->clear_gpe_context); + pp_context->clear_gpe_context_initialized = 0; + } + if (pp_context->vebox_proc_ctx) { gen75_vebox_context_destroy(ctx, pp_context->vebox_proc_ctx); pp_context->vebox_proc_ctx = NULL; diff --git a/src/gen9_hevc_encoder.c b/src/gen9_hevc_encoder.c index 5c7bee6a..d5b2d3b0 100644 --- a/src/gen9_hevc_encoder.c +++ b/src/gen9_hevc_encoder.c @@ -411,6 +411,7 @@ static void gen9_hevc_enc_free_resources(struct encoder_vme_mfc_context *vme_context) { struct gen9_hevc_encoder_context *priv_ctx = NULL; + int i; priv_ctx = (struct gen9_hevc_encoder_context *)vme_context->private_enc_ctx; @@ -425,6 +426,8 @@ gen9_hevc_enc_free_resources(struct encoder_vme_mfc_context *vme_context) i965_free_gpe_resource(&priv_ctx->res_brc_constant_data_buffer); i965_free_gpe_resource(&priv_ctx->res_mb_code_surface); + i965_free_gpe_resource(&priv_ctx->res_min_distortion_buffer); + i965_free_gpe_resource(&priv_ctx->res_brc_mb_qp_buffer); // free VME buffers i965_free_gpe_resource(&priv_ctx->res_flatness_check_surface); @@ -446,6 +449,7 @@ gen9_hevc_enc_free_resources(struct encoder_vme_mfc_context *vme_context) i965_free_gpe_resource(&priv_ctx->res_mvp_index_buffer); i965_free_gpe_resource(&priv_ctx->res_roi_buffer); i965_free_gpe_resource(&priv_ctx->res_mb_statistics_buffer); + i965_free_gpe_resource(&priv_ctx->res_slice_map_buffer); if (priv_ctx->scaled_2x_surface_obj) { i965_DestroySurfaces(priv_ctx->ctx, &priv_ctx->scaled_2x_surface_id, 1); @@ -462,6 +466,12 @@ gen9_hevc_enc_free_resources(struct encoder_vme_mfc_context *vme_context) i965_free_gpe_resource(&priv_ctx->sao_line_buffer); i965_free_gpe_resource(&priv_ctx->sao_tile_line_buffer); i965_free_gpe_resource(&priv_ctx->sao_tile_column_buffer); + i965_free_gpe_resource(&priv_ctx->res_brc_pic_states_read_buffer); + + for (i = 0; i < GEN9_MAX_MV_TEMPORAL_BUFFERS; i++) { + dri_bo_unreference(priv_ctx->mv_temporal_buffer[i].bo); + priv_ctx->mv_temporal_buffer[i].bo = NULL; + } priv_ctx->res_inited = 0; } @@ -6315,9 +6325,8 @@ gen9_hevc_pak_add_pipe_buf_addr_state(VADriverContextP ctx, OUT_BUFFER_MA_TARGET(NULL); for (i = 0; i < GEN9_MAX_REF_SURFACES; i++) { - if (priv_ctx->reference_surfaces[i].obj_surface && - priv_ctx->reference_surfaces[i].obj_surface->bo) { - bo = priv_ctx->reference_surfaces[i].obj_surface->bo; + if (priv_ctx->reference_surfaces[i].obj_surface_bo) { + bo = priv_ctx->reference_surfaces[i].obj_surface_bo; OUT_BUFFER_NMA_REFERENCE(bo); } else @@ -6996,19 +7005,17 @@ gen9_hevc_pak_pipeline_prepare(VADriverContextP ctx, priv_state = (struct gen9_hevc_encoder_state *)pak_context->private_enc_state; pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer; - if (priv_ctx->uncompressed_picture_source.obj_surface && - priv_ctx->uncompressed_picture_source.obj_surface->bo) - dri_bo_unreference(priv_ctx->uncompressed_picture_source.obj_surface->bo); + dri_bo_unreference(priv_ctx->uncompressed_picture_source.obj_surface_bo); priv_ctx->uncompressed_picture_source.obj_surface = encode_state->input_yuv_object; priv_ctx->uncompressed_picture_source.surface_id = encoder_context->input_yuv_surface; - dri_bo_reference(priv_ctx->uncompressed_picture_source.obj_surface->bo); + priv_ctx->uncompressed_picture_source.obj_surface_bo = encode_state->input_yuv_object->bo; + dri_bo_reference(priv_ctx->uncompressed_picture_source.obj_surface_bo); - if (priv_ctx->reconstructed_object.obj_surface && - priv_ctx->reconstructed_object.obj_surface->bo) - dri_bo_unreference(priv_ctx->reconstructed_object.obj_surface->bo); + dri_bo_unreference(priv_ctx->reconstructed_object.obj_surface_bo); priv_ctx->reconstructed_object.obj_surface = encode_state->reconstructed_object; priv_ctx->reconstructed_object.surface_id = pic_param->decoded_curr_pic.picture_id; - dri_bo_reference(priv_ctx->reconstructed_object.obj_surface->bo); + priv_ctx->reconstructed_object.obj_surface_bo = encode_state->reconstructed_object->bo; + dri_bo_reference(priv_ctx->reconstructed_object.obj_surface_bo); surface_priv = (struct gen9_hevc_surface_priv *)encode_state->reconstructed_object->private_data; if (surface_priv) { @@ -7023,12 +7030,11 @@ gen9_hevc_pak_pipeline_prepare(VADriverContextP ctx, for (i = 0; i < GEN9_MAX_REF_SURFACES; i++) { obj_surface = encode_state->reference_objects[i]; if (obj_surface && obj_surface->bo) { - if (priv_ctx->reference_surfaces[i].obj_surface && - priv_ctx->reference_surfaces[i].obj_surface->bo) - dri_bo_unreference(priv_ctx->reference_surfaces[i].obj_surface->bo); + dri_bo_unreference(priv_ctx->reference_surfaces[i].obj_surface_bo); priv_ctx->reference_surfaces[i].obj_surface = obj_surface; priv_ctx->reference_surfaces[i].surface_id = pic_param->reference_frames[i].picture_id; - dri_bo_reference(obj_surface->bo); + priv_ctx->reference_surfaces[i].obj_surface_bo = obj_surface->bo; + dri_bo_reference(priv_ctx->reference_surfaces[i].obj_surface_bo); surface_priv = (struct gen9_hevc_surface_priv *) obj_surface->private_data; if (surface_priv) { @@ -7283,18 +7289,15 @@ gen9_hevc_pak_context_destroy(void *context) dri_bo_unreference(priv_ctx->indirect_pak_bse_object.bo); priv_ctx->indirect_pak_bse_object.bo = NULL; - if (priv_ctx->uncompressed_picture_source.obj_surface && - priv_ctx->uncompressed_picture_source.obj_surface->bo) - i965_destroy_surface_storage(priv_ctx->uncompressed_picture_source.obj_surface); + dri_bo_unreference(priv_ctx->uncompressed_picture_source.obj_surface_bo); + priv_ctx->uncompressed_picture_source.obj_surface_bo = NULL; + dri_bo_unreference(priv_ctx->reconstructed_object.obj_surface_bo); + priv_ctx->reconstructed_object.obj_surface_bo = NULL; - if (priv_ctx->reconstructed_object.obj_surface && - priv_ctx->reconstructed_object.obj_surface->bo) - i965_destroy_surface_storage(priv_ctx->reconstructed_object.obj_surface); - - for (i = 0; i < GEN9_MAX_REF_SURFACES; i++) - if (priv_ctx->reference_surfaces[i].obj_surface && - priv_ctx->reference_surfaces[i].obj_surface->bo) - i965_destroy_surface_storage(priv_ctx->reference_surfaces[i].obj_surface); + for (i = 0; i < GEN9_MAX_REF_SURFACES; i++) { + dri_bo_unreference(priv_ctx->reference_surfaces[i].obj_surface_bo); + priv_ctx->reference_surfaces[i].obj_surface_bo = NULL; + } } #define STATUS_IMPLEMENTATION_START diff --git a/src/gen9_hevc_encoder.h b/src/gen9_hevc_encoder.h index 3114f263..3057b661 100644 --- a/src/gen9_hevc_encoder.h +++ b/src/gen9_hevc_encoder.h @@ -556,16 +556,19 @@ struct gen9_hevc_encoder_context { struct { struct object_surface *obj_surface; VASurfaceID surface_id; + dri_bo *obj_surface_bo; } uncompressed_picture_source; struct { struct object_surface *obj_surface; VASurfaceID surface_id; + dri_bo *obj_surface_bo; } reconstructed_object; struct { struct object_surface *obj_surface; VASurfaceID surface_id; + dri_bo *obj_surface_bo; } reference_surfaces[GEN9_MAX_REF_SURFACES]; struct { diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index 911c34df..e1b688ae 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -2512,6 +2512,7 @@ i965_destroy_context(struct object_heap *heap, struct object_base *obj) i965_release_buffer_store(&obj_context->codec_state.decode.iq_matrix); i965_release_buffer_store(&obj_context->codec_state.decode.huffman_table); i965_release_buffer_store(&obj_context->codec_state.decode.bit_plane); + i965_release_buffer_store(&obj_context->codec_state.decode.probability_data); for (i = 0; i < obj_context->codec_state.decode.num_slice_params; i++) i965_release_buffer_store(&obj_context->codec_state.decode.slice_params[i]); diff --git a/src/i965_encoder_vp8.c b/src/i965_encoder_vp8.c index 83fc9ec9..e2e09658 100644 --- a/src/i965_encoder_vp8.c +++ b/src/i965_encoder_vp8.c @@ -1237,6 +1237,8 @@ i965_encoder_vp8_free_surfaces(void **data) vp8_surface->scaled_16x_surface_id = VA_INVALID_SURFACE; vp8_surface->scaled_16x_surface_obj = NULL; } + + free(vp8_surface); } static void -- cgit v1.2.1 From 49335455308aa5a356382f23d731b9c485e11ff5 Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Fri, 7 Dec 2018 14:54:31 +0800 Subject: intel-vaapi-driver 2.3.0.pre2 Signed-off-by: Haihao Xiang --- NEWS | 1 + configure.ac | 2 +- meson.build | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 67b1b274..e2703547 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Version 2.3.0 - DD.Nov.2018 * Fix frame corruption when there are big MVs in VP8 encoding * Fix dynamically bitrate resetting in AVC encoding * Fix build errors when the toolchain doesn't support -fstack-protector +* Fix memory leak issue * Make sure the achieved bitrate meet the requirement VP8 encoding * Optimize VPP on GEN8 diff --git a/configure.ac b/configure.ac index 0397985e..07145146 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ m4_define([intel_vaapi_driver_major_version], [2]) m4_define([intel_vaapi_driver_minor_version], [3]) m4_define([intel_vaapi_driver_micro_version], [0]) -m4_define([intel_vaapi_driver_pre_version], [1]) +m4_define([intel_vaapi_driver_pre_version], [2]) m4_define([intel_vaapi_driver_version], [intel_vaapi_driver_major_version.intel_vaapi_driver_minor_version.intel_vaapi_driver_micro_version]) m4_if(intel_vaapi_driver_pre_version, [0], [], [ diff --git a/meson.build b/meson.build index 94672eff..560da13a 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project( 'intel-vaapi-driver', 'c', - version : '2.3.0.1', + version : '2.3.0.2', meson_version : '>= 0.43.0', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1 From ce593cf433d62f46a87bec73485ae1c968010ae6 Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Mon, 10 Dec 2018 09:56:28 +0800 Subject: intel-vaapi-driver 2.3.0 Signed-off-by: Haihao Xiang --- NEWS | 6 +++--- configure.ac | 2 +- meson.build | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index e2703547..c42b3a5c 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,14 @@ -intel-vaapi-driver NEWS -- summary of changes. 2018-11-xxx +intel-vaapi-driver NEWS -- summary of changes. 2018-12-10 Copyright (C) 2009-2018 Intel Corporation -Version 2.3.0 - DD.Nov.2018 +Version 2.3.0 - 10.Dec.2018 * Bump version to 2.3.0 * Add new PCI ID for KBL and CFL * Fix frame corruption when there are big MVs in VP8 encoding * Fix dynamically bitrate resetting in AVC encoding * Fix build errors when the toolchain doesn't support -fstack-protector * Fix memory leak issue -* Make sure the achieved bitrate meet the requirement VP8 encoding +* Make sure the achieved bitrate meet the requirement for VP8 encoding * Optimize VPP on GEN8 Version 2.2.0 - 11.Jul.2018 diff --git a/configure.ac b/configure.ac index 07145146..1604105f 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ m4_define([intel_vaapi_driver_major_version], [2]) m4_define([intel_vaapi_driver_minor_version], [3]) m4_define([intel_vaapi_driver_micro_version], [0]) -m4_define([intel_vaapi_driver_pre_version], [2]) +m4_define([intel_vaapi_driver_pre_version], [0]) m4_define([intel_vaapi_driver_version], [intel_vaapi_driver_major_version.intel_vaapi_driver_minor_version.intel_vaapi_driver_micro_version]) m4_if(intel_vaapi_driver_pre_version, [0], [], [ diff --git a/meson.build b/meson.build index 560da13a..72980c1e 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project( 'intel-vaapi-driver', 'c', - version : '2.3.0.2', + version : '2.3.0.0', meson_version : '>= 0.43.0', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1