[Spice-devel] Processing of rendering operations in separate thread

Yuri Benditovich yuri.benditovich at daynix.com
Thu Nov 24 23:08:29 UTC 2016


I'm porting to [qxl-wddm-dod] set of flexvdi changes
related to execution of 'present display only' events
in separate thread. There are 2* questions below* I'd like to ask and know
your opinion.

I see there 2 aspects:
- reliability
- performance

*Reliability:*
I see in flexvdi mailing list existing report of
BSOD upon system shutdown. Possible cause is lack of
synchronization between system flows, hardware availability and worker
thread state (last patch in flexvdi 'Terminate working thread on exit'
introduces
termination procedure but nobody calls it, as I can see)
The lack of synchronization may cause also races in
power management flows and (possible) on changing
operating mode.

*Question 1:*
*Do you have some additional recommendation which*
*flows shall be specially checked for races with*
*rendering thread?*

*Performance:*
It looks like the change should not affect total CPU consumption for
the rendering, it splits more or less the same operations over
2 different threads. It is still possible that the change can improve
common user experience due to faster indication of operation completion to the
OS.

*Question 2:*
*Do you have some ideas how to make quantitive*
*evaluation of this possible **improvement of user experience? *

I think about:
- finding scenarios when we receive rendering calls (PresentDisplayOnly)
when the worker thread is still processing previous operation. If they
exist this can mean that some bottleneck solved in GDI.
- writing or getting tool that loads the graphics
adapter by heavy operations (like continuos moving of window / scrolling
etc) with CPU consumption measurement


Please share your thoughts.

Thanks,
Yuri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20161125/5bf8c585/attachment.html>


More information about the Spice-devel mailing list