Supporting Display Output and ACPI Events

A comprehensive approach to system configuration and device power control is built into Windows, based on the Advanced Configuration and Power Interface (ACPI) specification. Windows supports capabilities that can be used by drivers to manage the configuration and power of display output devices. For more information, see the ACPI specification on the ACPI website.

BIOS Requirements to Support Display Output Devices

The display miniport driver or ACPI methods that are exposed by the system BIOS support display output devices configuration. The DxgkDdiNotifyAcpiEvent function is called to notify the display miniport driver about ACPI events. For example, when the user presses the keyboard shortcut for the output device switch, the DxgkDdiNotifyAcpiEvent function is called with ACPI_NOTIFY_CYCLE_DISPLAY_HOTKEY notification and a request type of DXGK_ACPI_CHANGE_DISPLAY_MODE. As a result, the operating system calls the DxgkDdiRecommendFunctionalVidPn function to query the selected display output device.

The following aliases for the ACPI display output are defined in Dispmprt.h:

  • ACPI_METHOD_DISPLAY_DOD - Enumerates all the devices attached to the display adapter. This method is required if the integrated controller supports switching of output devices. This is the alias name for the DOD_ method defined by the ACPI specification.
  • ACPI_METHOD_DISPLAY_DOS - Indicates that the system firmware is capable of automatically switching the active display output. This is the alias name for the SOD_ method defined by the ACPI specification. The following are the allowed parameters:
    • ACPI_ARG_ENABLE_SWITCH_EVENT. States that the system firmware should not automatically switch the active display output device. Instead, it must save the desired change in state variables associated with each display output device and generate a display switch event. The operating system can query the active status of a device by calling the ACPI_METHOD_OUTPUT_DGS method.
    • ACPI_ARG_ENABLE_AUTO_SWITCH. States that the system firmware should automatically switch the active display output device without interacting with the operating system. It does not generate a display switch event.
    • ACPI_ARG_DISABLE_SWITCH_EVENT. States that the system firmware should not perform any action; that is, neither switch the output device nor notify the operating system. The values returned by the ACPI_METHOD_OUTPUT_DGS method are locked.
  • ACPI_METHOD_OUTPUT_DCS - Returns the status of a display output device. This is the alias name for the CSD_ method defined by the ACPI specification.
  • ACPI_METHOD_OUTPUT_DGS - Checks whether the status of a display output device is active. This is the alias name for the SGD_ method defined by the ACPI specification.
  • ACPI_METHOD_OUTPUT_DSS - Sets the status of a display output device to active or inactive. This is the alias name for the SSD_ method defined by the ACPI specification. The operating system manages this action to avoid flickering.
  • ACPI_METHOD_DISPLAY_GPD - Queries the CMOS entry to determine which video device is posted at boot time. This is the alias name for the DPG_ method defined by the ACPI specification.
  • ACPI_METHOD_DISPLAY_SPD - Updates the CMOS entry that determines which video device is posted at boot time. This is the alias name for the DPS_ method defined by the ACPI specification.
  • ACPI_METHOD_DISPLAY_VPO - Determines what video options are implemented. This is the alias name for the OPV_ method defined by the ACPI specification.

External Asynchronous Events

The operating system must be notified about external, asynchronous events that affect the display output devices. The following notifications and related request types are defined in Dispmprt.h and used in the DxgkDdiNotifyAcpiEvent function.

  • ACPI_NOTIFY_CYCLE_DISPLAY_HOTKEY - Notifies the operating system that the user has pressed the cycle display keyboard shortcut.
  • ACPI_NOTIFY_NEXT_DISPLAY_HOTKEY - Notifies the operating system that the user has pressed the next display keyboard shortcut.
  • ACPI_NOTIFY_PREV_DISPLAY_HOTKEY - Notifies the operating system that the user has pressed the previous display keyboard shortcut.

Note The previous notifications depend on the handling of the event caused by the user when pressing the keyboard shortcuts.

The following are the types of requests that the display miniport driver can make to the operating system.

  • DXGK_ACPI_CHANGE_DISPLAY_MODE - Requests to initiate a mode change to the new recommended active video present network (VidPN).
  • DXGK_ACPI_POLL_DISPLAY_CHILDREN - Requests to poll the connectivity of the children of the display adapter.

Note The previous requests are the values of the AcpiFlags parameter returned by the DxgkDdiNotifyAcpiEvent function.

Supporting Brightness Controls on Integrated Display Panels