summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2017-09-13 03:09:48 +0200
committerNiklas Haas <git@haasn.xyz>2017-09-26 17:25:35 +0200
commit258487370fd840b018a404225277d74f74899c59 (patch)
tree83a9a112d141f08a87d290ddf0aa57ea04fbf60a /options
parent91f23c7067af248846420854a0dc78c26ea6e300 (diff)
downloadmpv-258487370fd840b018a404225277d74f74899c59.tar.bz2
mpv-258487370fd840b018a404225277d74f74899c59.tar.xz
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.
Diffstat (limited to 'options')
-rw-r--r--options/options.c2
-rw-r--r--options/options.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/options/options.c b/options/options.c
index 6467468691..b96ed5ef02 100644
--- a/options/options.c
+++ b/options/options.c
@@ -90,6 +90,7 @@ extern const struct m_obj_list ao_obj_list;
extern const struct m_sub_options opengl_conf;
extern const struct m_sub_options vulkan_conf;
+extern const struct m_sub_options spirv_conf;
extern const struct m_sub_options angle_conf;
extern const struct m_sub_options cocoa_conf;
@@ -686,6 +687,7 @@ const m_option_t mp_opts[] = {
OPT_SUBSTRUCT("", demux_opts, demux_conf, 0),
OPT_SUBSTRUCT("", gl_video_opts, gl_video_conf, 0),
+ OPT_SUBSTRUCT("", spirv_opts, spirv_conf, 0),
#if HAVE_GL
OPT_SUBSTRUCT("", opengl_opts, opengl_conf, 0),
diff --git a/options/options.h b/options/options.h
index 63dee03612..d2d0ea3cf9 100644
--- a/options/options.h
+++ b/options/options.h
@@ -330,6 +330,7 @@ typedef struct MPOpts {
struct angle_opts *angle_opts;
struct opengl_opts *opengl_opts;
struct vulkan_opts *vulkan_opts;
+ struct spirv_opts *spirv_opts;
struct cocoa_opts *cocoa_opts;
struct dvd_opts *dvd_opts;