Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

En direct des Qt DevDays 2012
Compte-rendu sur la création de compositeurs avec le module Qt Wayland

Le , par LittleWhite

0PARTAGES

3  0 
Je sors tout juste de la présentation sur la création des compositeurs avec le module Qt Wayland.

Peut-être avez-vous déjà entendu parler de Wayland récemment, notamment à l'occasion de la sortie en version 1.0 et de ses spécifications.

Tout d'abord, il faut savoir que Wayland est un protocole pour les compositeurs (ce qui contient les fenêtres) afin de parler à leurs clients au travers d'une bibliothèque C. Les compositeurs peuvent être des serveurs d'affichage fonctionnant avec Linux, des applications X ou encore un client Wayland lui-même. Les clients peuvent être des applications traditionnelles, des serveurs X (rootless ou fullscreen) ou d'autres serveurs d'affichage.

L'avantage de Wayland est qu'il utilise une mémoire partagée entre les clients afin d'écrire des informations à afficher. Cette mémoire peut être implémentée grâce à un simple système de mémoire partagée ou à travers des buffers GPU (plus rapide encore, car évite les coûts d'envoi des données au GPU).

Wayland a l'avantage d'être extensible, rapide, léger et personnalisable. À terme, il pourrait remplacer X11.

Revenons maintenant à Qt. Jusqu'à Qt 4, le système gérant l'affichage des widgets pour les plateformes embarquées était appelé QWS, pour Qt Windowing System. Le problème de ce dernier est qu'il était compliqué d'implémenter de nouvelles plateformes ou même de supporter OpenGL pour gérer l'affichage des fenêtres. C'est pourquoi QWS a été supprimé dans Qt 5. Maintenant, si vous voulez implémenter un nouveau gestionnaire d'affichage, il faudra passer par QPA (Qt Platform Architecture). Qt Wayland propose une implémentation des spécifications Wayland et fournit une méthode pour implémenter un compositeur Wayland mais aussi des applications clientes s'intégrant au compositeurs Wayland.

Avec Qt 5.0, pour lancer une application utilisant cette nouvelle plateforme, il suffit d'ajouter :
-platform wayland
Avec cette implémentation, Qt propose une série de nouvelles classes permettant de créer facilement vos propres compositeurs (vos propres interfaces accueillant l'affichage d'autres applications).

WaylandCompositor est la classe principale du compositeur qu'il faut hériter afin de créer son compositeur. Dans celle-ci, il est nécessaire de réimplémenter la fonction surfaceCreated() et d'appeler frameFinished() une fois que le rendu des surfaces est terminé.

WaylandSurface représente les surfaces qui seront affichées par les clients. Lors de la réception d'une nouvelle surface avec WaylandCompositor::surfaceCreated(), il est nécessaire de connecter les signaux afin d'être informé des régions qui doivent être dessinées. Il est par contre nécessaire de vérifier les données reçues à travers les signaux car elles peuvent être soit des textures OpenGL, soit des segments de mémoire partagée.

Finalement, WaylandInputDevice, permet de transmettre les événements utilisateurs aux clients (d'envoyer les clics qui sont effectués à partir du compositeur aux applications intégrées dans celui-ci). Ce dernier gère aussi le focus.

Tout cela permet de faire un compositeur accueillant d'autres applications, comme dans la vidéo suivante :
[ame="http://www.youtube.com/watch?v=_FjuPn7MXMs"]Qt 5 based 3D Wayland compositor - YouTube[/ame]
(Le code est disponible sur gitorious.)

Toutefois, il reste une classe : WaylandSurfaceItem. Celle-ci est une implémentation pour Qt Quick 2.0 de WaylandSurface.

Malheureusement, le module ne sera pas intégré à Qt 5.0 car les spécifications de Wayland ont été publiées deux semaines avant les Qt DevDays, mais cela reste prometteur.

Si vous n'avez pas OpenGL, il reste un moyen de faire fonctionner Qt Wayland. Par contre, vous n'aurez pas Qt Quick 2.0 ni le support des buffers GPU natifs. Il vous faudra utiliser Mesa, implémentant un rendu logiciel (donc plus lent).

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de froggy25
Membre à l'essai https://www.developpez.com
Le 14/11/2012 à 17:15
Merci pour ces compte-rendus, bon boulot

*a de la lecture*
0  0