Valve постаралась, чтобы FPS в Left 4 Dead 2 на Ubuntu оказался выше, чем на Win7
Это перевод нового сообщения из блога Valve Linux.
Один из факторов приятной игры — это скорость её работы. В этом посте я
расскажу о том, что мы узнали о производительности графики наших игр,
работающих в Linux.
Любой разрабочик скажет, что производительность — очень запутанная вещь.
Поэтому, для простоты повествования, мы сосредоточимся на следующей
топовой конфигурации:
Железо
Intel Core i7 3930k
NVIDIA GeForce GTX 680
32 GB RAM
Софт
Windows 7 Service Pack 1 64-bit
Left 4 Dead 2
Ubuntu 12.04 32-bit
Не волнуйтесь, мы используем 32-битные версии Linux временно, релиз будет работать и на 64-битной архитектуре.
Запуская Left 4 Dead 2 на Windows 7 с Direct3D драйвером, мы получаем
значение 270.6 FPS. Данные сгенерированы с помощью наших внутренних
тестов.
Когда мы начали работать с Linux, первая запустившаяся версия работала с
6 FPS. Это нормально для начальной стадии портирования игры на новую
платформу.
Улучшения производительности в основном были выполнены в трех направлениях:
Заставить игру работать лучше с ядром
Заставить игру работать лучше с OpenGL
Оптимизировать графические драйвера
Например, для улучшения взаимодействия с ядром, мы изменили наш механизм
распределения памяти так, чтобы он использовал более допустимые для
Linux функции. Мы также уменьшили количество лишних вызовов OpenGL и
расширили интерфейс нашего графического движка для лучшего
взаимодействия с OpenGL и Direct3d.
Третий пункт особенно интересный, так как это включает работу с
производителями железа для определения слабых мест в их драйверах, и,
как результат, улучшение их, что положительным образом отразится на
остальных Linux-играх. Исследование задержек драйвера и добавление
поддержки мультипоточности в него это два примера изменений, которые
стали результатом совместной работы наших команд.
После всех проделанных работ, Left 4 Dead 2 работает на 315 FPS в Linux.
То, что игра под Linux работает быстрее, чем на Windows (270.6), на
первый взгляд немного не логично, учитывая количество времени,
потраченное на версию для последней. Однако, это говорит о потенциале
возможностей, лежащих за ядром и OpenGL. Кстати, в процессе работы с
производителями оборудования мы также ускорили реализацию OpenGL для
Windows. Left 4 Dead 2 работает на 303.4 FPS в такой конфигурации.
OpenGL против Direct3D на Windows 7
Всё это ведет к вопросу: почему OpenGL версия нашей игры работает
быстрее, чем Direct3D версия на Windows 7? Похоже, это не относится к
реализации мультипоточности. Мы провели довольно честный анализ и нашли
небольшую задержку (несколько микросекунд) на каждый batch в Direct3D,
которая не затрагивает OpenGL. Теперь мы знаем, что оборудование может
больше, и мы выясним, как достичь нового предела с помощью Direct3D.
Работа с производителями видеокарт
Мы работали с NVIDIA, AMD и Intel для того, чтобы улучшить
производительность драйверов в Linux. Вместе мы сделали большую работу,
было очень приятно видеть, как наши разработчики работают вместе с ними,
бережно анализируя получаемые данные. Каждый открытый баг был
открытием, и просто бесценно быть рядом с людьми, понимающими игру,
рендерер, драйвер, железо и работать с ними бок о бок, атакуя проблемы
производительности.
Это прекрасный пример преимуществ тесного сотрудничества между
разработчиками ПО и оборудования, и это сотрудничество должно совершить
большой вклад в Linux-сообщество.