summaryrefslogtreecommitdiffstats
path: root/video/out/gpu/hwdec.c
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossy@jrg.systems>2017-12-05 23:47:59 +1100
committerJames Ross-Gowan <rossy@jrg.systems>2018-01-06 11:26:15 +1100
commit88c29b13011175b77c8255d82d5fc1c1610345d5 (patch)
treebc47cdb1db7ec2b63b4d3b968c31b8c9cf6f7da2 /video/out/gpu/hwdec.c
parent185e63a3e2a84fe4d006054960481460072a8243 (diff)
downloadmpv-88c29b13011175b77c8255d82d5fc1c1610345d5.tar.bz2
mpv-88c29b13011175b77c8255d82d5fc1c1610345d5.tar.xz
vo_gpu: hwdec_dxva2dxgi: initial implementation
This enables DXVA2 hardware decoding with ra_d3d11. It should be useful for Windows 7, where D3D11VA is not available. Images are transfered from D3D9 to D3D11 using D3D9Ex surface sharing[1]. Following Microsoft's recommendations, it uses a queue of shared surfaces, similar to Microsoft's ISurfaceQueue. This will hopefully prevent surface sharing from impacting parallelism and allow multiple D3D11 frames to be in-flight at once. [1]: https://msdn.microsoft.com/en-us/library/windows/desktop/ee913554.aspx
Diffstat (limited to 'video/out/gpu/hwdec.c')
-rw-r--r--video/out/gpu/hwdec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/video/out/gpu/hwdec.c b/video/out/gpu/hwdec.c
index 5284116b57..75d12b27f3 100644
--- a/video/out/gpu/hwdec.c
+++ b/video/out/gpu/hwdec.c
@@ -35,6 +35,7 @@ extern const struct ra_hwdec_driver ra_hwdec_d3d11eglrgb;
extern const struct ra_hwdec_driver ra_hwdec_dxva2gldx;
extern const struct ra_hwdec_driver ra_hwdec_dxva2;
extern const struct ra_hwdec_driver ra_hwdec_d3d11va;
+extern const struct ra_hwdec_driver ra_hwdec_dxva2dxgi;
extern const struct ra_hwdec_driver ra_hwdec_cuda;
extern const struct ra_hwdec_driver ra_hwdec_cuda_nvdec;
extern const struct ra_hwdec_driver ra_hwdec_rpi_overlay;
@@ -55,6 +56,9 @@ const struct ra_hwdec_driver *const ra_hwdec_drivers[] = {
#endif
#if HAVE_D3D11
&ra_hwdec_d3d11va,
+ #if HAVE_D3D9_HWACCEL
+ &ra_hwdec_dxva2dxgi,
+ #endif
#endif
#endif
#if HAVE_GL_DXINTEROP_D3D9