Analisar o uso da largura de banda da memória da textura
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A largura de banda da memória dos dados de textura pode ser um possível gargalo para o
desempenho da GPU do app. Existem alguns contadores em um perfil de sistema AGI que podem ajudar a diagnosticar problemas de largura de banda de memória de textura.
Contadores Qualcomm Adreno
Em dispositivos com GPUs Qualcomm Adreno, alguns contadores importantes incluem:
Enviar contraoferta
Descrição
Leitura de memória de textura BW (bytes/segundo)
Largura de banda dos dados de textura lidos da memória externa.
% de perda de textura L1
Ausência de cache L1 ao buscar texturas.
Porcentagem de texturas de nível não básico
Porcentagem de buscas de textura que são mipmaps.
Porcentagem de filtros anisotrópicos
Porcentagem de texels que são filtrados anisotrópicos.
Contadores da ARM Mali
Em dispositivos com GPUs ARM Mali, alguns contadores importantes incluem:
Enviar contraoferta
Descrição
A leitura de textura bate da memória externa
Os dados superam os dados lidos da memória externa pela unidade de textura, com a média sobre os núcleos do sombreador.
Batidas de leitura de textura do cache L2
Os tempos de dados lidos do cache L2 pela unidade de textura, com média sobre os núcleos do sombreador.
[Mais]
Para calcular a largura de banda geral a partir das batidas médias de leitura, o valor do contador é multiplicado pela largura do barramento (normalmente 16 bytes) e pelo número total de núcleos de sombreador.
Análise de contagem
Para medir o comportamento desses contadores, meça a largura de banda média e máxima
ao longo de um único frame de GPU e, em seguida, delineie com um bloco contíguo de utilização da GPU.
Figura 1. Largura de banda de leitura de memória de textura para um único frame, com valor médio de 565 MBps e valor de pico de 2,30 GBps
Recomendamos uma largura de banda média de leitura de memória de textura não superior a 1 GBps e um pico de largura de banda não superior a 3 GBps. A ausência de cache L1 da textura também não pode ser maior que 10%. Valores mais altos para largura de banda ou cache L1 podem indicar problemas de textura mais profundos, incluindo:
Texturas muito grandes: texturas grandes ocupam o tamanho do pacote, são mais caras e podem reduzir a eficiência do cache.
Texturas não compactadas: todos os smartphones Android são compatíveis com alguns tipos de compactação de textura, seja ETC1 ou ASTC. As texturas precisam ser compactadas para reduzir o tamanho do pacote e a largura de banda da textura.
Outros: diversos outros problemas de textura precisam ser considerados, incluindo texturas de poder de 2, mipmapping, filtragem anisotrópica e muito mais. Alguns deles podem ser observados no perfil do sistema, conforme discutido abaixo, enquanto outros podem exigir uma investigação mais profunda.
Para jogos tridimensionais com uma câmera sem custo financeiro, os recursos de textura precisam usar mipmapping para que objetos à distância da câmera tenham largura de banda de memória reduzida, melhor eficiência de cache de textura e melhor qualidade de imagem. Para dispositivos que usam GPUs Qualcomm Adreno, os contadores de porcentagem de texturas de nível não básico menores que 10%, em média, podem indicar mipmapping inadequado.
Figura 2. Texturas de nível não básico para um único frame, com um valor médio de 9,2%
Outra consideração é o uso da filtragem anisotrópica, que é descrita pelo contador % filtrado anisotrópico para GPUs Qualcomm Adreno para a proporção de texels que são filtrados anisotrópicos. Embora isso possa melhorar a qualidade visual para alguns jogos, também pode ser muito caro e deve ser comparado com o custo de desempenho da GPU.
Figura 3. Perecente do anisotrópico filtrado para um único frame, com valor médio de 10,8%
A melhor maneira de diagnosticar problemas mais específicos é fazer um rastro
de perfil de frame para analisar os recursos de textura.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]