Permukaan yang dapat ditampilkan

Sebelum permukaan yang dapat ditampilkan, presentasi umumnya dilakukan dengan membuat rantai pertukaran buffer dengan properti yang identik, yang kemudian diputar (dibalik) melalui berulang kali, untuk disajikan ke layar. Jika Anda ingin mengubah properti buffer yang akan disajikan, maka Anda harus menghancurkan rantai pertukaran tersebut, dan membuat yang baru dengan semua buffer diperbarui ke properti baru yang sama.

Fitur permukaan yang dapat ditampilkan menambahkan perilaku sistem operasi (OS) baru yang menghilangkan pembatasan tersebut (tetapi memerlukan dukungan driver untuk berperilaku dengan benar). Secara khusus, fitur ini berarti bahwa buffer yang disajikan mungkin memiliki properti yang bervariasi, dan Anda dapat menyajikannya dalam urutan apa pun.

Permukaan yang dapat ditampilkan (dan presentasi fleksibel), dan API-nya, diperkenalkan dalam Windows 11 (Build 10.0.22000.194). Fungsionalitas diaktifkan pada driver yang didukung, dimulai dengan driver WDDM 3.0, memungkinkan skenario presentasi yang disempurnakan untuk Direct3D 11.

Periksa dukungan, dan gunakan permukaan yang dapat ditampilkan

Untuk menentukan apakah fitur permukaan yang dapat ditampilkan tersedia pada sistem, panggil ID3D11Device::CheckFeatureSupport. Teruskan D3D11_FEATURE::D 3D11_FEATURE_DISPLAYABLE, dan terima struktur D3D11_FEATURE_DATA_DISPLAYABLE .

ID3D11Device::CreateTexture2D API mendukung D3D11_RESOURCE_MISC_FLAG::D 3D11_RESOURCE_MISC_SHARED_DISPLAYABLE, yang dapat Anda gunakan dalam anggota struktur D3D11_TEXTURE2D_DESC::MiscFlags yang Anda berikan ke CreateTexture2D dalam parameter pDesc.

Tekstur dengan D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE dibatasi hingga ukuran array 1, dan hingga tingkat 1 mip.

Saat Anda menggunakan bendera D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE pada tekstur, Anda dapat menampilkan tekstur pada output aktif apa pun (termasuk beberapa output secara bersamaan). Tergantung pada skenarionya, tekstur mungkin akhirnya dikonsumsi oleh komposittor (DWM), dipindai, atau terikat ke berbagai bagian alur—berpotensi semua secara bersamaan. Misalnya, tekstur tangkapan dari kamera mungkin ditampilkan pada dua layar, dan gambar mini yang ditampilkan pada layar ketiga, semuanya pada saat yang sama—dan semuanya dari alokasi yang sama tanpa salinan tambahan. Jika permukaan yang dapat ditampilkan akan dipindai pada beberapa tampilan, OS akan mengoordinasikan pengumpulan flip selesai dari output yang terlibat sebelum memperingatkan aplikasi Anda bahwa permukaan dilepaskan kembali ke sana—tidak ada koordinasi penyelesaian flip yang diperlukan dari driver.

Tekstur seperti yang dijelaskan di atas harus dapat ditampilkan untuk penggunaan presentasi yang fleksibel. Tekstur ini tidak diharuskan memiliki properti yang sama—misalnya, format dan ukuran dapat berbeda, dan tekstur ini harus dapat ditampilkan dalam urutan arbitrer ("presentasi yang tidak berurutan"). Presentasi akan terjadi menggunakan DDI Present1 yang ada, dengan pola panggilan yang ada. Misalnya, pertimbangkan kumpulan enam buffer, tiga yaitu 720p (A, B, dan C) dan tiga yang 4K (D, E, dan F): urutan presentasi yang valid bisa A-E-C-B-F-E-D-C>>>>>>>.

Format

Bendera D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE didukung untuk format berikut di Direct3D 11:

Bendera

Format yang dapat dibagikan umumnya sudah mendukung bendera ikat berikut: D3D11_BIND_FLAG::D 3D11_BIND_SHADER_RESOURCE, D3D11_BIND_UNORDERED_ACCESS, D3D11_BIND_RENDER_TARGET, dan D3D11_BIND_DECODER.

Penggunaan sumber daya bersama yang didukung yang ada dengan bendera D3D11_BIND_VIDEO_ENCODER diperluas untuk juga mendukung bendera D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE ditambahkan dalam kasus ini. Pembatasan yang ada terkait penggunaan sumber daya bersama dengan D3D11_BIND_VIDEO_ENCODER dipertahankan.

D3D11_BIND_VIDEO_ENCODER dan D3D11_BIND_SHADER_RESOURCE sebelumnya saling eksklusif, kecuali jika dikombinasikan dengan bendera ikatan tertentu lainnya. Pengecualian telah diperluas untuk memungkinkan D3D11_BIND_VIDEO_ENCODER dan D3D11_BIND_SHADER_RESOURCE digunakan bersama-sama ketika D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE digunakan.

Bendera D3D11_RESOURCE_MISC_HW_PROTECTED didukung dengan bendera D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE .