Поделиться через


Отрисовка на дискретном GPU с использованием ресурсов между адаптерами

Начиная с Windows 8.1 дискретный GPU использует ресурс перекрестного адаптера в качестве:

  • Назначение для передачи битовых блоков (bitblt) или настоящих операций, но без растяжения или преобразования цвета.
  • Ресурс, к которому операционная система запрашивает драйвер отображения пользовательского режима для выполнения операции bitblt или present.

Интегрированный GPU использует ресурс перекрестного адаптера в качестве:

  • Текстура во время композиции с помощью диспетчера окон рабочего стола (DWM).
  • Целевой объект отрисовки для аппаратного ускорения GDI.
  • Основной элемент отображения.
  • Не является целевым объектом отрисовки для трехмерных операций.

В следующих разделах описывается архитектура и процессы, связанные с тремя возможными сценариями, в которых приложение выполняет отрисовку на дискретном GPU в гибридной системе.

Перенаправленная модель представления bitblt

Схема, показывающая гибридную графическую модель bitblt для отрисовки на дискретном GPU.

  1. Ресурс перекрестного адаптера для окна верхнего уровня создается в режиме ядра в виде стандартного выделения на интегрированном GPU.
  2. При открытии этого ресурса на дискретном GPU подсистема графического ядра DirectX (Dxgkrnl.sys) вызывает функцию DxgkDdiGetStandardAllocationDriverData и создает новый ресурс на дискретном GPU, используя то же резервное хранилище (запоминающее устройство), что и для интегрированного GPU.
  3. Среда выполнения Direct3D предписывает дискретному драйверу отображения графического процессора в пользовательском режиме открыть ресурс перекрестного адаптера с помощью частных данных драйвера.
  4. Приложение DirectX выполняет отрисовку на дискретном GPU в ресурсе обратного буфера. См. операцию "Отрисовка" на рисунке.
  5. Когда приложение DirectX вызывает метод Present , среда выполнения Direct3D вызывает функцию PresentDXGI (или pfnPresent) дискретного драйвера пользовательского режима GPU для копирования обратного буфера в ресурс перекрестного адаптера. См. операцию "Present" на рисунке.
  6. Когда приложение интерфейса графических устройств Windows (GDI) отрисовывается в окне верхнего уровня, подсистема графического ядра DirectX вызывает функцию DxgkDdiRenderKm драйвера мини-порта дисплея интегрированного графического процессора и указывает, что ресурс перекрестного адаптера является целевым объектом отрисовки. См. подключение между приложением GDI и поверхностью перекрестного адаптера на рисунке.
  7. Процесс DWM открывает ресурс кроссадаптера во встроенном GPU и использует его во время композиции в качестве исходной текстуры. См. операцию "Композиция" на рисунке.

Модель представления с прямым отражением

Схема, иллюстрирующая гибридную модель прямого переворачивания графики для отрисовки на дискретном GPU.

  1. Среда выполнения Direct3D предписывает дискретному драйверу отображения пользовательского режима GPU создать ресурс перекрестного адаптера для каждой поверхности цепочки буферов.
  2. На дискретном GPU среда выполнения Direct3D может задать элементы Primary и VidPnSourceIdструктуры D3DDDI_ALLOCATIONINFO , если режим прямого переворачивания доступен. Эти значения элементов должны передаваться при вызове функции pfnAllocateCb .
  3. Среда выполнения Direct3D предписывает интегрированному драйверу отображения в пользовательском режиме GPU открыть ресурс между адаптерами, которым должен управлять DWM.
  4. Приложение выполняет отрисовку на дискретном GPU, используя целевую текстуру отрисовки в качестве назначения. См. операцию "Отрисовка" на рисунке.
  5. Когда приложение вызывает метод Present , среда выполнения Direct3D вызывает функцию BltDXGI (или pfnBlt) драйвера пользовательского режима дискретного GPU для выполнения копирования в ресурс кроссадаптера. Затем среда выполнения вызывает функцию PresentDXGI (или pfnPresent) дискретного драйвера пользовательского режима GPU, при этом источнику присваивается ресурс перекрестного адаптера, а целевому выделению — значение NULL. См. операцию копирования на рисунке.
  6. DwM выполняет свою композицию с помощью ресурса из интегрированного GPU. Если требуется операция прямого переворачивания (DXGK_SEGMENTFLAGS.Задано значение DirectFlip ). DWM предписывает встроенному драйверу мини-порта дисплея GPU выполнить операцию переворачивания от одного выделения перекрестного адаптера к другому. См. операцию "Перевернуть DWM" на рисунке.

Полноэкранная модель

  1. Среда выполнения Direct3D предписывает интегрированному драйверу отображения пользовательского режима GPU создать общее основное выделение между адаптерами для каждой поверхности цепочки буферов.
  2. Среда выполнения Direct3D указывает дискретному драйверу отображения в пользовательском режиме GPU открыть ресурсы между адаптерами.
  3. Приложение выполняет отрисовку на дискретном GPU, используя целевую текстуру отрисовки в качестве назначения.
  4. Когда приложение вызывает метод Present , среда выполнения Direct3D предписывает дискретному драйверу отображения пользовательского режима GPU выполнить копирование в ресурс кроссадаптера.
  5. Встроенный драйвер дисплея в пользовательском режиме GPU и драйвер мини-порта дисплея должны перейти к этому ресурсу кроссадаптера.