d3d11/GES: poor performance
Describe your issue
GES does not appear to take advantage of hardware-accelerated d3d11 elements (such as d3d11h264dec and d3d11compositor) to create a zero-copy rendering pipeline. Playback of high-res/high-framerate video is very poor.
Expected Behavior
I'd expect GES to use hardware-accelerated d3d11 elements to maximize performance.
Observed Behavior
GES appears to either not use the hardware-accelerated plugins, or CPU-copying (or otherwise degraded performance) is occurring somewhere in the pipeline.
Setup
- Operating System: Windows
- GStreamer Version: 1.21.3
- Command line:
Steps to reproduce the bug
- Download a high-res (e.g. 4K) and/or high-framerate (e.g. 60fps) video, such as Netflix's "Sparks" open content
- Open Windows PowerShell
- Type
gst-launch-1.0 playbin uri=file:///path/to/Sparks_4096x2160_5994fps_SDR.mp4
- Observe that the video plays back normally (using hardware acceleration)
- Type
$env:GST_PLUGIN_FEATURE_RANK="d3d11compositor:max"
- Type
$env:GST_PLUGIN_FEATURE_RANK="d3d11h264dec:max"
- Type
ges-launch-1.0 +clip Sparks_4096x2160_5994fps_SDR.mp4
- Observe that playback is extremely poor/choppy
How reproducible is the bug?
Appears to be very reproducible with various 4K videos, on various devices.