mirror of
https://github.com/mpv-player/mpv
synced 2025-03-11 08:37:59 +00:00
vo_opengl: rework --opengl-dumb-mode
It's now possible to request non-dumb mode as a user, even when not using any non-dumb features. This change is mostly intended for testing, so I can easily switch between dumb and non-dumb mode on default settings. The default behavior is unaffected.
This commit is contained in:
parent
9a49a35453
commit
7c1db05cbb
@ -54,6 +54,8 @@ Interface changes
|
||||
vf/af commands too)
|
||||
- remove --demuxer-lavf-cryptokey. Use --demux-lavf-o=cryptokey=<hex> or
|
||||
--demux-lavf-o=decryption_key=<hex> instead (whatever fits your situation).
|
||||
- rename --opengl-dumb-mode=no to --opengl-dumb-mode=auto, and make `no`
|
||||
always disable it (unless forced on by hardware limitation).
|
||||
--- mpv 0.25.0 ---
|
||||
- remove opengl-cb dxva2 dummy hwdec interop
|
||||
(see git "vo_opengl: remove dxva2 dummy hwdec backend")
|
||||
|
@ -4845,17 +4845,17 @@ The following video options are currently all specific to ``--vo=opengl`` and
|
||||
flipping GL front and backbuffers immediately (i.e. it doesn't call it
|
||||
in display-sync mode).
|
||||
|
||||
``--opengl-dumb-mode=<yes|no>``
|
||||
``--opengl-dumb-mode=<yes|no|auto>``
|
||||
This mode is extremely restricted, and will disable most extended OpenGL
|
||||
features. This includes high quality scalers and custom shaders!
|
||||
features. That includes high quality scalers and custom shaders!
|
||||
|
||||
It is intended for hardware that does not support FBOs (including GLES,
|
||||
which supports it insufficiently), or to get some more performance out of
|
||||
bad or old hardware.
|
||||
|
||||
This mode is forced automatically if needed, and this option is mostly
|
||||
useful for debugging. It's also enabled automatically if nothing uses
|
||||
features which require FBOs.
|
||||
useful for debugging. The default of ``auto`` will enable it automatically
|
||||
if nothing uses features which require FBOs.
|
||||
|
||||
This option might be silently removed in the future.
|
||||
|
||||
|
@ -340,7 +340,8 @@ static int validate_window_opt(struct mp_log *log, const m_option_t *opt,
|
||||
|
||||
const struct m_sub_options gl_video_conf = {
|
||||
.opts = (const m_option_t[]) {
|
||||
OPT_FLAG("opengl-dumb-mode", dumb_mode, 0),
|
||||
OPT_CHOICE("opengl-dumb-mode", dumb_mode, 0,
|
||||
({"auto", 0}, {"yes", 1}, {"no", -1})),
|
||||
OPT_FLOATRANGE("opengl-gamma", gamma, 0, 0.1, 2.0),
|
||||
OPT_FLAG("gamma-auto", gamma_auto, 0),
|
||||
OPT_CHOICE_C("target-prim", target_prim, 0, mp_csp_prim_names),
|
||||
@ -3124,8 +3125,12 @@ static bool check_dumb_mode(struct gl_video *p)
|
||||
struct gl_video_opts *o = &p->opts;
|
||||
if (p->use_integer_conversion)
|
||||
return false;
|
||||
if (o->dumb_mode)
|
||||
if (o->dumb_mode > 0) // requested by user
|
||||
return true;
|
||||
if (o->dumb_mode < 0) // disabled by user
|
||||
return false;
|
||||
|
||||
// otherwise, use auto-detection
|
||||
if (o->target_prim || o->target_trc || o->linear_scaling ||
|
||||
o->correct_downscaling || o->sigmoid_upscaling || o->interpolation ||
|
||||
o->blend_subs || o->deband || o->unsharp)
|
||||
@ -3176,12 +3181,12 @@ static void check_gl_features(struct gl_video *p)
|
||||
MP_WARN(p, "Disabling PBOs (GL2.1/GLES2 unsupported).\n");
|
||||
}
|
||||
|
||||
p->forced_dumb_mode = p->opts.dumb_mode || !have_fbo || !have_texrg;
|
||||
p->forced_dumb_mode = p->opts.dumb_mode > 0 || !have_fbo || !have_texrg;
|
||||
bool voluntarily_dumb = check_dumb_mode(p);
|
||||
if (p->forced_dumb_mode || voluntarily_dumb) {
|
||||
if (voluntarily_dumb) {
|
||||
MP_VERBOSE(p, "No advanced processing required. Enabling dumb mode.\n");
|
||||
} else if (!p->opts.dumb_mode) {
|
||||
} else if (p->opts.dumb_mode <= 0) {
|
||||
MP_WARN(p, "High bit depth FBOs unsupported. Enabling dumb mode.\n"
|
||||
"Most extended features will be disabled.\n");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user