summaryrefslogtreecommitdiffstats
path: root/video/out/gl_video.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-12-08 15:23:21 +0100
committerwm4 <wm4@nowhere>2014-12-08 15:23:21 +0100
commit4a95be014b8875567e8e800a6075d876ba824081 (patch)
tree642731035f35d751c89bb4a23c6da45c9ea61d46 /video/out/gl_video.c
parent4cae83db76bbcc82813825a3ae3f2a563d5ba809 (diff)
downloadmpv-4a95be014b8875567e8e800a6075d876ba824081.tar.bz2
mpv-4a95be014b8875567e8e800a6075d876ba824081.tar.xz
vo_opengl: never use 1D textures for lookup textures
This was a microoptimization for small filters which need 4 or less weights per sample point. When I originally wrote this code, using a 1D texture seemed to give a slight speed gain, but now I couldn't measure any difference. Remove this to simplify the code.
Diffstat (limited to 'video/out/gl_video.c')
-rw-r--r--video/out/gl_video.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index efc1b7b9a7..124d949a03 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -1176,39 +1176,28 @@ static void init_scaler(struct gl_video *p, struct scaler *scaler)
int size = scaler->kernel->size;
assert(size < FF_ARRAY_ELEMS(lut_tex_formats));
const struct lut_tex_format *fmt = &lut_tex_formats[size];
- bool use_2d = fmt->pixels > 1;
bool is_luma = scaler->index == 0;
- scaler->lut_name = use_2d
- ? (is_luma ? "lut_l_2d" : "lut_c_2d")
- : (is_luma ? "lut_l_1d" : "lut_c_1d");
+ scaler->lut_name = is_luma ? "lut_l" : "lut_c";
gl->ActiveTexture(GL_TEXTURE0 + TEXUNIT_SCALERS + scaler->index);
- GLenum target = use_2d ? GL_TEXTURE_2D : GL_TEXTURE_1D;
if (!scaler->gl_lut)
gl->GenTextures(1, &scaler->gl_lut);
- gl->BindTexture(target, scaler->gl_lut);
+ gl->BindTexture(GL_TEXTURE_2D, scaler->gl_lut);
gl->PixelStorei(GL_UNPACK_ALIGNMENT, 4);
gl->PixelStorei(GL_UNPACK_ROW_LENGTH, 0);
float *weights = talloc_array(NULL, float, LOOKUP_TEXTURE_SIZE * size);
mp_compute_lut(scaler->kernel, LOOKUP_TEXTURE_SIZE, weights);
- if (use_2d) {
- gl->TexImage2D(GL_TEXTURE_2D, 0, fmt->internal_format, fmt->pixels,
- LOOKUP_TEXTURE_SIZE, 0, fmt->format, GL_FLOAT,
- weights);
- } else {
- gl->TexImage1D(GL_TEXTURE_1D, 0, fmt->internal_format,
- LOOKUP_TEXTURE_SIZE, 0, fmt->format, GL_FLOAT,
- weights);
- }
+ gl->TexImage2D(GL_TEXTURE_2D, 0, fmt->internal_format, fmt->pixels,
+ LOOKUP_TEXTURE_SIZE, 0, fmt->format, GL_FLOAT, weights);
talloc_free(weights);
- gl->TexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- gl->TexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- gl->TexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- gl->TexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
gl->ActiveTexture(GL_TEXTURE0);