Mi piacerebbe scrivere un window manager hardware con accelerazione di base, quindi ho cercato una documentazione su come iniziare, ma sono riuscito a trovare solo this tutorial, che utilizza una versione obsoleta di Clutter e ha vinto " t costruire con qualsiasi versione attualmente disponibile. Ci sono altre buone risorse su come fare questo, o in alternativa, un WM veramente nudo che componi WM per guardare all'origine di?Come iniziare a scrivere un compositing WM?
risposta
Il gestore di compositing demo originale era xcompmgr, che consiglio di comprendere le estensioni X sottostanti.
Se si utilizza OpenGL per eseguire il rendering con accelerazione hardware, è necessario leggere l'estensione EXT_texture_from_pixmap
per evitare di copiare il contenuto della finestra tramite lo spazio utente. Quell'estensione ti permette invece di utilizzare blit accelerati via hardware per quelle copie.
Probabilmente sarà anche interessato alle specifiche per _NET_WM_SYNC_REQUEST, per consentire il rendering senza strappi sincronizzato alla ritraccia verticale.
Ci sono due parti nella tua domanda: 1) Come scrivere WM 2) come scrivere composite manager
Alcuni link per aiutare a capire la seconda parte (in aggiunta a xcompmgr fonte):
- http://www.talisman.org/~erlkonig/misc/x11-composite-tutorial/ (usa Qt, ma a basso livello molto generico e)
- https://github.com/gustavosbarreto/compmgr
- http://projects.mini-dweeb.org/projects/unagi
Window Manager, "parte prima":
- ho semplice ~ 100 loc wm in JavaScript: https://github.com/sidorares/node-x11/blob/master/examples/windowmanager/wm.js
- altro wm minimalista (in C), buono per iniziare come riferimento: https://code.google.com/p/winmalist/
- parola chiave più importante: maschera evento
SubstructureRedirect
. Un po 'di documentazione here