Can someone please clarify for me?
So Wayland will be bundled with both compositor and window manager.. What about all the window managers we know and love? Pekwm? Fluxbox?
I don't see why so many people are up in arms about Wayland "replacing" Xorg, anyway....
Correct me if I'm wrong, but:
- Xorg is an implementation of the X11 protocol
- The X11 protocol is for remote window management
- Wayland is a compositing manager/protocol
- It is for local compositing, programs manage their own windows (or allow an external lib/program to do so)
Therefore, Xorg can be slimmed down to just the networking components and used for its original purpose, while Wayland can composite windows locally. Both handling one thing, and handling it well.
Well, there are still a few loose ends (keyboard, mouse, etc. input management) which still need to be handled by whatever implements Wayland (unless they've already addressed that; I haven't been keeping up with the mailing list discussions), but if you can abstract that (and even if you can't), it still leads to a more streamlined implementation (and fewer bugs in Xorg--and Wayland compositors, eventually).
WDDM is basically a copycat of DRI2. Wonder why? Because it's probably the most reasonable way to implement GPU multitasking.
Lets have a look at multitasking in general:
The idea is that running programs must not screw (neither accidentally or deliberately) each other - that means no messing with other than their own data or grabbing the hardware and doing whatever they want. That's where the "if I want to do something other than messing with my own stuff, I have to politely ask the OS to do that for me" mechanism (also known as "syscall") comes from.
The graphics hardware is basically a computer on it's own (processor with integrated memory controller, memory and display controllers), so there needs to be a mechanism to manage the memory, submit commands and data (after checking it for correctness for the sake of security and robustness) and then get the results. Everything else (translating high-level API constructs to GPU's native machine language) belongs in user space libraries that the user programs link to, so that they properly use this low-level functionality on their behalf.
Keep it simple is nice and I'm doing just that. On a global level.
The X server and some things make it very hard for the distinction between userspace libraries and kernel stuff as you describe.
I'm for this distinction and think you're right about it.
Just not about what belongs to which one of the two.
I mean these servers do the window and other resource management! That is a resource management for programs! This stuff needs a standardized api set in the kernel! This is core operating system stuff!
According to your model, the X server and some other stuff should be in the kernel.
Because they make sure programs don't mess with each others window!
For application developers you need to standardize some official userspace libraries.
And that's why I'm talking about the LSB. You need to think about both sides here. Be complete you know! (I was only mentioning this to be complete.)
EGL is for sharing buffers between applications.
Okay it's better explained this way:
...the underlying native platform window system.EGL™ is an interface between Khronos rendering APIs such as OpenGL ES or OpenVG and the underlying native platform window system. It handles graphics context management, surface/buffer binding, and rendering synchronization and enables high-performance, accelerated, mixed-mode 2D and 3D rendering using other Khronos APIs.
This is something you want in the kernel. Because it handles the different windows. This is for managing and sharing contex and data between applications. Making sure they don't screw up each others data. And you want drivers to implement this core operating system functionality. That's another very solid reason to add it in the kernel.
Now let's take a look at OpenWF.
This is an api that again is about resources and organizing the computers resources and hardware for applications. This is pretty deep level stuff and actually needs to be in the kernel. Also a standardized api like this enables kernel optimization and drivers that do hardware accelerated compositing on graphics cards. And the api for this is again about organizing resources for programs. Thus validating it's reason for being in the kernel.OpenWF™ is a royalty-free, cross-platform API that provides a low-level hardware abstraction interface for composited windowing systems to make use of composition and display hardware. OpenWF is targeted primarily at handheld devices that require portable acceleration of composition whilst minimizing memory bandwidth usage and power levels.
Now to close this post.
EGL is coming, it's being implemented in mesa and used in Google Android!
And someone is implementing OpenWF over KMS.
Linux has failed because it has some:
- bad design, it's improving
- is a moving target.
Having independent projects like X.server doing core operating system functions such as resource management only makes this worse.
- stability problems because of lack of maturity.
- stability and compatibility problems because of lack of solid userspace api's.
EGL and OpenWF help to solve these problems.
Operating Systems do not define certain rules. Its sole purpose is to make application development easyer for the programmer in the sence that it indeed makes the apps runnable on any computer. The second purpose is to make them all run at the same time in order to ensure maximum resource utilisation efficiency over time.
Well now, if a programmer can use a widget toolkit, OpenGL, bash commands, a language, etc., then why bother with the kernel API?
Maybe you'd be interested in Minix 3 (microkernel)? Or experiment with the less stable Mach/HURD (Debian has a distro version of it).