DirectX 12 Performance Analysis (2017) Part 1: Low-end PC + Integrated GPU, AMD A10-7850K APU

Pada sebagian besar pembahasan seputar PC gaming dan kartu grafis, ada satu istilah yang lumayan sering mengundang perbincangan hangat, yakni DirectX 12, sebuah Graphics API (Application Programming Interface) next-gen dari Microsoft.
Mengenal API
Secara sederhana, Graphics API(mari kita singkat sebagai API) adalah sebuah software yang mengijinkan para software developer untuk mengakses berbagai fungsi hardware(dalam kasus ini, VGA Card). Peran API dalam game 3D sangat krusial, karena software ini yang akan mengatur bagaimana berbagai komponen sistem grafis akan berinteraksi, misalnya: ‘menjembatani’ komunikasi antara game engine dengan GPU. DirectX dan OpenGL adalah beberapa macam contoh Graphics API yang cukup popular.
API Next-Gen: Manfaatkan CPU dan GPU Lebih Maksimal
Beberapa model API yang ada dulu(seperti DirectX 11 dan OpenGL 4.x) didesain dengan salah satu fokus utama yakni Compatibility, ia harus dapat bekerja pada hampir semua tipe hardware yang ada di industri. Sayangnya perkembangan Graphics API ini tidak selalu sejalan dengan perkembangan hardware. Seringkali banyak developer menemukan bahwa API yang lama ini memiliki overhead yang besar dan juga kurang memanfaatkan hardware yang ada. Limitasi performa dari API lama ini merupakan salah satu penyebab hardware PC tidak bisa dioptimalkan seperti game console(PS/Xbox,etc).

Tahun 2014 lalu, AMD merilis sebuah Graphics API buatan mereka, yang disebut Mantle(Baca pengujian kami seputar API Mantle di artikel ini). Berbeda dengan DirectX dan OpenGL, Mantle merupakan low-level API, yang berarti Mantle akan lebih ‘dekat’ dengan sisi hardware, dan membuat hardware tersebut bekerja dengan lebih optimal. Sebagai harga yang harus ‘dibayar’ atas optimalisasinya, Mantle hanya bisa berjalan pada VGA AMD yang menggunakan arsitektur GCN(Graphics Core Next).

Seperti yang terlihat di atas, AMD Mantle menunjukkan bahwa seringkali performa GPU high-end pada konfigurasi CPU tertentu(umumnya terjadi pada CPU kelas mainstream ke bawah) kurang optimal saat berjalan pada API DirectX 11, sehingga bottleneck-nya bukan pada CPU, tapi pada API game yang berjalan. API lama seringkali gagal ‘memeras’ performa PC karena penggunaan hardware-nya yang kurang maksimal.
Kemunculan Mantle ini yang akhirnya memicu dua API lagi untuk muncul, yakni DirectX 12 dan Vulkan. DirectX 12 diharap nantinya akan menggantkan DirectX 11, sedangkan Vulkan akan menggantikan OpenGL. Salah satu hal yang unik di sini adalah API Vulkan didesain dengan Mantle sebagai dasarnya.
Kedua API next-gen ini akan memiliki keunggulan API lama dari segi kompatibilitas, dimana mereka didesain untuk bisa berjalan pada banyak hardware, tidak hanya satu jenis saja. Dan tentu saja, baik DirectX 12 maupun Vulkan akan memiliki fokus pada performance.
DirectX 12: Pertama dikenalkan pada 3DMark API Overhead Test

Kurang lebih setahun dari perilisan Mantle, pada tahun 2015 lalu aplikasi yang menunjukkan potensi API DirectX 12 dirilis ke publik dengan adanya 3DMark API Overhead Test(Baca pengujiannya di sini). Secara singkat, Benchmark ini akan menguji kemampuan sebuah API dalam sistem dalam menangani ‘draw call’. Draw call sendiri adalah sebuah ‘perintah’ dari CPU ke GPU untuk ‘menggambar’ sesuatu ke layar. Sebuah game bisa saja membuat ribuan draw call ke CPU dalam sebuah frame, dan setiap draw call tersebut bisa menyebabkan limitasi performa pada CPU, maupun API yang digunakan.

Adakalanya, meski CPU dan GPU sudah memiliki kemampuan processing yang baik, namun karena draw call pada sebuah game engine yang dibuat sudah terlalu banyak untuk ditangani si API, komunikasi antara berbagai komponen grafis dari CPU dan GPU menjadi berantakan. Disini si GPU tidak mendapat ‘tugas menggambar’ dari CPU karena API sudah tidak bisa mengalokasikan berbagai draw call tersebut untuk diproses. Akibat dari kejadian ini adalah framerate yang tidak nyaman, meski CPU dan GPU yang digunakan sudah cukup powerful.
Tentunya, solusi dari masalah di atas adalah mengimplementasikan API yang memiliki performance baik, yang mampu menggunakan banyak CPU Core untuk mengefisienkan eksekusi dan akhirnya mengijinkan lebih banyak draw call untuk diproses. 3DMark API Overhead menunjukkan bahwa API DirectX 12 dapat lebih banyak memanfaatkan CPU Core, yang akhirnya bisa memicu performa tinggi pada sistem berbasis Multi-Core CPU dengan 4 Core atau lebih.


More CPU Cores = More Rendering Performance

Pemanfaatan CPU Cores dengan baik oleh API Next-gen seperti DX12 berefek ke kinerja sistem grafis yang lebih tinggi, Anda bisa lihat di atas pada pengujian 3DMark API Overhead, dimana jumlah draw call yang dibuat pada API DX11 pada konfigurasi CPU 4 Core 4 Thread(4C/4T) tidak jauh berbeda dari prosesor 2-Core 2-thread, sedangkan API DX12 menunjukkan peningkatan jumlah draw call pada konfgurasi hingga 6 Core 6 Thread.
Perhatikan juga bahwa pada jumlah CPU Core yang sama, API DX12 dapat menangani 14-17x jumlah draw call dari yang bisa ditangani API DX11.
Performa Ekstra Berkat Pemanfaatan Hardware dengan Maksimal
Kegunaan API baru seperti DirectX 12 adalah memeras performa hardware semaksimal mungkin, dan ini dilakukan lewat banyak hal, namun yang paling utama adalah pembagian workload ke banyak core yang dimiliki CPU, seperti yang terlihat di bawah ini :


Berikutnya, DirectX 12 akan mencoba mengefisienkan proses rendering pada GPU dengan mengerjakan beberapa pekerjaan sekaligus, seperti yang terlihat di sini:


Pengujian: DirectX 11 dan DirectX 12 pada Game Modern Terbaru
Sepanjang tahun 2016, game-game dengan dukungan DirectX 12 sudah mulai bermunculan. Walau menjanjikan performa ekstra, seringkali mode renderer DX12 pada game-game tersebut masih memiliki beberapa bugs, dan masih banyak menerima patch/update, membuat pengujian menyeluruh menjadi agak sulit dilakukan. Nah, pada awal tahun 2017 ini, kami mencoba mengumpulkan beberapa titel game yang memiliki dukungan DirectX 12, dan mencoba melakukan analisis performa pada beberapa konfigurasi PC, mulai dari PC murah, kelas menengah, hingga kelas high-end.
List Game
Game-game tersebut antara lain (akan ditambahkan jika memungkinkan pada artikel part berikutnya):
- Ashes of the Singularity (GOG version)
- Civilization VI
- Deus Ex Mankind Divided
- HITMAN
- Rise of the Tomb Raider
Pengujian game-game ini dilakukan menggunakan internal benchmark tool-nya jika ada, dan sebagai tambahan kami akan menggunakan tool OCAT untuk mengambil data: FPS Rata-rata, dan 1% Minimum FPS( data framerate terburuk, a.k.a 99th percentile frametime).

Tambahan: Sekilas mengenai FPS dan Frame Time
Ada beberapa skenario pengujian dalam gaming yang menghasilkan variasi framerate cukup tinggi yang tidak bisa terdeteksi oleh penghitungan average FPS(frame per second) saja. Kejadian ini membuat kami memutuskan untuk melihat data Frametime log. Frametime adalah waktu dimana 1 (satu) frame akan di-render oleh sistem, biasanya dalam satuan milliseconds (ms). Selama ini kami menggunakan FPS (Frame per second) sebagai unit pengukuran untuk mempermudah perbandingan. Namun, ada kalanya pengukuran frame time ini bisa lebih penting, karena bisa memberi kami data untuk melihat seberapa jauh variance/perbedaan dari waktu render masing-masing frame.
Umumnya, waktu render yang jauh berbeda antar frame, misal frame pertama dirender pada 16.7 ms, lalu frame kedua pada 40 ms, lalu frame ketiga pada 16.7 ms, akan membuat kita merasa adanya ‘stuttering’ dalam game.
Sebagai perbandingan, inilah konversi FPS ke Frametime:
(dengan rumus FPS = 1000/Frametime, frametime dalam satuan ms. Berlaku sebaliknya, Frametime = 1000/FPS )
- 120 FPS = 8.3 ms (1000/120 = 8.3)
- 60 FPS = 16.7 ms (1000/60 = 16.7)
- 30 fps = 33.3 ms (1000/30 = 33.3)
- 20 fps = 50 ms (1000/20 = 50)
Ini berarti makin KECIL frametime, makin BESAR FPS-nya, dan berlaku sebaliknya.
Setelah menganalisa lebih lanjut, kami menemukan bahwa ada juga cara mudah untuk menentukan apakah sebuah sistem PC mengalami ‘stutter’ yang parah atau tidak. Salah satunya adalah dengan menganalisa frametime log dari beberapa tool seperti OCAT, Tool sederhana ini dapat menghitung secara otomatis bagian 1% frame yang ‘terburuk’ dari sekumpulan data frame time (a.k.a 99th percentile).
Tentunya, PC yang nilai ‘1% minimum FPS’-nya jauh lebih rendah dari FPS rata-rata, pastinya akan mengalami ketidaknyamanan berupa berbagai kejadian ‘stutter’ dalam game.
[caption id="attachment_12286" align="aligncenter" width="500"]
Spesifikasi PC
Pada artikel bagian ini, kami akan menggunakan PC low-end, berbasis integrated graphics(IGP) dari AMD yang ada pada APU A10-7850K.

Berikut spesifikasi lengkapnya:
- Prosesor: AMD APU A10-7850K
- Motherboard: Gigabyte F2A88XN-Wifi
- RAM: G.Skill TridentX DDR3-2400CL11
- VGA: Radeon R7 IGP
- SSD: Samsung 850 EVO 500GB
- Casing & PSU: Coolermaster Mini 110, 200W PSU
- OS: Windows 10 64-bit Anniversary Edition Build 14393
- Driver VGA: Radeon Crimson 16.12.2 Relive
Detail info-nya bisa Anda lihat di screenshot berikut ini:

Kami menguji 2(dua) setting, yang pertama adalah setting default( IGP di 720Mhz), sedangkan yang kedua kami meng-overclock IGP-nya menjadi 900Mhz. Kedua setup akan menggunakan RAM yang berjalan di DDR3-2400 CL11-13-13-35, 2x4GB Dual-Channel, dengan IGP Share Memory di 2GB.
Performa Sintetis – 3DMark
3DMark Fire Strike
Berikut ini kami menguji 3DMark Fire Strike dari IGP R7 untuk memberikan gambaran seberapa kencang GPU ini :
*klik untuk perbesar*
Radeon R7 IGP Default – 1670 Total Score, 1829 Graphics Score

Radeon R7 IGP OC @ 900Mhz – 1790 Total Score, 1975 Graphics Score

Terlihat dari pengujian Fire Strike, bahwa IGP pada AMD APU A10-7850K(Radeon R7 dengan 512 shader unit), sudah cukup lumayan kencang dengan mendapai angka 1600an saat default, dan hampir 1800 saat di-overclock, walau memang belum mendekati performa VGA kelas mainstream seperti Radeon RX 460 atau GeForce GTX 1050.
Perlu dicatat, bahwa nilai sekitar 1700-an 3DMark Fire Strike ini sendiri kurang lebih sama dengan nilai yang dicapai oleh Intel Iris Pro Graphics 6200 pada Intel Broadwell i7-5775C, yang merupakan satu dari beberapa IGP terkuat di dunia saat artikel ini rilis (IGP terkuat saat artikel ini rilis adalah Intel Iris Pro 580, dengan nilai 3DMark Fire Strike 1900-an). Berarti, kartu grafis terintegrasi pada platform ini sudah cukup untuk mewakili konfigurasi IGP-IGP kencang di luar sana.
3DMark API Overhead
(R7 IGP @ Default, 720Mhz)


Kami memulai pengujian dengan melihat 3DMark API Overhead test, dan pada pengujian sintetis tersebut memang API DirectX 12 sanggup memberikan draw call performance sekitar 5-6x lebih banyak dari DirectX 11.
Mari simak performa gaming DX11 & DX12 sistem tersebut di halaman berikutnya!
- Overview, Mengenal API DX12, Testbed
- Performance Test - AoTS, Civilization VI, Deus Ex
- Performance Test - Hitman & Rise of The Tomb Raider