seyyed mohammad hashemy
Kernel receives input events from a device and translates them into the Linux evdev input event standard.
Clients process the event, often leading to UI changes, and send rendering requests back to the X server.
X server identifies the window affected by the event and sends it to clients that selected it.
X server forwards rendering requests to the hardware driver and calculates the rendering region.
A damage event informs the compositor to recomposite the screen part where the window is visible.
X server handles rendering requests from the compositor, accounting for overlapping windows and page flipping.
The compositor renders the entire screen using the X server, considering the X window contents.
Kernel forwards events to the compositor, similar to how it's done in X.
Client-side rendering occurs in Wayland, and the client sends a request to the compositor indicating the updated region.
The compositor uses a scenegraph to determine the correct window for the event, considering transformations.
The compositor collects damage requests from clients and recomposites the screen.
The compositor can issue an ioctl to schedule a pageflip with KMS for efficient screen updates.
Networking
Compositing
a lot of infrastructure has moved from the X server into the kernel (kms,...) or libraries and there is very little left that has to happen in a central server process.
X is 40 years old
X
there's a tremendous amount of functionality that you must support to claim to speak the X protocol
Modern Design
Improved Security
Better Graphics Rendering:
Easier Development
For the first time, we have a chance to avoid that. We can incorporate Wayland's buffer exchange and update models into X. This allows us to push X out of the hotpath between clients and hardware and make it a compatibility option. Now, much of the infrastructure has moved to the kernel or libraries, leaving very little for a central server process.
Text
Wayland adaptation:
Text
X is dead long live the Wayland