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 <gwenole.beauche...@intel.com> --- src/i965_output_dri.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/i965_output_dri.c b/src/i965_output_dri.c index fdd69ce..8102e83 100644 --- a/src/i965_output_dri.c +++ b/src/i965_output_dri.c @@ -208,11 +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) { - obj_surface->flags &= ~SURFACE_REF_DIS_MASK; - i965_destroy_surface_storage(obj_surface); - } - _i965UnlockMutex(&i965->render_mutex); return VA_STATUS_SUCCESS; -- 1.9.1 _______________________________________________ Libva mailing list Libva@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libva