Supporto dei controlli luminosità nei pannelli di visualizzazione integrati

Questo articolo descrive i meccanismi e i requisiti per il supporto dei controlli di luminosità nei pannelli di visualizzazione integrati. Descrive la collaborazione tra il driver di monitoraggio fornito dal sistema (Monitor.sys), i driver miniport in modalità kernel (KMD) e il BIOS tramite i metodi ACPI. Sia tramite KMD che ACPI, l'obiettivo è garantire che gli utenti possano regolare facilmente la luminosità dello schermo, migliorando l'esperienza di calcolo ottimizzando l'utilizzo del risparmio energia.

Supporto del controllo luminosità in Monitor.sys

I controlli luminosità vengono implementati in Monitor.sys. Questo driver di monitoraggio fornito dal sistema offre il supporto seguente:

  • Implementa un'interfaccia WMI (Windows Management Instrumentation) per consentire alle applicazioni (ad esempio il dispositivo di scorrimento della luminosità del sistema operativo) di interagire con il livello di luminosità.

  • Esegue la registrazione con il motore DPPE (Device Power Policy Engine) in modo che i livelli di luminosità rispondano alle modifiche apportate ai criteri di risparmio energia.

  • Esegue la registrazione con Advanced Configuration and Power Interface (ACPI) per elaborare i tasti di scelta rapida della luminosità basati su ACPI. Per la compatibilità con il modello di driver di visualizzazione di Windows 2000 legacy, il driver di monitoraggio implementa i controlli di luminosità basati su IOCTL.

Il driver miniport (KMD) in modalità kernel o i metodi ACPI esposti dal BIOS possono supportare la modifica della luminosità di un pannello di visualizzazione integrato. Per la prima destinazione video contrassegnata come con tecnologia di output che si connette internamente in un computer (D3DKMDT_VOT_INTERNAL), il driver di monitoraggio chiama la funzione DxgkDdiQueryInterface di KMD per eseguire una query per entrambe le interfacce seguenti:

  • Interfaccia di controllo luminosità. GUID_DEVINTERFACE_BRIGHTNESS e DXGK_BRIGHTNESS_INTERFACE_VERSION_1 identificare questa interfaccia.

  • Interfaccia di controllo luminosità V.2. GUID_DEVINTERFACE_BRIGHTNESS_2 e DXGK_BRIGHTNESS_INTERFACE_VERSION_2 identificare questa interfaccia.

Se il KMD non supporta almeno l'interfaccia di controllo della luminosità, il driver di monitoraggio usa ACPI per eseguire una query per il _BCL, _BCM e _BQC metodi nel dispositivo figlio. Per ulteriori informazioni su questi metodi, vedere la specifica ACPI nel sito Web ACPI.

Nota

In Windows Display Driver Model (WDDM), un identificatore ACPI non viene usato per identificare un pannello di visualizzazione integrato. Questo comportamento è diverso da Windows 2000 Display Driver Model, che supporta solo pannelli di visualizzazione con un identificatore di 0x0110.

Se i metodi ACPI esposti dal KMD o dal BIOS supportano i controlli di luminosità, il driver di monitoraggio esegue la registrazione per le notifiche ACPI dei tasti di scelta rapida della luminosità. Non esiste alcun meccanismo alternativo per segnalare al driver di monitoraggio le notifiche dei tasti di scelta rapida. Se il driver di monitoraggio non può usare un meccanismo di controllo della luminosità o se il KMD fornisce l'interfaccia di controllo della luminosità ma non riesce una chiamata alla funzione DxgkDdiGetPossibleBrightness , il driver di monitoraggio non supporta i controlli luminosità.

Livelli di luminosità

I livelli di luminosità sono rappresentati come valori a byte singolo nell'intervallo compreso tra zero e 100 dove zero è spento e 100 è la luminosità massima supportata da un computer portatile. Ogni computer portatile deve segnalare un livello di luminosità massimo di 100; Tuttavia, un computer portatile non è necessario per supportare un livello pari a zero.

L'unico requisito per i valori da zero a 100 è che i valori più grandi devono rappresentare livelli di luminosità più elevati. L'incremento tra i livelli non deve essere uniforme e un computer portatile può supportare un numero qualsiasi di valori distinti fino al massimo di 101 livelli. È necessario decidere come eseguire il mapping dei livelli hardware all'intervallo di valori del livello di luminosità. Tuttavia, una chiamata alla funzione DxgkDdiGetPossibleBrightness del KMD non deve segnalare più valori del livello di luminosità rispetto all'hardware supportato dall'hardware.

Disabilitazione delle modifiche automatiche della luminosità da parte del BIOS

Il kmD deve impostare bit 2 dell'argomento sul metodo _DOS. L'impostazione di questo bit evita problemi che potrebbero verificarsi se il BIOS di sistema e monitora la luminosità del pannello di visualizzazione del pannello di controllo. Per altre informazioni sul metodo _DOS e sui relativi argomenti, vedere la specifica ACPI. Impostando il bit 2, il BIOS di sistema viene informato che non dovrebbe eseguire alcuna modifica automatica della luminosità.

Requisiti DEL BIOS per supportare i controlli di luminosità

Affinché il KMD supporti il controllo della luminosità integrata del pannello in modo ottimale, il BIOS di sistema deve fornire gli elementi seguenti tramite l'ACPI.

Metodi di controllo luminosità

Un dispositivo pannello integrato deve supportare i metodi di controllo della luminosità ACPI (_BCL, _BCM e _BQC). _BCL e _BCM sono invariati dalla versione 1.0b della specifica ACPI; è possibile trovare le relative definizioni nella specifica ACPI 3.0 nelle sezioni B.6.2 e B.6.3. _BQC è facoltativo ed è definito nella specifica ACPI 3.0 nella sezione B.6.4. Per le definizioni dei livelli di luminosità, vedere Livelli di luminosità.

Di seguito sono riportati gli alias per i metodi di controllo della luminosità ACPI definiti in Dispmprt.h:

  • ACPI_METHOD_OUTPUT_BCL : consente a Windows di eseguire una query su un elenco di livelli di luminosità supportati dai dispositivi di output dello schermo. Questo metodo è obbligatorio se è presente un LCD integrato e supporta i livelli di luminosità.

  • ACPI_METHOD_OUTPUT_BCM : consente a Windows di impostare il livello di luminosità del dispositivo di output dello schermo. Windows imposta solo i livelli segnalati dal metodo ACPI_METHOD_OUTPUT_BCL. Il metodo ACPI_METHOD_OUTPUT_BCM è necessario se viene implementato il metodo ACPI_METHOD_OUTPUT_BCL.

Disabilitazione del controllo automatico della luminosità BIOS del sistema

Il BIOS di sistema deve supportare l'impostazione di bit 2 dell'argomento sul metodo _DOS sulla scheda grafica per consentire la disattivazione delle modifiche automatiche della luminosità BIOS del sistema. Questo bit è un'aggiunta ai valori definiti in precedenza per i bit in questo metodo. Per informazioni dettagliate su questo bit, vedere la sezione B.4.1 nella specifica ACPI 3.0.

Se questo bit non è supportato, il driver di monitoraggio e il BIOS di sistema possono entrambi modificare il livello di luminosità, con conseguente sfarfallio di luminosità. Inoltre, la luminosità potrebbe essere impostata su un valore che non è quello richiesto dall'utente.

ACPI_METHOD_DISPLAY_DOS, definito in Dispmprt.h, è l'alias per il metodo di controllo automatico della luminosità ACPI. Questo alias indica che il BIOS di sistema è in grado di cambiare automaticamente l'output dello schermo attivo o di controllare la luminosità dell'LCD. Il parametro può essere uno dei valori seguenti.

Valore Significato
ACPI_ARG_ENABLE_AUTO_LCD_BRIGHTNESS Il BIOS di sistema deve controllare automaticamente il livello di luminosità dell'LCD quando l'alimentazione cambia da AC a DC.
ACPI_ARG_DISABLE_AUTO_LCD_BRIGHTNESS Il BIOS di sistema non deve controllare automaticamente il livello di luminosità dell'LCD quando l'alimentazione cambia da AC a DC.

Notifiche dei tasti di scelta rapida per la luminosità

Le notifiche dei tasti di scelta rapida della luminosità devono essere destinate al dispositivo del pannello di visualizzazione integrato, non alla scheda grafica.

Le notifiche seguenti sono supportate come definito in Dispmprt.h:

Notifica significato
ACPI_NOTIFY_CYCLE_BRIGHTNESS_HOTKEY L'utente ha premuto il tasto di scelta rapida per la luminosità dello schermo del ciclismo.
ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY L'utente ha premuto il tasto di scelta rapida per aumentare la luminosità dello schermo.
ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY L'utente ha premuto il tasto di scelta rapida per ridurre la luminosità dello schermo.
ACPI_NOTIFY_ZERO_BRIGHTNESS_HOTKEY L'utente ha premuto il tasto di scelta rapida per ridurre la luminosità dello schermo a zero.

Queste notifiche di tasti di scelta rapida sono state nuove per la specifica ACPI 3.0 e sono descritte nella sezione B.7. In genere, un computer portatile non supporta tutte queste notifiche di tasti di scelta rapida.

Per aumentare e diminuire i livelli di luminosità, il comportamento predefinito del driver di monitoraggio è:

  • Per ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY, incrementare la luminosità di almeno il cinque% superiore al livello di luminosità precedente fino a raggiungere il livello del cinque percento successivo disponibile (5, 10, 15, ..., 95, 100).

  • Per ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY, la luminosità decrementa di almeno il cinque percento inferiore al livello di luminosità precedente fino al raggiungimento del livello successivo del cinque percento disponibile (100, 95, ..., 15, 10, 5).

L'incremento o il decremento con i tasti di scelta rapida possono creare modelli asimmetrici nei livelli di luminosità, come illustrato negli esempi seguenti.

  • Disponibile _BCL livelli di controllo della luminosità specificati come 0, 1, 5, 10, ..., 95, 100

    • Risultati usando la notifica di ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY:
      0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100

    • Risultati usando la notifica di ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY:
      100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0

  • Disponibile _BCL livelli di controllo della luminosità specificati come 1, 5, 10, ..., 95, 100

    • Risultati usando la notifica di ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY:
      1, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100

    • Risultati usando la notifica di ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY:
      100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 1

    Nell'ultimo esempio, 1 è l'ultimo valore disponibile, quindi il driver imposta il livello di luminosità su 1 anche se è minore di cinque unità percentuali diverse dal valore precedente di 5.

Un IHV o OEM può modificare il comportamento predefinito del driver di monitoraggio in Windows Vista e Windows 7 impostando un valore DWORD per MinimumStepPercentage nella chiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\monitor\Parameters\

Supporto dell'output di visualizzazione e degli eventi ACPI