Развитие Vulkan не останавливается ни на день: очередное обновление спецификации, версия 1.4.345, приносит с собой уточнения, исправления и одно новое расширение. Хотя в целом релиз носит технический характер, появление VK_ARM_shader_instrumentation заслуживает внимания всех, кто занимается разработкой под мобильные платформы и встраиваемые системы на базе графики Arm Mali.
Главное нововведение: инструментирование шейдеров от Arm
Расширение VK_ARM_shader_instrumentation разработано группой инженеров Arm и предоставляет разработчикам возможность:
- Инструментировать шейдеры — то есть внедрять в них специальный код для сбора метрик производительности.
- Захватывать метрики производительности по типам шейдеров (вершинные, фрагментные, вычислительные и т.д.) для команд, выполняемых в очереди.
Основная цель расширения — улучшить анализ стоимости выполнения шейдеров (shader cost analysis) на GPU семейства Mali. Разработчики смогут получать детальную обратную связь о том, какие именно шейдеры и draw call'ы являются самыми затратными в кадре, и на основе этих данных проводить целенаправленную оптимизацию.
Почему это важно?
- Для мобильных разработчиков: GPU Mali устанавливаются в миллиарды Android-устройств. Возможность точно профилировать шейдеры прямо через Vulkan позволит создавать более эффективные и энергоёмкие игры и приложения.
- Для инструментов профилирования: Появление стандартизированного расширения означает, что разработчики инструментов (таких как RenderDoc, Android GPU Inspector и др.) смогут добавить поддержку сбора этой информации единообразно для всех устройств на Mali.
- Для экосистемы Vulkan: Это ещё один шаг к тому, чтобы API предоставлял разработчикам не только средства для отрисовки, но и богатые возможности для анализа и оптимизации производительности.
Остальные изменения
Помимо нового расширения, Vulkan 1.4.345 включает в себя ряд уточнений и исправлений различных элементов спецификации. Они носят технический характер и направлены на повышение ясности документации и устранение противоречий.
Детальное описание всех изменений доступно в репозитории Vulkan-Docs на GitHub.