With GStreamer 1.26, a new D3D12 backend GstD3D12 public library was introduced in gst-plugins-bad.
Now, with the new gstreamer-d3d12 rust crate, Rust can finally access the Windows-native GPU feature written in GStreamer in a safe and idiomatic way.
What You Get with GStreamer D3D12 Support in Rust
- Pass D3D12 textures created by your Rust application directly into GStreamer pipelines without data copying
- Likewise, GStreamer-generated GPU resources (such as frames decoded by D3D12 decoders) can be accessed directly in your Rust app
- GstD3D12 base GStreamer element can be written in Rust
Beyond Pipelines: General D3D12 Utility Layer
GstD3D12 is not limited to multimedia pipelines. It also acts as a convenient D3D12 runtime utility, providing:
- GPU resource pooling such as command allocator and descriptor heap, to reduce overhead and improve reuse
- Abstractions for creating and recycling GPU textures with consistent lifetime tracking
- Command queue and fence management helpers, greatly simplifying GPU/CPU sync
- A foundation for building custom GPU workflows in Rust, with or without the full GStreamer pipeline