Dalam dunia pengembangan sistem operasi, momen paling memuaskan adalah saat kita berhasil menampilkan sesuatu di layar. Namun, cara kita mencapai hasil tersebut telah berubah drastis. Di era BIOS Legacy, kita terjebak dalam arsitektur kartu grafis tahun 1987 (VGA standar). Di era UEFI, kita menggunakan GOP (Graphics Output Protocol) yang memungkinkan RezaOS tampil dengan resolusi tinggi sejak detik pertama.
Artikel ini akan membedah mengapa teknik “menggambar” di UEFI jauh lebih superior dibandingkan teknik kuno BIOS.
1. Era BIOS: Kegelapan Register VGA dan VESA
Pada BIOS Legacy, untuk menampilkan grafik, kita memiliki dua pilihan yang sama-sama sulit:
- VGA Standar (Mode 13h): Ini adalah mode paling populer namun sangat terbatas. Resolusinya hanya 320×200 pixel dengan 256 warna. Memori videonya dipetakan ke alamat 0xA0000. Sangat sempit dan tidak cukup untuk antarmuka modern.
- VESA BIOS Extension (VBE): Jika ingin resolusi lebih tinggi (seperti 800×600 atau 1024×768), kita harus menggunakan VESA. Masalahnya, VESA sangat bergantung pada Real Mode dan sering kali membutuhkan teknik “Memory Banking” yang lambat dan rumit.
Masalah Utama:
- Register-Poking: Kita harus mengirim data ke port hardware (seperti
0x3C0) secara manual. Satu kesalahan kecil bisa membuat layar berkedip atau sistem hang. - Ketergantungan Hardware: Driver grafis di BIOS sering kali tidak kompatibel antar vendor kartu grafis.
2. Era UEFI: Graphics Output Protocol (GOP)
UEFI memperkenalkan GOP sebagai pengganti VESA dan VGA. GOP bukan sekadar cara menggambar, melainkan sebuah Protocol (seperti yang dibahas di Bab 5) yang menyediakan abstraksi tingkat tinggi atas kartu grafis.
Keunggulan GOP:
- Akses Langsung ke Memori (Linear Framebuffer): GOP memberikan kita alamat memori fisik yang luas dan kontinu. Kita bisa menggambar pixel hanya dengan mengisi nilai warna ke alamat tersebut.
- Resolusi Native: GOP secara otomatis mendeteksi resolusi terbaik yang didukung oleh monitor (misalnya Full HD 1920×1080 atau 4K).
- Independensi Hardware: Selama kartu grafis Anda memiliki driver UEFI (yang sekarang wajib ada pada semua kartu grafis sejak 2013), RezaOS akan bisa menggambar di sana tanpa perlu tahu merek hardware-nya.
3. Konsep Linear Framebuffer (LFB)
Inilah rahasia di balik performa grafis RezaOS. Linear Framebuffer adalah sebuah blok memori raksasa di mana setiap titik di layar diwakili oleh 4 byte di RAM (untuk mode 32-bit).
Struktur Pixel di UEFI:
Umumnya, UEFI menggunakan format BGR (Blue-Green-Red-Reserved).
- Byte 0: Intensitas warna Biru (0-255)
- Byte 1: Intensitas warna Hijau (0-255)
- Byte 2: Intensitas warna Merah (0-255)
- Byte 3: Reserved (Biasanya digunakan untuk Alpha/Transparansi)
Jika kita ingin mewarnai satu titik di layar menjadi biru, kita cukup menulis nilai 0xFF000000 ke alamat framebuffer tersebut. Tidak ada lagi interupsi, tidak ada lagi pengisian register yang melelahkan.
4. Tabel Perbandingan Teknis: BIOS vs UEFI
| Fitur | BIOS (VGA/VESA) | UEFI (GOP) |
| Metode Akses | Register IO & Interrupt | Memory Mapped IO (MMIO) |
| Resolusi Standar | 320×200 (VGA) | Up to 4K / Native Monitor |
| Model Memori | Banked (Terfragmentasi) | Linear (Satu blok kontinu) |
| Kemudahan Code | Sulit (Butuh Assembly) | Mudah (C Pointer) |
| Warna | Palet 8-bit (256 warna) | True Color 32-bit |
| Inisialisasi | Harus switch mode manual | Sudah siap sejak awal |
5. Implementasi pada RezaOS: Membangun Splash Screen
Dalam pengembangan RezaOS, penggunaan GOP memudahkan kita untuk membuat antarmuka yang elegan:
- Dapatkan Address: Kita minta alamat
FrameBufferBasedari protokol GOP. - Gambar Latar Belakang: Kita lakukan looping pada seluruh memori framebuffer untuk mengisi warna hitam (seperti pada kode yang kita bahas sebelumnya).
- Render Identitas: Kita bisa menggambar kotak (loading bar) atau bahkan menampilkan bitmap/logo hanya dengan menghitung koordinat (x, y) menjadi indeks array memori.
Rumus Sederhana Indeks Pixel:
Indeks = (y * PixelsPerScanLine) + x
Dengan rumus di atas, kita memiliki kendali penuh atas setiap pixel di layar.
Kesimpulan
GOP telah mendemokrasi pengembangan sistem operasi. Dulu, hanya pengembang tingkat tinggi yang bisa membuat tampilan grafis yang indah saat booting. Sekarang, dengan RezaOS dan teknologi UEFI, kita bisa menghadirkan antarmuka berkualitas tinggi dengan kode C yang bersih dan efisien. Layar hitam BIOS yang kaku telah digantikan oleh kanvas digital yang luas dan tak terbatas.
Next Step: Pada Bab 8, kita akan membahas tentang Boot Services vs Runtime Services. Kita akan mempelajari perbedaan antara layanan yang membantu kita saat booting dan layanan yang tetap setia menemani OS bahkan setelah kernel berjalan sepenuhnya.
