Skip to main content

trident/gpu/
mod.rs

1//! GPU compute infrastructure.
2//!
3//! Uses wgpu for cross-platform GPU acceleration (Metal, Vulkan, DX12).
4//! Provides device initialization and shader constants for grammar mask
5//! and field arithmetic.
6
7pub(crate) mod shaders;
8
9/// Try to create a wgpu device and queue.
10/// Returns None if no GPU adapter is available.
11pub fn try_create_device() -> Option<(wgpu::Device, wgpu::Queue)> {
12    let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
13        backends: wgpu::Backends::all(),
14        ..Default::default()
15    });
16    let adapter = pollster::block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
17        power_preference: wgpu::PowerPreference::HighPerformance,
18        compatible_surface: None,
19        force_fallback_adapter: false,
20    }))?;
21    let (device, queue) = pollster::block_on(adapter.request_device(
22        &wgpu::DeviceDescriptor {
23            label: Some("trident-gpu"),
24            required_features: wgpu::Features::empty(),
25            required_limits: wgpu::Limits::default(),
26            memory_hints: wgpu::MemoryHints::Performance,
27        },
28        None,
29    ))
30    .ok()?;
31    Some((device, queue))
32}