[Tizen] To get MaxTextureSize by using glGetIntegerv not by using environment variable
authorJoogab Yun <joogab.yun@samsung.com>
Mon, 12 Aug 2019 04:43:14 +0000 (13:43 +0900)
committerJoogab Yun <joogab.yun@samsung.com>
Mon, 12 Aug 2019 04:43:18 +0000 (13:43 +0900)
This reverts commit 6f28222b808749415a16ba6f2130253faff5fecd.

Change-Id: I651dd8070763705f9da0eaa97cb3f22bcb8935dd

.gitignore
build/tizen/adaptor/Makefile.am
build/tizen/adaptor/configure.ac
build/tizen/adaptor/system-cache-path.in [new file with mode: 0644]
dali/internal/adaptor/common/adaptor-impl.cpp
dali/internal/adaptor/common/combined-update-render-controller.cpp
dali/internal/adaptor/file.list
dali/internal/graphics/gles/gl-implementation.h
dali/internal/imaging/common/image-loader.cpp
dali/internal/imaging/common/image-loader.h

index 8384ac8..3480ca9 100644 (file)
@@ -38,3 +38,4 @@ tags
 /debugfiles.list
 /debuglinks.list
 /debugsources.list
+/dali/internal/adaptor/common/system-cache-path.cpp
index b11033f..aec1ab8 100644 (file)
@@ -68,7 +68,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_window_system_ubuntu_x11_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ENABLE_NETWORK_LOGGING
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -125,7 +126,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_thread_common_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ECORE_WAYLAND2
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -191,7 +193,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_thread_common_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ECORE_WAYLAND2
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -256,7 +259,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_thread_common_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ECORE_WAYLAND2
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -320,7 +324,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_thread_common_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ECORE_WAYLAND2
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -387,7 +392,8 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_thread_common_src_files) \
                   $(devel_api_text_abstraction_src_files) \
                   $(static_libraries_glyphy_src_files) \
-                  $(static_libraries_libunibreak_src_files)
+                  $(static_libraries_libunibreak_src_files) \
+                  $(adaptor_dali_src_file)
 
 if ECORE_WAYLAND2
 LIBDALI_ADAPTOR_LA_SOURCES += \
@@ -409,7 +415,6 @@ endif
 
 endif
 
-
 # Package doc
 package_doxy_dir = ../../../doc
 include ../../../doc/file.list
index ca2eb43..b182ba7 100644 (file)
@@ -326,6 +326,13 @@ if test x$FONT_CONFIGURATION_FILE != x; then
   fontConfigurationFile=$FONT_CONFIGURATION_FILE
 fi
 
+if test "x$enable_profile" = "xUBUNTU"; then
+  cachePath=$HOME
+else
+  cachePath="/home/owner"
+fi # ubuntu profile test
+
+AC_SUBST(cachePath)
 AC_SUBST(dataReadWriteDir)
 AC_SUBST(dataReadOnlyDir)
 AC_SUBST(DALI_ADAPTOR_CFLAGS)
@@ -342,6 +349,7 @@ AC_CONFIG_FILES([
   Makefile
   dali-adaptor.pc
   dali-adaptor-integration.pc
+  ../../../dali/internal/adaptor/common/system-cache-path.cpp:./system-cache-path.in
 ])
 
 if test "x$freetype_bitmap_support" = "xyes"; then
diff --git a/build/tizen/adaptor/system-cache-path.in b/build/tizen/adaptor/system-cache-path.in
new file mode 100644 (file)
index 0000000..816be33
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// EXTERNAL INCLUDES
+#include <string>
+#include <cstdlib>
+
+std::string GetSystemCachePath()
+{
+  return std::string( "@cachePath@/.cache/dali_common_caches/" );
+}
\ No newline at end of file
index 6256e04..e861656 100755 (executable)
@@ -34,6 +34,9 @@
 #include <dali/integration-api/events/wheel-event-integ.h>
 #include <dali/integration-api/processor-interface.h>
 
+#include <fstream>
+#include <iostream>
+
 // INTERNAL INCLUDES
 #include <dali/public-api/dali-adaptor-common.h>
 #include <dali/internal/system/common/thread-controller.h>
 #include <dali/internal/imaging/common/image-loader-plugin-proxy.h>
 #include <dali/internal/imaging/common/image-loader.h>
 
+#include <dali/devel-api/adaptor-framework/file-loader.h>
+#include <dali/devel-api/adaptor-framework/file-stream.h>
 
 using Dali::TextAbstraction::FontClient;
 
+extern std::string GetSystemCachePath();
+
 namespace Dali
 {
 
@@ -284,6 +291,40 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration:
   {
     Dali::TizenPlatform::ImageLoader::SetMaxTextureSize( mEnvironmentOptions->GetMaxTextureSize() );
   }
+
+  std::string systemCachePath = GetSystemCachePath();
+  if ( systemCachePath.c_str() != NULL )
+  {
+    Dali::Vector<char> buffer;
+    if( Dali::FileLoader::ReadFile( systemCachePath + "gpu-environment.conf", buffer, Dali::FileLoader::FileType::TEXT ) )
+    {
+      std::stringstream stream( &buffer[0], std::ios::in );
+      std::string line;
+      while( std::getline( stream, line ) )
+      {
+        line.erase( line.find_last_not_of( " \t\r\n" ) + 1 );
+        line.erase( 0, line.find_first_not_of( " \t\r\n" ) );
+        if( '#' == *( line.cbegin() ) || line == "" )
+        {
+          continue;
+        }
+
+        std::istringstream stream( line );
+        std::string environmentVariableName, environmentVariableValue;
+        std::getline(stream, environmentVariableName, ' ');
+        if( environmentVariableName == "DALI_ENV_MAX_TEXTURE_SIZE" && mEnvironmentOptions->GetMaxTextureSize() == 0 )
+        {
+          std::getline(stream, environmentVariableValue);
+          setenv( environmentVariableName.c_str() , environmentVariableValue.c_str(), 1 );
+          Dali::TizenPlatform::ImageLoader::SetMaxTextureSize( std::atoi( environmentVariableValue.c_str() ) );
+        }
+      }
+    }
+    else
+    {
+      DALI_LOG_ERROR( "Fail to open file : %s\n", ( systemCachePath + "gpu-environment.conf" ).c_str() );
+    }
+  }
 }
 
 Adaptor::~Adaptor()
@@ -353,6 +394,32 @@ void Adaptor::Start()
   // Initialize the thread controller
   mThreadController->Initialize();
 
+  if( !Dali::TizenPlatform::ImageLoader::MaxTextureSizeUpdated() )
+  {
+    auto eglGraphics = static_cast<EglGraphics *>( mGraphics );
+    GlImplementation& mGLES = eglGraphics->GetGlesInterface();
+    Dali::TizenPlatform::ImageLoader::SetMaxTextureSize( mGLES.GetMaxTextureSize() );
+
+    std::string systemCachePath = GetSystemCachePath();
+    if( systemCachePath.c_str() != NULL )
+    {
+      const int dir_err = system( std::string( "mkdir " + systemCachePath ).c_str() );
+      if (-1 == dir_err)
+      {
+          printf("Error creating directory!n");
+          exit(1);
+      }
+
+      Dali::FileStream fileStream( systemCachePath + "gpu-environment.conf", Dali::FileStream::WRITE | Dali::FileStream::TEXT );
+      std::fstream& configFile = dynamic_cast<std::fstream&>( fileStream.GetStream() );
+      if( configFile.is_open() )
+      {
+        configFile << "DALI_ENV_MAX_TEXTURE_SIZE " << mGLES.GetMaxTextureSize() << std::endl;
+        configFile.close();
+      }
+    }
+  }
+
   ProcessCoreEvents(); // Ensure any startup messages are processed.
 
   // Initialize the image loader plugin
index aae3340..94693d2 100644 (file)
@@ -493,6 +493,8 @@ void CombinedUpdateRenderController::UpdateRenderThread()
     }
   }
 
+  eglGraphics->GetGlesInterface().ContextCreated();
+
   // Tell core it has a context
   mCore.ContextCreated();
 
index 803b95b..b10b5b8 100644 (file)
@@ -7,7 +7,8 @@ adaptor_adaptor_common_src_files=\
     ${adaptor_adaptor_dir}/common/adaptor.cpp \
     ${adaptor_adaptor_dir}/common/adaptor-builder-impl.cpp \
     ${adaptor_adaptor_dir}/common/application-impl.cpp \
-    ${adaptor_adaptor_dir}/common/combined-update-render-controller.cpp
+    ${adaptor_adaptor_dir}/common/combined-update-render-controller.cpp \
+    ${adaptor_adaptor_dir}/common/system-cache-path.cpp
 
 # module: adaptor, backend: tizen-wayland
 adaptor_adaptor_tizen_wayland_src_files=\
index 8c279f4..9ccc015 100644 (file)
@@ -23,6 +23,7 @@
 #include <cstdlib>
 #include <GLES2/gl2.h>
 #include <dali/integration-api/gl-abstraction.h>
+#include <dali/devel-api/threading/conditional-wait.h>
 
 // INTERNAL INCLUDES
 #include <dali/internal/graphics/gles/gles-abstraction.h>
@@ -49,7 +50,10 @@ class GlImplementation : public Dali::Integration::GlAbstraction
 public:
   GlImplementation()
     : mGlesVersion( 30 ),
-      mIsSurfacelessContextSupported( false )
+      mIsSurfacelessContextSupported( false ),
+      mIsContextCreated( false ),
+      mContextCreatedWaitCondition(),
+      mMaxTextureSize( 0 )
   {
     mImpl.reset( new Gles3Implementation() );
   }
@@ -66,6 +70,17 @@ public:
     /* Do nothing in main implementation */
   }
 
+  void ContextCreated()
+  {
+    glGetIntegerv( GL_MAX_TEXTURE_SIZE, &mMaxTextureSize );
+
+    if( !mIsContextCreated )
+    {
+      mContextCreatedWaitCondition.Notify();
+    }
+    mIsContextCreated = true;
+  }
+
   void SetGlesVersion( const int32_t glesVersion )
   {
     if( mGlesVersion != glesVersion )
@@ -103,6 +118,15 @@ public:
     return convert;
   }
 
+  int GetMaxTextureSize()
+  {
+    if( !mIsContextCreated )
+    {
+      mContextCreatedWaitCondition.Wait();
+    }
+    return mMaxTextureSize;
+  }
+
   /* OpenGL ES 2.0 */
 
   void ActiveTexture( GLenum texture )
@@ -1340,6 +1364,9 @@ public:
 private:
   int32_t mGlesVersion;
   bool mIsSurfacelessContextSupported;
+  bool mIsContextCreated;
+  ConditionalWait mContextCreatedWaitCondition;
+  GLint mMaxTextureSize;
   std::unique_ptr<GlesAbstraction> mImpl;
 };
 
index b83878e..5980796 100755 (executable)
@@ -47,6 +47,8 @@ Integration::Log::Filter* gLogFilter = Debug::Filter::New( Debug::Concise, false
 
 static unsigned int gMaxTextureSize = 4096;
 
+static bool gMaxTextureSizeUpdated = false;
+
 /**
  * Enum for file formats, has to be in sync with BITMAP_LOADER_LOOKUP_TABLE
  */
@@ -418,6 +420,7 @@ ImageDimensions GetClosestImageSize( Integration::ResourcePointer resourceBuffer
 void SetMaxTextureSize( unsigned int size )
 {
   gMaxTextureSize = size;
+  gMaxTextureSizeUpdated = true;
 }
 
 unsigned int GetMaxTextureSize()
@@ -425,6 +428,11 @@ unsigned int GetMaxTextureSize()
   return gMaxTextureSize;
 }
 
+bool MaxTextureSizeUpdated()
+{
+  return gMaxTextureSizeUpdated;
+}
+
 } // ImageLoader
 } // TizenPlatform
 } // Dali
index 55f1680..a7c42a0 100644 (file)
@@ -95,6 +95,13 @@ void SetMaxTextureSize( unsigned int size );
  */
 unsigned int GetMaxTextureSize();
 
+/**
+ * @brief Check the gMaxTextureSize is updated or not.
+ *
+ * @return Whether the gMaxTextureSize is updated or not.
+ */
+bool MaxTextureSizeUpdated();
+
 } // ImageLoader
 } // TizenPlatform
 } // Dali