Analyser l'utilisation de la bande passante de la mémoire des données de texture
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La bande passante mémoire des données de texture peut être un goulot d'étranglement potentiel pour les performances du GPU de votre application. Certains compteurs d'un profil système AGI peuvent vous aider à diagnostiquer les problèmes de bande passante de la mémoire de texture.
Compteurs Qualcomm Adreno
Sur les appareils équipés de GPU Qualcomm Adreno, voici quelques compteurs notables :
Compteur
Description
Bande passante de lecture de la mémoire de texture (octets/seconde)
Bande passante des données de texture lues à partir de la mémoire externe.
% Texture L1 Miss
Échec du cache L1 lors de la récupération des textures.
% de textures de niveau non de base
Pourcentage de récupérations de textures qui sont des mipmaps.
% filtré anisotrope
Pourcentage de texels filtrés de manière anisotrope.
Compteurs ARM Mali
Sur les appareils équipés de GPU ARM Mali, voici quelques compteurs notables :
Compteur
Description
Battements de lecture de texture à partir de la mémoire externe
Débits de données lues à partir de la mémoire externe par l'unité de texture, moyennés sur les cœurs de nuanceur.
Lectures de textures à partir du cache L2
Battements de données lus à partir du cache de niveau 2 par l'unité de texture, en moyenne sur les cœurs de nuanceur.
[Plus]
Pour calculer la bande passante globale à partir des battements de lecture moyens, la valeur du compteur est multipliée par la largeur du bus (généralement 16 octets) et par le nombre total de cœurs de nuanceur.
Analyse des contre-mesures
Pour mesurer le comportement de ces compteurs, mesurez la bande passante moyenne et maximale sur la durée d'un seul frame de GPU, puis délimitez-la avec un bloc contigu d'utilisation du GPU.
Figure 1 Bande passante de lecture de la mémoire de texture pour un seul frame, avec une valeur moyenne de 565 Mbit/s et une valeur maximale de 2,30 Gbit/s
Nous recommandons une bande passante de lecture de la mémoire de texture moyenne ne dépassant pas 1 Go/s et une bande passante maximale ne dépassant pas 3 Go/s. Le taux d'échec du cache L1 de texture ne doit pas non plus dépasser 10 %. Des valeurs plus élevées pour la bande passante ou le cache L1 peuvent indiquer des problèmes de texture plus profonds, y compris :
Textures trop grandes : les textures volumineuses augmentent la taille de votre package, sont plus coûteuses et peuvent réduire l'efficacité du cache.
Les textures ne sont pas compressées : tous les téléphones Android sont compatibles avec certains types de compression de texture, qu'il s'agisse d'ETC1 ou d'ASTC. Les textures doivent être compressées pour réduire la taille du package et la bande passante des textures.
Autres : vous devez tenir compte de divers autres problèmes liés aux textures, y compris les textures de puissance 2, le mipmapping, le filtrage anisotrope, etc. Certains de ces problèmes peuvent être observés à partir du profil système, comme indiqué ci-dessous, tandis que d'autres peuvent nécessiter une analyse plus approfondie.
Pour les jeux en trois dimensions avec une caméra libre, les composants de texture doivent utiliser le mipmapping, de sorte que les objets éloignés de la caméra aient une bande passante mémoire réduite, une meilleure efficacité du cache de texture et une meilleure qualité d'image. Pour les appareils utilisant des GPU Qualcomm Adreno, les compteurs % de textures de niveau non de base inférieurs à 10 % en moyenne peuvent indiquer un mipmapping insuffisant.
Figure 2 Textures de niveau non de base pour un seul frame, avec une valeur moyenne de 9,2 %
Il faut également tenir compte de l'utilisation du filtrage anisotrope, qui est décrit par le compteur % filtré anisotrope pour les GPU Qualcomm Adreno, qui indique la proportion de texels filtrés de manière anisotrope. Bien que cela puisse améliorer la qualité visuelle de certains jeux, cela peut également être très coûteux. Son utilisation doit être mise en balance avec le coût des performances du GPU.
Figure 3 Pourcentage de filtrage anisotrope pour une seule frame, avec une valeur moyenne de 10,8 %
Le meilleur moyen de diagnostiquer des problèmes plus spécifiques consiste à effectuer un traçage du profil de frame pour analyser les éléments de texture.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Analyze texture memory bandwidth usage\n\nThe memory bandwidth of texture data can be a potential bottleneck for your\napp's GPU performance. There are some counters in an **AGI System Profile** that can help diagnose texture memory bandwidth issues.\n\nQualcomm Adreno counters\n------------------------\n\nOn devices with Qualcomm Adreno GPUs, some notable counters include:\n\n| Counter | Description |\n|---------------------------------------|------------------------------------------------------|\n| Texture Memory Read BW (Bytes/Second) | Bandwidth of texture data read from external memory. |\n| % Texture L1 Miss | L1 cache miss from fetching textures. |\n| % Non-Base Level Textures | Percentage of texture fetches that are mipmaps. |\n| % Anisotropic Filtered | Percentage of texels that are anisotropic filtered. |\n\nARM Mali counters\n-----------------\n\nOn devices with ARM Mali GPUs, some notable counters include:\n\n| Counter | Description |\n|-----------------------------------------|-------------------------------------------------------------------------------------------|\n| Texture read beats from external memory | Data beats read from external memory by the texture unit, averaged over the shader cores. |\n| Texture read beats from L2 cache | Data beats read from the L2 cache by the texture unit, averaged over the shader cores. |\n| \\[More\\] | |\n\nTo calculate the overall bandwidth from average read beats, the counter value is multiplied by the bus width (typically 16 bytes) and by the total number of shader cores.\n\nCounter analysis\n----------------\n\nTo measure the behavior of these counters, measure the average and peak\nbandwidth over the course of a single GPU frame, and then delineate with a contiguous block of GPU Utilization.\n**Figure 1.**Texture memory read bandwidth for a single frame, with average value of 565 MBps and peak value of 2.30 GBps\n\nWe recommend an average texture memory read bandwidth of no higher than 1 GBps, and a peak bandwidth no higher than 3 GBps. Texture L1 cache miss should also be no higher than 10%. Higher values for bandwidth or L1 cache may be indicators of deeper texture issues, including:\n\n- *Textures are too large*: Large textures bloat your package size, and are more expensive and may reduce cache efficiency.\n- *Textures are uncompressed*: All Android phones support some types of texture compression, whether it's ETC1 or ASTC. Textures should be compressed to reduce package size and reduce texture bandwidth.\n- *Other*: A variety of other texture concerns should be considered, including power-of-2 textures, mipmapping, anisotropic filtering, and more. Some of these may be observed from the System Profile as discussed below, whereas others may require deeper investigation.\n\nFor three-dimensional games with a free camera, texture assets should use [mipmapping](/agi/sys-trace/link), such that objects at a distance from the camera will have reduced memory bandwidth, better texture cache efficiency, and better image quality. For devices using Qualcomm Adreno GPUs, % **Non-Base Level Textures** counters lower than 10% on average may indicate inadequate mipmapping.\n**Figure 2.**Non-base level textures for a single frame, with an average value of 9.2%\n\nAnother consideration is the use of anisotropic filtering, which is described by the **% Anisotropic Filtered** counter for Qualcomm Adreno GPUs for the proportion of texels that are anisotropic filtered. While this may improve visual quality for some games, it can also be very expensive, and its use should be weighed against the GPU performance cost.\n**Figure 3.**Perecentage of anisotropic filtered for a single frame, with average value of 10.8%\n\nThe best way to diagnose more specific problems is through taking a frame\nprofile trace to analyze texture assets."]]