GRATUIT

Vos offres d'emploi informatique

Développeurs, chefs de projets, ingénieurs, informaticiens
Postez gratuitement vos offres d'emploi ici visibles par 4 000 000 de visiteurs uniques par mois

emploi.developpez.com

Qt 5.10 accueillera Vulkan, les premiers pas
Faciliteront la création de fenêtre de manière multiplateforme, sans intégration poussée pour le moment

Le , par dourouc05, Responsable Qt
Les discussions pour une première gestion de Vulkan dans Qt ne sont pas récentes : elles datent de 2016 sur le gestionnaire de tickets du projet, avec les premiers résultats attendus pour Qt 5.10, en fin de cette année 2017.

Ceci se passe dans un contexte double : d’un côté, Vulkan a été développé comme successeur à OpenGL, pour exploiter au mieux les cartes graphiques (notamment pour la réalité virtuelle et des applications aussi gourmandes) ; de l’autre, Qt 5.8 avait pour nouveauté majeure côté Qt Quick une refactorisation du moteur de rendu du graphe de scène, pour le découpler d’OpenGL, avec de premiers travaux pour utiliser Direct3D 12 (l’équivalent Vulkan de Microsoft) pour le rendu de scènes Qt Quick.

Un premier objectif pour faciliter l’utilisation de Vulkan avec Qt est de fournir une série de classes (comme les QOpenGL) qui facilitent l’écriture de code portable. Notamment, la création d’une surface de rendu Vulkan est loin d’être aisée en devant gérer toute une série de plateformes :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
QWindow *window;
 
#if defined(VK_USE_PLATFORM_WIN32_KHR)
    VkWin32SurfaceCreateInfoKHR createInfo;
    createInfo.hwnd = (HWND) window->winId();
    ...
    err = vkCreateWin32SurfaceKHR(...);
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
    VkWaylandSurfaceCreateInfoKHR createInfo;
    ...
    err = vkCreateWaylandSurfaceKHR(...);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
    VkAndroidSurfaceCreateInfoKHR createInfo;
    ...
    err = vkCreateAndroidSurfaceKHR(...)
#elif defined(VK_USE_PLATFORM_XCB_KHR)
    VkXcbSurfaceCreateInfoKHR createInfo;
    ...
    err = vkCreateXcbSurfaceKHR(...)
#elif ..
Il serait nettement plus pratique (et orienté Qt) d’écrire un code concis et compréhensible comme :

Code : Sélectionner tout
1
2
QWindow *window;
VkSurfaceKHR surface = QVulkanInstance::surfaceForWindow(window);
Une gestion de Vulkan dans Qt, même basique, faciliterait donc grandement cette étape très importante dans l’utilisation de l’API. C’est donc le premier objectif de ce nouveau module Qt Vulkan et des classes QVulkan.

Un deuxième objectif à court terme pour ce module est de fournir une abstraction pour une fenêtre dont le rendu est entièrement effectué par du code Vulkan, tout comme QD3D12Window et QOpenGLWindow. Certes, ces classes ont quelques limitations, mais facilitent la prise en main. Ainsi est arrivée QVulkanWindow.

Par contre, pour Qt 5.10, les objectifs ne sont pas beaucoup plus élevés que cela. Notamment, l’API Vulkan n’est aucunement cachée à l’utilisation : Qt aide à créer des fenêtres, à gérer les différences entre plateformes et à charger dynamiquement les fonctions de Vulkan. La nouvelle API n’est, pour le moment, pas du tout utilisée dans des modules comme Qt Quick, Qt 3D, Qt Canvas 3D, QPainter : cela pourrait venir dans le futur, mais pas pour Qt 5.10. Des fenêtres Vulkan peuvent être combinées avec des interfaces à base de widgets à l’aide de la fonction bien connue QWidget::createWindowContainer(), tout comme des fenêtres OpenGL.

Au niveau des plateformes, Qt Vulkan peut être utilisé sous Windows (quand le SDK LunarG est installé et définit la variable d’environnement VULKAN-SDK), Linux (avec xcb, pas encore Wayland) et Android (avec les API de niveau 23 et 24, même si les en-têtes Vulkan ne sont disponibles que depuis le niveau 24).

Les bibliothèques Vulkan sont chargées dynamiquement, c’est-à-dire à l’exécution : il n’est nécessaire que de disposer des en-têtes de Vulkan (une version assez récente, au moins la 1.0.13) lors de la compilation de Qt, pas plus. Dans un futur proche, certaines configurations de test pourraient venir avec une bibliothèque Vulkan, mais ces détails sont en cours de fignolage et devraient être corrigés d’ici à la sortie de Qt 5.10.

Source : Vulkan Support in Qt 5.10 – Part 1.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Developpeur C++/ .NET
Calame Software - Ile de France - Chatillon (92320)
Ingénieur logiciel embarqué
SECOND BRIDGE - Ile de France - Paris(75015)
Ihm informatique scientifique h/f
EOMYS ENGINEERING - Nord Pas-de-Calais - Lille (59000)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -