Contexte et revendication

Le dépôt BUI se présente comme une implémentation de l'interface utilisateur (UI) de Blender qui serait « much faster » que GPUI, la bibliothèque d'interface générique de Blender. Le README indique simplement que le runtime de BUI offre une latence réduite et un rafraîchissement plus fluide, sans fournir de mesures chiffrées, de comparaisons de frames‑per‑second (FPS) ou de scénarios de charge.

Cette affirmation repose sur l'observation visuelle de l'auteur et sur l'absence de tests automatisés. Aucun numéro de version, aucune référence à un benchmark officiel, ni aucun lien vers des rapports de performance ne sont inclus dans le dépôt.

Architecture possible de BUI

Blender utilise traditionnellement une pile OpenGL/Vulkan pour le rendu de son UI, combinée à un moteur de widgets écrit en C/C++. GPUI, introduit dans les versions récentes, repose sur un modèle de rendu différé où les éléments UI sont composés via des passes de shaders génériques. BUI, selon la description du dépôt, réimplémente la couche de dessin en privilégiant des appels directs à la carte graphique et en évitant les abstractions intermédiaires.

En pratique, cela signifie que chaque widget pourrait être dessiné avec un glDrawArrays ou vkCmdDraw dédié, réduisant le nombre de changements d'état (state changes) et les synchronisations CPU‑GPU. La suppression de structures de données intermédiaires, comme les buffers de vertex dynamiques, peut également diminuer la charge de l'allocateur mémoire.

Le code source, toutefois, ne montre pas explicitement ces optimisations ; les fichiers principaux contiennent des wrappers autour des appels OpenGL classiques, mais aucune comparaison avec les implémentations GPUI existantes n’est fournie.

Analyse des limites et besoins de validation

Sans données quantitatives, il est impossible de confirmer que BUI offre réellement une amélioration de performance mesurable. Les facteurs qui influencent la rapidité d'une UI incluent la fréquence de mise à jour du buffer de commande, la taille des scènes UI, et le coût des callbacks d'événement. Aucun de ces paramètres n’est exposé dans le dépôt.

De plus, la portabilité du code n’est pas documentée : le projet semble ciblé sur les systèmes Linux avec des pilotes graphiques compatibles OpenGL 3.3, mais aucune mention n’est faite des plateformes Windows ou macOS, où les implémentations GPU diffèrent. Cette restriction pourrait limiter l’impact réel de la solution.

Pour valider la revendication, il serait nécessaire de réaliser des tests comparatifs en conditions contrôlées : mesurer le temps de rendu d’une scène UI complexe (par exemple, le viewport avec plusieurs panneaux) sous BUI et sous GPUI, en gardant identiques le matériel, le driver et la charge CPU. Des métriques comme le temps de latence d’entrée (input latency) et le taux de rafraîchissement stable (stable FPS) seraient alors pertinents.

En l’état actuel, BUI constitue une expérimentation intéressante sur la réduction des abstractions UI dans Blender, mais son affirmation de supériorité reste non vérifiée. Les développeurs et chercheurs souhaitant explorer cette piste devront d’abord instrumenter le code, extraire des mesures précises et publier les résultats pour permettre une évaluation objective.