<div align="center">
<h1>gfxinfo</h1>
<p>
Rust library for querying GPU information
</p>
</div>
<div align="center">
<img src="https://img.shields.io/github/actions/workflow/status/SpikeHD/gfxinfo/format.yml?label=code quality" />
</div>
# TL;DR
```rust
use gfxinfo::active_gpu;
let gpu = active_gpu();
println!("GPU vendor: {}", gpu.vendor());
println!("GPU model: {}", gpu.model());
println!("GPU family: {}", gpu.family());
println!("GPU device ID: {}", gpu.device_id());
// And with `gpu_info` feature enabled
let info = gpu.info();
println!("Total VRAM: {} bytes", info.total_vram());
println!("Used VRAM: {} bytes", info.used_vram());
println!("Load: {}%", info.load_pct());
println!("Temperature: {} C", info.temperature() / 1000);
```
# Features
* Cross-platform, cross-vendor support
* Plenty of feature flags
* Low dependency count
# Feature flags
| `default` | Enables all features | Yes |
| `amd` | Enables AMD GPU support | Yes |
| `nvidia` | Enables Nvidia GPU support | Yes |
| `intel` | Enables Intel GPU support | Yes |
| `gpu_info` | Enables the `GpuInfo` trait, which provides query functions for things like VRAM usage | Yes |
# TODO
(Windows support is speculative, as it uses the Windows API and I don't have a Windows machine to test on. It did work partially in a VM using the basic display driver!)
* [ ] Cross-platform vendor support
* [x] Nvidia
* [x] Windows
* [x] Linux
* [x] AMD
* [x] Windows
* [x] Linux
* [ ] Intel
* [x] Windows
* [ ] Linux
* [ ] Generic/Other
* [x] Apple/MacOS
* [ ] Supported information
* [x] Vendor
* [x] Model
* [x] Family
* [x] Device ID
* [x] Total VRAM
* [x] Used VRAM
* [x] Load percentage
* [x] Temperature