command: export current-gpu-context property

This exports `current-gpu-context` property, which is the string
description of the current active GPU context. This allows scripts to
uniquely identify the platform and backend used for --vo=gpu
and --vo=gpu-next.
This commit is contained in:
nanahi 2023-12-20 23:05:31 -05:00 committed by Dudemanguy
parent 700f72f8e4
commit a0ba10b62e
5 changed files with 17 additions and 0 deletions

View File

@ -28,6 +28,7 @@ Interface changes
--- mpv 0.38.0 ---
- add `--volume-gain`, `--volume-gain-min`, and `--volume-gain-max` options
- add `current-gpu-context` property
- add `--secondary-sub-ass-override` option
- remove shared-script-properties (user-data is a replacement)
- add `--secondary-sub-delay`, decouple secondary subtitles from

View File

@ -3332,6 +3332,10 @@ Property list
``current-vo``
Current video output driver (name as used with ``--vo``).
``current-gpu-context``
Current GPU context of video output driver (name as used with ``--gpu-context``).
Valid for ``--vo=gpu`` and ``--vo=gpu-next``.
``current-ao``
Current audio output driver (name as used with ``--ao``).

View File

@ -2766,6 +2766,13 @@ static int mp_property_vo(void *ctx, struct m_property *p, int action, void *arg
mpctx->video_out ? mpctx->video_out->driver->name : NULL);
}
static int mp_property_gpu_context(void *ctx, struct m_property *p, int action, void *arg)
{
MPContext *mpctx = ctx;
return m_property_strdup_ro(action, arg,
mpctx->video_out ? mpctx->video_out->context_name : NULL);
}
static int mp_property_osd_dim(void *ctx, struct m_property *prop,
int action, void *arg)
{
@ -3923,6 +3930,7 @@ static const struct m_property mp_properties_base[] = {
{"vo-passes", mp_property_vo_passes},
{"perf-info", mp_property_perf_info},
{"current-vo", mp_property_vo},
{"current-gpu-context", mp_property_gpu_context},
{"container-fps", mp_property_fps},
{"estimated-vf-fps", mp_property_vf_fps},
{"video-aspect-override", mp_property_video_aspect_override},

View File

@ -208,6 +208,7 @@ struct ra_ctx *ra_ctx_create(struct vo *vo, struct ra_ctx_opts opts)
MP_VERBOSE(ctx, "Initializing GPU context '%s'\n", ctx->fns->name);
if (contexts[i]->init(ctx)) {
vo->probing = old_probing;
vo->context_name = ctx->fns->name;
return ctx;
}

View File

@ -494,6 +494,9 @@ struct vo {
int dwidth;
int dheight;
float monitor_par;
// current GPU context (--vo=gpu and --vo=gpu-next only)
const char *context_name;
};
struct mpv_global;