Bagikan melalui


Penyempurnaan DXGI 1.4

Fungsionalitas berikut telah ditambahkan atau diubah di Microsoft DirectX Graphics Infrastructure (DXGI) 1.4, sebagian besar untuk mendukung Direct3D 12.

Enumerasi adaptor yang lebih murah

Untuk Direct3D 12, tidak mungkin lagi untuk melakukan backtrack dari perangkat ke IDXGIAdapter yang digunakan untuk membuatnya. Anda juga tidak dapat lagi menyediakan D3D_DRIVER_TYPE_WARP ke D3D12CreateDevice. Untuk mempermudah pengembangan, Anda dapat menggunakan IDXGIFactory4 untuk menangani kedua hal ini. IDXGIFactory4::EnumAdapterByLuid (dirancang untuk dipasangkan dengan ID3D12Device::GetAdapterLuid) memungkinkan aplikasi untuk mengambil informasi tentang adaptor tempat perangkat Direct3D 12 dibuat. IDXGIFactory4::EnumWarpAdapter menyediakan adaptor yang dapat disediakan untuk D3D12CreateDevice untuk menggunakan perender WARP.

Pelacakan anggaran memori video

Pengembang aplikasi didorong untuk menggunakan sistem reservasi memori video, untuk menginformasikan OS jumlah memori video fisik yang tidak dapat digunakan aplikasi tanpanya.

Jumlah memori fisik yang tersedia untuk proses dikenal sebagai "anggaran memori video". Anggaran dapat berfluktuasi dengan jelas saat proses latar belakang bangun dan tidur; dan berfluktuasi secara dramatis ketika pengguna beralih ke aplikasi lain. Aplikasi dapat diberi tahu ketika anggaran berubah dan polling baik anggaran saat ini maupun jumlah memori yang saat ini dikonsumsi. Jika aplikasi tidak tetap dalam anggarannya, prosesnya akan dibekukan sewaktu-waktu untuk memungkinkan aplikasi lain berjalan dan/atau API pembuatan akan mengembalikan kegagalan. Antarmuka IDXGIAdapter3 menyediakan metode yang berkaitan dengan fungsionalitas ini, khususnya QueryVideoMemoryInfo dan RegisterVideoMemoryBudgetChangeNotificationEvent.

Untuk informasi selengkapnya, lihat topik Direct3D 12 tentang Residensi.

Perubahan Direct3D 12 Swapchain

Beberapa fungsi swapchain Direct3D 11 yang ada tidak digunakan lagi untuk mencapai pengurangan overhead di Direct3D 12. Sementara perubahan lain dilakukan untuk menyelaraskan dengan konsep Direct3D 12 atau memberikan dukungan yang lebih baik untuk fitur Direct3D 12.

Identitas Backbuffer Invariant

Di Direct3D 11, aplikasi dapat memanggil GetBuffer( 0, ... ) hanya sekali. Setiap panggilan ke Present secara implisit mengubah identitas sumber daya antarmuka yang dikembalikan. Direct3D 12 tidak lagi mendukung perubahan identitas sumber daya implisit tersebut, karena overhead CPU yang diperlukan dan desain deskriptor sumber daya yang fleksibel. Akibatnya, aplikasi harus memanggil GetBuffer secara manual untuk setiap buffer yang dibuat dengan swapchain. Aplikasi harus secara manual merender ke buffer berikutnya dalam urutan setelah memanggil Ada. Aplikasi didorong untuk membuat cache deskriptor untuk setiap buffer, alih-alih membuat ulang banyak objek setiap Ada.

Dukungan Multi-Adapter

Ketika swapchain dibuat pada adaptor multi-GPU, backbuffer semuanya dibuat pada simpul 1 dan hanya satu antrean perintah yang didukung. ResizeBuffers1 memungkinkan aplikasi untuk membuat backbuffer pada node yang berbeda, memungkinkan antrean perintah yang berbeda untuk digunakan dengan masing-masing. Kemampuan ini memungkinkan teknik Alternate Frame Rendering (AFR) digunakan dengan swapchain. Lihat Sistem multi-adaptor.

Lain-Lain

  • Objek antrean perintah harus diteruskan ke metode CreateSwapChain alih-alih objek perangkat Direct3D 12.
  • Hanya dua efek pertukaran model flip berikut yang didukung:
    DXGI_SWAP_EFFECT_FLIP_DISCARD harus lebih disukai ketika aplikasi sepenuhnya merender melalui backbuffer sebelum menyajikannya atau tertarik untuk mendukung skenario multi-adapter dengan mudah.
    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL harus digunakan oleh aplikasi yang mengandalkan pengoptimalan presentasi parsial atau dibaca secara teratur dari backbuffer yang disajikan sebelumnya.
  • SetFullscreenState tidak lagi secara eksklusif memiliki layar, sehingga elemen sistem operasi yang dimulai pengguna dapat muncul dengan mulus di depan output aplikasi. Pengaturan volume adalah contoh dari ini.

Tingkat Fitur Perangkat Keras Direct3D 12

Panduan Pemrograman untuk DXGI