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


Обеспечение простого перехода состояния в WDDM 1.2 и более поздних версиях

Начиная с Windows 8, некоторые функции помогают свести к минимуму или исключить вспышки экрана и мерцания во время загрузки, во время переходов с более низких состояний питания, а также во время перехода на управление операционной системой в обновлениях драйверов или системных ошибках. Кроме того, системное встроенное ПО на компьютерах Windows 8 и более поздних версий должно обнаруживать собственное разрешение и время встроенной панели отображения во время включения и передачи этой информации операционной системе. Модель драйвера дисплея Windows (WDDM) 1.2 и более поздних версий должна поддерживать это поведение.

Минимальная версия WDDM 1.2
Минимальная версия Windows 8
Реализация драйвера — только полная графика и отображение Обязательно
Требования и тесты WHCK

System.Client.Firmware.UEFI.GOP.Display

Device.Graphics... PnpStopStartSupport

Device.Graphics... DisplayOutputControl

Переход от встроенного ПО к операционной системе

Все системы Windows 8, предназначенные для клиентских SKU, должны поддерживать единый расширяемый интерфейс встроенного ПО (UEFI) графического выходного протокола (GOP). На этапе загрузки GOP задает собственное время и собственное разрешение на интегрированной панели дисплея системы. Когда операционная система готова взять на себя владение дисплеем, GOP передает буфер кадра, который можно использовать для сканирования дисплея. В настоящее время операционная система не пытается сбросить время отображения или разрешение, но просто использует предоставленный буфер кадров, тем самым устраняя одну вспышку экрана.

Требования к сертификации оборудования

Сведения о требованиях, которые должны соответствовать аппаратным устройствам при реализации этой функции, см. в соответствующей документации по WHCK в System.Client.Firmware.UEFI.GOP.Display.

Переход с операционной системы на драйвер

Когда операционная система передает управление дисплеем драйверу WDDM после загрузки, она инициирует запуск устройства Plug and Play (PnP), вызвав функцию DxgkDdiStartDevice. Кроме того, после возобновления гибернации операционная система запускает устройство, вызывая функцию DxgkDdiSetPowerState с параметром DeviceUid для DISPLAY_ADAPTER_HW_ID (определено в Video.h). В это время, как правило, экран становится черным, когда управление захватывает графический драйвер WDDM.

Драйвер может вызвать функцию DxgkCbAcquirePostDisplayOwnership (доступно начиная с Windows 8), чтобы запросить у операционной системы точное состояние текущего буфера кадров и режима отображения, заданного встроенным ПО и загрузчиком. При использовании сведений в структуре DXGK_DISPLAY_INFORMATION , полученной этой функцией, драйвер может поддерживать активный контроллер отображения и не вызывать повторную синхронизацию монитора. Так как драйвер также содержит подробные сведения о буфере кадра, можно выполнить более плавный переход.

Дополнительные сведения о запуске PnP приведены в Plug and Play (PnP) в WDDM 1.2 и позднейших версиях.

Переход от драйвера к операционной системе

Операционная система может запросить остановку PnP устройства отображения, вызвав функцию DxgkDdiStopDevice . В этот момент экран обычно пустой (отображается как черный), а операционная система берет на себя управление дисплеем. Операционная система может вызывать функцию DxgkDdiStopDeviceAndReleasePostDisplayOwnership (доступна начиная с Windows 8), которая требует от драйвера WDDM настроить буфер кадра для вывода на экран. Операционная система может записывать отрисовку в этот буфер кадра при этом под управлением дисплея, что позволяет выполнять плавный переход.

Более подробные сведения о остановке PnP, включая дополнительные сценарии, приведены в Plug and Play (PnP) в WDDM 1.2 и более поздних версиях.

Требования к сертификации оборудования

Для получения дополнительной информации о передаче, см. соответствующую документацию по WHCK на Device.Graphics…PnpStopStartSupport.

Переход к операционной системе без отключения драйвера

Иногда операционная система испытывает неустранимую ошибку и вынуждена проводить проверку на наличие ошибок в системе. В этом случае существуют некоторые случаи, когда операционная система должна контролировать дисплей, но не имеет возможности остановить драйвер WDDM. Драйверы WDDM 1.2 и более поздних версий необходимы для реализации функций DxgkDdiSystemDisplayEnable и DxgkDdiSystemDisplayWrite , что позволяет операционной системе легко переходить в состояние, в котором он может отображать экран ошибок при сохранении графического интерфейса на высокой разрешении и цветовой глубине. Этот переход устраняет резкое взаимодействие с пользователем.

Требования к сертификации оборудования

Сведения о требованиях, которые должны соответствовать аппаратным устройствам при реализации этой функции, см. в соответствующей документации по WHCK на Device.Graphics... DisplayOutputControl.

Изменения режима встроенного ПО Windows 8

Это изменения в режиме отображения встроенного ПО, прежде чем встроенное ПО передает управление операционной системе:

Драйверы WDDM 1.2 и более поздних версий (DXGKDDI_INTERFACE_VERSION= DXGKDDI_INTERFACE_VERSION_WIN8>)
Чтобы дополнительно устранить вспышки отображения, начиная с Windows 8, запросы на изменение режима Int10 не вызываются на встроенное ПО для драйверов WDDM 1.2 и более поздних версий.

Кроме того, если при отключении монитора происходит изменение режима, операционная система вызывает функцию DxgkDdiCommitVidPn только один раз, при этом параметр pCommitVidPnArg имеет значение, которое было бы иметь, если монитор был включен, а элемент PathPoweredOffpCommitVidPnArg-Flags> имеет значение TRUE.

Драйверы WDDM 1.0 и 1.1 (DXGKDDI_INTERFACE_VERSION<DXGKDDI_INTERFACE_VERSION_WIN8)
Для драйверов WDDM версий 1.0 и 1.1, работающих на Windows 8, во время загрузки или при выходе из гибернации, происходят вызовы режима VGA Int10 0x12, которые устанавливают разрешение дисплея на собственное высокое разрешение монитора. До Windows 8 режим VGA Int10 0x12 устанавливал разрешение дисплея 640 x 480 пикселей, 16 бит на пиксель, для отображения изображения заставки операционной системы.

Однако для драйверов WDDM версий 1.0 и 1.1, которые указывают, что они не поддерживают режим высокого разрешения, начиная с Windows 8, загрузка в режим VGA 0x12 устанавливает разрешение дисплея 640 x 480 пикселей с глубиной цвета 16 бит на пиксель, без мигающего курсора. Когда система выходит из режима гибернации, разрешение дисплея по-прежнему будет установлено на родное разрешение монитора.

Кроме того, если изменение режима происходит, пока монитор выключен, операционная система вызывает функцию DxgkDdiCommitVidPn, как описано выше для драйверов WDDM 1.2, а также вызывает DxgkDdiCommitVidPnвторой раз с пустой сетью представления видео (VidPN) в pCommitVidPnArg->hFunctionalVidPn, при этом ни одно из значений флагов не установлено в pCommitVidPnArg->Flags.

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