Press ESC to close

Membedah Basemark Web — Arsitektur Benchmark GPU di Browser (Era WebGL)

Pada artikel sebelumnya kita sudah membuat mini benchmark WebGPU yang sepenuhnya berjalan di browser. Sekarang, kita akan mencoba membedah bagaimana website benchmark seperti Basemark Web bekerja di balik layar, dan bagaimana pendekatan mereka bisa menginspirasi generasi benchmark baru berbasis WebGPU.

Basemark Web: Benchmark GPU Langsung di Browser

Basemark Web Benchmark adalah salah satu alat pengujian performa browser paling populer. Tool ini banyak digunakan oleh media teknologi dan pengembang untuk mengukur performa rendering 2D/3D, kecepatan JavaScript, serta efisiensi engine browser modern.

Kalau dilihat sekilas, tampilannya tampak seperti benchmark GPU modern. Tapi setelah kita lihat lebih dalam melalui DevTools dan file JavaScript yang diload, ternyata engine Basemark Web sepenuhnya berbasis WebGL, bahkan belum menyentuh WebGPU sama sekali.

Suite Lengkap yang Dijalankan Basemark

Saat tombol “Run Benchmark” ditekan, situs ini memanggil puluhan file JavaScript modular. Daftarnya mencakup:

  • core_suite/ — berisi tes bitwise, operasi built-in JavaScript, dan evaluasi kinerja umum CPU.
  • graphics_suite/ — kumpulan tes GPU berbasis WebGL seperti geometry stress test, draw-call test, shader pipeline test, dan WebGL 2.0 test.
  • generic_suite/ — tes terhadap framework seperti AngularJS, Backbone.js, dan jQuery.
  • conformance_suite/ — memverifikasi kemampuan resize, event, dan DOM performance.

List javascript module yang tertangkap adalah sebagai berikut:

🔍 Lihat daftar lengkap file JS Basemark

Daftar file JS Basemark

Struktur file-nya terorganisir dengan baik dan modular, memungkinkan Basemark menjalankan banyak jenis pengujian sekaligus dari satu interface web.

Engine Grafis: WebGL + Three.js

Core engine grafis Basemark ada pada file GraphicsTestBase.js, yang di dalam komentarnya langsung menyebut dirinya sebagai “Base class for WebGL tests”. Di dalamnya digunakan library Three.js untuk mengelola kamera, texture, shader, dan pipeline rendering.

Beberapa bagian kodenya terlihat seperti ini:

this.offScreenTex = new THREE.WebGLRenderTarget(width, height);
this.renderer.render(this.scene, this.camera, this.renderTarget, true);
forceGLFlush(this.renderer.getContext());

Shader yang digunakan juga masih berbasis GLSL (OpenGL Shading Language), bukan WGSL milik WebGPU. Bahkan ada fungsi forceGLFlush() yang memanggil gl.readPixels() — cara klasik memastikan perintah GPU terselesaikan sebelum hasilnya diukur.

Selain itu, Basemark juga memuat three.min.js, ColladaLoader.js, dan berbagai shader pasca-proses (bloom, depth-of-field, deferred shading) — menandakan bahwa benchmark ini menguji pipeline grafis kompleks berbasis WebGL 1.0/2.0.

Mereka Menggunakan WebGL 1.0 dan 2.0, Bukan WebGPU

Hasil pemeriksaan pada file BasemarkWebEngine.js menunjukkan pemanggilan:

gl = e.getContext("webgl") || e.getContext("experimental-webgl");

dan tidak ditemukan satupun referensi ke navigator.gpu atau requestAdapter(). Artinya, Basemark Web saat ini memang masih sepenuhnya menggunakan WebGL.

Hal ini juga sejalan dengan informasi resmi dari Basemark Oy dan Tom’s Hardware yang menyebut bahwa Basemark Web 3.0 “utilizes WebGL 2.0 to measure graphical performance.”

Pelajaran dari Basemark untuk Era WebGPU

Meski belum menggunakan WebGPU, Basemark memberikan banyak insight berharga untuk kita yang ingin membangun benchmark GPU modern:

  1. Gunakan arsitektur modular: pisahkan antara engine dan test suite.
  2. Kelola rendering di offscreen texture sebelum ditampilkan ke layar.
  3. Pastikan setiap test punya waktu eksekusi dan skor terukur.
  4. Sertakan variasi workload: geometry, shader pipeline, draw-call, dan physics.

Semua konsep ini masih relevan, bahkan untuk WebGPU. Bedanya, nanti compute shader dan pipeline encoding bisa dilakukan langsung melalui API GPU tanpa lapisan abstraksi WebGL.

Dari WebGL Menuju WebGPU

Dengan mengetahui arsitektur Basemark, kita jadi bisa memetakan perbedaan besar antara WebGL dan WebGPU:

Aspek WebGL (Basemark) WebGPU (Modern)
Shader Language GLSL WGSL (WebGPU Shading Language)
Renderer API Three.js + WebGL context Native GPU device queue
Pipeline Implicit (driver-managed) Explicit (developer-managed)
Compute Capability Terbatas Full compute shader

Jadi, walau Basemark Web masih berbasis WebGL, struktur modularnya sudah sangat mirip dengan konsep pipeline architecture di WebGPU — hanya beda di tingkat kontrol API-nya.

Kesimpulan

Basemark Web bukan benchmark WebGPU, tapi justru contoh sempurna bagaimana benchmark generasi lama dibangun secara disiplin di atas WebGL dan Three.js. Dari situ kita bisa belajar banyak tentang rendering pipeline, arsitektur modular, dan teknik pengukuran performa GPU di browser.

Di Part 3 nanti, kita akan mulai membangun Geometry Stress Test WebGPU, menggunakan shader WGSL dan rendering pipeline modern. Stay tuned!


Catatan: Basemark Web Benchmark adalah produk resmi milik Basemark Oy. Analisis ini bersifat edukatif dan tidak berafiliasi dengan mereka.

Muhammad K Huda

A non exhausted blogger person within fullstack engineer (spicy food), open source religion, self-taught driver and maybe you know or don't like it. Simply says, Hello from Me!

Leave a Reply

Your email address will not be published. Required fields are marked *

Cek untuk notifikasi e-mail jika komentar dibalas.

This site uses Akismet to reduce spam. Learn how your comment data is processed.