From f6dac5d884bfea0aceba68715b720e80b2d9aa03 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 20 Dec 2014 19:23:17 +0100 Subject: 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. --- video/out/gl_osd.c | 6 +++--- video/out/gl_video.c | 2 +- video/out/gl_video_shaders.glsl | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'video/out') 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 -- cgit v1.2.3