summaryrefslogtreecommitdiffstats
path: root/video/out/opengl
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossy@jrg.systems>2017-10-02 23:10:52 +1100
committerJames Ross-Gowan <rossy@jrg.systems>2017-11-07 20:27:13 +1100
commit9b2dae79b1be1f57e7b6bcf80d500ab4190aa3d3 (patch)
tree8c490aa1149b57d33f5eb1a03175425d212fe63f /video/out/opengl
parent68eac1a1e7ac931576a8b59dd159a7961189ca48 (diff)
downloadmpv-9b2dae79b1be1f57e7b6bcf80d500ab4190aa3d3.tar.bz2
mpv-9b2dae79b1be1f57e7b6bcf80d500ab4190aa3d3.tar.xz
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.
Diffstat (limited to 'video/out/opengl')
-rw-r--r--video/out/opengl/ra_gl.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/video/out/opengl/ra_gl.c b/video/out/opengl/ra_gl.c
index 61ac2c2bbb..60e667bf05 100644
--- a/video/out/opengl/ra_gl.c
+++ b/video/out/opengl/ra_gl.c
@@ -97,6 +97,7 @@ static int ra_init_gl(struct ra *ra, GL *gl)
static const int caps_map[][2] = {
{RA_CAP_DIRECT_UPLOAD, 0},
{RA_CAP_GLOBAL_UNIFORM, 0},
+ {RA_CAP_FRAGCOORD, 0},
{RA_CAP_TEX_1D, MPGL_CAP_1D_TEX},
{RA_CAP_TEX_3D, MPGL_CAP_3D_TEX},
{RA_CAP_COMPUTE, MPGL_CAP_COMPUTE_SHADER},
@@ -115,6 +116,10 @@ static int ra_init_gl(struct ra *ra, GL *gl)
ra->caps |= RA_CAP_BUF_RW;
}
+ // textureGather is only supported in GLSL 400+
+ if (ra->glsl_version >= 400)
+ ra->caps |= RA_CAP_GATHER;
+
if (gl->BlitFramebuffer)
ra->caps |= RA_CAP_BLIT;