Правильный способ выбора видеокарт пользователя?

8

Моя игра использует DirectX 10, и у меня возникла проблема, когда пользователи сообщают, что моя игра не запускается на их видеокарте. Вместо этого он предпочитает работать на встроенной плате Intel, что снижает производительность. Возможно, это связано с Windows 8. Это также может быть связано с мобильными картами.

До сих пор я создавал устройство DirectX 10 без указанного адаптера (как я видел во всех примерах / демонстрациях), чтобы DirectX мог выбрать свой собственный адаптер. Видимо, мне придется это изменить.

У меня уже есть функция, которая запускает все доступные адаптеры и выбирает тот, у которого больше всего выделенной памяти. Это прекрасно работает для исправления проблемы, но в целом ли это правильно?

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

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

Raptormeat
источник
это то, что вы ищете? msdn.microsoft.com/en-us/library/windows/desktop/...

Ответы:

11

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

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

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

Nvidia предпочтительный выбор GPU , AMD предпочтительный выбор GPU , Flatout 2 предпочтительный выбор GPU

Миклас
источник
В конечном счете, я думаю, что это то, что я должен сделать. Мне все еще не хватает чего-то важного - другие игры, похоже, выбирают правильный адаптер, а моя - нет - но я думаю, что сейчас лучше всего дать игроку контроль.
Raptormeat
3
@Raptormeat: драйверы обычно включают «профили», которые они используют для выбора устройства по умолчанию для приложения для известных игр, что является одной из причин, по которым другие игры ведут себя так, как ожидается, а ваши нет. Также есть такие хаки, как stackoverflow.com/questions/10535950/… но это работает только для NVIDIA (а у других производителей графических процессоров нет аналогов).
Шон Мидлдич
1
Другой подход состоит в том, чтобы запустить несколько репрезентативных фреймов (использовать Flushи фиктивную цель вместо Presentцепочки подкачки) для каждого и выбрать тот, который завершается быстрее всех по умолчанию. Тем не менее, вы должны разрешать пользователям выбирать, поскольку они могут жертвовать частотой кадров, чтобы увеличить время автономной работы.
MooseBoys
3

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

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

jmegaffin
источник
2

Если вы выбираете адаптер на основе того, у которого больше всего памяти, у вас могут возникнуть проблемы с точным определением объема памяти, используемого Intel HD Graphics. Intel HD Graphics имеет доступ к двум банкам памяти; один выделенный и один общий с процессором. Размер этих двух банков отражается в структуре DXGI_ADAPTER_DESC как DedicatedVideoMemory и SharedSystemMemory. Для сравнения с другими адаптерами вы можете использовать только выделенный банк или оба.

У Intel есть образец обнаружения GPU, который также показывает, как измерить оба банка памяти.

Брэд Верт
источник