spirv: remove --spirv-compiler=nvidia

This option has been deprecated upstream for a long time, probably
doesn't even work anymore, and won't work moving forwards as we replace
the vulkan code by libplacebo wrappers.

I haven't removed the option completely yet since in theory we could
still add support for e.g. a native glslang wrapper in the future. But
most likely the future of this code is deletion.

As an aside, fix an issue where the man page didn't mention d3d11.
This commit is contained in:
Niklas Haas 2018-11-24 04:25:30 +01:00 committed by Jan Ekström
parent f0509d3738
commit 5bcac8580d
6 changed files with 12 additions and 70 deletions

View File

@ -44,6 +44,9 @@ Interface changes
`--linear-downscaling`. This means that `--sigmoid-upscaling` no longer
implies linear light downscaling as well, which was confusing.
- the built-in `gpu-hq` profile now includes` --linear-downscaling`.
- support for `--spirv-compiler=nvidia` has been removed, leaving `shaderc`
as the only option. The `--spirv-compiler` option itself has been marked
as deprecated, and may be removed in the future.
--- mpv 0.29.0 ---
- drop --opensles-sample-rate, as --audio-samplerate should be used if desired
- drop deprecated --videotoolbox-format, --ff-aid, --ff-vid, --ff-sid,

View File

@ -4522,18 +4522,19 @@ The following video options are currently all specific to ``--vo=gpu`` and
``--spirv-compiler=<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:
(currently) only relevant for ``--gpu-api=vulkan`` and `--gpu-api=d3d11`.
The possible choices are currently only:
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.
.. note::
This option is deprecated, since there is only one reasonable value.
It may be removed in the future.
``--glsl-shaders=<file-list>``
Custom GLSL hooks. These are a flexible way to add custom fragment shaders,

View File

@ -5,31 +5,23 @@
#include "config.h"
extern const struct spirv_compiler_fns spirv_shaderc;
extern const struct spirv_compiler_fns spirv_nvidia_builtin;
// in probe-order
enum {
SPIRV_AUTO = 0,
SPIRV_SHADERC, // generally preferred, but not packaged everywhere
SPIRV_NVIDIA, // can be useful for testing, only available on nvidia
};
static const struct spirv_compiler_fns *compilers[] = {
#if HAVE_SHADERC
[SPIRV_SHADERC] = &spirv_shaderc,
#endif
#if HAVE_VULKAN
[SPIRV_NVIDIA] = &spirv_nvidia_builtin,
#endif
};
static const struct m_opt_choice_alternatives compiler_choices[] = {
{"auto", SPIRV_AUTO},
#if HAVE_SHADERC
{"shaderc", SPIRV_SHADERC},
#endif
#if HAVE_VULKAN
{"nvidia", SPIRV_NVIDIA},
#endif
{0}
};

View File

@ -1,54 +0,0 @@
#include "video/out/gpu/spirv.h"
#include "common.h"
#include "context.h"
#include "utils.h"
static bool nv_glsl_compile(struct spirv_compiler *spirv, void *tactx,
enum glsl_shader type, const char *glsl,
struct bstr *out_spirv)
{
// The nvidia extension literally assumes your SPIRV is in fact valid GLSL
*out_spirv = bstr0(glsl);
return true;
}
static bool nv_glsl_init(struct ra_ctx *ctx)
{
struct mpvk_ctx *vk = ra_vk_ctx_get(ctx);
if (!vk)
return false;
struct spirv_compiler *spv = ctx->spirv;
spv->required_ext = VK_NV_GLSL_SHADER_EXTENSION_NAME;
spv->glsl_version = 450; // impossible to query, so hard-code it..
spv->ra_caps = RA_CAP_NESTED_ARRAY;
// Make sure the extension is actually available, and fail gracefully
// if it isn't
VkExtensionProperties *props = NULL;
uint32_t extnum = 0;
VK(vkEnumerateDeviceExtensionProperties(vk->physd, NULL, &extnum, NULL));
props = talloc_array(NULL, VkExtensionProperties, extnum);
VK(vkEnumerateDeviceExtensionProperties(vk->physd, NULL, &extnum, props));
bool ret = true;
for (int e = 0; e < extnum; e++) {
if (strncmp(props[e].extensionName, spv->required_ext,
VK_MAX_EXTENSION_NAME_SIZE) == 0)
goto done;
}
error:
MP_VERBOSE(ctx, "Device doesn't support VK_NV_glsl_shader, skipping..\n");
ret = false;
done:
talloc_free(props);
return ret;
}
const struct spirv_compiler_fns spirv_nvidia_builtin = {
.compile_glsl = nv_glsl_compile,
.init = nv_glsl_init,
};

View File

@ -806,7 +806,8 @@ video_output_features = [
"video outputs use --disable-gl.",
}, {
'name': '--vulkan',
'desc': 'Vulkan context support',
'desc': 'Vulkan context support',
'deps': 'shaderc',
# Lowest version tested, Ubuntu 16.04's
'func': check_pkg_config('vulkan >= 1.0.61'),
}, {

View File

@ -501,7 +501,6 @@ def build(ctx):
( "video/out/vulkan/formats.c", "vulkan" ),
( "video/out/vulkan/malloc.c", "vulkan" ),
( "video/out/vulkan/ra_vk.c", "vulkan" ),
( "video/out/vulkan/spirv_nvidia.c", "vulkan" ),
( "video/out/vulkan/utils.c", "vulkan" ),
( "video/out/w32_common.c", "win32-desktop" ),
( "video/out/wayland/idle-inhibit-v1.c", "wayland" ),