Test harness for UBO
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-gl-abstraction.h
index 1d93731..292f8b4 100644 (file)
 
 namespace Dali
 {
+
+struct UniformData
+{
+  std::string     name;
+  Property::Type  type;
+  UniformData( const std::string& name, Property::Type type = Property::Type::NONE)
+  : name(name), type(type)
+  {}
+};
+
 class DALI_CORE_API TestGlAbstraction : public Dali::Integration::GlAbstraction
 {
 public:
@@ -899,7 +909,7 @@ public:
     if(it2 == uniformIDs.end())
     {
       // Uniform not found, so add it...
-      uniformIDs[name] = ++mLastUniformIdUsed;
+      uniformIDs[name] = mLastUniformIdUsed++;
       return mLastUniformIdUsed;
     }
 
@@ -971,9 +981,35 @@ public:
     mShaderTrace.PushCall("LinkProgram", out.str(), namedParams);
 
     mNumberOfActiveUniforms = 3;
-    GetUniformLocation(program, "sTexture");
+
+    GetUniformLocation(program, "uRendererColor");
+    GetUniformLocation(program, "uCustom");
+    GetUniformLocation(program, "uCustom3");
+    GetUniformLocation(program, "uFadeColor");
+    GetUniformLocation(program, "uUniform1");
+    GetUniformLocation(program, "uUniform2");
+    GetUniformLocation(program, "uUniform3");
+    GetUniformLocation(program, "uFadeProgress");
+    GetUniformLocation(program, "uANormalMatrix");
     GetUniformLocation(program, "sEffect");
+    GetUniformLocation(program, "sTexture");
+    GetUniformLocation(program, "sTextureRect");
     GetUniformLocation(program, "sGloss");
+    GetUniformLocation(program, "uColor");
+    GetUniformLocation(program, "uModelMatrix");
+    GetUniformLocation(program, "uModelView");
+    GetUniformLocation(program, "uMvpMatrix");
+    GetUniformLocation(program, "uNormalMatrix");
+    GetUniformLocation(program, "uProjection");
+    GetUniformLocation(program, "uSize");
+    GetUniformLocation(program, "uViewMatrix");
+    GetUniformLocation(program, "uLightCameraProjectionMatrix");
+    GetUniformLocation(program, "uLightCameraViewMatrix");
+
+    for( const auto& uniform : mCustomUniformData )
+    {
+      GetUniformLocation(program, uniform.name.c_str());
+    }
   }
 
   inline void PixelStorei(GLenum pname, GLint param) override
@@ -1181,10 +1217,16 @@ public:
     out << std::hex << target << ", " << pname << ", " << param;
     std::string params = out.str();
 
+    out.str("");
+    out << std::hex << target;
     TraceCallStack::NamedParams namedParams;
-    namedParams["target"] << std::hex << target;
-    namedParams["pname"] << std::hex << pname;
-    namedParams["param"] << param;
+    namedParams["target"] << out.str();
+    out.str("");
+    out << std::hex << pname;
+    namedParams["pname"] << out.str();
+    out.str("");
+    out << std::hex << param;
+    namedParams["param"] << out.str();
     mTexParameterTrace.PushCall("TexParameteri", params, namedParams);
   }
 
@@ -2270,7 +2312,7 @@ public: // TEST FUNCTIONS
       }
     }
 
-    fprintf(stderr, "Not found, printing possible values:\n");
+    fprintf(stderr, "%s Not found, printing possible values:\n", name);
     for(ProgramUniformMap::const_iterator program_it = mUniforms.begin();
         program_it != mUniforms.end();
         ++program_it)
@@ -2289,7 +2331,7 @@ public: // TEST FUNCTIONS
         if(mProgramUniforms.GetUniformValue(programId, uniformId, origValue))
         {
           std::stringstream out;
-          out << uniform_it->first << ": " << origValue;
+          out << "Program: " << programId << ", " << uniform_it->first << ": " << origValue;
           fprintf(stderr, "%s\n", out.str().c_str());
         }
       }
@@ -2323,6 +2365,11 @@ public: // TEST FUNCTIONS
     return false;
   }
 
+  inline void SetCustomUniforms(std::vector<UniformData>& customUniformData)
+  {
+    mCustomUniformData = customUniformData;
+  }
+
   inline GLuint GetLastShaderCompiled() const
   {
     return mLastShaderCompiled;
@@ -2506,6 +2553,8 @@ private:
   typedef std::map<GLuint, UniformIDMap> ProgramUniformMap;
   ProgramUniformMap                      mUniforms;
 
+  std::vector<UniformData>               mCustomUniformData{};
+
   template<typename T>
   struct ProgramUniformValue : public std::map<GLuint, std::map<GLint, T> >
   {