Updates untuk IddCx versi 1.10 dan yang lebih baru

Halaman ini menjelaskan perubahan 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 telah diperbarui tetapi berbeda tergantung pada OS:

  • Pembaruan Windows 11, versi 22H2 September mengembalikan 0x1A00 (IDDCX_VERSION_SV3).
  • Rilis platform Windows 2024 akan menampilkan 0x1A80.

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 lanjutan 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 DDI yang lebih baru 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 dapat 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 jika ada. Driver versi 1.10 dapat memanggil varian yang lebih baru jika telah 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 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 ke 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, itu adalah data default tersimpan yang sedang dirujuk.

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:

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 tambahan

DDI EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP yang ada telah 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 telah ditambahkan ke metadata per bingkai yang diterima oleh driver saat memanggil IddCxSwapChainReleaseAndAcquireBuffer2.
  • Ini juga merupakan 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 monitor 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 pengemudi 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.