summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-11-04 19:46:15 +0100
committerwm4 <wm4@nowhere>2013-11-07 23:57:43 +0100
commit90015a8b8bf01d8c4c4a1e93697877cc5dd1d3aa (patch)
tree46919c772618e5931640e6807c20d88db45f0893
parentd1a8dfb8c47741475662f848ac076a6d9e1b0a56 (diff)
downloadmpv-90015a8b8bf01d8c4c4a1e93697877cc5dd1d3aa.tar.bz2
mpv-90015a8b8bf01d8c4c4a1e93697877cc5dd1d3aa.tar.xz
vo_opengl: reserve 4 texture units for video instead of 3
Video has up to 4 textures, if you include obscure formats with alpha. This means alpha formats could always overwrite the first scaler texture, leading to corrupted video display. This problem was recently brought to light, when commit 571e697 started to explicitly unbind all 4 video textures, which broke rendering for non-alpha formats as well. Fix this by reserving the correct number of texture units.
-rw-r--r--video/out/gl_video.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index 8bab6a5c4c..0ea8122eb1 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -47,11 +47,11 @@ static const char vo_opengl_shaders[] =
// Pixel width of 1D lookup textures.
#define LOOKUP_TEXTURE_SIZE 256
-// Texture units 0-2 are used by the video, with unit 0 for free use.
-// Units 3-4 are used for scaler LUTs.
-#define TEXUNIT_SCALERS 3
-#define TEXUNIT_3DLUT 5
-#define TEXUNIT_DITHER 6
+// Texture units 0-3 are used by the video, with unit 0 for free use.
+// Units 4-5 are used for scaler LUTs.
+#define TEXUNIT_SCALERS 4
+#define TEXUNIT_3DLUT 6
+#define TEXUNIT_DITHER 7
// lscale/cscale arguments that map directly to shader filter routines.
// Note that the convolution filters are not included in this list.