Lancement d'une implémentation native de Direct3D sous Linux

Posté par (page perso) . Modéré par baud123.
Tags : aucun
42
18
nov.
2010
Linux
Comme vous le savez sûrement, la gestion de toute la pile graphique a beaucoup évolué ces dernières années. Une des évolutions majeures dans ce domaine à été l'introduction de l'API Gallium3D, initialement développée par Tungsten Graphics (aujourd'hui rachetée par VMware).

Pour résumer, Gallium3D est une API de type middleware qui se situe directement au dessus du matériel et vise à en exposer les fonctionnalités de manière générique aux API orientées application comme OpenGL et Direct3D (D3D). Contrairement à Mesa 3D, dont il se veut le remplaçant, Gallium 3D n'utilise pas de backend spécifique à chaque matériel, mais délègue toute la partie dépendante du matériel à l'infrastructure DRI2 du kernel. L'ensemble forme ainsi une pile graphique plus cohérente et mieux segmentée, ce qui réduit la duplication de code/fonctionnalités et améliore les performances générales.

À l'heure actuelle, peu de pilotes supportent cette API. Parmi ceux la supportant, on retrouve principalement des pilotes libres pour Nvidia et ATI : Nouveau et les pilotes Radeon R300-R600. Les pilotes libres pour Intel ne l'implémentent pour l'instant que de manière partielle.

Dans une pile basée sur Gallium 3D, toutes les API applicatives se retrouvent à égalité vis à vis du matériel. Ainsi, OpenGL devient, pour une application, une des façons possibles d'exploiter la carte graphique.

C'est dans ce contexte que Luca Barbieri a décidé d'implémenter l'API Direct3D, version 10/11, directement au-dessus de Gallium 3D. Suite à son premier commit (12 septembre 2010), une discussion s'est ouverte sur liste mesa-dev. Direct3D devient ainsi une API graphique native sous Linux (ou tout système disposant de Gallium3D). L'avantage est double : la première utilisation qui vienne à l'esprit est bien entendu Wine. Pour rappel, Wine implémente actuellement une partie de Direct3D au-dessus d'OpenGL, c'est à dire que chaque appel à une fonction D3D est traduit en l'équivalent OpenGL, ce qui dans certains cas relève plus de l'émulation que de la traduction. Cette étape d'émulation pourra être éliminée. Ceci devrait largement améliorer les performances de Wine coté jeux. Le second avantage de la disponibilité de D3D sous Linux concerne évidement le portage des jeux en natif sur notre système préféré qui en sera grandement facilité.

Enfin, Direct3D est, selon le développeur, largement supérieur à OpenGL : "Thanks to a very clean and well-though design done from scratch, the Direct3D 10/11 APIs are vastly better than OpenGL and can be supported with orders of magnitude less code and development time, as you can see by comparing the lines of code of this commit and those in the existing Mesa OpenGL implementation." (extrait du changelog de son 1er commit). Il annonce de meilleures performances et une stabilité accrue pour les futures applications basées sur son implémentation de D3D grâce aux qualités intrinsèques de ce dernier.

NdM : Cette annonce est une très bonne nouvelle pour le jeu sous Linux, une très bonne application pratique de Gallium3D, mais reste à voir si dépendre de Microsoft ne va pas poser problème...

Sortie de Blitzen 0.0.8

Posté par (page perso) . Modéré par Bruno Michel.
Tags :
15
12
nov.
2010
Internet
Blitzen est un serveur d'applications déjà présenté ici à travers un journal et une dépêche à l'occasion des deux précédentes versions. En résumé, il s'agit d'un projet visant à permettre l'écriture de sites ou applications web via une API proche de celle de GTK+. Il s'agit donc d'une approche orientée composants, fournissant une abstraction totale des technologies sous-jacentes (HTML, JavaScript, CSS...).

Blitzen est écrit en C/GObject. Bien qu'il soit possible d'écrire des sites web directement en C/GObject, son but premier est de permettre l'écriture des applications en Vala. Les applications sont compilées sous la forme de shared objects (so) qui sont ensuite déployés et instanciées à la demande, sur le modèle des serveurs d'application Java. Blitzen vise à allier la simplicité des frameworks orientés composants avec le niveau de performance du code natif.

D'autre part, de nombreux frameworks se définissant comme component oriented obligent parfois le développeur à manipuler directement les technologies web tant redoutées. Certains rendent délicate la manipulation ou l'ajout d'éléments d'interface après sa définition. Blitzen vise à être le plus proche possible de l'API des applications desktop.

Les corrections de bugs et autres optimisations mises à part, la principale nouveauté de cette nouvelle version 0.0.8 est l'arrivée d'une interface de construction des vues (pages) basée sur des fichiers XML. Il est désormais possible de séparer le code applicatif de la description de l'interface. Cette infrastructure permet l'autoconstruction des pages avec un minimum de code, comme détaillé dans la seconde partie de la dépêche.

NdM : Blitzen est sous licence LGPLv2

Sortie de Blitzen 0.0.7

Posté par (page perso) . Modéré par Pascal Terjan.
Tags :
11
7
mar.
2010
Internet
Blitzen est un serveur d'application que je développe sur mon temps libre, et qui avait déjà fait l'objet d'un journal pour la version 0.0.5 sur DLFP. Pour les plus pressés d'entre vous, voici un bref rappel des faits : Blitzen est un serveur d'application libre (LGPLv2), qui a pour but de permettre l'écriture d'applications ou sites web de manière simple et rapide.

Parmi toutes les solutions visant à améliorer la productivité du développeur par rapport à la manipulation directe des technologies web (HTML, Javascript, css, etc.), deux approches se démarquent:
  • L'approche orientée page qui consiste à faciliter la vie du développeur en prenant en charge les mécanismes les plus élémentaires tout en conservant un lien fort avec les technologies sous-jacentes (c'est le cas de Ruby on Rails par exemple) ;
  • L'approche orientée composants, qui vise à unifier le développement des applications web et natives en masquant au maximum l'aspect web de l'application en présentant une API proche des toolkits natifs comprenant un modèle événementiel à callbacks ou listeners (Seaside par exemple).

Blitzen se classe résolument dans la seconde catégorie et vise à permettre le développement d'applications web sans avoir à se soucier des problématiques liées à cet environnement particulier (compatibilité des navigateurs, niveau de fonctionnalités ...). Ainsi, il présente une API proche de GTK+ et permet au développeur de se concentrer sur l'aspect fonctionnel de son application en laissant la charge au moteur de rendu de faire les choix appropriés en fonction du client qui l'interroge : utilisation de rendu asynchrone AJAX lorsque disponible, dégradation progressive lorsque javascript n'est pas disponible, etc.

Blitzen est écrit en C, et plus particulièrement en C/GObject, ce qui permet certes d'écrire des applications web directement en C, mais également et surtout en Vala via le binding fourni.

Cette nouvelle pré-version publique constitue une milestone importante. Tous les widgets HTML de base sont implémentés (au moins de manière partielle), il est désormais possible de créer un site web complet avec Blitzen. Bien entendu, comme le numéro de version l'indique il s'agit d'un projet très jeune qui nécessite et nécessitera encore beaucoup de tests avant d'être en mesure de se déclarer stable. Pour autant, j'ai n'ai pas encore eu l'occasion de le voir "segfaulter".

Comme toujours, toutes les remarques/suggestions/contributions sont les bienvenues.

Journal Sortie de Blitzen 0.0.5

Posté par (page perso) .
Tags : aucun
16
20
oct.
2009

Mais qu'est-ce que Blitzen, et que fait-il de si extraordinaire pour mériter un journal ?

Blitzen est un serveur d'application que j'ai commencé à écrire cet été à mes moments perdus, et qui a pour but de faciliter l'écriture d'applications web.

Dans la grande famille des frameworks, toolkits et autre serveurs d'application web, on distingue généralement deux catégories :

  • L'orienté page, qui a pour but de fournir un niveau d'abstraction confortable sans toutefois masquer totalement les technologies mises en oeuvre( (...)