Nombreux sont ceux qui vantent les mérites de la technologie FPGA, et beaucoup de projets ont adopté ces circuits comme solutions définitives. Mais il serait erroné de croire qu'ils fonctionnent par magie. L'un des meilleurs exemples nous vient de Dylan Barrie, ingénieur logiciel avec plus de deux décennies d'expérience en rendu. Son plan initial était de consacrer quelques mois à créer une sorte de démo technique. Cependant, quatre ans de travail ont donné naissance à une carte graphique complète, avec une interface PCI Express, des pilotes pour Windows et une API personnalisée. Le nom de cette bête est FuryGpu, et elle est déjà capable de faire tourner Quake à plus de 40 FPS…
Le défi de la carte graphique DIY
L'idée d'une carte graphique DIY n'est pas nouvelle. Certains de nos lecteurs se souviennent probablement de « La pire carte graphique du monde » créée par Ben Eater, et de « La plus simple du monde », une optimisation de George Foot. Mais quand on pense à un GPU, notre esprit nous mène vers un design plus traditionnel, que l'on peut installer et activer relativement facilement.
Le problème est que passer d'un prototype sur une breadboard à une carte complète demande un effort immense, même avec des décennies d'expérience. C'est ainsi que l'on arrive au blog de Dylan Barrie, qui, après s'être spécialisé en tant qu'ingénieur logiciel axé sur le rendu, a décidé de se plonger dans les eaux du matériel. Barrie prévoyait de consacrer quelques mois à ce projet, « créer un cube rotatif », et de s'arrêter là… mais avec presque quatre ans derrière lui, son résultat est FuryGpu.
FuryGpu : une carte graphique DIY qui fonctionne sous Windows et fait tourner Quake
FuryGpu est un « GPU-en-FPGA », basé sur le Xilinx Zynq UltraScale+, avec une fréquence de 400 MHz pour son cœur et 480 MHz pour son unité de textures. Il prend en charge un front-end FP32 complet, des filtres linéaires et bilinéaires, et utilise une interface PCI Express 2.0 x4. Il n'y a pas de shaders programmables, et au lieu de dépendre d'API conventionnelles comme Direct3D et Vulkan, Barrie a créé sa propre solution, FuryGL.
Cela signifie que tous les jeux nécessitent un port pour fonctionner correctement sur la FuryGpu, ce qui est difficile mais pas impossible. Barrie a dû apprendre SystemVerilog et se battre avec KiCad, mais il admet que la partie la plus douloureuse du projet a été l'écriture des pilotes vidéo compatibles avec Windows. Il n'a malheureusement pas partagé de détails à ce sujet, mais cela ne nous surprend pas que le système d'exploitation de Microsoft soit un obstacle (sans oublier que l'écriture de pilotes est compliquée dans tous les cas).
L'intention de Barrie est de rendre FuryGpu open source, mais il prévient qu'il n'y a pas de limite de temps. Le mieux est de suivre de près son blog et sa chaîne YouTube pour obtenir plus de nouvelles.
Site officiel de FuryGpu : cliquez ici. Dylan Barrie sur YouTube : cliquez ici.