[Spice-devel] [PATCH v2] server: add QXLWorker.flush_surfaces_async for S3/S4 support
Yonit Halperin
yhalperi at redhat.com
Thu Jul 7 00:48:30 PDT 2011
On 07/06/2011 08:37 PM, Alon Levy wrote:
> This does three things:
> flush both command rings
> stop (rendering everything)
> start
>
> Pulled out start and stop to their own functions to do this easily.
> The added api is specifically async, i.e. it calls async_complete
> when done.
Hi,
after flushing the qxl commands, flush_surfaces doesn't need to call
stop and start, it just needs the start part that flushes the surfaces
and waits for the channels outgoing items. destroy_surfaces that will
come afterwards for S3, will clean the glz drawbales
h b/server/red_worker.h
> index 9ed7156..aae025b 100644
> --- a/server/red_worker.h
> +++ b/server/red_worker.h
> @@ -78,6 +78,8 @@ enum {
> RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE_ASYNC,
> RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC,
> RED_WORKER_MESSAGE_OOM_ASYNC,
> + /* suspend command */
maybe mention it is not only suspend (everything that triggeres
DrvAssertMode(disable) in Windows guest)
> + RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC,
> };
>
> typedef uint32_t RedWorkerMessage;
> diff --git a/server/spice.h b/server/spice.h
> index f0d5685..a715666 100644
> --- a/server/spice.h
> +++ b/server/spice.h
> @@ -133,6 +133,8 @@ struct QXLWorker {
> QXLDevSurfaceCreate *surface);
> void (*destroy_surface_wait_async)(QXLWorker *worker, uint32_t surface_id);
> void (*oom_async)(QXLWorker *worker);
> + /* suspend support - stop+start+read_cmd_ring */
> + void (*flush_surfaces_async)(QXLWorker *worker);
> };
>
> typedef struct QXLDrawArea {
More information about the Spice-devel
mailing list