mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-31 22:25:25 -04:00
Add note about fullscreen surfaces, misc edits.
This commit is contained in:
parent
d311e8a061
commit
23fceb1cf3
1 changed files with 26 additions and 11 deletions
37
NOTES
37
NOTES
|
|
@ -2,16 +2,21 @@
|
||||||
KEYWORDS:
|
KEYWORDS:
|
||||||
|
|
||||||
Wayland is a nano display server, relying on drm modesetting, gem
|
Wayland is a nano display server, relying on drm modesetting, gem
|
||||||
batchbuffer submission and hw initialization generally in the
|
batchbuffer submission and hw initialization generally in the kernel.
|
||||||
kernel. Wayland is compositing manager and display server in one
|
Wayland puts the compositing manager and display server in the same
|
||||||
process. window management is largely pushed to the clients, they
|
process. Window management is largely pushed to the clients, they
|
||||||
draw their own decorations and move and resize themselves,
|
draw their own decorations and move and resize themselves, typically
|
||||||
typically implemented in a library. more of the core desktop could
|
implemented in a toolkit library. More of the core desktop could be
|
||||||
be pushed into wayland, for example, stock desktop components such
|
pushed into wayland, for example, stock desktop components such as the
|
||||||
as the panel or the desktop background.
|
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
|
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
|
Current trends goes towards less and less rendering in X server, more
|
||||||
hardware setup and management in kernel and shared libraries allow
|
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
|
All surface commands (copy, attach, map=set quads) are buffered until
|
||||||
the client sends a commit command, which executes everything
|
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:
|
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
|
would work I guess. Clients are supposed to throttle using the bread
|
||||||
crumb events, so we shouldn't get into this situation.
|
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
|
Throttling/scheduling - there is currently no mechanism for scheduling
|
||||||
clients to prevent greedy clients from spamming the server and
|
clients to prevent greedy clients from spamming the server and
|
||||||
starving other clients. On the other hand, now that recompositing is
|
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
|
a copy request to copy the preserved part of the page up, and the
|
||||||
new part of the page into the exposed area.
|
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
|
requests that the server has to execute when it gets the commit
|
||||||
request. This could potentially lock up the server for a while,
|
request. This could potentially lock up the server for a while,
|
||||||
leading to lost frames. Should never cause tearing though, we're
|
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
|
an object. Events can be error conditions. The event includes the
|
||||||
object id and the event opcode, from which the client can determine
|
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
|
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.
|
spontanously when the server state changes.
|
||||||
|
|
||||||
the get_interface method is called on an object to get an object
|
the get_interface method is called on an object to get an object
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue