На проходящей в эти дни конференции разработчиков Xorg Кеннет Граунке из компании Intel представил новый OpenGL-драйвер Iris для одноимённых графических чипов Intel. Архитектура нового драйвера сильно отличается от классической архитектуры драйвера i965 и базируется на интерфейсе Gallium3D, предоставляемом Mesa. В презентации описаны недостатки старого драйвера и краткий план по улучшению нового драйвера Iris.
Из недостатков i965 отмечается применение классической архитектуры на основе обработки потока состояний (State Streaming), отслеживание которых требует слишком интенсивного выполнения кода драйвера. Один из подходов для оптимизации сводится к возможности сохранения состояний и их повторного использования, но данный метод проблематично реализовать в i965 из-за особенностей архитектуры драйвера. В драйвере i965 также требуется фундаментальная переработка кода для загрузки состояний и проведение модернизации средств управления памятью.
В качестве эксперимента один из разработчиков Intel попытался создать с нуля новый драйвер для современных GPU, используя предлагаемую в Mesa архитектуру Gallium3D с интерфейсами для разработки драйверов, выносящим задачи управления памятью на сторону DRI-драйвера в ядре Linux и предоставляя готовый трекер состояний с поддержкой кэша повторного использования выводимых объектов.
Новый драйвер поддерживает только GPU Iris и процессоры на базе микроархитектуры Gen9+ (Skylake).
Драйвер развивается с ноября прошлого года, но его разработка пока не завершена и он не готов для применения конечными пользователями. Тем не менее драйвер уже пригоден для экспериментов и проходит 87% OpenGL тестов piglit. Из ещё не реализованных возможностей отмечаются сжатие цветов,
вычислительные шейдеры, синхронизация и запрос объектов, кэширование шейдеров на диске.
В тестах производительности драйвер Iris от 3 до 15 раз обгоняет i965, в зависимости от режима тестирования. В среднем Iris демонстрирует отрисовку в 5.45 раз большего числа объектов в секунду, чем драйвер i965. При выполнении реальных программ прирост не столь внушителен (в одной из демонстраций прирост около 19%, а в некоторых демонстрациях примерно равен i965).
При этом драйвер обеспечивает значительное снижение нагрузки на CPU, благодаря выполнению всех основных операций на стороне GPU, что особенно актуально для организации вывода для систем виртуальной реальности. Кроме того, так как в интегрированных чипах энергопотребление распределяется между GPU и CPU, снижение нагрузки на CPU приводит к выделению дополнительных ресурсов для GPU и повышению его производительности.
|