mirror of
https://github.com/mpv-player/mpv
synced 2025-01-30 03:32:50 +00:00
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.
This commit is contained in:
parent
c6b97a4935
commit
7cfae5adce
@ -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
|
||||
|
@ -111,24 +111,16 @@ static const struct ra_ctx_fns *contexts[] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static bool get_help(struct mp_log *log, struct bstr 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 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))
|
||||
if (bstr_equals0(param, "help")) {
|
||||
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]->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++) {
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user