From 9b2dae79b1be1f57e7b6bcf80d500ab4190aa3d3 Mon Sep 17 00:00:00 2001 From: James Ross-Gowan Date: Mon, 2 Oct 2017 23:10:52 +1100 Subject: vo_gpu: d3d11: add RA caps for ra_d3d11 ra_d3d11 uses the SPIR-V compiler to translate GLSL to SPIR-V, which is then translated to HLSL. This means it always exposes the same GLSL version that the SPIR-V compiler supports (4.50 for shaderc/glslang.) Despite claiming to support GLSL 4.50, some features that are tied to the GLSL version in OpenGL are not supported by ra_d3d11 when targeting legacy Direct3D feature levels. This includes two features that mpv relies on: - Reading from gl_FragCoord in the fragment shader (requires FL 10_0) - textureGather from any texture component (requires FL 11_0) These features have been exposed as new RA caps. --- video/out/vulkan/ra_vk.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'video/out/vulkan') diff --git a/video/out/vulkan/ra_vk.c b/video/out/vulkan/ra_vk.c index 58213bd0e9..f85e30e21c 100644 --- a/video/out/vulkan/ra_vk.c +++ b/video/out/vulkan/ra_vk.c @@ -202,7 +202,11 @@ struct ra *ra_create_vk(struct mpvk_ctx *vk, struct mp_log *log) goto error; // UBO support is required - ra->caps |= RA_CAP_BUF_RO; + ra->caps |= RA_CAP_BUF_RO | RA_CAP_FRAGCOORD; + + // textureGather is only supported in GLSL 400+ + if (ra->glsl_version >= 400) + ra->caps |= RA_CAP_GATHER; // Try creating a shader storage buffer struct ra_buf_params ssbo_params = { -- cgit v1.2.3