Uji DirectX 12 di Game Ashes of the Singularity (Benchmark 2.0)

Share on Facebook0Tweet about this on Twitter0Share on Google+0Share on Tumblr

DirectX 12 telah menjadi topik yang paling sering dibahas saat ini, khususnya jika berkaitan dengan implementasi pada game. Kendati begitu, saat ini belum banyak game yang sudah menerapkan dukungan DirectX 12 guna memaksimalkan performa hardware yang dimiliki user. Padahal, isu mengenai DirectX 12 ini sudah santer terdengar sejak 2 tahun yang lalu, hingga pada akhirnya low-level graphics API milik Microsoft ini muncul bersama dengan sistem operasi Windows 10 beberapa bulan yang lalu.

Perlu diketahui, DirectX 12 memiliki sejumlah keunggulan di mana developer dapat melakukan control lebih baik dari sebelumnya sehingga mampu meningkatkan performa dari sistem saat menjalankan aplikasi. DirectX 12 juga memungkinkan untuk pengembangan teknik rendering baru yang tidak bisa dilakukan pada API sebelumnya.

Terdapat sejumlah game yang tengah berlomba untuk menjadi yang pertama mendukung API terbaru ini (red: DirectX 12). Namun yang benar-benar siap dan akan dirilis dalam waktu dekat adalah Ashes of the Singularity. Hal ini dikarenakan bahwa Oxide game sebagai pengembang, secara spesifik telah merancang sebuah engine yang dapat memancing keluar kemampuan sebenarnya dari API ini – seperti Draw Calls dengan jumlah sangat besar, asynchronous compute/shading, dan explicit multi-GPU. Seluruh kemampuan baru tersebut, menjadikan DirectX 12 diposisikan jauh mengungguli kemampuan yang ditawarkan DirectX 11. Hal inilah yang membuat Microsoft dan para vendor GPU menggunakan game Ashes of the Singularity untuk mendemonstrasikan kemampuan dari API terbaru ini.

Sama halnya dengan game yang ditawarkan saat ini. Ashes of the Singularity telah tersedia dalam status public beta melalui steam early access, sementara versi full-nya akan dirilis pada 22 Maret 2016. Meski begitu, Stardock selaku publisher dari game ini mengundang media untuk mencoba versi beta dari game ini serta update dari benchmark terbaru mereka.

Sekilas Mengenai Ashes of the Singularity

Stardock bersama dengan Oxide games akhirnya mengumumkan kehadiran Ashes of the Singularity untuk para gamer. Game berbasis real-time strategy ini menggunakan setting masa depan, mendefinisikan ulang kemungkinan-kemungkinan dari game RTS dengan skala menakjubkan yang ditawarkan oleh Nitrous engine yang inovatif milik Oxide Games. Buah dari kemitraan ini telah menghasilkan game Ashes of the Singularity yang menjadi game pertama yang hadir dengan kemampuan Benchmark DirectX®12.

Ashes of the Singularity benchmark 2.0 adalah sebuah tes penuh dari sistem yang menjalankan game. Satu-satunya perbedaan antara benchmark 2.0 dan versi game penuhnya adalah bahwa beberapa fitur telah disesuaikan, seperti menonaktifkan kematian unit untuk memastikan bahwa hasil yang diperoleh lebih dapat diprediksi. Selanjutnya, benchmark 2.0 membawa tingkat baru dari detail yang lebih baik dengan benchmark 1.0 pendahulunya, yang dikeluarkan Agustus lalu.

Ashes of the Singularity – DirectX 12 Features

DirectX 12 telah membawa game ke level baru yang lebih baik. Dengan memanfaatkan seluruh core yang dimiliki processor multi–core secara bersamaan, DirectX 12 dapat mengoptimalkan kemampuan processor dengan membawa semua beban kerja untuk dikirimkan ke kartu grafis. Sehingga suatu perintah dapat diselesaikan dalam waktu yang singkat. Selain itu, DirectX 12 juga dapat mengizinkan GPU untuk melakukan tugas secara multi-task secara bersamaan sehingga mempersingkat waktu rendering, mengurangi latensi, dan memberikan performa fps lebih banyak. Terdapat dua fitur utama yang dihadirkan oleh DirectX 12 yakni asynchronous Compute/shader dan  multi-threaded command buffer recording.

Asynchronous Compute

Async Compute merupakan sebuah fitur yang memungkinkan sebuah game engine untuk mengeksekusi komputasi GPU atau aktivitas memori selama terjadi “gaps” pada saat GPU bekerja.

Untuk dapat merealisasikan hal tersebut, maka alur kerja pada API ini harus dirombak di mana beberapa tahapan dapat dieksekusi secara bersamaan dengan tahapan lain sehingga dapat meminimalisir waktu render. Sebelumnya, alur kerja saat melakukan render terbatas hanya pada satu jalur saja sehingga tahapan proses antara satu dengan yang lainnya harus antri menunggu giliran untuk dieksekusi. Proses ini juga secara tidak langsung memunculkan sejumlah fungsi yang pada akhirnya menganggur karena beberapa proses masih berada dalam antrian. Untuk lebih jelasnya, Anda bisa melihat pada ilustrasi berikut ini :

DX11 vs DX12

Fit DirectX® 12 Async Shaders melengkapi penyempurnaan kerja di GPU yang kompatibel dengan teknik untuk mempercepat akses storage di beberapa thread (interleaving) untuk mempersingkat keseluruhan waktu render. Async Shaders secara material penting untuk pengalaman PC gamer karena waktu render yang lebih pendek mengurangi latensi pipeline grafis, di mana latensi yang lebih rendah berdampak pada kinerja yang lebih tinggi. “Kinerja” dapat berarti frame rate yang lebih tinggi dalam gameplay dan responsif yang lebih baik di lingkungan VR. Pada DirectX® 11 hanya satu shader yang bisa dijalankan pada satu waktu, ini berarti ketika shader memori-dominan bekerja, unit hitung akan menganggur. Ashes of the Singularity dapat menggunakan DirectX 12 untuk menjadwalkan hampir semua tugas komputasi, yang dapat menggunakan hampir sepertiga dari kerangka waktu, untuk menjalankan secara paralel dengan tugas-tugas render lainnya. Dengan mengizinkan mereka untuk bekerja secara paralel maka GPU sekarang dapat menjadwalkan tugas-tugas yang saling melengkapi untuk mencapai pemanfaatan hampir seutuhnya dari GPU.

Berikut ini adalah contoh pemanfaatan fitur Async Compute pada Radeon Fury X dan GTX 980Ti. Di mana ketika fitur ini diaktifkan mampu memberikan hasil yang signifikan terhadap performanya. Namun hal ini baru berlaku pada hardware milik AMD yang memang sudah mengoptimalkan fitur Async Compute.

async compute

Multi-threaded Command Buffer Recording:

Fitur ini bisa diumpamakan sebuah “to-do-list” yang harus dikenali oleh CPU dan selanjutnya diserahkan kepada GPU sehingga pekerjaan yang berkaitan dengan grafis dapat diselesaikan. List atau daftar ini meliputi lighting, penempatan karakter, loading texture, generating reflections dan sebagainya.

Pada komputer modern, umumnya sudah menerapkan jenis CPU dengan banyak inti (multi-core) seperti yang digunakan pada Intel Core series atau AMD FX yang bahkan memiliki hingga 8 core. Namun begitu, meski sudah menerapkan implementasi multi-core sebagai solusi untuk parallel computing, kenyataannya, pada banyak aplikasi yang masih menggunakan basis DirectX 11, multi-core pada CPU tidak mampu dimanfaatkan dengan baik. Bahkan pada beberapa kasus, hanya menggunakan setengah dari jumlah core yang tersedia. Limitasi yang dimiliki oleh DirectX 11 ini pada akhirnya disisati oleh DirectX 12 di mana command buffer pada game akan dipecah ke dalam beberapa bagian lalu kemudian setiap bagian tersebut akan disebar untuk diproses oleh setiap core yang tersedia. Ini artinya, pada DirectX 12 kemampuan multi-core pada CPU akan benar-benar dioptimalkan sepenuhnya sehingga akan memberikan output yang lebih baik dari segi kualitas maupun performanya.

Pada DirectX 12 terdapat 5 ciri utama yang diterapkan untuk mengoptimalkan performa sistem :

  1. Overhead secara signifikan akan berkurang dengan memindahkan driver dan code API ke setiap thread CPU yang tersedia.
  2. Waktu absolute yang dibutuhkan untuk menyelesaikan tugas CPU menjadi berkurang.
  3. Beban kerja game dapat didistribusikan ke seluruh CPU cores.
  4. “Bandwidth” baru pada CPU memungkinkan perolehan draw calls yang tinggi sehingga memberikan detail dan game yang lebih mendalam.
  5. Setiap CPU yang tersedia saat ini akan dapat berkomunikasi dengan GPU secara simultan.

directx workload

Dengan DirectX 12 yang menawarkan dukungan yang lebih besar untuk konfigurasi multi-GPU. Ashes of the Singularity benchmark 2.0 memungkinkan untuk pengujian multi-GPU skala penuh. Hal ini penting untuk diingat bahwa CPU dan GPU berkomunikasi melalui DirectX API. Adapun, DirectX 11 merupakan API yang dibentuk pada tahun 2008. Saat ini GPU begitu cepat sehingga CPU yang menggunakan DirectX 11 tidak bisa mengimbangi kecepatannya.  Meskipun CPU kerap memiliki 4/8 core, karena alasan teknis games dengan DirectX 11 hanya bisa memiliki 1 core untuk memberi “makan” GPU. Sebagaimana di jalan raya kita hanya menggunakan satu jalur. Saat frame berlangsung, GPU akan menganggur dan hanya akan duduk diam. DirectX 12 memungkinkan semua core CPU untuk memberi makan GPU, makanan GPU ini disebut ‘command buffer’ . Hal ini dapat dianalogikan seperti berpindah dari negara dengan jalan dua jalur ke jalan tol delapan jalur. Pergeseran ke DirectX 12 memungkinkan lebih banyak lalu lintas dari prosesor untuk mencapai kartu grafis dalam jumlah waktu yang lebih singkat. Hasil akhirnya: kinerja lebih, kualitas gambar yang lebih baik, latensi yang berkurang, atau gabungan dari ketiganya (sebagaimana pilihan dari pengembang).

Multi-GPU

Selain dua fitur di atas, rupanya DirectX 12 juga menghadirkan fitur menarik lain yang dinamakan explicit multi-GPU. Dengan fitur ini, user kini bisa meningkatkan performa sistem dengan menambahkan GPU lain ke dalam sistem. Menariknya, Explicit Multi-GPU ini memungkinkan pengguna untuk memasangkan video card AMD maupun NVIDIA dalam satu sistem yang sama.

Sebelumnya pada DirectX 11, fungsi multi-GPU sangatlah terbatas untuk bisa dilakukan. Hal tersebut dikarenakan API yang digunakan hanya memiliki sejumlah tools ataupun fitur untuk dapat mengaktifkan kemampuan multi-GPU ini. Sehingga pada akhirnya, hampir seluruh game menggunakan metode rendering klasik yang dikenal dengan AFR (Alternate Frame Rendering).

Alternate Frame Rendering

Metode ini  membagi beban kerja GPU untuk tiap frame. Contohnya, pada frame (n) akan dikerjakan oleh GPU 1 sementara GPU 2 tengah mengerjakan frame (n+1). Lebih mudahnya, jika menggunakan dual GPU, GPU pertama akan mengolah frame ganjil sedangkan GPU kedua akan mengolah frame genap. Sehingga terdapat lebih banyak waktu untuk masing-masing GPU dalam me-render objek.

Meski menjadi metode yang paling umum digunakan, AFR ternyata memiliki beberapa kelemahan ketika terjadi antrian panjang pada saat buffering. Hal ini akan memberikan dampak yang cukup signfikan pada performa saat bermain game, di mana user akan merasakan ketidaksinkronan antara pergerakan mouse dengan layar monitor. Istilah ini dikenal dengan sebutan “mouse lag.”

AFR

Metode AFR pada DirectX 11 juga ternyata memiliki keterbatasan, di mana untuk dapat merasakan performa yang stabil maka dibutuhkan video card yang benar-benar identik. Hal ini dikarenakan pada DirectX 11 tidak menyediakan manfaat yang nyata terhadap asymmetric configuration atau pengguna multi-GPU di mana GPU yang satu memiliki performa lebih tinggi dari GPU yang lainnya.

Untuk video card kelas high end, hal ini mungkin bukan masalah yang terlalu krusial. Sebagai contoh Anda menggunakan 2 buah video card AMD seri R9 390, namun salah satu video card tersebut Anda overclock. Walaupun terdapat konfigurasi yang berbeda antara video card tersebut dalam hal clock speed, tidak menjadi masalah karena keduanya memiliki frame rate yang tinggi. Lain halnya jika Anda menggunakan 2 video card dari kelas low end, semisal Radeon HD 6570, dimana salah satunya memiliki clock speed lebih tinggi atau menyandingkan Radeon HD 6570 dengan Radeon HD 6550D. Maka latency akan sangat terasa karena video card tersebut menghasilkan frame rate yang rendah.

Split Frame Rendering

Ini adalah metode yang digunakan pada DirectX 12. Metode ini membagi kerja antar GPU untuk menangani bagian tertentu dari display. Sebagai contoh, masing-masing GPU membagi kerja kiri dan kanan atau atas dan bawah pada display. Metode ini juga dikenal dengan nama scissor method.

SFR

Keunggulan dari metode ini adalah adanya load balancing, dimana antar GPU akan berkoordinasi untuk membagi beban kerja secara tepat sesuai objek yang dirender. Karena metode ini mengurangi jumlah pixel yang diproses oleh masing-masing GPU sehingga bottleneck pada pixel shading berkurang.

Walaupun begitu, tiap GPU tetap harus menyimpan di memory seluruh screen, sehingga bottleneck pada geometry shader dan memory shader tidak berkurang. Aktivitas penyimpanan di memory ini menjadi kelemahan metode ini dan membuat kinerja sistem melambat.

Meski begitu, masalah kapasitas memori ini lambat laun akan bisa teratasi mengingat video card saat ini sudah memiliki kapasitas video memory yang cukup besar dari mulai 4GB hingga 6GB atau lebih.

combined memory pools

Berikut ini adalah hasil benchmark untuk melihat kemampuan fitur Explicit Multi adapter di game Ashes of the singularity dengan menggunakan setting 4K, 4xMSAA serta High preset.

mgpu

1080p

1440p

4K

 

Seluruh data hasil pengujian merupakan hasil benchmark murni menggunakan aplikasi benchmark terkait dengan konfigurasi sistem seperti yang tercantum di bawah ini.

PLATFORM PENGUJIAN

  • Prosesor: Intel Core i7-6700K @4.0 GHz, Intel Corei7 5960X (3.0GHz)
  • Motherboard: GIGABYTE Z170X GAMING G1, GIGABYTE X99-UD4
  • Graphics Card: AMD Radeon R7 300/200, AMD Radeon R9 300/200
  • Memory: 4x 4GB Team DDR4 (@2400 MHz; 1.65 V), Corsair Vengeance (4x4GB) DDR4-2666
  • Storage: Team Dark 120 GB, 2TB Seagate Barracuda 7200.11
  • Power Supply: Xigmatek NRP 700W
  • CPU Cooler: Noctua NH-L9x65
  • Display: BenQ Monitor XL Gaming @1920 x 1080, (1440p 4K using VSR mode)
  • OS: Windows 10 Pro 64-bit
  • Driver: AMD 15.301_160205a-299187E Driver, NVIDIA 361.75 WHQL
Share on Facebook0Tweet about this on Twitter0Share on Google+0Share on Tumblr

Comments

comments

Add a Comment