Bagikan melalui


Pembaruan untuk IddCx versi 1.5, 1.6 dan yang lebih baru

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

Versi IddCxGetVersion yang diperbarui

Versi IddCx yang dikembalikan oleh IddCxGetVersion diperbarui ke 0x1500 untuk versi 1.5 dan 0x1600 untuk versi 1.6. Lihat Versi IddCx untuk daftar lengkap informasi versi terkait IddCx.

Informasi WPP dalam simbol IddCx publik

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

Kemampuan untuk mengakses buffer yang dialokasikan dalam memori sistem

Dalam skenario tertentu, buffer swapchain berada dalam memori sistem; misalnya, ketika WARP (Windows Advanced Rasterization Platform, perender perangkat lunak yang disediakan sistem) adalah adaptor render yang digunakan. IddCx 1.5 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 berada dalam memori sistem. Hasil dari panggilan balik ini tetap konstan sepanjang masa pakai swapchain. Driver harus memeriksa nilai panggilan balik ini dalampanggilan balik EvtIddCxMonitorAssignSwapChain 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, dan 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 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 menyebabkan sistem operasi memeriksa bug proses UMDF jika:

    • Memanggil varian lain dari IddCxSwapChainReleaseAndAcquireSystemBuffer/IddCxSwapChainReleaseAndAcquireBuffer.
    • Memanggil IddCxSwapChainReleaseAndAcquireSystemBuffer saat IddCxSwapChainInSystemMemory mengembalikan false.

Driver disarankan tetapi tidak diperlukan untuk menggunakan fungsi panggilan balik ini. Perilaku sebelum IddCx 1.5 tetap didukung.

Kemampuan untuk mengakses buffer dalam memori yang berdampingan secara fisik

Catatan

IddCxSwapChainGetPhysicallyContiguousAddress tidak didukung pada sistem Windows 10 apa pun, dan kemungkinan tidak akan digunakan lagi di masa mendatang.

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. Kemampuan 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. Sebagai gantinya, 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 menghapus dan membatalkan cache CPU yang terkait dengan rentang alamat tempat permukaan disimpan. Namun, jika permintaan awal untuk permukaan yang akan dialokasikan dalam memori yang berdekatan secara fisik gagal maka IddCxSwapChainGetPhysicallyContiguousAddress mengembalikan E_NOINTERFACE.