summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossy@jrg.systems>2017-11-01 22:38:41 +1100
committerJames Ross-Gowan <rossy@jrg.systems>2017-11-07 20:27:13 +1100
commite7bf5576e599593b1bba5bbf2a7cd6d4270c7809 (patch)
tree8a91e157cbd47bdd6f9bdbb40f2b0722ad5d3d53 /options
parentb258d82d6eab5cec7f27f4d6780bf991d28aadef (diff)
downloadmpv-e7bf5576e599593b1bba5bbf2a7cd6d4270c7809.tar.bz2
mpv-e7bf5576e599593b1bba5bbf2a7cd6d4270c7809.tar.xz
vo_gpu: hwdec_d3d11va: allow zero-copy video decoding
Like the manual says, this is technically undefined behaviour. See: https://msdn.microsoft.com/en-us/library/windows/desktop/ff476085.aspx In particular, MSDN says texture arrays created with the BIND_DECODER flag cannot be used with CreateShaderResourceView, which means they can't be sampled through SRVs like normal Direct3D textures. However, some programs (Google Chrome included) do this anyway for performance and power-usage reasons, and it appears to work with most drivers. Older AMD drivers had a "bug" with zero-copy decoding, but this appears to have been fixed. See #3255, #3464 and http://crbug.com/623029.
Diffstat (limited to 'options')
-rw-r--r--options/options.c4
-rw-r--r--options/options.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/options/options.c b/options/options.c
index 3bf4ee1108..e295afa9bc 100644
--- a/options/options.c
+++ b/options/options.c
@@ -91,6 +91,7 @@ extern const struct m_sub_options opengl_conf;
extern const struct m_sub_options vulkan_conf;
extern const struct m_sub_options spirv_conf;
extern const struct m_sub_options d3d11_conf;
+extern const struct m_sub_options d3d11va_conf;
extern const struct m_sub_options angle_conf;
extern const struct m_sub_options cocoa_conf;
@@ -702,6 +703,9 @@ const m_option_t mp_opts[] = {
#if HAVE_D3D11
OPT_SUBSTRUCT("", d3d11_opts, d3d11_conf, 0),
+#if HAVE_D3D_HWACCEL
+ OPT_SUBSTRUCT("", d3d11va_opts, d3d11va_conf, 0),
+#endif
#endif
#if HAVE_EGL_ANGLE_WIN32
diff --git a/options/options.h b/options/options.h
index 47a4622430..170de9cddc 100644
--- a/options/options.h
+++ b/options/options.h
@@ -333,6 +333,7 @@ typedef struct MPOpts {
struct vulkan_opts *vulkan_opts;
struct spirv_opts *spirv_opts;
struct d3d11_opts *d3d11_opts;
+ struct d3d11va_opts *d3d11va_opts;
struct cocoa_opts *cocoa_opts;
struct dvd_opts *dvd_opts;