Vulkan vs OpenGL ES на Android: почувствуйте разницу

Vulkan vs OpenGL ES

Один из ведущих мировых производителей мобильных ГПУ, Imagination Technologies (ее PowerVR используются во всех последних чипсетах Apple, которые отличаются завидной стабильностью в производительности), продемонстрировала возможности интерфейса программирования Vulkan. Напомним, что он был анонсирован год назад, а полгода назад разработавший его консорциум Khronos объявил о поддержке Vulkan мобильными устройствами. Вчера стало известно о планируемом включении поддержки Vulkan в будущие версии Android, но на самом деле, при помощи специальных драйверов, разработанные под этот API приложения могут работать и на нынешней прошивке.

В качестве испытательного полигона выступила телеприставка Nexus Player. Она как раз работает под управлением Android и оснащена процессором Intel Atom со встроенным ГПУ PowerVR G6430 (такой же в процессоре Apple A7 у iPhone 5S).

Как мы уже рассказывали, главным достоинством низкоуровнего API Vulkan является прямой доступ к аппаратным ресурсам процессора и, как следствие, возможность распределения нагрузки ЦПУ между несколько его ядрами и увеличения скорости обработки ими вызовов отрисовки. До сих пор преимущество такого подхода демонстрировались на настольных системах (см. результаты бенчмарков Star Swarm и 3DMark API Overhead) — давайте посмотрим на возможности мобильной версии Vulkan. Слева вы видите рендеринг в режиме реального времени специализированного бенчмарка Gnome Horde, написанного с использованием API Vulkan, а справа — с использованием OpenGL ES 3.0:

Как видите, по мере увеличения объектов в сцене (и соответственно вызовов отрисовки, выполняемых ЦПУ), возможности 4-ядерного Intel Atom раскрываются в полной мере — благодаря Vulkan он вполне успешно справляется с отрисовкой 400 тысяч маленьких гномов и других объектов за одну секунду (13,500 вызовов отрисовки в одном кадре, на скорости 30 к/с).

Напомним, что в свое время низкоуровневую API Metal для своей мобильной операционной системы iOS (а позднее и для десктопной Mac OS X) представила Apple, тогда как Microsoft готовится к релизу мобильной версии Windows 10 (с поддержкой низкоуровнего API DirectX 12). Таким образом, все три основные мобильные платформы, Android, iOS  и Windows, почти одновременно вступают в соперничество между поддерживаемыми ими низкоуровневыми API, позволяющими добиться более реалистичной графики в мобильных приложениях.

Насколько значительным будет прогресс непосредственно в играх предсказать сложно: пока результаты комплексных графических тестов (как десктопных, которые мы упоминали выше, так и мобильного GFXBench 3.0 Metal) существенно уступают специализированным. В конечном счете все будет зависеть от того, как много объектов (например, в виде разлетающихся при взрыве осколков) задействовано в игровой сцене. Можно предположить, что наиболее ощутимой разница будет в стратегиях вроде Total War: Attila, где на полях сражений самостоятельно (но под вашим чутким руководством) сражаются тысячи воинов.

Imagination TechnologiesAndroid Developers Blog