#amd-gpu #libdrm #driver #drm #ported #methods #linux-kernel #gpu-driver #mesa3-d #gpu-kernel

sys libdrm_amdgpu_sys

libdrm_amdgpu bindings for Rust, and some methods ported from Mesa3D

30 releases

Uses new Rust 2024

new 0.8.7 Jun 12, 2025
0.8.4 Mar 17, 2025
0.7.7 Dec 13, 2024
0.7.6 Nov 28, 2024
0.1.0 May 28, 2022

#104 in Graphics APIs

Download history 489/week @ 2025-02-19 1198/week @ 2025-02-26 1094/week @ 2025-03-05 2655/week @ 2025-03-12 1382/week @ 2025-03-19 1626/week @ 2025-03-26 1594/week @ 2025-04-02 1011/week @ 2025-04-09 725/week @ 2025-04-16 1107/week @ 2025-04-23 898/week @ 2025-04-30 1265/week @ 2025-05-07 695/week @ 2025-05-14 478/week @ 2025-05-21 478/week @ 2025-05-28 345/week @ 2025-06-04

2,230 downloads per month
Used in 6 crates (2 directly)

MIT license

2.5MB
59K SLoC

libdrm-amdgpu-sys-rs

libdrm_amdgpu bindings for Rust, and some methods ported from Mesa3D (mainly ac_gpu_info.c).

Reference

License

  • MIT License

Documentation

Dependent dynamic libraries

  • libdrm
  • libdrm_amdgpu

Feature flags

  • link_drm
    • Dynamically linking libdrm.so.2 and libdrm_amdgpu.so.1
    • enabled by default
  • dynamic_loading
    • Dynamically loading libdrm.so.2 and libdrm_amdgpu.so.1
    • link_drm and dynamic_loading cannot be enabled at the same time.
    • cargo add libdrm_amdgpu_sys --no-default-features -F "dynamic_loading"

Distribution specific instructions

Debian/Ubuntu

sudo apt install libdrm-dev

Examples

use libdrm_amdgpu_sys::LibDrmAmdgpu;
use libdrm_amdgpu_sys::AMDGPU::DeviceHandle;
use libdrm_amdgpu_sys::AMDGPU::GPU_INFO;

let libdrm_amdgpu = LibDrmAmdgpu::new().unwrap();
let (amdgpu_dev, drm_major, drm_minor) = {
    use std::fs::OpenOptions;
    use std::os::fd::IntoRawFd;

    let fd = OpenOptions::new().read(true).write(true).open("/dev/dri/renderD128").unwrap();

    libdrm_amdgpu.init_device_handle(fd.into_raw_fd()).unwrap()
};
let device_info = amdgpu_dev.device_info().unwrap();
let device_name = device_info.find_device_name_or_default();

Dynamic Loading

Cargo.toml

libdrm_amdgpu_sys = { version = "0.8", default-features = false, features = ["dynamic_loading"] }

amdgpu_info

cargo run --example amdgpu_info

vbios_dump

cargo run --example vbios_dump

gpu_metrics

cargo run --example gpu_metrics

Build

To generate a new bindings/drm.rs .

cargo build --features=buildtime_bindgen

Dependencies

~0–8.5MB