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


Отрисовка на дискретном GPU с помощью ресурсов кроссплатформенного адаптера

Начиная с Windows 8.1, дискретный GPU использует межадаптерный ресурс следующим образом:

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

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

  • Текстура в процессе композиции диспетчером окон рабочего стола (DWM).
  • Целевой объект отрисовки для аппаратного ускорения GDI.
  • Основной экран.
  • Не как целевой объект отрисовки для 3-D операций.

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

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

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

  1. Ресурс для перекрестного взаимодействия адаптеров для окна верхнего уровня создается в режиме ядра как стандартное распределение на интегрированной графической карте.
  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 встроенного драйвера мини-порта gpu и указывает, что ресурс перекрестного адаптера является целевым объектом отрисовки. Просмотрите подключение между приложением GDI и поверхностью кроссплатформенного адаптера на рисунке.
  7. Процесс DWM открывает ресурс между адаптерами в интегрированном GPU и использует его во время композиции в качестве исходной текстуры. См. операцию "Композиция" на рисунке.

Модель прямой презентации без переворачивания

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

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

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

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