Pembaruan untuk IddCx versi 1.10 dan yang lebih baru
Artikel ini menjelaskan pembaruan yang dibuat di IddCx versi 1.10. Biner driver tampilan tidak langsung tunggal (IDD) yang dibangun terhadap IddCx 1.10 dapat berjalan pada Windows 10, versi 1803 ke atas menggunakan pemeriksaan runtime untuk memverifikasi apakah perubahan DDI di IddCx 1.10 tersedia pada sistem tersebut. Untuk informasi selengkapnya, lihat Membangun driver WDF untuk beberapa versi Windows.
Perubahan IddCx 1.10 termasuk dalam kategori berikut:
- Perbarui versi IddCxGetVersion (konsol dan jarak jauh). Untuk daftar lengkap informasi versi terkait IddCx, lihat Versi IddCx.
- Tambahkan dukungan HDR10 (rentang dinamis tinggi) dan SDR (rentang dinamis standar) Wide Color Gamut (WCG) ke Tampilan Tidak Langsung.
Versi IddCxGetVersion yang diperbarui
Nilai yang dikembalikan oleh IddCxGetVersion diperbarui tetapi berbeda tergantung pada OS:
- Rilis platform Windows 11 versi 24H2 mengembalikan 0x1A80 (IDDCX_VERSION_GERMANIUM).
- Pembaruan Windows 11, versi 22H2 September mengembalikan 0x1A00 (IDDCX_VERSION_SV3).
Penerapan versi ini signifikan untuk driver jarak jauh di mana perilaku OS sedikit berbeda.
Dukungan gamut warna lebar HDR dan SDR
Untuk beberapa informasi pengantar tentang warna di Windows, termasuk SDR WCG, lihat DirectX dengan warna tingkat lanjut pada tampilan HDR dan SDR.
Dukungan Driver DDI dan OS
Jika memungkinkan, DDI yang ada diperluas untuk memungkinkan driver melaporkan dukungan untuk:
- HDR10
- SDR WCG
- Menerima data yang menjelaskan bingkai HDR apa pun yang dikirim ke IDD
Varian yang lebih baru dari DDI yang ada ditambahkan ketika DDI yang ada tidak dapat diperluas. Dalam kebanyakan kasus, perubahan ini berlaku untuk driver konsol dan jarak jauh tetapi beberapa detail khusus untuk driver jarak jauh juga ditentukan.
Versi 1.10 dan driver yang lebih besar yang mendukung HDR harus menggunakan varian DDI yang lebih baru. Driver atau driver lama yang tidak mendukung HDR dapat terus menggunakan fungsi yang ada. Gambaran umum perubahan diberikan di bagian berikut ini.
Tabel berikut mencantumkan DDI yang diimplementasikan driver yang ditambahkan di IddCx 1.10 dan memberi nama yang setara sebelumnya jika ada. OS mungkin memanggil fungsi-fungsi ini jika driver melaporkannya, bahkan untuk adaptor yang tidak mencoba mendukung HDR.
Fungsi driver yang dipanggil OS untuk adaptor HDR | Fungsi setara sebelumnya |
---|---|
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO | T/A |
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* | T/A |
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 |
*: Fungsi tidak dipanggil untuk driver jarak jauh.
**: Fungsi mungkin tidak dipanggil untuk driver jarak jauh tergantung pada bendera adaptor yang diatur oleh driver.
Tabel berikut mencantumkan fungsi yang diimplementasikan OS yang ditambahkan di IddCx 1.10 dan memberi nama yang setara sebelumnya. Driver versi 1.10 dapat memanggil varian yang lebih baru setelah menentukan bahwa fungsi-fungsi ini tersedia di OS tempat driver berjalan.
Fungsi driver yang lebih baru harus memanggil adaptor HDR | Setara sebelumnya |
---|---|
IddCxSwapChainReleaseAndAcquireBuffer2 | IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer |
IddCxMonitorQueryHardwareCursor3 | IddCxMonitorQueryHardwareCursor2 atau IddCxMonitorQueryHardwareCursor |
IddCxAdapterDisplayConfigUpdate2* | IddCxAdapterDisplayConfigUpdate* |
IddCxMonitorUpdateModes2 | IddCxMonitorUpdateModes |
*: Hanya untuk digunakan oleh driver jarak jauh.
Melaporkan dukungan HDR adaptor
Driver versi 1.10 ke atas harus mengatur bendera IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 ditambahkan ke IDDCX_ADAPTER_FLAGS untuk melaporkan dukungan untuk permukaan FP16. Permukaan FP16 dapat digunakan untuk HDR10 atau hanya SDR WCG. Pengaturan bendera ini menyiratkan bahwa driver melakukan semua yang diperlukan untuk mengaktifkan HDR10 atau SDR WCG, termasuk:
- Melaporkan kemampuan target melalui fungsi EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO yang diperkenalkan
- Laporkan informasi mode yang diperluas melalui fungsi yang diperkenalkan berikut:
- Hanya perbarui mode target melalui IddCxMonitorUpdateModes2 dan tidak lagi memanggilIddCxMonitorUpdateModes
- Hanya detail kursor kueri melalui IddCxMonitorQueryHardwareCursor3 dan tidak lagi memanggil IddCxMonitorQueryHardwareCursor2 atau IddCxMonitorQueryHardwareCursor
- Proses permukaan desktop FP16 yang disediakan oleh IddCxSwapChainReleaseAndAcquireBuffer2
- Gunakan transformasi matriks HDR 3x4 yang diterima oleh EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP
- Kirim metadata HDR ke layar. Metadata ini dikirim baik di EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA atau IddCxSwapChainReleaseAndAcquireBuffer2
- Terapkan tingkat putih SDR jika sesuai; misalnya, ke kursor mouse. Tingkat putih SDR disertakan dalam IddCxSwapChainReleaseAndAcquireBuffer2 dan IddCxMonitorQueryHardwareCursor3
Melaporkan kemampuan HDR target
Jika driver ingin mengaktifkan HDR untuk adaptor, driver harus memberikan informasi tambahan tentang setiap konektor target melalui fungsi EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO. Informasi khusus konektor target diperlukan karena hanya beberapa target yang tersedia yang mungkin mendukung beberapa aspek HDR.
Metadata HDR
Ketika driver menyediakan deskriptor monitor yang berisi metadata HDR, OS memanggil EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA untuk memberikan metadata HDR default kepada driver. Driver harus menyimpan data default ini dan menggunakannya saat mengirim bingkai info HDR10 (SMPTE ST.2086) ke monitor. Ketika driver memanggil IddCxSwapChainReleaseAndAcquireBuffer2, OS juga menyediakan informasi metadata HDR. Jika metadata ini menunjukkan bahwa default harus digunakan, metadata ini mengacu pada data default yang disimpan.
Saat mode HDR diatur, OS mengirimkan status metadata HDR dengan setiap bingkai. Metadata ini memberi tahu driver metadata HDR mana yang akan digunakan melalui struktur IDDCX_METADATA2 yang diperkenalkan. Metadata adalah blok metadata baru atau indikasi bahwa driver harus menggunakan metadata default yang disediakan OS sebelumnya atau metadata yang sama dengan bingkai sebelumnya.
Catatan: Metadata HDR tidak tersedia untuk driver jarak jauh karena metadata HDR10 apa pun harus berasal dari subsistem tampilan pada klien.
Melaporkan mode HDR
Saat tampilan tersambung ke target, OS meminta driver untuk mode monitor dan target yang saat ini didukung. Untuk mengiklankan kemampuan HDR dengan benar, informasi tambahan diperlukan untuk setiap mode ini, sehingga driver HDR harus mengekspos DDI berikut yang diperkenalkan di v1.10:
- EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2 mengembalikan daftar struktur IDDCX_MONITOR_MODE2.
- EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 mengembalikan daftar struktur IDDCX_TARGET_MODE2.
Mode yang diperluas ini menunjukkan kemungkinan kedalaman bit dan format permukaan yang dapat digunakan. Driver juga dapat memperbarui daftar mode target dengan memanggil IddCxMonitorUpdateModes2.
OS menyimpulkan variasi mode untuk HDR dan SDR WCG berdasarkan informasi yang dikembalikan oleh callback EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO driver sebelum mode apa pun dilaporkan.
OS memvalidasi mode untuk mencoba mendeteksi mode berulang yang harus digabungkan dan dilaporkan sebagai mode tunggal. Misalnya, target yang mendukung 1080p pada 60 Hz dalam 8 bit dan 10 bit per saluran harus dilaporkan sebagai mode tunggal. Namun jika target mendukung mode ini tetapi memerlukan jumlah bandwidth yang berbeda, mode ini masih ok untuk dilaporkan secara terpisah.
Jenis gamma yang ditambahkan
DDI EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP yang ada diperluas sehingga OS dapat memberikan transformasi matriks 3x4 yang diperlukan untuk mendukung tampilan HDR ke driver yang mengiklankan dukungan HDR.
Tingkat putih SDR
Data piksel kursor mouse selalu SDR. Saat monitor diatur dalam mode HDR, tingkat putih SDR harus diterapkan ke kursor mouse. IddCx v.10 menyediakan kemampuan ini di dua tempat:
- Ini ditambahkan ke metadata per bingkai yang diterima oleh driver saat memanggil IddCxSwapChainReleaseAndAcquireBuffer2.
- Ini juga bagian dari fungsi IddCxMonitorQueryHardwareCursor3 yang diperkenalkan sehingga driver dapat merender pembaruan kursor pada tingkat putih yang benar tanpa perlu menerima bingkai baru. Tingkat putih SDR default adalah 80 nit.
Ruang warna permukaan
Meskipun driver melaporkan ruang warna sebagai bagian dari informasi mode, OS melaporkan ruang warna aktual yang digunakan oleh bingkai tertentu dalam struktur IDDCX_METADATA2 yang diperkenalkan.
HDR dengan driver jarak jauh
Jika memungkinkan, perilaku OS dan driver harus sama untuk driver jarak jauh seperti halnya driver konsol. Pengecualiannya adalah:
- Metadata HDR tidak disediakan untuk driver jarak jauh. Sistem klien diharapkan menyediakan metadata ini berdasarkan tampilan yang terhubung secara fisik. Tidak ada artinya untuk menggunakan metadata yang ditentukan oleh server.
- Transformasi matriks warna 3x4 juga tidak dikirim. Sekali lagi, driver jarak jauh diharapkan menggunakan data yang setara dari sistem klien.
- Driver jarak jauh dapat menyediakan data colorimetry dan tingkat putih SDR yang akan digunakan pada server.
- Mode pemantauan juga bersifat opsional untuk driver jarak jauh. Jika driver jarak jauh mengatur bendera adaptor IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE , OS tidak akan memintanya untuk mode monitor dan sebaliknya hanya menggunakan mode target. Kemampuan ini memungkinkan driver untuk menentukan mode yang tidak biasa tanpa perlu melaporkan mode monitor yang setara; misalnya, berdasarkan ukuran jendela klien daripada ukuran monitor.
Mendukung driver 1.10 yang berjalan di tingkat bawah
Driver versi 1.10 yang berjalan pada rilis Windows yang lebih lama perlu mengambil beberapa langkah untuk memastikan kompatibilitas. Secara khusus, driver harus:
- Terus ekspor semua fungsi yang ada seperti EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION, EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES, dan EVT_IDD_CX_ADAPTER_COMMIT_MODES.
- Gunakan makro IDD_CX_CLIENT_CONFIG_INIT untuk mengatur ukuran struktur IDD_CX_CLIENT_CONFIG.
- Tidak mencoba memanggil fungsi yang diimplementasikan OS yang tidak tersedia dalam rilis yang lebih lama. Gunakan IDD_IS_FUNCTION_AVAILABLE untuk memeriksa ketersediaan.
- Tidak ada fungsi v1.10 yang dapat diekspor. Driver dapat menggunakan makro IDD_IS_FIELD_AVAILABLE untuk memeriksa apakah harus menulis panggilan balik EvtIddCxXxx ke struktur IDD_CX_CLIENT_CONFIG.
- IDD_IS_FIELD_AVAILABLE juga dapat membantu driver menentukan apakah aman untuk mengatur IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 atau IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE. Jika salah satu DDI v1.10 tidak tersedia, driver tidak boleh mengatur bendera.
Contoh bagaimana IDD_IS_FIELD_AVAILABLE dapat digunakan:
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxParseMonitorDescription2))
{
IddCxClientConfig.EvtIddCxParseMonitorDescription2 = ParseMonitorDescription2;
}
Untuk informasi selengkapnya, lihat Membangun driver IddCx 1.4.