summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBin Jin <bjin1990@gmail.com>2014-08-29 20:33:32 +0200
committerwm4 <wm4@nowhere>2014-08-29 20:56:03 +0200
commit225f2e67b718bab842f4c4553c5ca9f8a6cebb47 (patch)
treea0e2fa44d70ca00ca3af2339c84ce603dde40e7f
parenta8299cec2974836d5ea615cc2d12284ac2aca5c4 (diff)
downloadmpv-225f2e67b718bab842f4c4553c5ca9f8a6cebb47.tar.bz2
mpv-225f2e67b718bab842f4c4553c5ca9f8a6cebb47.tar.xz
vo_opengl: remove macro operator from shader
Removes '##' operator from OpenGL shader code.
-rw-r--r--video/out/gl_video.c10
-rw-r--r--video/out/gl_video_shaders.glsl18
2 files changed, 7 insertions, 21 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index 5cf832d201..e2b64968ce 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -826,9 +826,9 @@ static void shader_setup_scaler(char **shader, struct scaler *scaler, int pass)
{
const char *target = scaler->index == 0 ? "SAMPLE_L" : "SAMPLE_C";
if (!scaler->kernel) {
- *shader = talloc_asprintf_append(*shader, "#define %s sample_%s_%c\n",
- target, scaler->name,
- "lc"[scaler->index]);
+ *shader = talloc_asprintf_append(*shader, "#define %s(p0, p1, p2) "
+ "sample_%s(p0, p1, p2, filter_param1_%c)\n",
+ target, scaler->name, "lc"[scaler->index]);
} else {
int size = scaler->kernel->size;
if (pass != -1) {
@@ -1033,13 +1033,13 @@ static void compile_shaders(struct gl_video *p)
// Force using the luma scaler on chroma. If the "indirect" stage is
// used, the actual scaling will happen in the next stage.
shader_def(&header_conv, "SAMPLE_C",
- use_indirect ? "sample_bilinear_l" : "SAMPLE_L");
+ use_indirect ? "SAMPLE_BILINEAR" : "SAMPLE_L");
}
if (use_indirect) {
// We don't use filtering for the Y-plane (luma), because it's never
// scaled in this scenario.
- shader_def(&header_conv, "SAMPLE_L", "sample_bilinear_l");
+ shader_def(&header_conv, "SAMPLE_L", "SAMPLE_BILINEAR");
shader_def_opt(&header_conv, "FIXED_SCALE", true);
header_conv = t_concat(tmp, header, header_conv);
p->indirect_program =
diff --git a/video/out/gl_video_shaders.glsl b/video/out/gl_video_shaders.glsl
index 6e135f0d11..7b6a1f07fa 100644
--- a/video/out/gl_video_shaders.glsl
+++ b/video/out/gl_video_shaders.glsl
@@ -172,6 +172,8 @@ vec4 sample_bilinear(VIDEO_SAMPLER tex, vec2 texsize, vec2 texcoord, float param
return texture(tex, texcoord);
}
+#define SAMPLE_BILINEAR(p0, p1, p2) sample_bilinear(p0, p1, p2, 0)
+
// Explanation how bicubic scaling with only 4 texel fetches is done:
// http://www.mate.tue.nl/mate/pdfs/10318.pdf
// 'Efficient GPU-Based Texture Interpolation using Uniform B-Splines'
@@ -352,22 +354,6 @@ vec4 sample_sharpen5(VIDEO_SAMPLER tex, vec2 texsize, vec2 texcoord, float param
return p + t * param1;
}
-#define CONCAT(a, b) a ## b
-
-#define SAMPLE_FILTER_LC(NAME) \
- vec4 CONCAT(NAME, _l)(VIDEO_SAMPLER tex, vec2 texsize, vec2 texcoord) { \
- return NAME(tex, texsize, texcoord, filter_param1_l); \
- } \
- \
- vec4 CONCAT(NAME, _c)(VIDEO_SAMPLER tex, vec2 texsize, vec2 texcoord) { \
- return NAME(tex, texsize, texcoord, filter_param1_c); \
- }
-
-SAMPLE_FILTER_LC(sample_bilinear)
-SAMPLE_FILTER_LC(sample_bicubic_fast)
-SAMPLE_FILTER_LC(sample_sharpen3)
-SAMPLE_FILTER_LC(sample_sharpen5)
-
void main() {
vec2 chr_texcoord = texcoord;
#ifdef USE_RECTANGLE