Separate Rendering and Dsiplaying surface status

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
This commit is contained in:
Paul Kocialkowski
2018-04-26 09:51:30 +02:00
parent 27b72100b9
commit d59da24fd9
2 changed files with 9 additions and 7 deletions
+7 -2
View File
@@ -111,8 +111,13 @@ VAStatus SunxiCedrusDeriveImage(VADriverContextP context,
if (surface_object == NULL)
return VA_STATUS_ERROR_INVALID_SURFACE;
if (surface_object->status == VASurfaceRendering)
SunxiCedrusSyncSurface(context, surface_id);
if (surface_object->status == VASurfaceRendering) {
status = SunxiCedrusSyncSurface(context, surface_id);
if (status != VA_STATUS_SUCCESS)
return status;
} else if (surface_object->status == VASurfaceReady) {
return VA_STATUS_SUCCESS;
}
format.fourcc = VA_FOURCC_NV12;
+2 -5
View File
@@ -153,12 +153,9 @@ VAStatus SunxiCedrusSyncSurface(VADriverContextP context,
goto error;
}
if (surface_object->status == VASurfaceReady) {
if (surface_object->status != VASurfaceRendering) {
status = VA_STATUS_SUCCESS;
goto complete;
} else if (surface_object->status == VASurfaceSkipped) {
status = VA_STATUS_ERROR_UNKNOWN;
goto error;
}
request_fd = surface_object->request_fd;
@@ -197,7 +194,7 @@ VAStatus SunxiCedrusSyncSurface(VADriverContextP context,
goto error;
}
surface_object->status = VASurfaceReady;
surface_object->status = VASurfaceDisplaying;
status = VA_STATUS_SUCCESS;
goto complete;