Chromium'u Prangalarından Kurtarmak: Bölüm 3 - Native Wayland ve GPU Hızlandırma

Serimizin ilk iki bölümünde tarayıcıyı Firejail ile hapsetmiş ve ardından web dünyasına bıraktığı parmak izlerini silmiştik. Bu kadar fazla güvenlik kısıtlaması, şifreleme ve karantina genellikle sistemleri hantallaştırır. Ancak doğru Linux mimarisiyle, güvenlik ve performans birbirinin düşmanı olmak zorunda değildir.

Bu son bölümde, ağırlaşmasını beklediğimiz bu tarayıcıyı, XWayland yükünden kurtarıp ekran kartının (GPU) tam gücüyle donanım hızlandırmalı bir canavara nasıl dönüştürdüğümüzü inceleyeceğiz.

XWayland’i Aradan Çıkarmak (Native Wayland)

Wayland kullanan birçok Linux sisteminde (özellikle Hyprland gibi modern ortamlarda), Chromium tabanlı tarayıcılar arka planda gizlice eski X11 uyumluluk katmanı olan XWayland üzerinden çalışır. Bu durum, kaydırma (scrolling) takılmalarına, font bulanıklıklarına ve pil tüketimine neden olur.

Tarayıcıyı kendi ana dilinde (Native Wayland) konuşturmak için /persist/nixos-config/modules/desktop/apps.nix konfigürasyonumda şu parametreleri zorunlu tutuyorum:

  commandLineArgs = [
    "--ozone-platform-hint=wayland"
    "--ozone-platform=wayland"
    "--enable-features=UseOzonePlatform,WaylandWindowDecorations"
  ];

Bu flag’ler sayesinde tarayıcı, X11 pencerelerine ihtiyaç duymadan doğrudan Wayland compositor’ı ile iletişime geçer. Pencereler çok daha keskin çizilir ve yırtılma (tearing) problemleri tarih olur.

İşlemciyi (CPU) Rahatlatmak: GPU Rasterization ve Zero-Copy

Modern web sayfaları inanılmaz derecede ağırdır. Yüzlerce DOM elemanını boyamak (rasterization) CPU’yu gereksiz yere yorar. Chromium’un elini korkak alıştırmamasını ve tüm boyama işini Ekran Kartına (GPU) devretmesini sağlamak zorundayız.

Yine apps.nix içindeki listeye şu üçlüyü ekliyoruz:

    "--ignore-gpu-blocklist"
    "--enable-gpu-rasterization"
    "--enable-zero-copy"

YouTube ve Video Hızlandırma (VA-API)

Bir sistem mimarı için, YouTube’da 4K video izlerken CPU fanının bağırması kabul edilemez bir mimari kusurdur. Videoların donanımsal olarak ekran kartı içindeki Media Engine tarafından çözülmesi (Hardware Decoding) gerekir.

NixOS yapılandırmamda AMD Radeon ekran kartım için bu işi şöyle çözüyorum:

  1. Önce ortam değişkenleriyle (Environment Variables) sisteme ekran kartı sürücümü bildiriyorum:
  environment.sessionVariables = {
    LIBVA_DRIVER_NAME = "radeonsi";
  };
  1. Ardından Chromium’a VA-API kullanmasını emrediyorum:
  commandLineArgs = [
    "--enable-features=VaapiVideoDecodeLinuxGL" 
    # Not: Çok yeni Chromium sürümlerinde bu flag AcceleratedVideoDecodeLinuxGL olarak geçebilir.
  ];

Bu yapılandırmalar bittiğinde tarayıcının adres çubuğuna chrome://gpu yazdığınızda “Video Decode: Hardware accelerated” yeşil yazısını görmelisiniz. Bu yazı, CPU’nuzun artık özgür olduğu anlamına gelir.

Serinin Sonu

Ungoogled-chromium’u alıp, Firejail ile Sandbox’a tıktığımız, parmak izi korumalarıyla hayalete dönüştürdüğümüz ve son olarak GPU gücüyle şaha kaldırdığımız bu yapılandırma, “Masaüstü Linux” deneyiminin neden eşsiz olduğunu kanıtlıyor. Güvenlik ve hızın aynı anda var olabileceği bir sistem inşa etmek elimizde.


Önceki Bölümler:

Referanslar ve İleri Okuma:

  1. Arch Linux Wiki - Chromium Hardware Acceleration
  2. Wayland Ozone Platform Flags in Chromium
  3. Zero-Copy Rasterization Performance Details
EOF.