From 19b1dff5b22d66f365456359ee782a4afc963526 Mon Sep 17 00:00:00 2001
From: Michael Olbrich <m.olbrich@pengutronix.de>
Date: Wed, 26 Feb 2014 17:29:45 +0100
Subject: [PATCH] videonode: imx6: cleanup pixel formats

All formats are now tested.

Also, don't use the alpha channel. This is not quite correct for formats
with alpha channel but for video probably a good idea.

Change-Id: I4a2404d7c96023bb1e3fca41e1f224d23347f290
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
---
 .../videonode/imx6/qsgvivantevideomaterialshader.cpp   |  2 +-
 src/plugins/videonode/imx6/qsgvivantevideonode.cpp     | 10 ++++------
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp
index 7b5e5e58b..2c2c342a6 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp
+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp
@@ -91,7 +91,7 @@ const char *QSGVivanteVideoMaterialShader::fragmentShader() const {
             ""
             "void main()"
             "{"
-            "  gl_FragColor = texture2D( texture, qt_TexCoord ) * opacity;\n"
+            "  gl_FragColor = vec4(texture2D( texture, qt_TexCoord ).rgb, 1.0) * opacity;\n"
             "}";
     return shader;
 }
diff --git a/src/plugins/videonode/imx6/qsgvivantevideonode.cpp b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp
index d5f1e6181..ae3509546 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideonode.cpp
+++ b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp
@@ -71,16 +71,14 @@ const QMap<QVideoFrame::PixelFormat, GLenum>& QSGVivanteVideoNode::getVideoForma
     if (static_VideoFormat2GLFormatMap.isEmpty()) {
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_YV12,     GL_VIV_YV12);
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_NV12,     GL_VIV_NV12);
-
-
-        // The following formats should work but are untested!
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_NV21,     GL_VIV_NV21);
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_UYVY,     GL_VIV_UYVY);
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_YUYV,     GL_VIV_YUY2);
-        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB32,    GL_RGBA);
-        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB24,    GL_RGB);
+        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB32,    GL_BGRA_EXT);
+        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_ARGB32,   GL_BGRA_EXT);
+        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_BGR32,    GL_RGBA);
+        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_BGRA32,   GL_RGBA);
         static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB565,   GL_RGB565);
-        static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_BGRA32,   GL_BGRA_EXT);
     }
 
     return static_VideoFormat2GLFormatMap;
-- 
GitLab