summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Ekström <jeebjp@gmail.com>2019-10-14 20:30:09 +0300
committerJan Ekström <jeebjp@gmail.com>2019-10-15 22:12:48 +0300
commit89f4ce9d6f31d817eb68dede9b066b0af1416fc2 (patch)
tree57c97fab65d176b98e4b6ce3962e041308090238
parent684ffd13b4940eb7a5d4228f850d903a72570242 (diff)
downloadmpv-89f4ce9d6f31d817eb68dede9b066b0af1416fc2.tar.bz2
mpv-89f4ce9d6f31d817eb68dede9b066b0af1416fc2.tar.xz
vo_gpu/d3d11: switch adapter selection to case-insensitive startswith
This lets users set values such as "intel" or "nvidia" as the adapter vendor is generally noted in the beginning of the description string.
-rw-r--r--DOCS/man/options.rst4
-rw-r--r--video/out/d3d11/context.c2
-rw-r--r--video/out/gpu/d3d11_helpers.c7
3 files changed, 9 insertions, 4 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index e3f6a53ab7..2bebb56ea5 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -4705,6 +4705,10 @@ The following video options are currently all specific to ``--vo=gpu`` and
Will pick the default adapter if unset. Alternatives are listed
when the name "help" is given.
+ Checks for matches based on the start of the string, case
+ insensitive. Thus, if the description of the adapter starts with
+ the vendor name, that can be utilized as the selection parameter.
+
Hardware decoders utilizing the D3D11 rendering abstraction's helper
functionality to receive a device, such as D3D11VA or DXVA2's DXGI
mode, will be affected by this choice.
diff --git a/video/out/d3d11/context.c b/video/out/d3d11/context.c
index be595eff3d..62c0f5772f 100644
--- a/video/out/d3d11/context.c
+++ b/video/out/d3d11/context.c
@@ -117,7 +117,7 @@ static int d3d11_validate_adapter(struct mp_log *log,
}
if (!adapter_matched) {
- mp_err(log, "No adapter with name '%.*s'!\n", BSTR_P(param));
+ mp_err(log, "No adapter matching '%.*s'!\n", BSTR_P(param));
}
return adapter_matched ? 0 : M_OPT_INVALID;
diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c
index 6ea778a875..73d2c667a8 100644
--- a/video/out/gpu/d3d11_helpers.c
+++ b/video/out/gpu/d3d11_helpers.c
@@ -204,8 +204,9 @@ static IDXGIAdapter1 *get_d3d11_adapter(struct mp_log *log,
adapter_description ? adapter_description : "<No Description>");
}
- if (adapter_description &&
- bstr_equals0(requested_adapter_name, adapter_description))
+ if (adapter_description && requested_adapter_name.len &&
+ bstr_case_startswith(bstr0(adapter_description),
+ requested_adapter_name))
{
picked_adapter = adapter;
break;
@@ -282,7 +283,7 @@ bool mp_d3d11_create_present_device(struct mp_log *log,
adapter = get_d3d11_adapter(log, bstr0(adapter_name), NULL);
if (adapter_name && !adapter) {
- mp_warn(log, "Adapter '%s' was not found in the system! "
+ mp_warn(log, "Adapter matching '%s' was not found in the system! "
"Will fall back to the default adapter.\n",
adapter_name);
}