mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05: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