On 3 December 2015 at 18:13, Xiang, Haihao <haihao.xi...@intel.com> wrote: > From: Peng Chen <peng.c.c...@intel.com> > > Signed-off-by: Peng Chen <peng.c.c...@intel.com> > [Haihao: code cleanup] > Signed-off-by: Xiang, Haihao <haihao.xi...@intel.com> > --- > src/gen9_mfd.c | 61 +++++++++++++++++++--- > src/i965_decoder_utils.c | 21 +++++++- > src/i965_defines.h | 2 + > src/i965_device_info.c | 7 ++- > src/i965_drv_video.c | 130 > +++++++++++++++++++++++++++++++++-------------- > src/i965_drv_video.h | 3 ++ > src/i965_encoder.c | 4 +- > 7 files changed, 178 insertions(+), 50 deletions(-) > > diff --git a/src/gen9_mfd.c b/src/gen9_mfd.c > index da76378..44b343f 100644 > --- a/src/gen9_mfd.c > +++ b/src/gen9_mfd.c > @@ -109,6 +109,7 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx, > VAPictureParameterBufferHEVC *pic_param; > struct object_surface *obj_surface; > uint32_t size; > + int hevc_10bit = 0; > > assert(decode_state->pic_param && decode_state->pic_param->buffer); > pic_param = (VAPictureParameterBufferHEVC > *)decode_state->pic_param->buffer; > @@ -134,12 +135,22 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx, > hevc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param); > gen9_hcpd_init_hevc_surface(ctx, pic_param, obj_surface, > gen9_hcpd_context); > > - size = ALIGN(gen9_hcpd_context->picture_width_in_pixels, 32) >> 3; > + if((pic_param->bit_depth_luma_minus8 > 0) > + || (pic_param->bit_depth_chroma_minus8 > 0)) > + hevc_10bit = 1; > + > + if(hevc_10bit) > + size = ALIGN(gen9_hcpd_context->picture_width_in_pixels, 32) >> 2; > + else > + size = ALIGN(gen9_hcpd_context->picture_width_in_pixels, 32) >> 3; > size <<= 6; > ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_line_buffer), > "line buffer", size); > > ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_line_buffer), > "tile line buffer", size); > > - size = ALIGN(gen9_hcpd_context->picture_height_in_pixels + 6 * > gen9_hcpd_context->picture_height_in_ctbs, 32) >> 3; > + if(hevc_10bit) > + size = ALIGN(gen9_hcpd_context->picture_height_in_pixels + 6 * > gen9_hcpd_context->picture_height_in_ctbs, 32) >> 2; > + else > + size = ALIGN(gen9_hcpd_context->picture_height_in_pixels + 6 * > gen9_hcpd_context->picture_height_in_ctbs, 32) >> 3; > size <<= 6; > > ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_column_buffer), > "tile column buffer", size); > > @@ -158,15 +169,24 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx, > size <<= 6; > ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_column_buffer), > "metadata tile column buffer", size); > > - size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 3 * > gen9_hcpd_context->picture_width_in_ctbs), 16) >> 3; > + if(hevc_10bit) > + size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 3 > * gen9_hcpd_context->picture_width_in_ctbs), 16) >> 2; > + else > + size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 3 > * gen9_hcpd_context->picture_width_in_ctbs), 16) >> 3; > size <<= 6; > ALLOC_GEN_BUFFER((&gen9_hcpd_context->sao_line_buffer), "sao line > buffer", size); > > - size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 6 * > gen9_hcpd_context->picture_width_in_ctbs), 16) >> 3; > + if(hevc_10bit) > + size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 6 > * gen9_hcpd_context->picture_width_in_ctbs), 16) >> 2; > + else > + size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 6 > * gen9_hcpd_context->picture_width_in_ctbs), 16) >> 3; > size <<= 6; > ALLOC_GEN_BUFFER((&gen9_hcpd_context->sao_tile_line_buffer), "sao tile > line buffer", size); > > - size = ALIGN(((gen9_hcpd_context->picture_height_in_pixels >> 1) + 6 * > gen9_hcpd_context->picture_height_in_ctbs), 16) >> 3; > + if(hevc_10bit) > + size = ALIGN(((gen9_hcpd_context->picture_height_in_pixels >> 1) + 6 > * gen9_hcpd_context->picture_height_in_ctbs), 16) >> 2; > + else > + size = ALIGN(((gen9_hcpd_context->picture_height_in_pixels >> 1) + 6 > * gen9_hcpd_context->picture_height_in_ctbs), 16) >> 3; You can simplify this whole lot (and make it more readable) if you just store the shift in a const int at the top :-)
-Emil _______________________________________________ Libva mailing list Libva@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libva