A largura de banda da memória dos dados do vértice pode ser um possível gargalo para o desempenho da GPU do jogo. Há alguns contadores em um perfil do sistema AGI que podem ajudar a diagnosticar problemas de largura de banda de memória do vértice.
Contadores Qualcomm Adreno
Em dispositivos com GPUs Qualcomm Adreno, alguns contadores importantes incluem:
Enviar contraoferta | Descrição |
---|---|
Leitura de memória Vertex | Largura de banda dos dados do vértice lidos da memória externa. |
Média de bytes/vértices | Tamanho médio dos dados do vértice, em bytes. |
% de parada de busca de vértices | Porcentagem de ciclos de clock em que a GPU está bloqueada nos dados de vértice. |
Contadores da ARM Mali (WIP)
Em dispositivos com GPUs ARM Mali, alguns contadores importantes incluem:
Enviar contraoferta | Descrição |
---|---|
Carregar/armazenar batidas de leitura da memória externa | Os dados superam a leitura da memória externa pela unidade de carga/armazenamento, calculada sobre os núcleos do sombreador. |
Carregar/armazenar batidas de leitura do cache L2 | Os tempos de dados lidos do cache L2 pela unidade de carregamento/armazenamento, calculados em 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. [Mais]
Análise de contagem
Para medir o comportamento desses contadores, você pode medir a largura de banda média e máxima ao longo de um único frame de GPU, que pode ser delineada com um bloco contíguo de Utilização de GPU.
![Largura de banda de leitura de memória do vértice para um único frame, com um valor médio de 327 MBps e um valor de pico de 1,16 GBps](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_vert_bw.png?authuser=3&hl=pt-br)
Recomendamos uma largura de banda de leitura de memória do vértice de pico não superior a 1, 5 GBps e uma largura de banda média não superior a 500 MBps. Valores mais altos são indicadores de um de alguns problemas comuns:
- O tamanho do vértice é muito grande: os vértices podem ter atributos de vértice grandes ou um grande número de atributos de vértice, afetando muito o tempo de sombreamento de vértices.
- Os fluxos de atributos da Vertex não são divididos: os atributos da Vertex são intercalados em um único buffer, reduzindo a eficiência do cache.
- Muitos vértices enviados por frame: modelos complexos e/ou um grande número de modelos podem ocupar mais largura de banda e levar mais tempo para serem sombreados.
Os problemas de tamanho do vértice também podem ser diagnosticados pela faixa Average Bytes / Vertex, que recomendamos ter, no máximo, 32 bytes ou vértices.
![Tamanho médio do vértice para um único frame, com um valor médio de 31,3 bytes](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_bytes_per_vert.png?authuser=3&hl=pt-br)
A melhor maneira de diagnosticar qual desses problemas você está enfrentando é fazer um rastro de perfil de frame para analisar formatos de vértice.