Bagikan melalui


Updates untuk IddCx versi 1.6 dan yang lebih baru

Pembaruan berikut di IddCx versi 1.6 berlaku untuk driver tampilan tidak langsung (IDD) konsol dan jarak jauh.

Rilis sebelum IddCx versi 1.6 adalah versi 1.4. IddCx versi 1.5 hanya berisi perubahan internal yang tidak memengaruhi driver tampilan tidak langsung (IDD) eksternal. Untuk informasi selengkapnya tentang versi 1.4, lihat Pembaruan IddCx 1.4.

Versi IddCxGetVersion yang diperbarui

Versi IddCx yang dikembalikan oleh IddCxGetVersion pada Windows 10, versi 20H2 diperbarui ke IDDCX_VERSION_MANGANESE (0x1600). Lihat Versi IddCx untuk daftar lengkap informasi versi terkait IddCx.

Informasi WPP dalam simbol IddCx publik

Dimulai dengan IddCx versi 1.6, file simbol IddCx publik berisi semua informasi prosesor pelacakan perangkat lunak (WPP) Windows. Ini berarti bahwa perintah debugger !wmitrace.logdump mendekode dan menampilkan pesan WPP dalam debugger kernel.

Kemampuan untuk mengakses buffer yang dialokasikan dalam memori sistem

Dalam skenario tertentu, buffer swapchain adalah residen dalam memori sistem; misalnya, ketika adaptor render yang digunakan adalah WARP (Windows Advanced Rasterization Platform, perender perangkat lunak yang disediakan sistem). IddCx 1.6 menambahkan panggilan balik OS berikut yang memungkinkan driver mengakses buffer dalam memori sistem sehingga menghindari salinan sub-sumber daya:

  • IddCxSwapChainInSystemMemory memungkinkan IDD untuk memeriksa apakah buffer untuk swapchain adalah residen dalam memori sistem. Hasil dari panggilan balik ini tetap konstan sepanjang masa pakai swapchain. Driver harus memeriksa nilai panggilan balik ini dalam panggilan balikEvtIddCxMonitorAssignSwapChain dan menyiapkan status untuk merilis dan memperoleh buffer.

  • IddCxSwapChainReleaseAndAcquireSystemBuffer memungkinkan IDD untuk merilis dan memperoleh buffer, serta mendapatkan informasi untuk mengakses buffer (seperti penunjuk memori sistem, pitch/stride buffer, format permukaan, dan dimensi). Buffer yang dikembalikan valid hingga panggilan berikutnya berhasil ke fungsi ini.

    Pada titik penugasan swapchain baru, driver harus memutuskan varian IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer mana yang akan memanggil swapchain tertentu dan harus terus menggunakan varian tersebut selama sisa masa pakai swapchain tersebut. Untuk memutuskan, driver harus mempertimbangkan persyaratan spesifiknya dan hasil panggilan ke IddCxSwapChainInSystemMemory. Driver akan menyebabkan sistem operasi untuk memperiksa proses UMDF jika:

    • Memanggil varian iddCxSwapChainReleaseAndAcquireSystemBuffer/IddCxSwapChainReleaseAndAcquireBuffer.
    • Memanggil IddCxSwapChainReleaseAndAcquireSystemBuffer saat IddCxSwapChainInSystemMemory mengembalikan false.

Disarankan tetapi tidak mengharuskan driver menggunakan fungsi panggilan balik ini. Perilaku sebelum IddCx 1.6 tetap didukung.

Kemampuan untuk mengakses buffer dalam memori yang berdampingan secara fisik

Dimulai dengan IddCx 1.6, bendera IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS dan fungsi panggilan balik OS IddCxSwapChainGetPhysicallyContiguousAddress ditambahkan sehingga buffer dapat diakses dalam memori yang berdampingan secara fisik.

Driver tampilan dapat meminta agar permukaan utama dialokasikan dalam memori sistem yang berdekatan secara fisik dengan mengatur bendera IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS di IDDCX_ADAPTER_CAPS. Ini memungkinkan driver untuk langsung memindai permukaan tanpa salinan perantara.

Permintaan driver selama inisialisasi tidak dijamin berhasil. Jika permintaan tidak berhasil, panggilan ke IddCxAdapterInitAsync tidak akan gagal. Sebaliknya, setelah driver melakukan IddCxSwapChainReleaseAndAcquireBuffer (atau IddCxSwapChainReleaseAndAcquireSystemBuffer), driver harus memanggil IddCxSwapChainGetPhysicallyContiguousAddress untuk mengambil alamat fisik permukaan. IddCxSwapChainGetPhysicallyContiguousAddress akan terlebih dahulu menunggu perintah render yang tertunda, lalu membersihkan dan membatalkan cache CPU yang terkait dengan rentang alamat tempat permukaan disimpan. Namun, jika permintaan awal untuk permukaan dialokasikan dalam memori yang berdekatan secara fisik gagal maka IddCxSwapChainGetPhysicallyContiguousAddress akan mengembalikan E_NOINTERFACE.