Bagikan melalui


Panduan Windows Advanced Rasterization Platform (WARP)

Artikel ini menjelaskan Windows Advanced Rasterization Platform (WARP) dan aspek WARP berikut.

Apa itu WARP?

WARP adalah rasterizer perangkat lunak berkecepatan tinggi dan sepenuhnya sesuai. Ini adalah komponen teknologi grafis DirectX yang diperkenalkan oleh runtime Direct3D 11. Runtime Direct3D 11 diinstal pada Windows 7, Windows Server 2008 R2, dan Windows Vista dengan pembaruan [KB971644]. Windows 8, Windows 10, Windows Server 2012 & above, dan Windows RT menyertakan runtime Direct3D 11.1, yang memiliki versi WARP yang diperbarui. Windows 10 Fall Creators Update (1709) menyertakan versi WARP yang mendukung runtime Direct3D 11 dan Direct3D 12.

Manfaat WARP

WARP memberikan manfaat sebagai berikut:

Menghapus Kebutuhan untuk Rasterizer Perangkat Lunak Kustom

WARP menyederhanakan pengembangan dengan menghapus kebutuhan untuk membangun rasterizer perangkat lunak kustom dan menyetel aplikasi Anda untuk itu alih-alih menyetel aplikasi Anda untuk perangkat keras. Dengan menyediakan satu rasterizer perangkat lunak tujuan umum, Anda tidak perlu lagi menulis algoritma penyajian gambar dengan berbagai cara untuk berjalan pada perangkat keras atau perangkat lunak dengan fitur dan kemampuan yang berbeda. Anda masih dapat menerapkan algoritma dengan berbagai cara untuk mencapai performa atau penskalakan yang lebih baik; namun, Anda tidak perlu mengubah API atau arsitektur penyajian yang digunakan untuk mengimplementasikan algoritma tersebut. Sebagai gantinya, Anda dapat fokus pada pembuatan aplikasi Direct3D 10 atau yang lebih baru yang akan terlihat sama dan berkinerja baik pada perangkat keras atau perangkat lunak.

Mengaktifkan Performa Maksimum dari Perangkat Keras Grafis

Ketika aplikasi disetel untuk berjalan secara efisien pada perangkat keras, aplikasi juga akan berjalan secara efisien di WARP. Sebaliknya juga benar; aplikasi apa pun yang disetel agar berjalan dengan baik di WARP akan berkinerja baik pada perangkat keras. Aplikasi yang menggunakan Direct3D 10 dan yang lebih baru secara tidak efisien mungkin tidak menskalakan secara efisien pada perangkat keras yang berbeda. WARP memiliki profil performa yang sama dengan perangkat keras, sehingga menyetel aplikasi untuk batch besar, meminimalkan perubahan status, menghapus titik sinkronisasi atau kunci akan menguntungkan perangkat keras dan WARP.

Mengaktifkan Penyajian Ketika Perangkat Keras Direct3D Tidak Tersedia

WARP memungkinkan penyajian cepat dalam berbagai situasi di mana implementasi perangkat keras tidak diinginkan atau tidak tersedia, termasuk:

  • Ketika pengguna tidak memiliki perangkat keras berkemampuan Direct3D
  • Saat aplikasi berjalan sebagai layanan atau di lingkungan server
  • Ketika aplikasi ingin memesan sumber daya perangkat keras Direct3D untuk penggunaan lain
  • Ketika kartu video tidak diinstal
  • Ketika driver video tidak tersedia, atau tidak berfungsi dengan benar
  • Ketika kartu video kehabisan memori, macet, atau akan mengambil terlalu banyak sumber daya sistem untuk diinisialisasi

Memanfaatkan Sumber Daya yang Ada untuk Penyajian Perangkat Lunak

Ada komunitas besar, banyak buku, situs Web, SDK, sampel, laporan resmi, milis, dan sumber daya lain yang dapat membantu Anda memanfaatkan Direct3D 10 dan penyajian gambar berbasis shader yang lebih baru. Dengan WARP sebagai fallback perangkat lunak, Anda dapat menggunakan pengetahuan yang ada tentang perangkat keras untuk meningkatkan performa aplikasi Anda ketika berjalan dengan perangkat keras atau perangkat lunak. Selain itu, banyak alat luar biasa dari vendor kartu grafis dan di DirectX SDK dapat membantu Anda merancang, membangun, mengembangkan, men-debug, dan menganalisis masalah performa aplikasi grafis. Alat dan pengetahuan ini sekarang dapat menguntungkan pengembangan aplikasi yang menargetkan perangkat keras dan perangkat lunak saat Anda menggunakan WARP.

Mengaktifkan Skenario yang Tidak Memerlukan Perangkat Keras Grafis

Berbagai algoritma dan aplikasi (algoritma pemrosesan gambar, pencetakan, jarak jauh, PC Virtual dan emulator lainnya, rendering font berkualitas tinggi, bagan, grafik, dan sebagainya) biasanya telah dioptimalkan untuk CPU karena tidak bergantung pada perangkat keras. Dengan WARP, Anda dapat menggunakan satu arsitektur yang menjalankan algoritma dan aplikasi ini dan yang dapat berjalan sepenuhnya dalam perangkat lunak; namun, jika akselerasi perangkat keras tersedia, Anda dapat memanfaatkannya.

Menyelesaikan Platform Grafis DirectX

WARP memungkinkan Anda mengakses semua fitur grafis Direct3D 10 dan yang lebih baru bahkan di komputer tanpa perangkat keras grafis Direct3D 10 dan yang lebih baru. Bit kemampuan direct3D 10 yang dihapus (huruf besar); artinya, Anda tidak perlu lagi memverifikasi apakah kemampuan grafis tersedia dari perangkat keras grafis karena Direct3D 10 dan yang lebih baru menjamin ketersediaan ini. Anda sekarang dapat menggunakan semua fitur berbagai kartu video yang mengetahui bahwa aplikasi mereka akan berulah dan terlihat sama di mana-mana. Anda dapat menskalakan performa aplikasi ini hanya dengan menonaktifkan fitur grafis mahal pada kartu video low end atau penyajian ke target yang lebih kecil.

Kemampuan dan Persyaratan WARP

WARP sepenuhnya mendukung semua fitur Direct3D 10 dan 10.1. Misalnya, WARP mendukung fitur paling penting berikut:

  • Semua persyaratan presisi spesifikasi Direct3D 10 dan 10.1
  • Direct3D 11 saat digunakan dengan tingkat fitur 9_1, 9_2, 9_3, 10_0, dan 10_1 (untuk informasi selengkapnya tentang tingkat fitur, lihat D3D_FEATURE_LEVEL)
  • Semua format tekstur opsional, seperti target render multisample dan pengambilan sampel dari permukaan float
  • Antialias, rendering berkualitas tinggi hingga 8x antialias multisample (MSAA)
  • Pemfilteran anisotropik
  • Aplikasi 32-bit dan 64-bit dan aplikasi 32-bit yang sadar alamat besar

Saat Anda menginstal Pembaruan Platform untuk Windows 7 pada Windows 7 SP1 atau Windows Server 2008 R2 SP1, sistem operasi tersebut kemudian menyertakan runtime Direct3D 11.1 dan versi WARP yang mendukung Direct3D 11.x saat digunakan dengan tingkat fitur 9_1, 9_2, 9_3, 10_0, 10_1, dan 11_0.

Windows 8, Windows 10, Windows Server 2012 & above, dan Windows RT menyertakan runtime Direct3D 11.1 dan versi baru WARP. Versi ini mendukung Direct3D 11.x saat digunakan dengan tingkat fitur 9_1, 9_2, 9_3, 10_0, 10_1, 11_0, dan 11_1.

Windows 10 Fall Creators Update (1709) menyertakan versi baru WARP yang mendukung tingkat fitur Direct3D 12 12_0 dan 12_1.

Persyaratan komputer minimum untuk WARP sama dengan untuk Windows Vista, khususnya:

  • Minimum 800 MHz CPU
  • MMX, SSE, atau SSE2 tidak diperlukan
  • RAM minimal 512 MB

Cara Menggunakan WARP

Untuk Direct3D 12, membuat perangkat WARP memerlukan identifikasi adaptor WARP terlebih dahulu. Untuk memfasilitasi hal ini, DXGI 1.4 menyediakan metode IDXGIFactory4::EnumWarpAdapter. Adaptor WARP kemudian dapat disediakan untuk D3D12CreateDevice untuk membuat perangkat WARP.

Komponen Direct3D 10, 10.1, dan 11 dapat menggunakan jenis driver tambahan yang dapat Anda tentukan saat membuat perangkat (misalnya, saat Anda memanggil fungsi D3D11CreateDevice). Jenis driver tersebut D3D10_DRIVER_TYPE_WARP atau D3D_DRIVER_TYPE_WARP. Ketika Anda menentukan jenis driver tersebut, runtime membuat perangkat WARP dan tidak menginisialisasi perangkat keras.

Karena WARP menggunakan antarmuka perangkat lunak yang sama ke Direct3D seperti yang dilakukan rasterizer referensi, aplikasi Direct3D apa pun yang dapat mendukung berjalan dengan rasterizer referensi dapat diuji dengan menggunakan WARP. Untuk menggunakan WARP, ganti nama D3d10warp.dll menjadi D3d10ref.dll dan letakkan di folder yang sama dengan sampel atau aplikasi. Selanjutnya, ketika Anda beralih ke ref, Anda akan melihat penyajian WARP.

Jika Anda mengganti nama WARP menjadi D3d10ref.dll dan menempatkannya di C:\Program Files (x86)\Microsoft DirectX SDK (Juni 2010)\Samples\C++\Direct3D\Bin\x86, Anda dapat menjalankan semua sampel DirectX terhadap WARP, baik dengan mengklik tombol "Alihkan Ref" dalam sampel, atau dengan menjalankan sampel dengan /ref yang ditentukan pada baris perintah.

Semua aplikasi yang dapat menggunakan Direct3D dapat menggunakan WARP. Ini termasuk jenis aplikasi berikut:

Permainan Kasual

Game biasanya memiliki persyaratan penyajian sederhana. Namun, mereka juga memerlukan penggunaan efek visual mengesankan yang mungkin membutuhkan akselerasi perangkat keras. Sebagian besar judul game terlaris untuk Windows adalah simulasi atau permainan kasual, yang tidak memerlukan grafis performa tinggi. Namun, kedua gaya permainan sangat mendapat manfaat dari grafis berbasis shader modern dan kemampuan untuk menskalakan pada perangkat keras.

Aplikasi Non-Game yang Ada

Sejumlah besar aplikasi grafis memerlukan sejumlah kecil jalur kode di lapisan penyajiannya. WARP memungkinkan aplikasi ini menerapkan satu jalur kode Direct3D yang dapat menargetkan sejumlah besar konfigurasi komputer.

Permainan Penyajian Tingkat Lanjut

Pengembang game mungkin ingin mengisolasi kartu grafis atau kesalahan penyajian khusus driver. Oleh karena itu, semua game, bahkan game yang sangat menuntut grafis, dapat memperoleh manfaat dari dapat merender konten mereka dengan menggunakan WARP. Anda dapat menggunakan WARP untuk memvalidasi apakah ada artefak visual yang Anda temukan yang merender kesalahan atau masalah dengan perangkat keras atau driver.

Aplikasi Lain

Aplikasi target untuk WARP juga mencakup aplikasi yang saat ini mungkin tidak menggunakan Direct3D 10 atau Direct3D 10.1. Aplikasi target ini mencakup aplikasi yang harus selalu berfungsi di semua komputer, aplikasi pemrosesan gambar yang tidak menulis versi CPU dan GPU dari algoritma pemrosesan gambar, algoritma pemrosesan gambar di mana kecepatan atau penggunaan GPU tidak penting, seperti pencetakan, dan emulator dan lingkungan virtual yang menampilkan grafik 3D tingkat lanjut.

Arsitektur dan Performa WARP

WARP didasarkan pada basis kode rasterizer referensi. Oleh karena itu, WARP menggunakan antarmuka perangkat lunak yang sama untuk Direct3D 10 dan yang lebih baru dan DXGI. WARP disertakan dalam Windows 7 di D3d10warp.dll, yang terletak di folder sistem Windows. Dua versi WARP diinstal pada komputer 64 bit, versi x86 dan x64. Versi x64 mungkin berjalan lebih cepat dalam keadaan tertentu karena generator kode yang terkandung dalam WARP dapat memanfaatkan register tambahan yang tersedia saat pengguna menjalankan aplikasi 64-bit.

WARP berisi dua kompilator real time berkecepatan tinggi berikut:

  • Pengkompilasi bahasa perantara tingkat tinggi yang mengonversi bytecode HLSL dan status render saat ini menjadi aliran perintah vektor yang dioptimalkan untuk tahap pemecah geometri (GS), shader vertex (VS), dan piksel shader (PS).
  • Generator kode just-in-time berkinerja tinggi yang dapat mengambil perintah ini dan menghasilkan kode rakitan SSE2, SSE4.1, x86, x64, arm, dan arm64 yang dioptimalkan.

WARP menggunakan kumpulan utas dan manajemen tugas yang kompleks dan pelacakan dependensi yang diperkenalkan di Windows Vista untuk memungkinkan semua bagian alur penyajian didistribusikan secara efisien di seluruh inti CPU yang tersedia.

WARP menggunakan rendering yang ditangguhkan. Artinya, WARP dapat membuat batch perintah rendering sehingga rasterisasi hanya terjadi ketika data yang memadai tersedia untuk menggunakan semua sumber daya CPU secara efisien. Bekerja pada utas aplikasi utama diminimalkan untuk memungkinkan aplikasi mengirimkan perintah secepat mungkin. Jika aplikasi juga multi-utas, dan menggunakan kumpulan utas, pekerjaan akan didistribusikan secara merata antara WARP dan aplikasi.

Generator kode WARP telah disetel untuk memanfaatkan arsitektur CPU modern dengan sesempurna. WARP berjalan di semua komputer yang dapat menjalankan Windows Vista dan sistem operasi yang lebih baru, bahkan jika komputer tidak mendukung SSE. Namun, WARP telah dioptimalkan untuk komputer yang mendukung SSE2. Ini juga berisi pengoptimalan untuk arsitektur tertentu dari prosesor AMD dan Intel, serta dukungan untuk ekstensi SSE 4.1.

WARP tidak memerlukan perangkat keras grafis untuk dijalankan. Ini dapat dijalankan bahkan dalam situasi di mana perangkat keras tidak tersedia atau tidak dapat diinisialisasi.

Aplikasi dan sampel yang dirancang dan dibangun untuk berjalan pada Direct3D 10 dan perangkat keras yang lebih baru tanpa sepengetahuan WARP kemungkinan akan berjalan dengan baik dengan menggunakan WARP. Namun, kami sarankan Anda menurunkan pengaturan dan resolusi kualitas sebanyak mungkin untuk mencapai kecepatan bingkai yang dapat digunakan. Anda dapat menggunakan WARP untuk mengembangkan dan menyetel aplikasi yang berjalan dengan baik pada perangkat keras dan perangkat lunak.

Karena WARP menggunakan beberapa inti CPU untuk eksekusi paralel, WARP berkinerja terbaik pada CPU multi-core modern. WARP juga berjalan secara signifikan lebih cepat di komputer dengan ekstensi SSE4.1 terinstal. Microsoft melakukan pengujian dan penyetelan performa yang signifikan pada komputer dengan delapan inti atau lebih dan SSE4.1 karena komputer kelas atas ini akan menjadi lebih umum selama masa pakai Windows 7 dan sistem operasi yang lebih baru.

Ketika WARP berjalan pada CPU, itu terbatas dibandingkan dengan kartu grafis dengan sejumlah cara. Kecepatan bus sisi depan CPU biasanya sekitar atau di bawah 10 GB/dtk. Sebaliknya, kartu grafis sering memiliki memori khusus yang menggunakan bandwidth grafis 20 hingga 100GB/dtk atau lebih. Perangkat keras grafis juga memiliki unit fungsi tetap yang dapat melakukan tugas kompleks dan mahal, seperti pemfilteran tekstur, dekompresi format, atau konversi, secara asinkron dengan sedikit biaya overhead atau daya. Melakukan operasi ini pada CPU biasa mahal dalam hal konsumsi daya dan siklus performa.

Angka performa umum untuk mesin 3.0GHz Quad Core berbasis Intel Penryn menunjukkan bahwa WARP dapat dalam beberapa kasus mengungguli Direct3D 10 terintegrasi kelas bawah dan GPU grafis yang lebih baru pada sejumlah tolok ukur. Perangkat keras grafis diskrit low-end biasanya 4 hingga 5 kali lebih cepat daripada WARP dalam menjalankan tolok ukur ini. GPU terintegrasi atau diskrit low-end ini memiliki penggunaan sumber daya CPU minimal. Kartu grafis kelas menengah atau kelas atas secara signifikan lebih cepat daripada WARP untuk banyak aplikasi, terutama ketika aplikasi dapat memanfaatkan paralelisme dan bandwidth memori yang disediakan kartu grafis ini.

WARP bukan pengganti perangkat keras grafis, terutama karena secara wajar melakukan Direct3D 10 low-end dan perangkat keras diskrit yang lebih baru sekarang murah. Tujuan WARP adalah untuk memungkinkan aplikasi menargetkan perangkat keras tingkat yang kompatibel dengan Direct3D tanpa memiliki jalur kode yang berbeda secara signifikan atau persyaratan pengujian apakah mereka berjalan pada perangkat keras atau dalam perangkat lunak.

Dua tabel berikut menunjukkan contoh data WARP dengan berbagai CPU dan kartu grafis.

Tabel pertama menunjukkan contoh data WARP dengan Direct3D 10 Crysis yang berjalan pada 800x600 dengan semua pengaturan kualitas pada tingkat terendahnya:

CPU Waktu Ave FPS Min FPS Bingkai Min FPS Maks Bingkai Maks
Core i7 8 Core @ 3.0GHz 271.57 7,36 3,46 1966 15.01 995
Penryn 4 Core @ 3.0GHz 351.35 5,69 2.49 1967 10.95 980
Penryn 2 Core @ 3.0GHz 573.98 3.48 1,35 1964 6.61 988
Core 2 Duo @ 2.6GHz 707.19 2.83 0,81 1959 5.18 982
Core 2 Duo @ 2.4GHz 763.25 2.62 0.76 1964 4.70 984
Core 2 Duo @ 2.1GHz 908.87 2,20 0.64 1965 3.72 986
Xeon 8 Core @ 2.0GHz 424.04 4.72 1.84 1967 9,56 988
AMD FX74 4 Core @ 3.0GHz 583.12 3.43 1.41 1967 5.78 986
Phenom 9550 4 Core @ 2.2GHz 664.69 3,01 0.53 1959 5.46 987

Tabel kedua memperlihatkan contoh data yang menjalankan pengujian yang sama di berbagai kartu grafis:

Kartu Grafis Waktu Ave FPS Min FPS Bingkai Min FPS Maks Bingkai Maks
NVIDIA 8800 GTS 23.58 84,80 60.78 1957 130.83 1022
NVIDIA 8500 GT 47.63 41.99 25.67 1986 72.57 991
NVIDIA Quadro 290 67.16 29.78 18.19 1969 49.87 1017
NVIDIA 8400 GS 59.01 33.89 21.22 1962 51.82 1021
ATI 3400 53.79 37.18 22.97 618 59.77 1021
ATI 3200 67.19 29.77 18.91 1963 45.74 980
ATI 2400 PRO 67.04 29.83 17.97 606 45.91 987
Intel DX10 Terintegrasi 386.94 5.17 1,74 1974 16.22 995

Kesuaian WARP

WARP melewati semua tes kesesuaian Windows Hardware Quality Labs (WHQL) standar untuk memvalidasi perangkat keras Direct3D.

WARP telah diuji terhadap serangkaian aplikasi dan tolok ukur Direct3D 10.1 dan Direct3D 10.1, dan terhadap sampel SDK dari DirectX, NVIDIA, dan AMD.

WARP menggunakan alat penelusuran kesalahan dan analisis PIX untuk Windows dalam pengujiannya; Microsoft memiliki pustaka besar pengambilan bingkai tunggal aplikasi yang digunakan untuk membandingkan antara perangkat keras dan WARP. Sebagian besar gambar tampak hampir identik antara perangkat keras dan WARP; di mana perbedaan kecil kadang-kadang terjadi, mereka ditemukan berada dalam toleransi yang ditentukan oleh spesifikasi Direct3D 10.