Aggiornamenti per IddCx versioni 1.10 e successive
Questo articolo descrive gli aggiornamenti eseguiti in IddCx versione 1.10. Un singolo driver di visualizzazione indiretto (IDD) binario compilato in IddCx 1.10 può essere eseguito in Windows 10, versione 1803 e successive usando i controlli di runtime per verificare se le modifiche DDI in IddCx 1.10 sono disponibili nel sistema. Per altre informazioni, vedere Compilazione di un driver WDF per più versioni di Windows.
Le modifiche di IddCx 1.10 rientrano nelle categorie seguenti:
- Aggiornare la versione iddCxGetVersion (console e remota). Per un elenco completo delle informazioni sulla versione correlate a IddCx, vedere Versioni di IddCx.
- Aggiungere il supporto HDR10 (intervallo dinamico elevato) e SDR (intervallo dinamico standard) wide color gamut (WCG) a display indiretti.
Versione aggiornata di IddCxGetVersion
Il valore restituito da IddCxGetVersion è stato aggiornato ma differisce a seconda del sistema operativo:
- La versione della piattaforma Windows 11 versione 24H2 restituisce 0x1A80 (IDDCX_VERSION_GERMANIUM).
- L'aggiornamento di settembre di Windows 11 versione 22H2 restituisce 0x1A00 (IDDCX_VERSION_SV3).
Questo controllo delle versioni è significativo per i driver remoti in cui il comportamento del sistema operativo è leggermente diverso.
Supporto della gamma di colori HDR e SDR
Per alcune informazioni introduttive sul colore in Windows, tra cui SDR WCG, vedi DirectX con colore avanzato sui display HDR e SDR.
Supporto DDI e sistema operativo dei driver
Se possibile, le DDI esistenti sono state estese per consentire a un driver di segnalare il supporto per:
- HDR10
- SDR WCG
- Ricezione di dati che descrivono i fotogrammi HDR inviati a un IDD
Sono state aggiunte varianti più recenti di DDI esistenti quando non è stato possibile estendere le DDI esistenti. Nella maggior parte dei casi, queste modifiche sono applicabili sia ai driver console che ai driver remoti, ma vengono definiti anche alcuni dettagli specifici dei driver remoti.
La versione 1.10 e i driver successivi che supportano HDR devono usare le varianti DDI più recenti. I driver o i driver meno recenti che non supportano HDR possono continuare a usare le funzioni esistenti. Una panoramica delle modifiche è disponibile nelle sezioni successive a questa.
La tabella seguente elenca le DDI implementate dal driver aggiunte in IddCx 1.10 e assegna un nome all'equivalente precedente, se presente. Il sistema operativo potrebbe chiamare queste funzioni se il driver li segnala, anche per le schede che non provano a supportare HDR.
Funzioni del driver che il sistema operativo chiama per schede HDR | Funzione equivalente precedente |
---|---|
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO | N/D |
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* | N/D |
EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2** | EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION |
EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 | EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES |
EVT_IDD_CX_ADAPTER_COMMIT_MODES2 | EVT_IDD_CX_ADAPTER_COMMIT_MODES |
*: La funzione non viene chiamata per i driver remoti.
**: la funzione potrebbe non essere chiamata per i driver remoti a seconda dei flag dell'adattatore impostati dal driver.
La tabella seguente elenca le funzioni implementate dal sistema operativo aggiunte in IddCx 1.10 e assegna un nome a qualsiasi equivalente precedente. Un driver versione 1.10 può chiamare le varianti più recenti dopo aver determinato che queste funzioni sono disponibili nel sistema operativo in cui è in esecuzione il driver.
Le funzioni più recenti che un driver deve chiamare per le schede HDR | Equivalente precedente |
---|---|
IddCxSwapChainReleaseAndAcquireBuffer2 | IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer |
IddCxMonitorQueryHardwareCursor3 | IddCxMonitorQueryHardwareCursor2 o IddCxMonitorQueryHardwareCursor |
IddCxAdapterDisplayConfigUpdate2* | IddCxAdapterDisplayConfigUpdate* |
IddCxMonitorUpdateModes2 | IddCxMonitorUpdateModes |
*: solo per l'uso da parte di driver remoti.
Supporto HDR dell'adattatore di report
La versione 1.10 e i driver precedenti devono impostare il flag di IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 aggiunto a IDDCX_ADAPTER_FLAGS per segnalare il supporto per le superfici FP16. Le superfici FP16 possono essere usate per HDR10 o solo SDR WCG. L'impostazione di questo flag implica che un driver esegue tutte le operazioni necessarie per abilitare HDR10 o SDR WCG, tra cui:
- Funzionalità di destinazione del report tramite la funzione EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO introdotta
- Segnalare le informazioni sulla modalità estesa tramite le funzioni introdotte di seguito:
- Aggiorna solo le modalità di destinazione tramite IddCxMonitorUpdateModes2 e non chiamapiù IddCxMonitorUpdateModes
- Solo i dettagli del cursore di query tramite IddCxMonitorQueryHardwareCursor3 e non chiamano più IddCxMonitorQueryHardwareCursor2 o IddCxMonitorQueryHardwareCursor
- Elaborare le superfici desktop FP16 fornite da IddCxSwapChainReleaseAndAcquireBuffer2
- Usare la trasformazione matrice HDR 3x4 ricevuta da EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP
- Inviare metadati HDR alla visualizzazione. Questi metadati vengono inviati in EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA o IddCxSwapChainReleaseAndAcquireBuffer2
- Applicare il livello bianco SDR, se appropriato; ad esempio per i cursori del mouse. Il livello bianco SDR è incluso in IddCxSwapChainReleaseAndAcquireBuffer2 e IddCxMonitorQueryHardwareCursor3
Funzionalità HDR di destinazione per la creazione di report
Se un driver desidera abilitare HDR per una scheda, deve fornire informazioni aggiuntive su ogni connettore di destinazione tramite la relativa funzione di EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO . Le informazioni specifiche del connettore di destinazione sono necessarie perché solo alcune delle destinazioni disponibili potrebbero supportare alcuni aspetti di HDR.
Metadati HDR
Quando il driver fornisce un descrittore di monitoraggio contenente metadati HDR, il sistema operativo chiama EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA per assegnare i metadati HDR predefiniti al driver. Il driver deve mantenere questi dati predefiniti e usarli quando si inviano frame di informazioni HDR10 (SMPTE ST.2086) al monitor. Quando un driver chiama IddCxSwapChainReleaseAndAcquireBuffer2, il sistema operativo fornisce anche informazioni sui metadati HDR. Se questi metadati indicano che l'impostazione predefinita deve essere usata, fa riferimento ai dati predefiniti archiviati.
Quando viene impostata una modalità HDR, il sistema operativo invia lo stato dei metadati HDR con ogni fotogramma. Questi metadati indicano al driver quali metadati HDR usare tramite la struttura di IDDCX_METADATA2 introdotta. I metadati sono un nuovo blocco di metadati o un'indicazione che il driver deve usare i metadati predefiniti forniti in precedenza dal sistema operativo o gli stessi metadati del frame precedente.
Nota: i metadati HDR non sono resi disponibili per i driver remoti perché tutti i metadati HDR10 devono provenire dal sottosistema di visualizzazione sul client.
Modalità HDR per la creazione di report
Quando una visualizzazione è connessa a una destinazione, il sistema operativo esegue una query sul driver per le modalità di monitoraggio e destinazione attualmente supportate. Per annunciare correttamente le funzionalità HDR, sono necessarie informazioni aggiuntive per ognuna di queste modalità, quindi un driver HDR deve esporre le DDI seguenti introdotte nella versione 1.10:
- EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2 restituisce un elenco di strutture IDDCX_MONITOR_MODE2.
- EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 restituisce un elenco di strutture IDDCX_TARGET_MODE2.
Queste modalità estese indicano le possibili profondità dei bit e i formati di superficie che possono essere usati. Un driver può anche aggiornare un elenco di modalità di destinazione chiamando IddCxMonitorUpdateModes2.
Il sistema operativo deduce le variazioni delle modalità per HDR e WCG SDR in base alle informazioni restituite dal callback del driver EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO prima che vengano segnalate le modalità.
Il sistema operativo convalida le modalità per provare a rilevare le modalità ripetute che devono essere combinate e segnalate come modalità singola. Ad esempio, una destinazione che supporta 1080p a 60 Hz in 8 bit e 10 bit per canale deve essere segnalata come modalità singola. Tuttavia, se la destinazione supporta queste modalità, ma richiedono quantità diverse di larghezza di banda, è comunque possibile che queste modalità vengano segnalate separatamente.
Tipo gamma aggiunto
La EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI esistente è stata estesa in modo che il sistema operativo possa fornire la trasformazione della matrice 3x4 necessaria per supportare i display HDR ai driver che annunciano il supporto HDR.
Livello bianco SDR
I dati dei pixel del cursore del mouse sono sempre SDR. Quando un monitor è impostato in modalità HDR, il livello bianco SDR deve essere applicato ai cursori del mouse. IddCx v.10 offre questa funzionalità in due posizioni:
- È stato aggiunto ai metadati per fotogrammi ricevuti da un driver quando si chiama IddCxSwapChainReleaseAndAcquireBuffer2.
- Fa anche parte della funzione IddCxMonitorQueryHardwareCursor3 introdotta in modo che un driver possa eseguire il rendering degli aggiornamenti del cursore a livello di bianco corretto senza dover ricevere un nuovo frame. Il livello bianco SDR predefinito è 80 nit.
Spazio colori superficie
Anche se il driver ha segnalato lo spazio colore come parte delle informazioni sulla modalità, il sistema operativo segnala lo spazio di colore effettivo usato da un frame specifico nella struttura IDDCX_METADATA2 introdotta.
HDR con driver remoti
Se possibile, il comportamento del sistema operativo e del driver deve essere lo stesso per un driver remoto come con un driver della console. Le eccezioni sono le seguenti:
- I metadati HDR non vengono forniti ai driver remoti. È previsto che il sistema client fornisca questi metadati in base alla visualizzazione fisicamente connessa. Non è significativo usare i metadati determinati dal server.
- La trasformazione matrice di colori 3x4 non viene inviata. Anche in questo caso, è previsto che un driver remoto usi i dati equivalenti dal sistema client.
- I driver remoti possono fornire i dati di colorimetria e il livello bianco SDR da usare nel server.
- Le modalità di monitoraggio sono facoltative anche per i driver remoti. Se un driver remoto imposta il flag di adattatore IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE , il sistema operativo non chiederà le modalità di monitoraggio e usa solo le modalità di destinazione. Questa funzionalità consente a un driver di specificare modalità insolite senza dover segnalare la modalità di monitoraggio equivalente; Ad esempio, in base alle dimensioni di una finestra client anziché a una dimensione del monitor.
Supporto di un driver 1.10 in esecuzione di livello inferiore
I driver versione 1.10 eseguiti nelle versioni precedenti di Windows devono eseguire diversi passaggi per garantire la compatibilità. In particolare, i driver devono:
- Continuare a esportare tutte le funzioni esistenti, ad esempio EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION, EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES e EVT_IDD_CX_ADAPTER_COMMIT_MODES.
- Utilizzare la macro IDD_CX_CLIENT_CONFIG_INIT per impostare le dimensioni della struttura IDD_CX_CLIENT_CONFIG.
- Non provare a chiamare funzioni implementate dal sistema operativo non disponibili nelle versioni precedenti. Usare IDD_IS_FUNCTION_AVAILABLE per verificare la disponibilità.
- Nessuna delle funzioni v1.10 può essere esportata. Un driver può utilizzare la macro IDD_IS_FIELD_AVAILABLE per verificare se deve scrivere il callback EvtIddCxXxx nella struttura IDD_CX_CLIENT_CONFIG.
- IDD_IS_FIELD_AVAILABLE può anche aiutare un driver a determinare se è sicuro impostare IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 o IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE. Se una delle DDI v1.10 non è disponibile, il driver non deve impostare il flag.
Esempio di come usare IDD_IS_FIELD_AVAILABLE :
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxParseMonitorDescription2))
{
IddCxClientConfig.EvtIddCxParseMonitorDescription2 = ParseMonitorDescription2;
}
Per altre informazioni, vedere Compilazione di driver IddCx 1.4.