From: "Xiang, Haihao" <[email protected]> The surface can't be the same surface from which the image has been derived.
Signed-off-by: Xiang, Haihao <[email protected]> --- src/i965_drv_video.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index d87a232..0f0e7c6 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -363,13 +363,14 @@ is_surface_busy(struct i965_driver_data *i965, /* Checks whether the image is in busy state */ static bool -is_image_busy(struct i965_driver_data *i965, struct object_image *obj_image) +is_image_busy(struct i965_driver_data *i965, struct object_image *obj_image, VASurfaceID surface) { struct object_buffer *obj_buffer; assert(obj_image != NULL); - if (obj_image->derived_surface != VA_INVALID_ID) + if (obj_image->derived_surface != VA_INVALID_ID && + obj_image->derived_surface == surface) return true; obj_buffer = BUFFER(obj_image->image.buf); @@ -4108,7 +4109,7 @@ i965_GetImage(VADriverContextP ctx, if (!obj_image || !obj_image->bo) return VA_STATUS_ERROR_INVALID_IMAGE; - if (is_image_busy(i965, obj_image)) + if (is_image_busy(i965, obj_image, surface)) return VA_STATUS_ERROR_SURFACE_BUSY; if (x < 0 || y < 0) @@ -4419,7 +4420,7 @@ i965_PutImage(VADriverContextP ctx, if (!obj_image || !obj_image->bo) return VA_STATUS_ERROR_INVALID_IMAGE; - if (is_image_busy(i965, obj_image)) + if (is_image_busy(i965, obj_image, surface)) return VA_STATUS_ERROR_SURFACE_BUSY; if (src_x < 0 || -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
