Herramientas y funciones avanzadas

Depuradores

Depuración con capa de validación

Vulkan está diseñado para un alto rendimiento y una sobrecarga baja de controladores. Para lograrlo, incluye solo capacidades de depuración y comprobación de errores muy limitadas de forma predeterminada. Si haces algo mal, el controlador a menudo fallará en lugar de mostrar un código de error o, lo que es peor, parecerá funcionar en tu tarjeta gráfica, pero fallará por completo en otras.

Para habilitar verificaciones extensas durante el desarrollo, Vulkan proporciona capas de validación, que son fragmentos de código que se pueden insertar entre la API y el controlador de gráficos para realizar acciones como ejecutar verificaciones adicionales en los parámetros de función y realizar un seguimiento de problemas de administración de la memoria. Puedes habilitar las capas de validación durante el desarrollo y inhabilitarlas por completo cuando lances tu aplicación sin sobrecarga.

Cualquier persona puede escribir las capas de validación, pero Khronos proporciona un único conjunto de estándares llamado VK_LAYER_KHRONOS_validation. Consulta las capas de validación de Vulkan en Android en la página del NDK de Android para habilitar la capa de validación en tu aplicación.

RenderDoc

RenderDoc es otra herramienta de código abierto potente que te permite capturar un marco para la inspección y el análisis. Es una herramienta muy potente que usan los programadores de gráficos para depurar sus escenas renderizadas. Además, es compatible con Vulkan en Android, aunque tu app debe configurarse como depurable para que funcione.

Si deseas obtener información para configurarlo y usarlo en tu aplicación para Android, consulta Cómo usar RenderDoc en Android.

Capturar / reproducir bibliotecas

Reconstrucción GFX

GFXReconstruct es un proyecto de código abierto que proporciona herramientas para capturar y volver a reproducir llamadas a la API de gráficos que ejecuta una aplicación. El seguimiento registrado se puede volver a reproducir para reconstruir el comportamiento específico de los gráficos de la aplicación capturada. Una de las principales ventajas de GFXReconstruct es que te permite usarlo en tu aplicación ya publicada (cuando desactivaste android:debuggable).

Para obtener más información, visita el repositorio del proyecto. La información de configuración y uso de Vulkan en Android está disponible en Captura y reproducción de la API de GFXReconstruct para Android.

Ten en cuenta que los archivos de registro no son portátiles, lo que significa que no puedes capturar el archivo en un dispositivo y volver a reproducirlo en otro (con versiones de SO, chips o incluso versiones de controlador diferentes).

Generadores de perfiles

Inspector de GPU de Android (AGI)

El Inspector de GPU de Android (AGI) es un generador de perfiles de gráficos compilado para Android que incluye un perfil del sistema y un Generador de perfiles de fotogramas. Proporciona información de generación de perfiles de alto nivel que te permite comprender el perfil de rendimiento del juego y, además, identificar cuellos de botella.

Para descargar AGI y obtener información sobre cómo usarlo, consulta el sitio web del Inspector de GPU de Android.

Generador de perfiles de Android Studio

El generador de perfiles de Android Studio es una herramienta útil para perfilar el rendimiento de tu app. Sin embargo, no está específicamente dirigido a la generación de perfiles de gráficos. Consta del Generador de perfiles de CPU, el Generador de perfiles de memoria, el Generador de perfiles de red, el Generador de perfiles de energía, el Generador de perfiles de energía y el monitor de eventos.

Para obtener más información sobre cómo configurar y usar el generador de perfiles de Android Studio, consulta la sección Perfila el rendimiento de tu app.

Generadores de perfiles de OEM

Las herramientas de esta sección son específicas del OEM y es posible que no funcionen en dispositivos que se ejecutan en otros chips.

ARM Performance Studio para dispositivos móviles

Arm Performance Studio para dispositivos móviles es el nuevo nombre de Arm Mobile Studio. Es un paquete de herramientas que incluye el Analizador de gráficos y el Advisor de marcos para ayudarte a identificar y solucionar problemas de rendimiento en GPU ARM.

Para obtener más información, consulta el sitio web de Arm Performance Studio para dispositivos móviles.

PerfDoc de ARM para GPU de Mali

PerfDoc es una capa de Vulkan desarrollada para validar aplicaciones en función de las prácticas recomendadas de GPU Mali de ARM. Desde entonces, se combinó con VK_LAYER_KHRONOS_validation y es básicamente parte de las capas de validación estándar de Vulkan.

Si deseas obtener información para usarla, consulta la sección Cómo realizar depuraciones con una capa de validación.

Generador de perfiles de Qualcomm Snapdragon

Qualcomm Snapdragon Profiler es un software de generación de perfiles desarrollado por Qualcomm para que los desarrolladores de aplicaciones analicen el rendimiento de la CPU, la GPU, la DSP, la memoria, la potencia, térmico y de red, y así identificar cuellos de botella en sus chipsets.

Para obtener más información, consulta el Generador de perfiles de Snapdragon en la red de desarrolladores de Qualcomm.

GPUWatch Samsung

El GPUWatch de Samsung es una herramienta para observar la actividad de la GPU en dispositivos Samsung. A diferencia de otras herramientas, puedes usar esta herramienta directamente desde tu dispositivo móvil, por lo que es muy útil verificar el rendimiento de tu aplicación de inmediato, incluso cuando no tienes acceso a otra computadora host.

Para obtener más información sobre cómo habilitarlo, consulta la Guía del usuario.

PVRTune

El PVRTune de Imagination Technologies permite a los desarrolladores generar perfiles de las aplicaciones en el hardware de PowerVR en tiempo real con una amplia gama de contadores y métricas. También permite guardar la sesión para realizar análisis de bajo nivel y detectar cuellos de botella en el rendimiento.

Para obtener más información sobre cómo usar PVRTune, consulta el Manual.

Herramientas de migración

Cómo convertir sombreadores de GLSL a SPIR-V

La API de Vulkan espera que los programas sombreadores se proporcionen en el formato intermedio binario SPIR-V. Esta convención es diferente de OpenGL ES, en el que puedes enviar el código fuente escrito en OpenGL Shading Language (GLSL) como cadenas de texto.

NDK r12 y versiones posteriores incluyen una biblioteca en tiempo de ejecución para compilar sombreadores GLSL en SPIR-V que Vulkan puede usar. El compilador shaderc se puede usar para compilar programas sombreadores escritos en GLSL en SPIR-V. Si tu juego usa HLSL, DirectXShaderCompiler admite una salida de SPIR-V.

Por lo general, deberás compilar programas sombreadores sin conexión como parte del proceso de compilación de los recursos del juego e incluir los módulos SPIR-V como parte de los recursos del entorno de ejecución.

Si deseas obtener más información sobre el proceso de compilación de sombreadores para tu aplicación de Vulkan, consulta Compiladores de sombreadores de Vulkan en Android en la sección del NDK de Android.

Funciones avanzadas

Cómo integrar Android Frame Pacing en tu procesador Vulkan

La biblioteca de Android Frame Pacing (también conocida como Swappy) ayuda a los juegos de Vulkan a lograr una renderización fluida y un ritmo correcto a fin de mantener el bucle de renderización del juego sincronizado con el subsistema de visualización del SO y el hardware de visualización subyacente.

Con el ritmo correcto, se eliminan los artefactos visuales conocidos como seccionamientos, se optimiza el consumo de energía mediante la sincronización entre las actualizaciones de pantalla y la presentación de fotogramas, y se eliminan los bloqueos mediante la estabilización de la velocidad de fotogramas. Para obtener más información sobre la importancia del ritmo de fotogramas, consulta la sección Biblioteca de Frame Pacing del AGDK.

Si deseas obtener más información para integrar el ritmo de fotogramas a tu juego, consulta Cómo integrar Android Frame Pacing a tu procesador Vulkan.

Cómo controlar la orientación del dispositivo con la rotación previa de Vulkan

Es posible que el manejo de la rotación de superficie fuera de la aplicación no sea libre. Incluso en algunos dispositivos de alta gama con unidades de procesamiento de Display (DPU) dedicadas, es posible que se deba pagar una penalización medible en cuanto al rendimiento, y el impacto dependerá de si la aplicación está vinculada a la CPU o a la GPU.

Vulkan ofrece a los desarrolladores la posibilidad de especificar mucha más información sobre el estado de renderización en los dispositivos en comparación con OpenGL. Un ejemplo de esta información es la orientación del dispositivo y su relación con la orientación de la superficie de renderización. Esta función te permite implementar la rotación previa para aprovechar al máximo Vulkan en Android.

Si deseas obtener más información para controlar de manera eficiente la rotación del dispositivo en tu aplicación de Vulkan, consulta Cómo controlar la orientación del dispositivo con la rotación previa de Vulkan y la aplicación de demostración complementaria.

Cómo optimizar con una precisión reducida

El formato numérico de los datos de gráficos y los cálculos del sombreador pueden impactar el rendimiento de tu juego de forma significativa. La mayoría de los cálculos y datos de los gráficos 3D modernos usan números de punto flotante. En Android, Vulkan usa números de punto flotante con un tamaño de 32 o 16 bits. Por lo general, un número de punto flotante de 32 bits se conoce como "precisión simple" o "precisión completa". Si bien el tipo de punto flotante de 64 bits se define en Vulkan, en general no se admite y no se recomienda su uso.

Consulta Cómo optimizar con una precisión reducida para obtener información sobre cómo optimizar tu aplicación de Vulkan para obtener el mejor rendimiento de tu aritmética.