Почему графические процессоры требуют определенных драйверов для игры?


31

Обновления драйверов графических процессоров для ПК часто указывают на улучшения, внесенные в производительность определенных недавно выпущенных игр. Зачем нужно это обновление для конкретной игры? Как специфичные для игры изменения взаимодействуют с игровым кодом?

Ответы:


31

Как человек с несколькими годами разработки драйверов, я рассматриваю это как две отдельные проблемы.

Графический драйвер - очень сложный зверь. Реализовать все оптимальным образом было бы просто невозможной задачей; это достаточно большое препятствие, чтобы сделать драйвер, который действительно следует спецификациям - и спецификации становятся все более и более сложными. Итак, вы разрабатываете свой драйвер на основе спецификации и нескольких тестовых приложений (поскольку во многих случаях еще нет реального программного обеспечения).

Приближается настоящая игра (или тест, или какой-то другой пример использования драйвера, например, декодирование видео), который обнаруживает узкое место в драйвере. Начнем с того, что нужно выяснить, как сгладить ситуацию и ускорить использование этого варианта. Вы можете легко сообщить, что игра XYZ работает на 27,3% быстрее, но на самом деле каждое приложение, в котором есть вариант использования (например, динамическое обновление текстур), работает быстрее.

Есть и уродливая сторона, реальная оптимизация для каждого приложения, в которой драйвер определяет, какое приложение выполняется (или какой шейдер компилируется), и делает что-то не общее. Было много публичных случаев, когда, например, переименование исполняемого файла 3dmark внезапно меняет результаты.

Я чувствую, что такого рода оптимизации являются пустой тратой времени каждого: вы лжете своим клиентам в случае эталонных тестов и можете изменить поведение шейдера по сравнению с тем, что на самом деле хочет разработчик. Я вспоминаю случай, когда шейдер был изменен с поиска текстуры на вычисление в шейдере (которое работало только для аппаратного обеспечения указанного производителя), который был близким, но не совсем таким же результатом, и разработчик возразил, что это не является законным оптимизация.


2
+1 и это должен быть принятый ответ; это делает большую работу по описанию точной ситуации и с внутренней точки зрения. Я думаю, что знаю тот случай, о котором вы упомянули - возможно, зеркальный расчет? ;)
Максимус Минимус

14

В идеальном мире они не будут.

Однако это не идеальный мир, поэтому улучшения производительности в зависимости от игры могут быть связаны с одним или несколькими из следующих факторов (не для того, чтобы быть исчерпывающим):

  • Игра выполняет комбинацию операций A, B и C с установленными состояниями X, Y и Z. Драйвер может делать предположения на основе этого и подталкивать вещи к более оптимальному пути кода.

  • Игра никогда не выполняет операции I, J или K. Опять же, водитель может выбрать более оптимальный путь кода, основываясь на предположении, что эти операции никогда не выполняются.

  • Игра делает некоторые вещи немного (или не очень) неоптимальным образом. Драйвер знает это, перехватывает вызовы и преобразует их в нечто (надеюсь!) Эквивалентное, которое будет работать с ним лучше.

  • Можно найти компромисс по конкретной игре; например, это нормально, если эта комбинация состояний рендеринга идет медленно, потому что более важно, что эта комбинация идет быстрее, поэтому давайте оптимизировать соответственно.

Здесь важно отметить, что ничего из этого не должно быть «обязательным». До тех пор, пока использование драйвера и игрового API согласовано, все должно работать. Но иногда компромиссы в особом случае, чтобы иметь возможность извлечь максимальную производительность, могут рассматриваться как соответствующие. Я воздержусь от комментариев о том, хорошо это или нет.


1
Мне сказали, что разработчики драйверов графических процессоров также иногда заглядывают в шейдеры для популярных игр и пишут свои собственные версии, оптимизированные для их аппаратного обеспечения, которые драйвер молча заменяет оригинальными шейдерами.
Натан Рид

9
@NathanReed Когда-то, это пошло намного дальше, чем это. В те времена, когда анизотропная фильтрация и сжатие текстур были дорогостоящими, компании, занимающиеся производством графических процессоров, старались изо всех сил снизить визуальное качество конечного продукта, когда он работал в режиме реального времени, чтобы ускорить его работу, не предупреждая никого с дешевым монитором что игра выглядела намного хуже. Они даже перехватывали вызовы PrintScreen и делали качественный рендеринг для картинки.
Норгард

8
Производители графических процессоров также обманывают на популярных тестах. Я помню сравнительный тест из компьютерного журнала, где они дважды запускали один и тот же тест с одинаковыми настройками в одной и той же системе. Но однажды они переименовали исполняемый файл эталонного теста, чтобы водитель не узнал его. Любопытно, что оценка переименованного исполняемого файла была заметно хуже - как для карт ATI, так и для NVIDIA.
Филипп

8

Разработчики игр расширяют границы графических процессоров. Мы можем провести аналогию с игрой и игровым движком. Чем более продвинуты требования к игре, тем более продвинутым должен быть игровой движок для ее поддержки. Это то же самое с видеокартами.

Компьютерные игры и производители графических процессоров - хорошие товарищи. В их интересах работать вместе над улучшением графического процессора, тем самым улучшая игру. Это классические программные парни, работающие с аппаратными парнями. Обе стороны могут что-то добавить, когда речь заходит о разработке интерфейса между программным и аппаратным обеспечением. Этот интерфейс является драйвером.

Эти обновления могут включать в себя исправления ошибок, обнаруженные разработчиками программного обеспечения, или улучшения, внесенные разработчиками аппаратного обеспечения для поддержки требований разработчиков ПО. Вы найдете эти отношения во всем.

Вероятно, причина включения конкретных игр в примечания к выпуску обновления драйверов - это PR. Это не только показывает, что производитель карт X будет очень хорошо работать с игрой Y, но и показывает, что игра Y будет еще лучше, чем была раньше.


6

Вполне вероятно, что команда разработчиков игры столкнулась с ошибкой драйвера графического процессора, из-за которой игра не работала правильно, если ошибка драйвера не была исправлена.

Это также иногда маркетинговый трюк . Например, ATI / AMD недавно поставили копию Dirt 3 со своими новыми графическими процессорами и выдвинули идею играть с Eyefinity с 3 мониторами в этой игре.

Так что это немного симбиоз.

Поставщик графического процессора: Эй! Эта новая функция! Никто не использует это!

Разработчик игры: мы могли бы использовать это! Поставить нашу игру на свой графический процессор, который использует эту функцию?

Производитель GPU: Черт возьми!


1

Правда в том, что графические процессоры не требуют специфичных для игры драйверов.

Драйверы для конкретных игр являются частью маркетинговых усилий производителей графических процессоров, направленных на то, чтобы попытаться превзойти других производителей графических процессоров. Если они могут показать лучшую производительность в популярных играх, настроив свои драйверы для этих конкретных игр, то (согласно теории) они привлекут больше игроков из этих игр.

Это почти все, что нужно сделать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.