Target Hardware

Goldy targets modern GPUs exclusively. This is a deliberate design choice — by requiring hardware from roughly 2018 onward, Goldy can use bindless descriptors, dynamic rendering, and coherent caches as baseline assumptions rather than optional features.

Backend Requirements

Vulkan 1.4+

Goldy requires Vulkan 1.4, which promotes several extensions that were optional in earlier versions to core:

FeatureVulkan historyGoldy usage
Dynamic renderingVK_KHR_dynamic_rendering (1.3)No render pass objects
Descriptor indexingVK_EXT_descriptor_indexing (1.2)Bindless resource access
Buffer device addressVK_KHR_buffer_device_address (1.2)64-bit GPU pointers
Synchronization2VK_KHR_synchronization2 (1.3)Simplified barrier model
Push descriptorsCore in 1.4Efficient uniform updates

Supported hardware:

  • NVIDIA: Turing and later (RTX 2000 / GTX 1600 series, 2018+)
  • AMD: RDNA 1 and later (RX 5000 series, 2019+)
  • Intel: Xe architecture and later (Arc, 2022+)
  • Qualcomm: Adreno 650+ (2019+, driver dependent)

DX12

Goldy's DX12 backend requires:

RequirementDetails
D3D12 Enhanced BarriersWindows 11 + WDDM 3.0+ driver
ResourceDescriptorHeapSM 6.6 bindless (Shader Model 6.6)
Root constantsPush constants equivalent

Enhanced Barriers are mandatory — Goldy does not fall back to legacy resource state transitions. This effectively requires Windows 11 with a modern driver.

For software rendering and CI, Goldy supports the WARP software rasterizer via GOLDY_DX12_FORCE_WARP=1.

Metal Tier 2+

Goldy's Metal backend is native (no MoltenVK) and requires Argument Buffers Tier 2 for bindless resource access:

RequirementDetails
Argument Buffers Tier 2Bindless via ParameterBlock
MSL (via Slang)Slang compiles directly to Metal Shading Language

Supported hardware:

  • Apple Silicon: All models (M1/M2/M3/M4, A14+)
  • Intel Macs: 2017+ (different iGPUs; some very early Intel UHD may not qualify)
  • AMD discrete GPUs in Macs: 2015+

Older Intel integrated GPUs (pre-2017 Macs) are not supported — they lack Argument Buffers Tier 2.

What "Modern GPU" Means for Goldy

Goldy's hardware floor is defined by a set of architectural capabilities, not specific product names:

CapabilityWhy Goldy needs it
Coherent L2 cacheNo manual cache flush/invalidate logic
Bindless descriptorsSingle global descriptor model, no set layouts
Dynamic renderingNo render pass objects or framebuffer compatibility
64-bit buffer addressesDirect pointer access in shaders
Unified or REBAR memorySimplified CPU-GPU data transfer

GPUs from roughly 2018 onward universally support these features. The specific API version requirements (Vulkan 1.4, DX12 Enhanced Barriers, Metal Tier 2) are the mechanism by which Goldy enforces this floor.

What This Excludes

ExcludedReason
NVIDIA GTX 900 series (Maxwell)No Vulkan 1.4 support
AMD GCN (RX 400/500)Driver support ended; limited bindless
Intel Gen9 (HD 500/600)Incomplete Vulkan feature coverage
Intel integrated GPUs pre-2017 (Mac)No Argument Buffers Tier 2
Pre-Windows 11 DX12No Enhanced Barriers

Checking Compatibility

Goldy reports unsupported devices at initialization:

#![allow(unused)]
fn main() {
let instance = Instance::new()?;

for adapter in instance.enumerate_adapters() {
    println!("{}: {:?}", adapter.name, adapter.device_type);
}

// create_device returns an error on unsupported hardware
let device = instance.create_device(DeviceType::DiscreteGpu)?;
}

The Tradeoff

By drawing a line at modern hardware, Goldy avoids the fallback paths, compatibility checks, and feature-level negotiation that dominate traditional GPU libraries. Every code path in Goldy assumes the full feature set is available. This keeps the implementation small and the API surface predictable.

The cost is clear: Goldy cannot run on the long tail of older hardware. For applications that need broad device support, wgpu is the better choice.