Lien copié dans le presse-papiers !

Optimisation graphique des actifs dans les systèmes embarqués

Table des matières

    Pourquoi optimiser les actifs graphiques ?

    L’optimisation des ressources graphiques dans les systèmes embarqués consiste principalement à trouver un équilibre entre la qualité visuelle et les ressources limitées du système. Contrairement aux environnements de bureau ou mobiles, les plateformes embarquées – en particulier celles basées sur des MCU – sont soumises à des contraintes strictes en termes de mémoire vive, de stockage, de puissance de traitement et de largeur de bande de la mémoire. Même sur les systèmes MPU/Linux les plus performants, ces ressources ne sont pas illimitées et peuvent rapidement devenir des goulets d’étranglement lorsqu’il s’agit d’interfaces utilisateur complexes.

    C’est pourquoi les actifs graphiques tels que les images, les polices de caractères et les animations ne peuvent être traités comme des éléments « libres ». Leur taille, leur format et leur structure ont un impact direct sur les performances du système, la réactivité et parfois même la faisabilité du produit. L’optimisation n’est donc pas une étape de raffinement facultative, mais un élément fondamental de la conception d’interfaces graphiques intégrées.

    En pratique, l’optimisation des ressources consiste à réduire l’empreinte mémoire, à minimiser les transferts de données et à diminuer le coût du rendu, tout en maintenant une qualité visuelle acceptable. Les techniques et priorités spécifiques dépendent de la plateforme cible et de ses principaux goulets d’étranglement, que cet article explorera plus en détail.

    Vous trouverez ci-dessous quelques méthodes populaires d’optimisation des actifs graphiques :

    1. Réduction de la profondeur des couleurs
    2. Compression des actifs
    3. Pré-rendus et aplatissement
    4. Optimisation de la résolution et de l’échelle
    5. Redessin partiel
    6. Flux de données à partir d’une mémoire externe

    Réduction de la profondeur des couleurs

    La réduction du format des pixels (par exemple, ARGB8888 → RGB565, L8, A4) est l’un des moyens les plus efficaces de réduire l’utilisation de la mémoire et de la bande passante. Moins de bits par pixel se traduit directement par des images plus petites et des transferts plus rapides vers le framebuffer.

    Cette technique est particulièrement importante sur les MCU, où la bande passante de la mémoire RAM et de la mémoire flash est limitée. Même sur les systèmes MPU, elle peut réduire de manière significative la pression sur la bande passante dans les applications à forte interface utilisateur.

    La principale contrepartie est la réduction de la qualité visuelle – plus particulièrement les bandes de couleur et la précision limitée de l’alpha.

    Meilleur quand :

    • La taille de la RAM ou du framebuffer est une contrainte
    • la bande passante de l’écran est un goulot d’étranglement

    Compression des actifs

    La compression réduit l’empreinte de stockage des ressources graphiques, ce qui permet de faire tenir plus de contenu dans une mémoire limitée. Les approches courantes vont du simple RLE aux schémas basés sur LZ ou aux formats spécifiques aux images.

    Sur les MCU, la compression est souvent nécessaire en raison des contraintes strictes de la mémoire Flash. Toutefois, la décompression entraîne une surcharge du processeur et nécessite parfois des tampons temporaires dans la mémoire vive.

    La décision clé en matière de conception consiste à trouver un équilibre entre les économies de stockage et les coûts d’exécution.

    Meilleur quand :

    • La mémoire flash/stockage est limitée
    • L’unité centrale dispose d’une marge de manœuvre suffisante pour la décompression

    Pré-rendus et aplatissement

    Au lieu de rendre les éléments complexes de l’interface utilisateur (dégradés, ombres, effets) au moment de l’exécution, il est possible de les pré-rendre sous forme de bitmaps statiques. Cela permet de déplacer le travail de l’unité centrale vers le stockage.

    Il s’agit d’une approche courante dans les systèmes à base de MCU sans accélération GPU, où la prévisibilité du temps de rendu est essentielle.

    La contrepartie est une utilisation accrue de Flash et une flexibilité réduite – tout changement visuel nécessite la régénération des actifs.

    Meilleur quand :

    • L’unité centrale est un goulot d’étranglement
    • L’interface utilisateur est essentiellement statique

    Optimisation de la résolution et de l'échelle

    L’utilisation de ressources correspondant à la résolution cible permet d’éviter la mise à l’échelle lors de l’exécution, ce qui peut s’avérer coûteux en termes de CPU ou de bande passante mémoire.

    Sur les systèmes limités, même les simples opérations de mise à l’échelle peuvent poser un problème de performance, en particulier lorsqu’elles sont appliquées à plusieurs éléments de l’interface utilisateur par image.

    La préparation des ressources dans la résolution exacte (ou dans un ensemble limité de résolutions) garantit des performances prévisibles et une utilisation réduite des ressources.

    Meilleur quand :

    • L’unité centrale ou la bande passante est limitée
    • La présentation de l’interface utilisateur est fixe ou prévisible

    Redessin partiel

    Au lieu de redessiner l’ensemble de l’écran à chaque image, seules les régions qui ont changé sont mises à jour. Cela réduit considérablement la quantité de données transférées par image à l’écran.

    Dans de nombreux systèmes embarqués, la bande passante de la mémoire – et non le processeur – est le principal goulot d’étranglement. Le redessin partiel répond directement à ce problème en minimisant les transferts de pixels. L’utilisation du redessin partiel réduit la bande passante de la mémoire et peut également réduire la charge du CPU s’il n’est pas « repris » pour gérer les « régions sales » qui changent plus souvent.

    TouchGFX et LVGL implémentent ce concept en interne en utilisant des régions sales/invalidées.

    Meilleur quand :

    • la largeur de bande de l’interface d’affichage est limitée (SPI, RGB, etc.)
    • Les modifications de l’interface utilisateur sont localisées

    Flux de données à partir d'une mémoire externe

    Le streaming de ressources à partir de la mémoire externe consiste à accéder aux ressources de l’interface utilisateur (telles que les images, les polices ou les animations) directement à partir d’une mémoire non volatile (par exemple, Flash externe, QSPI ou un système de fichiers) au moment de l’exécution, sans les copier de manière permanente dans la RAM.

    Au lieu de précharger des ressources entières, le système ne lit que les portions de données nécessaires et les traite ou les rend à la volée. Cela réduit considérablement l’utilisation de la mémoire vive tout en permettant l’utilisation de graphiques complexes et de grands ensembles de ressources.

    Cette technique est couramment utilisée dans les systèmes embarqués dont la mémoire est limitée. Elle permet de créer des interfaces utilisateur riches en tirant parti de la largeur de bande de stockage externe plutôt que de s’appuyer sur une mémoire vive interne limitée.

    La principale limitation est la vitesse d’accès – la bande passante et la latence de la mémoire externe peuvent devenir un goulot d’étranglement.

    Meilleur quand :

    • La mémoire vive est très limitée
    • les actifs sont importants ou nombreux

    Conclusion

    En pratique, l’optimisation des ressources graphiques consiste moins à appliquer une seule technique qu’à choisir la bonne combinaison en fonction des contraintes du système. Chaque méthode cible un goulot d’étranglement différent – qu’il s’agisse de la mémoire vive, de la taille de la mémoire flash, de la charge du processeur ou de la bande passante de la mémoire – et l’amélioration d’un domaine se fait souvent au détriment d’un autre.

    Sur les systèmes à base de MCU, l’accent est généralement mis sur la minimisation de l’utilisation de la mémoire et de la bande passante : la réduction de la profondeur des couleurs, l’utilisation de la compression, le streaming des ressources et le recours au redessin partiel sont souvent essentiels. Sur les plates-formes MPU/Linux, bien que les ressources soient moins limitées, des techniques similaires sont toujours pertinentes, en particulier dans les applications à interface utilisateur intensive où l’efficacité de la bande passante et de la mémoire cache peut limiter les performances.

    Le plus important est d’identifier rapidement le principal goulot d’étranglement et de l’optimiser en conséquence. Dans de nombreuses interfaces graphiques intégrées du monde réel, il s’agit de la bande passante de la mémoire plutôt que des performances brutes de l’unité centrale. Comprendre cela permet d’orienter des décisions telles que la sélection du format des pixels, la stratégie de redessin et la structure des ressources.

    En fin de compte, une optimisation efficace est une question de compromis. Il n’existe pas d’approche optimale universelle, mais seulement des solutions qui s’adaptent le mieux à une plate-forme matérielle donnée, à la complexité de l’interface utilisateur et à l’objectif de performance.

    DÉCOUVREZ NOTRE

    Livre blanc

    Réalisez l’interaction parfaite entre l’utilisateur et l’écran avec le bon circuit intégré pour capteur tactile. Vous avez déjà été confronté à des problèmes d’événements tactiles fantômes ou de certification ? Boostez votre R&D comme un pro grâce à notre livre blanc !

    Consultez notre catalogue de produits et voyez comment vous pouvez économiser sur la qualité, et non sur la qualité.

    Contactez-nous maintenant, économisez avec la qualité, pas sur la qualité.