Browser Compatibility

SiliconGhetto targets modern browsers with WebAssembly and WebGPU support. This document details compatibility requirements, fallback behavior, and known limitations.

Minimum Requirements

FeatureRequiredFallback
WebAssemblyYes (no fallback)
WebGPUPreferredWebGL2
Web WorkersYesMain thread mode
OffscreenCanvasPreferredMain thread rendering
SharedArrayBufferOptionalSingle-threaded

Browser Support Matrix

Tier 1: Full Support (WebGPU)

BrowserVersionPlatform
Chrome113+Windows, macOS, Linux, Android, ChromeOS
Edge113+Windows, macOS
Firefox121+Windows, macOS, Linux (behind flag until 139)
Safari18+macOS, iOS/iPadOS

Tier 2: WebGL2 Fallback

BrowserVersionPlatform
Chrome56-112All
Firefox51-120All
Safari15-17macOS, iOS
Samsung Internet7.0+Android

Not Supported

  • Internet Explorer (any version)
  • Browsers without WebAssembly support
  • Browsers without WebGL2 support

Feature Detection

The engine detects GPU capabilities at initialization:

1. Request WebGPU adapter
   ├─ Success → Use WebGPU backend
   └─ Failure → Fall back to WebGL2
2. Query device limits and features
3. Configure rendering pipeline based on available capabilities

WebGPU-Only Features

These features require WebGPU and are unavailable on WebGL2:

  • Compute shaders
  • Storage textures
  • Timestamp queries (GPU profiling)
  • Indirect draw calls

WebGL2 Limitations

When running on WebGL2:

  • No compute shader support
  • Limited texture format support
  • No storage buffers
  • Some shader features restricted

Cross-Origin Isolation

SiliconGhetto requires cross-origin isolation headers for full functionality:

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Without these headers:

  • SharedArrayBuffer is unavailable (no WASM threading)
  • High-resolution timers may be restricted
  • Memory measurement APIs are unavailable

All deployment configurations include these headers. See ADR-003.

Mobile Support

Mobile-Specific Considerations

  • Touch input: Handled via the sg_input crate’s touch abstraction
  • Screen orientation: Games should handle both portrait and landscape
  • GPU thermal throttling: stress-lab demo detects and adapts to throttling
  • Memory constraints: Mobile devices have less GPU memory; asset quality may be reduced

iOS/iPadOS

  • WebGPU available in Safari 18+ (Metal backend)
  • OffscreenCanvas supported in Safari 16.4+
  • SharedArrayBuffer requires cross-origin isolation

Android

  • WebGPU in Chrome 113+ (Vulkan backend)
  • OffscreenCanvas in Chrome 69+
  • Some Android WebView versions have limited WebGPU support

Testing Compatibility

# Build a demo
wasm-pack build demos/stress-lab --target web --out-dir www/pkg

# Serve with isolation headers
# Open in target browser and check console for backend info

The stress-lab demo reports:

  • GPU backend (WebGPU or WebGL2)
  • Device capabilities
  • Frame rate and performance metrics
  • Quality tier selection

Known Issues

  • Firefox WebGPU support requires dom.webgpu.enabled flag in versions before 139
  • Safari on older iOS may have WebGL2 performance issues with large draw calls
  • Chrome on Linux with NVIDIA drivers may require --enable-unsafe-webgpu for some features