6 releases
0.3.1 | Jul 14, 2024 |
---|---|
0.3.0 | Jun 28, 2024 |
0.2.1 | Nov 17, 2023 |
0.2.0 | Aug 26, 2023 |
0.1.0 | May 25, 2023 |
#195 in Graphics APIs
210 downloads per month
17KB
289 lines
Rust bindings for AMD's DirectX12 RGP markers
Call AMD's command list markers directly in Rust for event instrumentation in Radeon GPU Profiler, as well as other functionality provided on IAmdExtD3DDevice1
.
Usage
Add this to your Cargo.toml:
[dependencies]
amd-ext-d3d = "0.3.1"
While upstream documentation details how to embed these calls into existing PIX3 markers (behind a C #derive
), you get to call them explicitly in Rust:
use amd_ext_d3d::AmdExtD3DDevice;
use std::ffi::CStr;
use windows::Win32::Graphics::Direct3D12::{ID3D12Device, ID3D12GraphicsCommandList};
let device: ID3D12Device = todo!("Open DirectX12 graphics device");
let cmd_list: ID3D12GraphicsCommandList = todo!("device.CreateCommandList(...)");
// Load the extension
let amd_device = unsafe { AmdExtD3DDevice::new(device.into()) }.unwrap();
let name = CStr::from_bytes_with_nul(b"My super cool GPU event!\0").unwrap();
unsafe { amd_device.push_marker(&cmd_list, name) };
// Submit work to the GPU...
unsafe { amd_device.pop_marker(&cmd_list) };
Contributing
See CONTRIBUTING.md for details on regenerating the metadata and Rust code from upstream headers.
Dependencies
~127MB
~2M SLoC