summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-05-26 08:21:10 +0200
committerwm4 <wm4@nowhere>2016-05-26 08:21:10 +0200
commit306c554376f6b06fcd675c8b8609da4e005997ed (patch)
treef4339bb16aedca898feef4cbfe887a0cc04c4efc /video
parente5f49d96855a8d3ccf3b6ad8b8de811d1391d806 (diff)
downloadmpv-306c554376f6b06fcd675c8b8609da4e005997ed.tar.bz2
mpv-306c554376f6b06fcd675c8b8609da4e005997ed.tar.xz
vo_opengl: fix superxbr shader compilation on ES
ES shaders do not allow implicit conversion from int to float, which is the most annoying ES anti-feature ever.
Diffstat (limited to 'video')
-rw-r--r--video/out/opengl/superxbr.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/video/out/opengl/superxbr.c b/video/out/opengl/superxbr.c
index b7b9a53afd..5c838ec51c 100644
--- a/video/out/opengl/superxbr.c
+++ b/video/out/opengl/superxbr.c
@@ -132,42 +132,42 @@ static void superxbr_step_h(struct gl_shader_cache *sc,
GLSLH(float hc = dot(h1+h2, ok)/2.0;)
// Compute diagonal edge strength using diagonal mask
- GLSLH(float d_edge = 0;)
+ GLSLH(float d_edge = 0.0;)
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
if (mask->d1[x][y]) {
// 1-distance diagonal neighbours
- GLSLHF("d_edge += %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("d_edge += %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->d1[x][y], x+1, y, x, y+1);
- GLSLHF("d_edge -= %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("d_edge -= %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->d1[x][y], 3-y, x+1, 3-(y+1), x); // rotated
}
if (x < 2 && y < 2 && mask->d2[x][y]) {
// 2-distance diagonal neighbours
- GLSLHF("d_edge += %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("d_edge += %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->d2[x][y], x+2, y, x, y+2);
- GLSLHF("d_edge -= %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("d_edge -= %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->d2[x][y], 3-y, x+2, 3-(y+2), x); // rotated
}
}
}
// Compute orthogonal edge strength using orthogonal mask
- GLSLH(float o_edge = 0;)
+ GLSLH(float o_edge = 0.0;)
for (int x = 1; x < 3; x++) {
for (int y = 0; y < 3; y++) {
if (mask->o1[y]) {
// 1-distance neighbours
- GLSLHF("o_edge += %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("o_edge += %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->o1[y], x, y, x, y+1); // vertical
- GLSLHF("o_edge -= %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("o_edge -= %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->o1[y], y, x, y+1, x); // horizontal
}
if (y < 2 && mask->o2[y]) {
// 2-distance neighbours
- GLSLHF("o_edge += %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("o_edge += %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->o2[y], x, y, x, y+2); // vertical
- GLSLHF("o_edge -= %d * abs(i(%d,%d) - i(%d,%d));\n",
+ GLSLHF("o_edge -= %d.0 * abs(i(%d,%d) - i(%d,%d));\n",
mask->o2[x], y, x, y+2, x); // horizontal
}
}
@@ -220,7 +220,7 @@ void pass_superxbr(struct gl_shader_cache *sc, int step,
// Load the input samples
GLSLH(for (int x = 0; x < 4; x++))
GLSLH(for (int y = 0; y < 4; y++))
- GLSLH(i(x,y) = HOOKED_texOff(vec2(x-1.25, y-1.25)).x;)
+ GLSLH(i(x,y) = HOOKED_texOff(vec2(float(x)-1.25, float(y)-1.25)).x;)
} else {
*transform = (struct gl_transform){{{1.0,0.0}, {0.0,1.0}}, {0.0,0.0}};