diff options
author | wm4 <wm4@nowhere> | 2017-10-16 10:53:33 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-10-16 10:57:51 +0200 |
commit | 7cfae5adceed47122ced715c8b9cda0b87a1f1bf (patch) | |
tree | 9ac9ab76a3a95f50f46729a84616250202219519 | |
parent | c6b97a4935cf2e5d1008e4b0d03c8cece415fec1 (diff) |
vo_gpu: semi-fix --gpu-context/--gpu-api options and help output
This was confusing at best. Change it to output the actual choices.
(Seems like in the end it's always me who has to clean up other people's
bullshit.)
Context names were not unique - but they should be, so fix it. The whole
point of the original --opengl-backend option was to side-step the
tricky auto-detection, so you know exactly what you get. The goal of
this commit is to make --gpu-context work the same way. Fix the
non-unique names by appending "vk" to the names.
Keep in mind that this was not suitable for slecting the "UI" backend
anyway, since "x11" would force GLX, whereas people on not-NVIDIA
actually want "x11egl". Users trying to use --gpu-context=x11 to force
the X11 backend would always end up with GLX, which would at least break
VAAPI hardware decoding for them. Basically the idea that this option
could select the "UI" type is completely broken - it selects an
implementation, which implies a UI. Selecting the UI type This would
require a separate mechanism. (Although in theory this separate
mechanism could be part of the --gpu-context option - in any case,
someone would have to implement it.)
To achieve help output that can actually be understood, just duplicate
the code. Most of that code is duplicated anyway, and trying to share
just the list code with the result of making the output unreadable
doesn't make too much sense. If we wanted to save code/effort, we could
just remove the help output altogether.
--gpu-api has non-unique entries, and it would be nice to group them
(e.g. list all OpenGL capable contexts with "opengl"), but C makes this
simple idea too much of a pain, so don't do it.
Also remove a stray tab from the android entry on the manpage.
-rw-r--r-- | DOCS/man/options.rst | 14 | ||||
-rw-r--r-- | video/out/gpu/context.c | 25 | ||||
-rw-r--r-- | video/out/vulkan/context_wayland.c | 2 | ||||
-rw-r--r-- | video/out/vulkan/context_win.c | 2 | ||||
-rw-r--r-- | video/out/vulkan/context_xlib.c | 2 |
5 files changed, 24 insertions, 21 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 7a08aec297..ee57681218 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -4626,7 +4626,9 @@ The following video options are currently all specific to ``--vo=gpu`` and cocoa Cocoa/OS X win - Win32/WGL, VK_KHR_win32_surface + Win32/WGL + winvk + VK_KHR_win32_surface angle Direct3D11 through the OpenGL ES translation layer ANGLE. This supports almost everything the ``win`` backend does (if the ANGLE build is new @@ -4636,18 +4638,22 @@ The following video options are currently all specific to ``--vo=gpu`` and on Nvidia and AMD. Newer Intel chips with the latest drivers may also work. x11 - X11/GLX, VK_KHR_xlib_surface + X11/GLX + x11vk + VK_KHR_xlib_surface x11probe For internal autoprobing, equivalent to ``x11`` otherwise. Don't use directly, it could be removed without warning as autoprobing is changed. wayland - Wayland/EGL, VK_KHR_wayland_surface + Wayland/EGL + waylandvk + VK_KHR_wayland_surface drm DRM/EGL x11egl X11/EGL android - Android/EGL. Requires ``--wid`` be set to an ``android.view.Surface``. + Android/EGL. Requires ``--wid`` be set to an ``android.view.Surface``. mali-fbdev Direct fbdev/EGL support on some ARM/MALI devices. vdpauglx diff --git a/video/out/gpu/context.c b/video/out/gpu/context.c index 8be0b2fc90..8dc8a5c71f 100644 --- a/video/out/gpu/context.c +++ b/video/out/gpu/context.c @@ -111,24 +111,16 @@ static const struct ra_ctx_fns *contexts[] = { #endif }; -static bool get_help(struct mp_log *log, struct bstr param) +int ra_ctx_validate_api(struct mp_log *log, const struct m_option *opt, + struct bstr name, struct bstr param) { if (bstr_equals0(param, "help")) { - mp_info(log, "GPU contexts / APIs:\n"); + mp_info(log, "GPU APIs (contexts):\n"); mp_info(log, " auto (autodetect)\n"); for (int n = 0; n < MP_ARRAY_SIZE(contexts); n++) - mp_info(log, " %s (%s)\n", contexts[n]->name, contexts[n]->type); - return true; - } - - return false; -} - -int ra_ctx_validate_api(struct mp_log *log, const struct m_option *opt, - struct bstr name, struct bstr param) -{ - if (get_help(log, param)) + mp_info(log, " %s (%s)\n", contexts[n]->type, contexts[n]->name); return M_OPT_EXIT; + } if (bstr_equals0(param, "auto")) return 1; for (int i = 0; i < MP_ARRAY_SIZE(contexts); i++) { @@ -141,8 +133,13 @@ int ra_ctx_validate_api(struct mp_log *log, const struct m_option *opt, int ra_ctx_validate_context(struct mp_log *log, const struct m_option *opt, struct bstr name, struct bstr param) { - if (get_help(log, param)) + if (bstr_equals0(param, "help")) { + mp_info(log, "GPU contexts (APIs):\n"); + mp_info(log, " auto (autodetect)\n"); + for (int n = 0; n < MP_ARRAY_SIZE(contexts); n++) + mp_info(log, " %s (%s)\n", contexts[n]->name, contexts[n]->type); return M_OPT_EXIT; + } if (bstr_equals0(param, "auto")) return 1; for (int i = 0; i < MP_ARRAY_SIZE(contexts); i++) { diff --git a/video/out/vulkan/context_wayland.c b/video/out/vulkan/context_wayland.c index 92ee7aa1a9..7276775242 100644 --- a/video/out/vulkan/context_wayland.c +++ b/video/out/vulkan/context_wayland.c @@ -123,7 +123,7 @@ static void wayland_vk_wait_events(struct ra_ctx *ctx, int64_t until_time_us) const struct ra_ctx_fns ra_ctx_vulkan_wayland = { .type = "vulkan", - .name = "wayland", + .name = "waylandvk", .reconfig = wayland_vk_reconfig, .control = wayland_vk_control, .wakeup = wayland_vk_wakeup, diff --git a/video/out/vulkan/context_win.c b/video/out/vulkan/context_win.c index 899ab83257..cf31586d00 100644 --- a/video/out/vulkan/context_win.c +++ b/video/out/vulkan/context_win.c @@ -97,7 +97,7 @@ static int win_control(struct ra_ctx *ctx, int *events, int request, void *arg) const struct ra_ctx_fns ra_ctx_vulkan_win = { .type = "vulkan", - .name = "win", + .name = "winvk", .reconfig = win_reconfig, .control = win_control, .init = win_init, diff --git a/video/out/vulkan/context_xlib.c b/video/out/vulkan/context_xlib.c index 26efd6f583..c3bd49f4fb 100644 --- a/video/out/vulkan/context_xlib.c +++ b/video/out/vulkan/context_xlib.c @@ -107,7 +107,7 @@ static void xlib_wait_events(struct ra_ctx *ctx, int64_t until_time_us) const struct ra_ctx_fns ra_ctx_vulkan_xlib = { .type = "vulkan", - .name = "x11", + .name = "x11vk", .reconfig = xlib_reconfig, .control = xlib_control, .wakeup = xlib_wakeup, |