vo_gpu: vulkan: add ability to disable events

libplacebo exposes this feature already, because this particular type of
bug is unusually common in practice. Simply make use of it, by exposing
it as an option.

Could probably also bump the libplacebo minimum version to get rid of
the #if, but that would break debian oldoldstable or something.

Fixes #7867.
This commit is contained in:
Niklas Haas 2020-06-30 20:40:42 +02:00
parent 22a27c6720
commit ace249acc5
2 changed files with 10 additions and 0 deletions

View File

@ -5225,6 +5225,11 @@ The following video options are currently all specific to ``--vo=gpu`` and
use of compute shaders over fragment shaders wherever possible. Enabled by
default, although Nvidia users may want to disable it.
``--vulkan-disable-events``
Disable the use of VkEvents, for debugging purposes or for compatibility
with some older drivers / vulkan portability layers that don't provide
working VkEvent support.
``--d3d11-exclusive-fs=<yes|no>``
Switches the D3D11 swap chain fullscreen state to 'fullscreen' when
fullscreen video is requested. Also known as "exclusive fullscreen" or

View File

@ -27,6 +27,7 @@ struct vulkan_opts {
int queue_count;
int async_transfer;
int async_compute;
int disable_events;
};
static int vk_validate_dev(struct mp_log *log, const struct m_option *opt,
@ -97,6 +98,7 @@ const struct m_sub_options vulkan_conf = {
{"vulkan-queue-count", OPT_INT(queue_count), M_RANGE(1, 8)},
{"vulkan-async-transfer", OPT_FLAG(async_transfer)},
{"vulkan-async-compute", OPT_FLAG(async_compute)},
{"vulkan-disable-events", OPT_FLAG(disable_events)},
{0}
},
.size = sizeof(struct vulkan_opts),
@ -169,6 +171,9 @@ bool ra_vk_ctx_init(struct ra_ctx *ctx, struct mpvk_ctx *vk,
.async_compute = p->opts->async_compute,
.queue_count = p->opts->queue_count,
.device_name = p->opts->device,
#if PL_API_VER >= 24
.disable_events = p->opts->disable_events,
#endif
});
if (!vk->vulkan)
goto error;