Convert texture's gl format (from dali-core). 77/201077/7
authorSeungho, Baek <sbsh.baek@samsung.com>
Fri, 8 Mar 2019 06:08:36 +0000 (15:08 +0900)
committerSeungho, Baek <sbsh.baek@samsung.com>
Thu, 14 Mar 2019 08:00:39 +0000 (17:00 +0900)
 - ConvertTexture function in gl-implementation.
 - To remove dali-core's dependency of OpenGL es version.

Change-Id: I25a2f7035b92fa39e068125e207c81fe31a8e1f4
Signed-off-by: Seungho, Baek <sbsh.baek@samsung.com>
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-gl-abstraction.cpp
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-gl-abstraction.h
dali/internal/graphics/gles/gl-implementation.h

index 02439bc..44c6a33 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -104,6 +104,10 @@ void TestGlAbstraction::PostRender()
 {
 }
 
+void TestGlAbstraction::ConvertTexture( uint8_t* buffer, GLenum& imageGlFormat, const uint32_t dataSize, const GLenum textureGlFormat, const bool isSubImage )
+{
+}
+
 } // Namespace dali
 
 bool BlendEnabled(const Dali::TraceCallStack& callStack)
index c68573b..c69e4e3 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_GL_ABSTRACTION_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -59,6 +59,8 @@ public:
   void PreRender();
   void PostRender();
 
+  void ConvertTexture( uint8_t* buffer, GLenum& imageGlFormat, const uint32_t dataSize, const GLenum textureGlFormat, const bool isSubImage );
+
   /* OpenGL ES 2.0 */
 
   inline void ActiveTexture( GLenum textureUnit )
index b1ce82d..1c12bd2 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_INTERNAL_GL_IMPLEMENTATION_H__
 
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -67,6 +67,35 @@ public:
     /* Do nothing in main implementation */
   }
 
+  void ConvertTexture( uint8_t* buffer, GLenum& imageGlFormat, const uint32_t dataSize, const GLenum textureGlFormat, const bool isSubImage )
+  {
+    bool convert = ( ( imageGlFormat == GL_RGB ) && ( textureGlFormat == GL_RGBA ) );
+#if DALI_GLES_VERSION >= 30
+    // Don't convert manually from RGB to RGBA if GLES >= 3.0 and a sub-image is uploaded.
+    convert = convert && !isSubImage;
+#endif // DALI_GLES_VERSION >= 30
+
+    if( convert )
+    {
+      //This buffer is only used if manually converting from RGB to RGBA
+      uint8_t* tempBuffer(0);
+
+      tempBuffer = new uint8_t[dataSize*4u];
+      for( uint32_t i = 0u; i < dataSize; ++i )
+      {
+        tempBuffer[i*4u]   = buffer[i*3u];
+        tempBuffer[i*4u+1] = buffer[i*3u+1];
+        tempBuffer[i*4u+2] = buffer[i*3u+2];
+        tempBuffer[i*4u+3] = 0xFF;
+      }
+      buffer = tempBuffer;
+      imageGlFormat = textureGlFormat; // Set the glFormat to GL_RGBA
+
+      //Destroy temp buffer used for conversion RGB->RGBA
+      delete[] tempBuffer;
+    }
+  }
+
   /* OpenGL ES 2.0 */
 
   void ActiveTexture (GLenum texture)