Keep the VA surface storage live until it is explicitly scheduled for destruction through vaDestroySurfaces() interface. Otherwise, subsequent vaPutSurface() calls would have no effect.
This fixes various use cases like: display of interlaced frames that are not marked for reference, multiple rendering to Pixmap for EXT_texture_from_pixmap and more precisely interlaced streams. Signed-off-by: Gwenole Beauchesne <[email protected]> --- src/i965_output_dri.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/i965_output_dri.c b/src/i965_output_dri.c index 717ee9a..8102e83 100644 --- a/src/i965_output_dri.c +++ b/src/i965_output_dri.c @@ -208,15 +208,6 @@ i965_put_surface_dri( dri_vtable->swap_buffer(ctx, dri_drawable); obj_surface->flags |= SURFACE_DISPLAYED; - if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) { - dri_bo_unreference(obj_surface->bo); - obj_surface->bo = NULL; - obj_surface->flags &= ~SURFACE_REF_DIS_MASK; - - if (obj_surface->free_private_data) - obj_surface->free_private_data(&obj_surface->private_data); - } - _i965UnlockMutex(&i965->render_mutex); return VA_STATUS_SUCCESS; -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
