API дублирования рабочего стола и переключаемая графика

Проблема: вызов метода IDXGIOutput1::DuplicateOutput возвращает DXGI_ERROR_UNSUPPORTED при запуске приложения с использованием дискретного графического контроллера на машине с переключаемой графикой.

Этот ответ пролил некоторый свет на проблему. Короче говоря, дискретная графика отображает только часть экрана и отправляет данные в кадровый буфер интегрированного графического контроллера - иными словами, весь вывод всегда проходит через встроенный графический контроллер. Похоже, именно поэтому DuplicateOutput возвращает DXGI_ERROR_UNSUPPORTED.

Я написал пример, который получает все выходные данные и их видеоадаптеры с использованием winapi ( функция EnumDisplayDevices) и directx ( метод IDXGIFactory::EnumAdapters и метод IDXGIAdapter::EnumOutputs) для сравнения на машине с переключаемой графикой (Intel HD 4600 и NVIDIA 840M). Это результат:

Не уверен, насколько верен мой пример сравнения, но вы можете видеть, что winapi говорит, что DISPLAY1 принадлежит карте Intel, а directx говорит, что DISPLAY1 принадлежит карте NVIDIA. Одним из решений было бы дублировать вывод карты Intel (потому что все проходит через нее), но EnumOutputs не возвращает выходов для нее.

В настоящее время существует обходной путь: всегда запускайте приложение, которое использует API дублирования, используя встроенный графический контроллер.

Вопрос: как заставить работать DuplicateOutput с дискретным графическим контроллером на ноутбуке с переключаемой графикой? Или это ограничение API Desktop Duplication?

1 ответ

Решение

Решил:

к сожалению, эта проблема возникает из- за того, что Desktop Duplication API не поддерживает запуск с дискретным графическим процессором в гибридной системе Microsoft. В таком случае вызов завершается неудачно вместе с кодом ошибки DXGI_ERROR_UNSUPPORTED.

Чтобы обойти эту проблему, запустите приложение на встроенном графическом процессоре, а не на дискретном графическом процессоре в гибридной системе Microsoft.

отсюда: https://support.microsoft.com/en-us/kb/3019314

Другие вопросы по тегам