Add note about fullscreen surfaces, misc edits.

This commit is contained in:
Kristian Høgsberg 2008-10-13 22:51:56 -04:00
parent d311e8a061
commit 23fceb1cf3
1 changed files with 26 additions and 11 deletions

37
NOTES
View File

@ -2,16 +2,21 @@
KEYWORDS:
Wayland is a nano display server, relying on drm modesetting, gem
batchbuffer submission and hw initialization generally in the
kernel. Wayland is compositing manager and display server in one
process. window management is largely pushed to the clients, they
draw their own decorations and move and resize themselves,
typically implemented in a library. more of the core desktop could
be pushed into wayland, for example, stock desktop components such
as the panel or the desktop background.
batchbuffer submission and hw initialization generally in the kernel.
Wayland puts the compositing manager and display server in the same
process. Window management is largely pushed to the clients, they
draw their own decorations and move and resize themselves, typically
implemented in a toolkit library. More of the core desktop could be
pushed into wayland, for example, stock desktop components such as the
panel or the desktop background.
The actual compositor will define a fair bit of desktop policy and it
is expected that different use cases (desktop environments, devices,
appliances) will provide their own custom compositor.
It is still designed with a windowed type of desktop in mind, as
opposed to fullscreen-all-the-time type of interface.
opposed to fullscreen-all-the-time type of interface, but should be
useful wherever several processes contribute content to be composited.
Current trends goes towards less and less rendering in X server, more
hardware setup and management in kernel and shared libraries allow
@ -35,7 +40,10 @@ launch a rdp session, solid ice sessions.
All surface commands (copy, attach, map=set quads) are buffered until
the client sends a commit command, which executes everything
atomically...
atomically. The commit command includes a cookie, which will be
returned in an event generated by the server once the commit has been
executed. This allows clients to throttle themselves against the
server and implement smooth animations.
ISSUES:
@ -64,6 +72,13 @@ What to do when protocol out buffer fills up? Just block on write
would work I guess. Clients are supposed to throttle using the bread
crumb events, so we shouldn't get into this situation.
When a surface is the size of the screen and on top, we can set the
scanout buffer to that surface directly. Like compiz unredirect
top-level window feature. Except it won't have any protocol state
side-effects and the client that owns the surface won't know. We lose
control of updates. Should work well for X server root window under
wayland.
Throttling/scheduling - there is currently no mechanism for scheduling
clients to prevent greedy clients from spamming the server and
starving other clients. On the other hand, now that recompositing is
@ -101,7 +116,7 @@ commit event.
a copy request to copy the preserved part of the page up, and the
new part of the page into the exposed area.
- This does let a client batch up an unctrolled amount of copy
- This does let a client batch up an uncontrolled amount of copy
requests that the server has to execute when it gets the commit
request. This could potentially lock up the server for a while,
leading to lost frames. Should never cause tearing though, we're
@ -121,7 +136,7 @@ The server sends back events to the client, each event is emitted from
an object. Events can be error conditions. The event includes the
object id and the event opcode, from which the client can determine
the type of event. Events are generated both in repsonse to a request
(in which case the requet and the event constitutes a round trip) or
(in which case the request and the event constitutes a round trip) or
spontanously when the server state changes.
the get_interface method is called on an object to get an object