3DMark API Overhead Test: Mengenal Draw Call

3DMark API Overhead Test yang dirilis 26 Maret kemarin memiliki sebuah keunikan dibanding pengujian 3DMark yang ada sebelumnya. Umumnya, 3DMark akan menghitung nilai framerate(frame per second/ FPS) dari sebuah simulasi game test-nya. Namun pengujian API Overhead ini memiliki perhitungan yang jauh berbeda, karena yang dihitung adalah jumlah draw call.
Apa itu Draw Call? Apa Hubungannya dengan API?

Secara sederhana, sebuah draw call akan terjadi ketika CPU ‘memberi perintah’ kepada GPU untuk ‘menggambar’ sesuatu pada layar. Pada sebuah game, sebuah frame bisa saja berisikan lebih dari ribuan draw call. Namun setiap draw call yang dibuat ini berpotensi untuk menyebabkan limitasi performa pada CPU, atau pada API game itu sendiri.
Pada sebuah game 3D, sebuah Graphics API(Application Programming Interface) seperti OpenGL/DirectX/Mantle akan mengatur bagaimana berbagai komponen sistem grafis akan berinteraksi, misalnya: ‘menjembatani’ komunikasi antara game dan CPU kepada GPU yang terdapat dalam sebuah sistem.
Adakalanya, meski CPU dan GPU sudah memiliki kemampuan processing yang baik, namun karena draw call yang dibuat sudah terlalu banyak untuk ditangani si API, sehingga komunikasi antara berbagai komponen grafis dari CPU dan GPU menjadi ‘kacau’. 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.
API modern seperti Mantle dan DirectX 12 memiliki overhead yang rendah dan dapat bekerja efisien, sehingga dapat memproses draw call lebih banyak untuk membuat performa game lebih tinggi.
3DMark API Overhead Test: Menguji Draw Call pada API

Kembali lagi pada fungsi 3DMark API Overhead Test untuk menguji API, test tersebut akan menghitung seberapa banyak draw call per detik yang bisa dihasilkan sebuah PC menggunakan API yang berbeda. Pengujian ini akan membuat sejumlah draw call yang jumlahnya akan ditingkatkan terus hingga framerate sistem turun ke angka di bawah 30 FPS. Apabila API yang digunakan tidak dapat menangani jumlah draw call yang banyak, ia akan berhenti di tengah jalan dan memiliki jumlah draw call per second yang rendah, sebaliknya jika API tersebut cukup efisien dan bisa mengalokasikan pekerjaan ke banyak CPU Core, tentu ia akan memiliki jumlah draw call lebih banyak.
Hasil pengujian ini akan bergantung pada API yang digunakan, dan juga seberapa kencang CPU yang terpasang pada sistem. Menurut dokumentasi Futuremark, beban GPU pada pengujian ini relatif rendah, karena pengujiannya dititik-beratkan untuk mencari draw call tertinggi yang bisa dihasilkan APi tertentu.
Draw Call lebih tinggi, Skenario Lebih Kompleks
Umumnya, sebuah game yang menggunakan jumlah draw call lebih tinggi, berpotensi menghasilkan sebuah scene yang lebih kompleks, walau ini akan lebih membebani API (dan kadang CPU). Untuk perbandingan, simak contoh di bawah ini:
*klik untuk memperbesar*
DirectX 11 API, 30000+ Draw Call per frame

DirectX 12 API, 300000+ Draw Call per frame

Kompleksitas kedua gambar di atas cukup jauh berbeda. Pada gambar atas, pada API DirectX 11 dengan sekitar 30.000 draw call per frame, anda bisa melihat sebagian bangunan dengan pandangan yang terbatas. Di bawah, pada API DirectX 12 dengan jumlah 300.000 draw call per frame(lebih dari 10 kali gambar atas), anda melihat jumlah bangunan yang sudah sedemikian banyaknya hingga menutupi layar.
Untuk info lebih lengkap mengenai feature test 3DMark API Overhead Test, anda dapat membaca ulasan lengkap kami pada halaman berikut ini.












