В настоящее время многие ноутбуки оснащены двумя графическими процессорами - высокопроизводительным и энергосберегающим (менее мощным). Большинство приложений, которые я использую на своем ноутбуке, работают на моем интегрированном (энергосберегающем) графическом процессоре, но некоторые из них по-прежнему открываются с помощью высокопроизводительной карты. Я пытаюсь настроить приложение, которое я создаю, для запуска на высокопроизводительном графическом процессоре по умолчанию, но я не могу найти никакой информации по этой теме. Я надеюсь, что кто-то может пролить немного света на это. Я распространю свое приложение с помощью установщика NSIS и думаю, что мне придется добавить путь своего приложения в список приложений для карт NVidia / ATI. Приложение запрограммировано на C #. Кроме того, кто-нибудь знает, как обстоят дела с настольными ПК? Что произойдет, если на компьютере установлено 2 графических процессора, и мне нужно выбрать более мощный?
Милко
NvOptimusEnablement
трюк Оптимуса , но должен был. Похоже, что это недавно (водитель 302.x +) Спасибо.В общем, вы не можете.
Драйвер с двумя графическими процессорами скрывает два графических процессора за одним интерфейсом, поэтому такие решения, как у Натана Рида, обычно не работают в большинстве распространенных высокоскоростных / маломощных систем с двумя графическими процессорами.
Выбор GPU должен каким-то образом обрабатываться драйвером. С помощью NVIDIA Optimus вы обычно обновляете профили Optimus, чтобы добавить приложение в список приложений, использующих дискретный графический процессор, обычно щелкнув правой кнопкой мыши по EXE и выбрав Свойства. Вы также можете использовать некоторые специфичные для Optimus звонки. согласно ответу mh01. С настройками AMD это совершенно другое.
В других системах есть аппаратный переключатель или флаг ОС, чтобы решить, какой графический процессор активен. Опять же, приложение не контролирует, какой графический процессор используется.
Это то, на что я действительно надеюсь, что это "исправлено" в будущем обновлении DirectX. В идеале оба GPU должны быть перечислены, как предложил Натан, и тогда будут подсказки, чтобы указать, какой из них предназначен для высокоскоростного или маломощного, поэтому приложение может разумно выбрать правильный или даже переключить, какое устройство оно использует, основываясь на чем угодно. факторы (скажем, выбор веб-браузера в зависимости от загрузки WebGL).
источник
Вы должны иметь возможность перечислять графические процессоры в системе и выбирать, какой из них использовать при запуске приложения. Вы не упомянули, какой API вы используете, но, например, в D3D11 вы бы использовали IDXGIFactory :: EnumAdapters, чтобы получить список графических процессоров и передать тот, который вы хотите, в D3D11CreateDevice .
DXGI может предоставить вам некоторую ограниченную информацию о графическом процессоре, такую как строка описания, идентификатор поставщика и идентификатор устройства. Я полагаю, что вы можете использовать эту информацию, чтобы сказать, какой графический процессор является высокопроизводительным, но вам придется создать какую-то базу данных графических процессоров или попытаться использовать некоторую эвристику, чтобы угадать. Или вы можете позволить пользователю выбрать, какой графический процессор использовать при запуске.
источник