summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2016-07-25 12:32:19 +0200
committerwm4 <wm4@nowhere>2016-07-25 12:50:11 +0200
commit46b60a3e72a0343611a204876522e36e7869b998 (patch)
tree9f39e567a2403f56d92b4dcc4bde1b0e3cb3b031 /video
parentf127869037f50c1382424e89e0cba5ac3443c094 (diff)
downloadmpv-46b60a3e72a0343611a204876522e36e7869b998.tar.bz2
mpv-46b60a3e72a0343611a204876522e36e7869b998.tar.xz
vo_opengl: remove the 3dlut-size npot2 restriction
This requires changing the pixel upload alignment because the odd sizes might not be aligned to multiples of 4. Anyway, the restriction has no real benefit and the sizes in between 32 and 64 might be worth using, so just drop it.
Diffstat (limited to 'video')
-rw-r--r--video/out/opengl/lcms.c2
-rw-r--r--video/out/opengl/video.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/video/out/opengl/lcms.c b/video/out/opengl/lcms.c
index 7cf2d42466..ec352cde05 100644
--- a/video/out/opengl/lcms.c
+++ b/video/out/opengl/lcms.c
@@ -59,7 +59,7 @@ static bool parse_3dlut_size(const char *arg, int *p1, int *p2, int *p3)
return false;
for (int n = 0; n < 3; n++) {
int s = ((int[]) { *p1, *p2, *p3 })[n];
- if (s < 2 || s > 512 || ((s - 1) & s))
+ if (s < 2 || s > 512)
return false;
}
return true;
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index d403f6211a..901e208cab 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -631,8 +631,10 @@ static bool gl_video_get_lut3d(struct gl_video *p, enum mp_csp_prim prim,
gl->ActiveTexture(GL_TEXTURE0 + TEXUNIT_3DLUT);
gl->BindTexture(GL_TEXTURE_3D, p->lut_3d_texture);
+ gl->PixelStorei(GL_UNPACK_ALIGNMENT, 1);
gl->TexImage3D(GL_TEXTURE_3D, 0, GL_RGB16, lut3d->size[0], lut3d->size[1],
lut3d->size[2], 0, GL_RGB, GL_UNSIGNED_SHORT, lut3d->data);
+ gl->PixelStorei(GL_UNPACK_ALIGNMENT, 4);
gl->TexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gl->TexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
gl->TexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);