diff options
author | Niklas Haas <git@haasn.xyz> | 2017-09-13 03:09:48 +0200 |
---|---|---|
committer | Niklas Haas <git@haasn.xyz> | 2017-09-26 17:25:35 +0200 |
commit | 258487370fd840b018a404225277d74f74899c59 (patch) | |
tree | 83a9a112d141f08a87d290ddf0aa57ea04fbf60a /video/out/vulkan/context.h | |
parent | 91f23c7067af248846420854a0dc78c26ea6e300 (diff) | |
download | mpv-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 'video/out/vulkan/context.h')
-rw-r--r-- | video/out/vulkan/context.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/video/out/vulkan/context.h b/video/out/vulkan/context.h index 3f630bc10e..a64d39f125 100644 --- a/video/out/vulkan/context.h +++ b/video/out/vulkan/context.h @@ -8,3 +8,6 @@ void ra_vk_ctx_uninit(struct ra_ctx *ctx); bool ra_vk_ctx_init(struct ra_ctx *ctx, struct mpvk_ctx *vk, VkPresentModeKHR preferred_mode); bool ra_vk_ctx_resize(struct ra_swapchain *sw, int w, int h); + +// May be called on a ra_ctx of any type. +struct mpvk_ctx *ra_vk_ctx_get(struct ra_ctx *ctx); |