WebGPU tarayıcı desteği üretim ortamı için yeterli mi, yoksa hâlâ deney aşamasında mı diye soruyorsan, kısa cevap: platforma göre değişir. Safari 26 ile birlikte Apple ekosistemi WebGPU'yu resmen açtı, Chrome ve Edge yıllardır varsayılan olarak destekliyor, Firefox ise yalnızca belirli platformlarda varsayılan açık. Bu yazıda 4 Aralık 2025 itibarıyla gerçek destek tablosunu, WebGL'den mimari farkını, ilk compute shader örneğini ve WebGPU'ya ne zaman güvenmemen gerektiğini kaynaklı şekilde anlatıyorum.
💡 Pro Tip: Üretime WebGPU ile çıkmadan önce navigator.gpu kontrolünü her zaman bir WebGL fallback'iyle birlikte yaz — Safari masaüstünde bile destek koşullu (yalnız macOS 26 Tahoe'da varsayılan açık), bu yüzden feature detection olmadan "destekleniyor" varsaymak üretimde beyaz ekrana çıkar.İçindekiler
- Destek Tablosu ve Platform Koşulları (4 Aralık 2025)
- Masaüstü ve Mobil Tarayıcı Matrisi
- Safari'nin "Kısmi Destek" Notu Ne Anlama Geliyor
- WebGPU vs WebGL: Mimari Fark
- Neden WebGL Artık Gelişmiyor
- Compute Shader'lar: WebGL'de Olmayan Yetenek
- Karşılaştırma Tablosu
- Fallback Stratejisi: Firefox ve Eski Cihazlar
- navigator.gpu Kontrolü
- WebGL'e Düşüş Deseni
- İlk Compute Shader: Pipeline Kurulumu
- Adapter ve Device Alma
- Bind Group, Pipeline ve Dispatch
- Mobil Safari ve Chrome'da Termal/Pil Gerçeği
- Ne Zaman Kullanmamalı: Karar Kriterleri
- Hangi Framework'ler Zaten WebGPU Kullanıyor
- SSS
- WebGPU hangi tarayıcılarda destekleniyor?
- WebGPU üretim projelerinde kullanılabilir mi?
- WebGL fallback'ini ne kadar süre tutmalıyım?
- WebGPU ile WebGL'i aynı anda kullanabilir miyim?
- Safari'de WebGPU neden hâlâ "kısmi destek" olarak işaretli?
- Güncelleme (Eylül 2026)
- Sonuç
- Kaynaklar
Destek Tablosu ve Platform Koşulları (4 Aralık 2025)
WebGPU'nun spesifikasyon durumu W3C Candidate Recommendation Draft — w3.org yayın geçmişinde bu tarihten hemen önceki sürüm 26 Kasım 2025 tarihli ve aynı statüde. caniuse.com/webgpu verisine göre tarayıcı matrisi platform başına ciddi farklılık gösteriyor; aşağıdaki tablo 4 Aralık 2025'te geçerli olan durumu özetliyor.
Masaüstü ve Mobil Tarayıcı Matrisi
Tarayıcı | Durum (4 Aralık 2025) | Not |
|---|---|---|
Chrome / Edge | Destekleniyor (113. sürümden beri) | Varsayılan açık; Chrome'da Linux'ta değil (caniuse #5) — Edge satırında caniuse notu yok |
Safari (masaüstü) | Kısmi destek (26.0–26.1) | Yalnız macOS 26 Tahoe'da varsayılan açık |
Safari (iOS) | Destekleniyor (26.0'dan beri) | Masaüstünden farklı olarak tam destek |
Firefox | Kısmi destek (141. sürümden beri) | Windows'ta varsayılan açık (145+ ile macOS 26 Tahoe/Apple Silicon dahil); diğerlerinde dom.webgpu.enabled |
Opera | Destekleniyor (99. sürümden beri) | Chromium tabanlı; Linux'ta varsayılan değil (caniuse #5) |
Kaynak: caniuse.com/webgpu tablosu ve sürüm notları.
Safari'nin "Kısmi Destek" Notu Ne Anlama Geliyor
caniuse'un Safari satırındaki "Partial support" ibaresi rastgele bir uyarı değil, spesifik bir koşula bağlı: caniuse'un kendi notu şöyle diyor — "Partial support refers to only being enabled by default on macOS 26 Tahoe or later." Yani Safari 26.0 kurulu olsa bile, işletim sistemi macOS 26 Tahoe'dan eskiyse WebGPU varsayılan olarak kapalı kalabiliyor. Bu, masaüstü Safari kullanıcı tabanını segmentlere ayırman gerektiği anlamına geliyor: aynı Safari sürüm numarası, farklı işletim sistemi sürümünde farklı davranış sergiliyor.
Tahoe koşulunun kaynağı caniuse'un #7 notu; WebKit duyurusu yalnız sürümü doğruluyor: "WebKit for Safari 26.0 adds support for WebGPU" başlığı altında, WebGPU'nun Safari Technology Preview'da bir yıldan uzun süredir aktif olduğunu ve şimdi macOS, iOS, iPadOS ve visionOS için Safari 26.0 ile birlikte gönderildiğini belirtiyor.
WebGPU vs WebGL: Mimari Fark
WebGPU, WebGL'in devamı değil, tamamen yeni bir nesil API. İkisi arasındaki fark yalnızca performans değil, hedef aldıkları native GPU katmanı da farklı.
Neden WebGL Artık Gelişmiyor
MDN'in WebGPU_API sayfası bu durumu açıkça özetliyor: "There are no more updates planned to OpenGL (and therefore WebGL), so it won't get any of these new features. WebGPU on the other hand will have new features added to it going forwards." Yani WebGL, dayandığı OpenGL ES 2.0 ailesiyle birlikte donmuş durumda; yeni GPU yeteneklerinden (compute, modern bellek modeli, düşük seviye kontrol) faydalanamıyor. WebGPU ise Direct3D 12, Apple Metal ve Vulkan gibi modern native GPU API'lerine karşılık gelecek şekilde tasarlandı.
Compute Shader'lar: WebGL'de Olmayan Yetenek
MDN'in tanımıyla WebGPU "hem grafik render'ı destekliyor hem de GPGPU hesaplamaları için birinci sınıf destek sunuyor" ("it supports graphic rendering, but also has first-class support for GPGPU computations"). WebKit'in Safari 26.0 duyurusu bunu somutlaştırıyor: "Additionally, it adds compute shaders, which allow general purpose computations on the GPU, something not previously possible with WebGL." Pratikte bu, görüntü işleme, fizik simülasyonu veya küçük ölçekli makine öğrenmesi çıkarımı gibi işleri artık tarayıcıda, WebGL'de mümkün olmayan bir şekilde GPU'ya devredebileceğin anlamına geliyor.
Karşılaştırma Tablosu
Özellik | WebGL | WebGPU |
|---|---|---|
Dayandığı native katman | OpenGL ES 2.0 ailesi | Metal / Direct3D 12 / Vulkan'a eşlenir |
Compute shader desteği | Yok | Var (WGSL ile) |
Gelecek geliştirme | Planlanmıyor (dondu) | Aktif geliştiriliyor |
Shader dili | GLSL ES | WGSL |
Safari'deki konumu | Kısıtlı, eski nesil | Yeni sitelerde önerilen ("supersedes WebGL") |
WebKit'in kendi ifadesiyle, WebGPU "macOS, iOS, iPadOS ve visionOS'ta WebGL'in yerini alıyor ve yeni siteler ile web uygulamaları için tercih ediliyor" ("WebGPU supersedes WebGL on macOS, iOS, iPadOS, and visionOS and is preferred for new sites and web apps"). Bu, Apple'ın kendi platformunda yön verdiği net bir sinyal — ama bu sinyalin diğer tarayıcılarda (özellikle Firefox'ta) aynı hızda karşılık bulmadığını bir sonraki bölümde göreceksin.
Fallback Stratejisi: Firefox ve Eski Cihazlar
Firefox kullanıcı tabanını göz ardı edemiyorsan (ve çoğu üretim sitesi edemez), WebGPU'yu tek yol olarak kodlamak riskli. caniuse verisine göre Firefox'ta destek platforma bağlı: 141. sürümden beri Windows'ta varsayılan açık, 145. sürümden itibaren buna macOS 26 Tahoe (Apple Silicon) da eklendi; Linux ve eski macOS'ta ise dom.webgpu.enabled bayrağı gerekiyor. Yani aynı Firefox sürümü, işletim sistemine göre WebGPU'yu gösteriyor ya da göstermiyor.
navigator.gpu Kontrolü
Feature detection, WebGPU projelerinde opsiyonel değil, zorunlu bir ilk adım:
js
1async function initGpu() {2 if (!("gpu" in navigator)) {3 console.warn("WebGPU desteklenmiyor, WebGL fallback devrede.");4 return null;5 }6 7 const adapter = await navigator.gpu.requestAdapter();8 if (!adapter) {9 console.warn("Uygun GPU adaptörü bulunamadı, WebGL fallback devrede.");10 return null;11 }12 13 return await adapter.requestDevice();14}Bu desen üç farklı başarısızlık noktasını ayrı ayrı ele alıyor: API hiç yok (navigator.gpu tanımsız — bayrak gerektiren Firefox platformları veya macOS Tahoe öncesi Safari), API var ama adaptör bulunamadı (eski/entegre GPU), ya da adaptör var ama cihaz isteği reddedildi. Her üçü de aynı fallback yoluna düşmeli.
WebGL'e Düşüş Deseni
Pratikte en sağlam yaklaşım, render katmanını soyutlayıp hangi backend'in kullanılacağına çalışma zamanında karar vermek:
js
1const device = await initGpu();2 3const renderer = device4 ? createWebGpuRenderer(device)5 : createWebGlRenderer(canvas);6 7renderer.draw(scene);Bu satırlarda kritik nokta şu: createWebGpuRenderer ve createWebGlRenderer aynı draw(scene) arayüzünü paylaşmalı. Aksi halde iki backend'i eşzamanlı büyütmek zorunda kalırsın ve bakım maliyeti katlanır. Three.js ve Babylon.js gibi framework'lerin WebGPU render'ını "opsiyonel backend" olarak sunmasının nedeni tam olarak bu — sahne grafiği aynı kalıyor, yalnızca render arka ucu değişiyor.
İlk Compute Shader: Pipeline Kurulumu
WebGPU'nun asıl farkı — WebGL'de mümkün olmayan compute shader'ları — küçük bir örnekle görelim: bir sayı dizisindeki her elemanı GPU'da ikiye katlayan minimal bir pipeline.
Adapter ve Device Alma
Her WebGPU programı aynı üç adımla başlar: adaptör iste, cihaz iste, shader modülünü derle.
js
1const adapter = await navigator.gpu.requestAdapter();2const device = await adapter.requestDevice();3 4const shaderModule = device.createShaderModule({5 code: computeShaderCode, // aşağıdaki WGSL kodu6});requestAdapter() fiziksel GPU'ya bir tutamaç verir, requestDevice() ise o adaptör üzerinden gerçek komutları gönderebileceğin mantıksal cihazı açar. Bu API yüzeyi (GPUDevice, GPUShaderModule) MDN'in WebGPU_API referansında tanımlanan isimlerle birebir eşleşiyor.
Bind Group, Pipeline ve Dispatch
Önce GPU'nun anlayacağı dilde, WGSL (WebGPU Shading Language) ile shader'ı yazıyoruz:
wgsl
1@group(0) @binding(0) var<storage, read_write> data: array<f32>;2 3@compute @workgroup_size(64)4fn main(@builtin(global_invocation_id) id: vec3<u32>) {5 data[id.x] = data[id.x] * 2.0;6}Sonra bu shader'ı bir compute pipeline'a bağlıyoruz — MDN'in GPUDevice.createComputePipeline() referans örneğindeki adımları takip ederek:
js
1const bindGroupLayout = device.createBindGroupLayout({2 entries: [3 {4 binding: 0,5 visibility: GPUShaderStage.COMPUTE,6 buffer: { type: "storage" },7 },8 ],9});10 11const computePipeline = device.createComputePipeline({12 layout: device.createPipelineLayout({13 bindGroupLayouts: [bindGroupLayout],14 }),15 compute: {16 module: shaderModule,17 entryPoint: "main",18 },19});GPUShaderStage.COMPUTE görünürlüğü, bu buffer'ın yalnızca compute aşamasında erişilebilir olduğunu belirtiyor; buffer: { type: 'storage' } ise shader'ın var<storage, read_write> ile bildirdiği bellek türüyle eşleşiyor. Komutu gönderip GPU'yu çalıştırmak için son adım computePass.dispatchWorkgroups() çağrısıdır — dizinin boyutuna göre kaç workgroup tetikleneceğini belirler.
Mobil Safari ve Chrome'da Termal/Pil Gerçeği
Bu konuda net olmak gerekiyor: Apple ve Google, WebGPU'nun mobilde spesifik bir pil tüketimi veya termal artış rakamı için resmi bir ölçüm yayınlamadı. Elimizdeki tek dayanak, genel GPU programlama prensibi: compute shader'lar GPU'yu CPU'dan daha yoğun ve sürekli meşgul ettiği için, uzun süreli çalışan GPU iş yükleri (özellikle mobilde) ısı ve pil tüketimini artırma potansiyeli taşır — bu, WebGPU'ya özgü değil, native Metal/Vulkan compute iş yüklerinde de geçerli olan genel bir GPU programlama gerçeği.
Somut rakam yerine somut tavsiye: mobil Safari veya Chrome for Android'de WebGPU tabanlı bir özelliği üretime almadan önce gerçek cihazda (simülatör değil) uzun süreli bir oturum test et, cihaz ısınmasını ve pil yüzdesini gözlemle, ve iş yükünü mümkünse kullanıcı etkileşimiyle sınırlı tut (sürekli arka planda çalışan bir compute döngüsü yerine, talep üzerine tetiklenen kısa işler tercih et).
Ne Zaman Kullanmamalı: Karar Kriterleri
Destek tablosu ve fallback deseni netleştikten sonra, gerçek karar şu üç soruya indirgenebiliyor:
- Kullanıcı tabanının önemli bir kısmı Firefox mu? Firefox'ta WebGPU yalnızca Windows'ta (145+ ile ayrıca macOS 26 Tahoe/Apple Silicon'da) varsayılan açık olduğu için, Linux ya da eski macOS ağırlıklı bir Firefox kitlesinde WebGPU'yu tek yol yapmak riskli — bu durumda WebGL birincil yol, WebGPU "varsa kullan" iyileştirmesi olmalı.
- Masaüstü Safari kullanıcıların işletim sistemi sürümü bilinmiyor mu? macOS 26 Tahoe öncesi sürümlerde WebGPU kapalı kalabiliyor; analytics'inde macOS sürüm dağılımı yoksa, masaüstü Safari için WebGPU'yu opsiyonel bir yol olarak tasarla.
- Özellik gerçekten compute shader mı gerektiriyor? Yalnızca 2D/3D render yapıyorsan ve WebGL zaten yetiyorsa, WebGPU'ya geçmenin karmaşıklık/kazanç oranı düşük olabilir — WebGPU'nun asıl farkı GPGPU/compute yeteneğinde.
Bu üç kriterden ikisi "hayır" ise, WebGPU'yu progressive enhancement olarak ele almak (WebGL varsayılan, WebGPU tespit edilirse devreye giren bir iyileştirme) en güvenli yol.
Hangi Framework'ler Zaten WebGPU Kullanıyor
Kendi WebGPU pipeline'ını sıfırdan yazmak zorunda değilsin. WebKit'in Safari 26.0 duyurusu, WebGPU'yu üretimde zaten kullanan framework'leri şöyle sıralıyor: Babylon.js, Three.js, Unity, PlayCanvas, Transformers.js ve ONNX Runtime — "Currently, Babylon.js, Three.js, Unity, PlayCanvas, Transformers.js, ONNX Runtime and others all work great in Safari 26.0." Bu framework'lerden Three.js ve Babylon.js, WebGPU mevcut değilse otomatik olarak WebGL'e düşen bir backend soyutlaması sunuyor; yani yukarıdaki fallback desenini elle yazmak yerine framework'ün kendi backend seçimine güvenebilirsin.
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
Üretime WebGPU ile çıkmadan önce gözden geçirmen gereken kısa bir kontrol listesi hazırladım — her satır bu yazıda anlatılan bir kaynağa dayanıyor ve kopyala-yapıştır şeklinde kullanılabilir.
SSS
WebGPU hangi tarayıcılarda destekleniyor?
4 Aralık 2025 itibarıyla Chrome ve Edge 113. sürümden beri varsayılan olarak destekliyor, Opera 99. sürümden beri destekliyor, Safari iOS'ta 26.0'dan beri tam destekli, Safari masaüstünde 26.0–26.1 arasında yalnızca macOS 26 Tahoe'da varsayılan açık "kısmi destek" durumunda, Firefox ise 141. sürümden beri Windows'ta (145+ ile ayrıca macOS 26 Tahoe/Apple Silicon'da) varsayılan açık, diğer platformlarda dom.webgpu.enabled bayrağı arkasında.
WebGPU üretim projelerinde kullanılabilir mi?
Kullanılabilir, ama koşullu: Chrome/Edge/Opera kullanıcı tabanı için doğrudan güvenilir, Safari iOS için güvenilir, Safari masaüstü ve Firefox için mutlaka bir WebGL fallback'iyle birlikte. Spesifikasyon W3C Candidate Recommendation Draft statüsünde olsa da, Babylon.js, Three.js, Unity, PlayCanvas gibi üretim framework'leri WebGPU'yu zaten backend olarak kullanıyor.
WebGL fallback'ini ne kadar süre tutmalıyım?
Firefox'ta bayrak gerektiren platformlarda (Linux, eski macOS) WebGPU'nun varsayılan açılacağına dair duyurulmuş bir tarih yok. Bu nedenle net bir "şu tarihte kaldır" cevabı vermek yanıltıcı olur — fallback'i, hedef kitlenin tarayıcı/işletim sistemi dağılımını kendi analytics'inden izleyerek, bayrak gerektiren platformların payı ihmal edilebilir düzeye inene kadar tutman daha güvenilir bir yaklaşım.
WebGPU ile WebGL'i aynı anda kullanabilir miyim?
Aynı <canvas> üzerinde aynı anda değil, ama uygulama seviyesinde ikisini birbirinin fallback'i olarak kullanabilirsin. Framework'lerin çoğu (Three.js, Babylon.js) bu seçimi çalışma zamanında navigator.gpu varlığına göre otomatik yapıyor; sen manuel yazıyorsan, backend seçimini bir kez yapıp render döngüsü boyunca sabit tutman önerilir (bkz. Altın İpucu).
Safari'de WebGPU neden hâlâ "kısmi destek" olarak işaretli?
Çünkü destek işletim sistemi sürümüne bağlı: caniuse'un kendi notu, kısmi desteğin "yalnızca macOS 26 Tahoe veya sonrasında varsayılan olarak etkin olmayı" ifade ettiğini belirtiyor. Safari 26.0 kurulu olsa bile altındaki macOS sürümü Tahoe'dan eskiyse WebGPU kapalı kalabiliyor — bu da "Safari 26 kullanıyor" bilgisinin tek başına yeterli olmadığı anlamına geliyor.
Güncelleme (Eylül 2026)
Bu makalenin gövdesi 4 Aralık 2025 tarihindeki destek durumunu yansıtıyor. O tarihten bu yana platformlarda somut, kaynaklı ilerlemeler oldu:
- Safari 27.0 (17 Eylül 2026) WebGPU'ya
clip_distancesWGSL built-in'ini ekledi (kırpma düzlemleri desteği) — 26.6 ve 27.0 sürüm notları içinde WebGPU'ya dair tek somut ekleme bu. Kaynak: webkit.org/blog/18325/webkit-features-for-safari-27-0/ - Safari 26.6 sürüm notlarında WebGPU'ya dair herhangi bir değişiklik yok; yani WebGPU ilerlemesi 26.x serisinde değil, 27.0'da yoğunlaştı. Kaynak: webkit.org/blog/18178/webkit-features-for-safari-26-6/
- Chrome 144 (7 Ocak 2026) WGSL'e
subgroup_idvenum_subgroupsbuilt-in'lerini ekledi. Kaynak: developer.chrome.com/blog/new-in-webgpu-144 - Chrome 146 (25 Şubat 2026) WebGPU "Compatibility Mode" adında, OpenGL ES 3.1 hedefli daha kısıtlı bir alt küme sundu — önce Android'de, ChromeOS ve Windows (D3D11) için araştırma sürüyor. Kaynak: developer.chrome.com/blog/new-in-webgpu-146
- Masaüstü Safari hâlâ "Partial support" statüsünde kalmaya devam ediyor; caniuse'un #7 notuna göre yalnızca macOS 26 Tahoe veya sonrasında varsayılan etkin. Kaynak: caniuse.com/webgpu
- Firefox'ta tablo Aralık 2025'ten bu yana değişmedi: caniuse'un #8 notu "Only enabled by default on Windows as well as macOS 26 Tahoe or later on Apple Silicon" diyor; Linux ile eski macOS'ta hâlâ
dom.webgpu.enabledgerekiyor. Kaynak: caniuse.com/webgpu
Kısacası, Eylül 2026 itibarıyla temel görüntü Aralık 2025'tekiyle aynı kalıyor: Chrome/Edge/Opera güvenilir, Safari iOS güvenilir, Safari masaüstü ve Firefox hâlâ koşullu. Asıl ilerleme yeni platform açılışında değil, mevcut platformlardaki WGSL özellik setinin (subgroup'lar, clip distances, compatibility mode) genişlemesinde oldu.
Sonuç
WebGPU'nun "üretime hazır mı" sorusuna tek cümlelik cevap yok — Chrome/Edge/Opera ve iOS Safari için evet, masaüstü Safari ve Firefox için henüz koşullu bir evet. Doğru yaklaşım, WebGPU'yu tek yol olarak değil, navigator.gpu kontrolüyle tespit edilen, WebGL'e sorunsuz düşen bir progressive enhancement katmanı olarak tasarlamak. GPU tarafında native geliştirme yapıyorsan Apple'ın kendi Metal Framework ile GPU programlama rehberi veya SwiftUI Metal Shaders yazısı karşılaştırma için iyi bir referans; web tarafında build/tooling kararları için Next.js 16.3 Instant Navigations rehberi, Webpack'ten Vite'a geçiş rehberi ve TypeScript 7 geçiş kararı yazısı bu kampanyanın diğer platform-kararı içeriklerine bakabilirsin.
Kaynaklar
- caniuse.com — WebGPU — Tarayıcı/sürüm bazlı destek tablosu ve platform notları
- MDN — WebGPU API — WebGPU'nun WebGL'e göre mimari farkı ve GPGPU desteği
- WebKit Blog — WebKit Features in Safari 26.0 — Safari 26.0'ın resmi WebGPU duyurusu
- MDN — GPUDevice.createComputePipeline() — Compute pipeline oluşturma referansı ve örnek kod
- Chrome for Developers — WebGPU: Unlocking modern GPU access in the browser — Chrome'un resmi WebGPU tanıtım yazısı (I/O 2023)

