Bagikan melalui


Menghitung Mode Sumber dan Target VidPN Kofungsi

Topik ini menjelaskan bagaimana manajer jaringan sajikan video (VidPN) dan driver miniport tampilan berkolaborasi untuk menghitung mode yang tersedia pada sumber dan target sajikan video. Sebelum membaca materi ini, Anda harus terbiasa dengan materi dalam topik berikut:

Dari waktu ke waktu, manajer VidPN meminta driver miniport tampilan untuk menghitung mode yang tersedia pada video adaptor tampilan yang menyajikan sumber dan target. Biasanya, permintaan memiliki pola berikut:

  1. Manajer VidPN membuat atau mendapatkan VidPN yang memiliki mode yang disematkan pada beberapa, tetapi tidak semua, dari sumber dan targetnya.

  2. Manajer VidPN memanggil DxgkDdiIsSupportedVidPn untuk menentukan apakah VidPN dapat diperluas untuk membentuk VidPN fungsional yang didukung pada adaptor tampilan. Artinya, ia menanyakan apakah mode dapat disematkan pada sumber dan target yang tersisa tanpa mengubah mode yang disematkan yang ada.

  3. Manajer VidPN memanggil DxgkDdiEnumVidPnCofuncModality untuk mendapatkan mode yang tersedia pada sumber dan target yang belum memiliki mode yang disematkan.

Salah satu argumen yang diteruskan ke DxgkDdiEnumVidPnCofuncModality adalah handel ke objek VidPN yang disebut VidPN yang membatasi.

DxgkDdiEnumVidPnCofuncModality harus melakukan hal berikut:

  • Periksa VidPN yang membatasi.

  • Untuk setiap sumber dan target yang tidak memiliki mode yang disematkan, sesuaikan set mode sehingga merupakan set mode terbesar yang mungkin yang kofungsi dengan batasan.

  • Untuk setiap jalur yang tidak memiliki transformasi penskalaan yang disematkan, sesuaikan bendera dukungan penskalaan sehingga berfungsi bersama dengan batasan.

  • Untuk setiap jalur yang tidak memiliki transformasi rotasi yang disematkan, sesuaikan bendera dukungan rotasi sehingga berfungsi bersama dengan batasan.

  • Untuk setiap sumber yang memiliki mode yang disematkan, laporkan metode multisampling yang tersedia untuk sumber tersebut.

Paragraf berikut memberikan detail tentang cara melakukan setiap tugas di daftar berpoin sebelumnya.

Memeriksa VidPN yang membatasi

Properti vidPN yang membatasi berikut adalah batasan yang harus dihormati oleh DxgkDdiEnumVidPnCofuncModality.

  • Topologi (kumpulan asosiasi antara sumber dan target)

  • Mode yang disematkan

  • Dukungan penskalaan, penskalaan, rotasi, dan rotasi dari setiap jalur

  • Dasar warna target dari setiap jalur

  • Rentang dinamis koefisien warna target dari setiap jalur

  • Tipe konten (grafik atau video) dari setiap jalur

  • Ramp Gamma dari setiap jalur

Untuk mengekstrak batasan dari VidPN yang membatasi, lakukan langkah-langkah berikut:

  • Mulailah dengan memanggil fungsi pfnGetTopology untuk mendapatkan penunjuk ke antarmuka Topologi VidPN yang mewakili topologi VidPN yang membatasi.

  • Panggil fungsi pfnAcquireFirstPathInfo dan pfnAcquireNextPathInfo untuk mendapatkan informasi tentang setiap jalur dalam topologi VidPN yang membatasi. Informasi tentang jalur tertentu (ID sumber, ID target, transformasi penskalaan, transformasi rotasi, dasar warna target, dll.) terkandung dalam struktur D3DKMDT_VIDPN_PRESENT_PATH.

  • Untuk setiap jalur, teruskan ID sumber jalur ke fungsi pfnAcquireSourceModeSet untuk mendapatkan sumber jalur.

  • Panggil fungsi pfnAcquirePinnedModeInfo untuk menentukan mode mana (jika ada) yang disematkan dalam set mode sumber. Jika set mode sumber memiliki mode yang disematkan, mungkin tidak perlu memeriksa mode yang tersisa dalam set. Jika set mode tidak memiliki mode yang disematkan, periksa mode yang tersisa dalam set dengan memanggil pfnAcquireFirstModeInfo dan pfnAcquireNextModeInfo.

    Gunakan prosedur serupa untuk memeriksa set mode target dan untuk menentukan set mode target mana yang telah disematkan mode.

Menyesuaikan set mode

Saat Anda memeriksa set mode yang terkait dengan sumber dan target dalam topologi VidPN yang membatasi, perhatikan set mode mana yang telah disematkan mode. Jika set mode tidak memiliki mode yang disematkan, tentukan apakah perlu disesuaikan. Set mode harus disesuaikan jika berisi mode yang tidak berdampingan dengan batasan atau jika tidak memiliki mode yang tersedia yang kofungsi dengan batasan.

Untuk target presentasi video yang memiliki monitor yang terhubung, Anda juga harus mempertimbangkan serangkaian mode yang didukung oleh monitor. Bahkan jika video menyajikan target pada adaptor tampilan mendukung mode tertentu (mengingat batasan), Anda hanya boleh mencantumkan mode tersebut dalam mode target yang ditetapkan jika monitor yang terhubung juga mendukung mode. Untuk menentukan mode yang didukung oleh monitor yang tersambung, lakukan langkah-langkah berikut:

Menyesuaikan bendera dukungan penskalakan

Untuk setiap jalur dalam topologi VidPN yang membatasi, tentukan apakah jalur memiliki transformasi penskalaan yang disematkan. Untuk membuat penentuan itu, periksa vpnPath.ContentTransformation.Scaling, di mana vpnPath adalah struktur D3DKMDT_VIDPN_PRESENT_PATH yang mewakili jalur. Jika vpnPath.ContentTransformation.Scaling diatur ke D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_CENTERED, atau D3DKMDT_VPPS_STRETCHED, lalu transformasi penskalaan untuk jalur disematkan. Jika tidak, transformasi penskalaan tidak disematkan.

Jika jalur tidak memiliki transformasi penskalaan yang disematkan, tentukan apakah bendera dukungan penskalaan jalur perlu disesuaikan. Bendera dukungan harus disesuaikan jika menampilkan dukungan untuk jenis penskalaan yang tidak berdampingan dengan batasan atau jika mereka gagal menunjukkan dukungan untuk jenis penskalaan yang berdampingan dengan batasan. Untuk mengubah bendera dukungan penskalaan, atur anggota struktur D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT yang menyimpan bendera.

Menyesuaikan bendera dukungan rotasi

Menyesuaikan bendera dukungan rotasi jalur mirip dengan menyesuaikan bendera dukungan penskalaan jalur. Misalkan vpnPath adalah struktur D3DKMDT_VIDPN_PRESENT_PATH. Jika vpnPath.ContentTransformation.Rotation diatur ke D3DKMDT_VPPR_IDENTITY, D3DKMDT_VPPR_ROTATE90, D3DKMDT_VPPR_ROTATE180, atau D3DKMDT_VPPR_ROTATE270, lalu transformasi rotasi untuk jalur disematkan. Jika tidak, transformasi rotasi tidak disematkan. Bendera dukungan rotasi ada di vpnPath.ContentTransformation.RotationSupport.

Melaporkan metode multisampling

Jika adaptor tampilan memiliki satu atau beberapa codec output video yang mampu mengantisipasi dengan multisampling, maka Anda harus melaporkan metode multisampling yang tersedia (mengingat batasan), untuk setiap sumber yang memiliki mode yang disematkan. Untuk melaporkan metode multisampling yang tersedia, lakukan langkah-langkah berikut:

Struktur D3DDDI_MULTISAMPLINGMETHOD memiliki dua anggota, yang harus Anda tetapkan, yang mencirikan metode multisampling. Anggota NumSamples menunjukkan jumlah subpiksel yang diambil sampelnya. Anggota NumQualityLevels menunjukkan jumlah tingkat kualitas di mana metode dapat beroperasi. Anda dapat menentukan sejumlah tingkat kualitas selama setiap peningkatan tingkat secara nyata meningkatkan kualitas gambar yang disajikan.

Enumerasi Pivot

Seperti yang dijelaskan sebelumnya, DxgkDdiEnumVidPnCofuncModality harus membuat set mode yang kofungsi dengan VidPN yang diteruskan dalam parameter hConstrainingVidPn-nya. Dalam beberapa kasus, DxgkDdiEnumVidPnCofuncModality harus menambah perilakunya sesuai dengan informasi tambahan (pivot enumerasi) yang diteruskan dalam parameter EnumPivotType dan EnumPivot .

Pivot enumerasi dapat berupa salah satu hal berikut:

  • Set mode sumber sajikan video tertentu

  • Set mode target sajikan video tertentu

  • Transformasi penskalaan dari jalur VidPN tertentu yang ada

  • Transformasi rotasi dari jalur vidPN tertentu yang ada

Jika pivot enumerasi adalah set mode, maka DxgkDdkEnumVidPnCofuncModality harus membiarkan set mode tersebut tidak berubah. Jika pivot enumerasi adalah transformasi penskalaan (rotasi) jalur, maka DxgkDdiEnumVidPnCofuncModality tidak boleh mengubah bendera dukungan penskalaan (rotasi) untuk jalur tersebut.