Avec wayland, ça ira encore plus vite car on aura même plus besoin de sérialiser les commandes ou l'image finale dans une socket et traiter le rendu de toutes les applis dans une thread unique (X).[coupé] Plus de sérialisation du rendu, plus d'utilisation d'un toolkit 2D très limité (X11/XRender).
Il me semble que dans le mode Qt/raster ou OpenGL(DRI2), il n'y ni sérialisation, ni utilisation d'un toolkit 2D puisque dans les 2 cas, le client peut écrire dans son buffer lui-même et envoyer le résultat par mémoire partagée(Qt raster) ou buffer vidéo (DRI2), non?
Il reste que le protocol X (Xlib ou Xcb) est toujours serialise dans une socket. Ok, il y a moins de requete dedans, si on n'utilise pas Xrender, mais ca n'empeche que le cout de la serialisation dans un socket est la. Une amelioration simple serait d'utiliser un buffer shm pour communiquer avec X et de n'envoyer dans la socket que l'index ou commence dans le buffer shm de la serie de commande X. Cela serait plus efficace a mon avis pour les communications locales. Je me demande d'ailleur, comment est implementer cette partie la du protocol Wayland, je crois que ca passe tout dans la socket.
Par mémoire partagé, pour sûr. Par BO, je doute, à vérifier. Dans le cas de la mémoire partagée, c'est sous optimal comparé à l'utilisation de buffers GEM car la mémoire partagée nécessite au minimum de placer le buffer partagé dans la GART ce qui est lent et augmente la pression sur cette zone. Dans le cas de buffers GEM, ils sont probablement déjà en VRAM, donc ça va plus vite :)
Ca depend. Si on fait du rendu soft, que le GPU utilise la meme memoire que le CPU et que le backend soft comprend le format du GPU alors oui. Sinon la vie est plus complique.
[^] # Re: Compiz ne migrera pas vers Wayland
Posté par cedric . En réponse à la dépêche Petites brèves autour de Wayland. Évalué à 4.
Il reste que le protocol X (Xlib ou Xcb) est toujours serialise dans une socket. Ok, il y a moins de requete dedans, si on n'utilise pas Xrender, mais ca n'empeche que le cout de la serialisation dans un socket est la. Une amelioration simple serait d'utiliser un buffer shm pour communiquer avec X et de n'envoyer dans la socket que l'index ou commence dans le buffer shm de la serie de commande X. Cela serait plus efficace a mon avis pour les communications locales. Je me demande d'ailleur, comment est implementer cette partie la du protocol Wayland, je crois que ca passe tout dans la socket.
Ca depend. Si on fait du rendu soft, que le GPU utilise la meme memoire que le CPU et que le backend soft comprend le format du GPU alors oui. Sinon la vie est plus complique.