diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2014-05-14 13:59:25 +0200 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2014-06-02 19:30:43 +0200 |
commit | 6d76944605a75872714744262ce0370581de9225 (patch) | |
tree | 1a95fe02762edb4391c91098f04efb82929ebe05 /src/gen8_mfd.c | |
parent | e29345cbdc26d5e4c6729100344eb8dbf9e35b65 (diff) |
decoder: h264: factor out allocation of reconstructed surfaces.
Add new avc_ensure_surface_bo() helper function to factor out the
allocatiion and initialization processes of the reconstructed VA
surface buffer stores.
Keep preferred native format (NV12) and initialize chroma values
to 0.0 (0x80) when needed for "fake" grayscale (Y800) surfaces
implemented on top of existing NV12.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Diffstat (limited to 'src/gen8_mfd.c')
-rw-r--r-- | src/gen8_mfd.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c index 1742bea..e3e71fb 100644 --- a/src/gen8_mfd.c +++ b/src/gen8_mfd.c @@ -845,18 +845,8 @@ gen8_mfd_avc_decode_init(VADriverContextP ctx, obj_surface = decode_state->render_object; obj_surface->flags &= ~SURFACE_REF_DIS_MASK; obj_surface->flags |= (pic_param->pic_fields.bits.reference_pic_flag ? SURFACE_REFERENCED : 0); - i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); - - /* initial uv component for YUV400 case */ - if (pic_param->seq_fields.bits.chroma_format_idc == 0) { - unsigned int uv_offset = obj_surface->width * obj_surface->height; - unsigned int uv_size = obj_surface->width * obj_surface->height / 2; - - drm_intel_gem_bo_map_gtt(obj_surface->bo); - memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size); - drm_intel_gem_bo_unmap_gtt(obj_surface->bo); - } + avc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param); gen8_mfd_init_avc_surface(ctx, pic_param, obj_surface); dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo); |