summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-12-20 19:23:17 +0100
committerwm4 <wm4@nowhere>2014-12-20 19:23:17 +0100
commitf6dac5d884bfea0aceba68715b720e80b2d9aa03 (patch)
treedd9c93a4a73663f50e8d04be12d03f03a87535b7
parent501290da027d9ce852c7800e9cb8a14468fa240f (diff)
downloadmpv-f6dac5d884bfea0aceba68715b720e80b2d9aa03.tar.bz2
mpv-f6dac5d884bfea0aceba68715b720e80b2d9aa03.tar.xz
vo_opengl: GLES does not support GL_BGRA
Apparently GLES 2 and 3 do not support this. (The implementations I tested with were derived from desktop OpenGL and were not overly strict with this.) This is no problem; just use GL_RGBA and mangle the channels in the shader. Also disable direct support for image formats like IMGFMT_RGB555 with GLES; at least some of them are not supported in this form, and the formats aren't important anyway.
-rw-r--r--video/out/gl_osd.c6
-rw-r--r--video/out/gl_video.c2
-rw-r--r--video/out/gl_video_shaders.glsl2
3 files changed, 5 insertions, 5 deletions
diff --git a/video/out/gl_osd.c b/video/out/gl_osd.c
index 5219e3fbf8..5477b24197 100644
--- a/video/out/gl_osd.c
+++ b/video/out/gl_osd.c
@@ -39,17 +39,17 @@ static const int blend_factors[SUBBITMAP_COUNT][4] = {
static const struct osd_fmt_entry osd_to_gl3_formats[SUBBITMAP_COUNT] = {
[SUBBITMAP_LIBASS] = {GL_RED, GL_RED, GL_UNSIGNED_BYTE},
- [SUBBITMAP_RGBA] = {GL_RGBA, GL_BGRA, GL_UNSIGNED_BYTE},
+ [SUBBITMAP_RGBA] = {GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE},
};
static const struct osd_fmt_entry osd_to_gles3_formats[SUBBITMAP_COUNT] = {
[SUBBITMAP_LIBASS] = {GL_R8, GL_RED, GL_UNSIGNED_BYTE},
- [SUBBITMAP_RGBA] = {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE},
+ [SUBBITMAP_RGBA] = {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE},
};
static const struct osd_fmt_entry osd_to_gl2_formats[SUBBITMAP_COUNT] = {
[SUBBITMAP_LIBASS] = {GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE},
- [SUBBITMAP_RGBA] = {GL_RGBA, GL_BGRA, GL_UNSIGNED_BYTE},
+ [SUBBITMAP_RGBA] = {GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE},
};
static const struct osd_fmt_entry osd_to_gl_legacy_formats[SUBBITMAP_COUNT] = {
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index 64c1ac328e..4fc9e3e28b 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -2335,7 +2335,7 @@ static bool init_format(int fmt, struct gl_video *init)
// Packed RGB special formats
for (const struct fmt_entry *e = mp_to_gl_formats; e->mp_format; e++) {
- if (e->mp_format == fmt) {
+ if (!gl->es && e->mp_format == fmt) {
plane_format[0] = e;
goto supported;
}
diff --git a/video/out/gl_video_shaders.glsl b/video/out/gl_video_shaders.glsl
index 937673b0c3..2cbce5b71e 100644
--- a/video/out/gl_video_shaders.glsl
+++ b/video/out/gl_video_shaders.glsl
@@ -161,7 +161,7 @@ in vec2 texcoord;
DECLARE_FRAGPARMS
void main() {
- out_color = texture(texture0, texcoord);
+ out_color = texture(texture0, texcoord).bgra;
}
#!section frag_video