El ancho de banda de memoria de los datos de textura puede ser un posible cuello de botella para el rendimiento de la GPU de tu app. Hay algunos contadores en un perfil del sistema AGI que pueden ayudar a diagnosticar problemas de ancho de banda de memoria de textura.
Contadores de Qualcomm Adreno
En los dispositivos con GPU Qualcomm Adreno, se incluyen algunos contadores destacados:
Contraofertar | Descripción |
---|---|
Lectura de memoria de textura en BW (bytes/segundo) | Ancho de banda de los datos de textura leídos desde la memoria externa. |
Porcentaje de textura de L1 errónea | Error de caché L1 al recuperar texturas. |
Porcentaje de texturas no básicas | Porcentaje de recuperaciones de texturas que son mipmaps. |
% de filtrado anisotrópico filtrado | Porcentaje de téxeles filtrados anisotrópicos. |
Mostradores ARM Mali
En los dispositivos con GPU ARM Mali, algunos contadores destacados incluyen los siguientes:
Contraofertar | Descripción |
---|---|
Textura lee ritmos de memoria externa | Los datos son superiores a los que lee la unidad de textura desde la memoria externa, promediados en los núcleos del sombreador. |
La textura lee ritmos de la caché L2 | Los datos superan a la lectura de la caché L2 por parte de la unidad de textura, promediado por los núcleos del sombreador. |
[Más] |
Para calcular el ancho de banda total de los tiempos de lectura promedio, el valor del contador se multiplica por el ancho del bus (generalmente, 16 bytes) y por la cantidad total de núcleos del sombreador.
Contador
Para medir el comportamiento de estos contadores, mide el ancho de banda promedio y máximo en un solo marco de GPU y, luego, defínelo con un bloque contiguo de uso de GPU.
![Ancho de banda de lectura de memoria de textura para un solo fotograma, con un valor promedio de 565 MBps y valor máximo de 2.30 GBps](https://developer.android.com/static/images/agi/texture-memory-images/sample_tex_bw.png?authuser=8&hl=es)
Recomendamos un ancho de banda de lectura de memoria de textura promedio no superior a 1 GBps y un ancho de banda máximo no superior a 3 GBps. El error de caché de textura L1 tampoco debe ser superior al 10%. Los valores más altos para el ancho de banda o la caché L1 pueden ser indicadores de problemas de texturas más profundas, incluidos los siguientes:
- Las texturas son demasiado grandes: Las texturas grandes sobrepasan el tamaño del paquete, son más costosas y pueden reducir la eficiencia de la caché.
- Las texturas no están comprimidas: Todos los teléfonos Android admiten algunos tipos de compresión de texturas, ya sea ETC1 o ASTC. Las texturas deben comprimirse para reducir el tamaño del paquete y reducir el ancho de banda de textura.
- Otro: Se deben considerar otros factores de textura, como las texturas potencia-de-2, mipmapping, el filtrado anisotrópico y mucho más. Algunos de estos pueden observarse desde el perfil del sistema como se explica a continuación, mientras que otros pueden requerir una investigación más profunda.
En el caso de los juegos tridimensionales con una cámara gratuita, los recursos de textura deben usar mipmapping, de modo que los objetos que se encuentran a distancia de la cámara tendrán un ancho de banda de memoria reducido, una mejor eficiencia de caché de textura y una mejor calidad de imagen. En el caso de los dispositivos que usan GPU de Qualcomm Adreno, el porcentaje de texturas de nivel no base inferiores al 10% en promedio pueden indicar un mipmapping inadecuado.
![Texturas no básicas para un solo marco, con un valor promedio del 9.2%](https://developer.android.com/static/images/agi/texture-memory-images/sample_nonbase.png?authuser=8&hl=es)
Otra consideración es el uso del filtrado anisotrópico, que se describe en el contador % de filtrado anisotrópico para las GPU de Qualcomm Adreno sobre la proporción de téxeles filtrados anisotrópicos. Si bien esto puede mejorar la calidad visual de algunos juegos, también puede ser muy costoso, y su uso debe compararse con el costo de rendimiento de la GPU.
![Porcentaje de contenido anisotrópico filtrado para un único fotograma, con un valor promedio del 10.8%](https://developer.android.com/static/images/agi/texture-memory-images/sample_anisotropic.png?authuser=8&hl=es)
La mejor manera de diagnosticar problemas más específicos es realizar un seguimiento de perfil de fotogramas para analizar los elementos de textura.