From 258487370fd840b018a404225277d74f74899c59 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Wed, 13 Sep 2017 03:09:48 +0200 Subject: vo_gpu: vulkan: generalize SPIR-V compiler In addition to the built-in nvidia compiler, we now also support a backend based on libshaderc. shaderc is sort of like glslang except it has a C API and is available as a dynamic library. The generated SPIR-V is now cached alongside the VkPipeline in the cached_program. We use a special cache header to ensure validity of this cache before passing it blindly to the vulkan implementation, since passing invalid SPIR-V can cause all sorts of nasty things. It's also designed to self-invalidate if the compiler gets better, by offering a catch-all `int compiler_version` that implementations can use as a cache invalidation marker. --- DOCS/man/options.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'DOCS') diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 80e7350292..078981be24 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -4205,6 +4205,23 @@ The following video options are currently all specific to ``--vo=gpu`` and as mpv's vulkan implementation currently does not try and protect textures against concurrent access. +``--spirv-compiler=`` + Controls which compiler is used to translate GLSL to SPIR-V. This is + (currently) only relevant for ``--gpu-api=vulkan``. The possible choices + are: + + auto + Use the first available compiler. (Default) + shaderc + Use libshaderc, which is an API wrapper around glslang. This is + generally the most preferred, if available. + nvidia + Use nvidia's built-in compiler. Only works for nvidia GPUs. Can be + buggy, but also supports some features glslang does not. Only works + with vulkan. WARNING: Pretty buggy, handles push constants incorrectly + (this causes graphical corruption with e.g. ``--temporal-dither``)! Use + only for testing. + ``--glsl-shaders=`` Custom GLSL hooks. These are a flexible way to add custom fragment shaders, which can be injected at almost arbitrary points in the rendering pipeline, -- cgit v1.2.3