[Tizen] Support to get shader language version for shader static API 65/305665/1 accepted/tizen/7.0/unified/20240207.172835
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 5 Feb 2024 14:47:04 +0000 (23:47 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Tue, 6 Feb 2024 05:41:17 +0000 (14:41 +0900)
Let we support to get shader language version

Change-Id: Ic9a1c2223633acb965f945d04179d20a9d7b89b7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali/dali-test-suite-utils/test-gl-abstraction.cpp
automated-tests/src/dali/dali-test-suite-utils/test-gl-abstraction.h
automated-tests/src/dali/utc-Dali-Shader.cpp
dali/integration-api/gl-abstraction.h
dali/internal/event/common/thread-local-storage.cpp
dali/internal/event/common/thread-local-storage.h
dali/internal/event/rendering/shader-impl.cpp
dali/internal/event/rendering/shader-impl.h
dali/public-api/rendering/shader.cpp
dali/public-api/rendering/shader.h

index 6021026..0c545e0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -176,6 +176,11 @@ bool TestGlAbstraction::IsBlendEquationSupported(DevelBlendEquation::Type blendE
   return true;
 }
 
+uint32_t TestGlAbstraction::GetShaderLanguageVersion()
+{
+  return mShaderLanguageVersion;
+}
+
 std::string TestGlAbstraction::GetShaderVersionPrefix()
 {
   return std::string("");
index 5e5fde3..9051695 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_GL_ABSTRACTION_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -76,6 +76,8 @@ public:
 
   bool IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) override;
 
+  uint32_t GetShaderLanguageVersion();
+
   std::string GetShaderVersionPrefix();
 
   std::string GetVertexShaderPrefix();
@@ -2592,6 +2594,8 @@ public:
   TraceCallStack mViewportTrace;
 
   // Shaders & Uniforms
+  uint32_t mShaderLanguageVersion{320u};
+
   GLuint                                 mLastShaderIdUsed;
   GLuint                                 mLastProgramIdUsed{0u};
   GLuint                                 mLastUniformIdUsed;
index bf37850..b93dad8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -342,6 +342,36 @@ int UtcDaliShaderAnimatedProperty01(void)
   END_TEST;
 }
 
+int UtcDaliShaderGetShaderLanguageVersion(void)
+{
+  TestApplication application;
+
+  tet_infoline("Test get shader language version");
+
+  auto originalShaderVersion = application.GetGlAbstraction().GetShaderLanguageVersion();
+
+  try
+  {
+    uint32_t expectVersion                                = 100;
+    application.GetGlAbstraction().mShaderLanguageVersion = expectVersion;
+
+    DALI_TEST_EQUALS(Dali::Shader::GetShaderLanguageVersion(), expectVersion, TEST_LOCATION);
+
+    expectVersion                                         = 200;
+    application.GetGlAbstraction().mShaderLanguageVersion = expectVersion;
+
+    DALI_TEST_EQUALS(Dali::Shader::GetShaderLanguageVersion(), expectVersion, TEST_LOCATION);
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(false);
+  }
+
+  application.GetGlAbstraction().mShaderLanguageVersion = originalShaderVersion;
+
+  END_TEST;
+}
+
 int UtcDaliShaderAnimatedProperty02(void)
 {
   TestApplication application;
@@ -506,10 +536,10 @@ int UtcDaliShaderPropertyValueConstructorMap(void)
 
   std::string   hintSet = "MODIFIES_GEOMETRY";
   Property::Map map;
-  map["vertex"]     = VertexSource;
-  map["fragment"]   = FragmentSource;
+  map["vertex"]        = VertexSource;
+  map["fragment"]      = FragmentSource;
   map["renderPassTag"] = 0;
-  map["hints"]      = hintSet;
+  map["hints"]         = hintSet;
 
   Shader shader = Shader::New(map);
 
@@ -538,10 +568,10 @@ int UtcDaliShaderPropertyValueConstructorMap2(void)
 
   std::string   hintSet = "MODIFIES_GEOMETRY";
   Property::Map map;
-  map["vertex"]     = VertexSource;
-  map["fragment"]   = FragmentSource;
+  map["vertex"]        = VertexSource;
+  map["fragment"]      = FragmentSource;
   map["renderPassTag"] = 0;
-  map["hints"]      = Shader::Hint::Value::MODIFIES_GEOMETRY;
+  map["hints"]         = Shader::Hint::Value::MODIFIES_GEOMETRY;
 
   Shader shader = Shader::New(map);
 
@@ -571,15 +601,15 @@ int UtcDaliShaderPropertyValueConstructorArray(void)
 
   std::string   hintSet = "MODIFIES_GEOMETRY";
   Property::Map map[2];
-  map[0]["vertex"]     = VertexSource;
-  map[0]["fragment"]   = FragmentSource;
+  map[0]["vertex"]        = VertexSource;
+  map[0]["fragment"]      = FragmentSource;
   map[0]["renderPassTag"] = 0;
-  map[0]["hints"]      = hintSet;
+  map[0]["hints"]         = hintSet;
 
-  map[1]["vertex"]     = VertexSource2;
-  map[1]["fragment"]   = FragmentSource2;
+  map[1]["vertex"]        = VertexSource2;
+  map[1]["fragment"]      = FragmentSource2;
   map[1]["renderPassTag"] = 1;
-  map[1]["hints"]      = hintSet;
+  map[1]["hints"]         = hintSet;
 
   Property::Array array;
   array.PushBack(map[0]);
@@ -621,15 +651,15 @@ int UtcDaliShaderProgramPropertyArray(void)
   std::string hintSet = "MODIFIES_GEOMETRY";
 
   Property::Map map[2];
-  map[0]["vertex"]     = VertexSource;
-  map[0]["fragment"]   = FragmentSource;
+  map[0]["vertex"]        = VertexSource;
+  map[0]["fragment"]      = FragmentSource;
   map[0]["renderPassTag"] = 0;
-  map[0]["hints"]      = hintSet;
+  map[0]["hints"]         = hintSet;
 
-  map[1]["vertex"]     = VertexSource2;
-  map[1]["fragment"]   = FragmentSource2;
+  map[1]["vertex"]        = VertexSource2;
+  map[1]["fragment"]      = FragmentSource2;
   map[1]["renderPassTag"] = 1;
-  map[1]["hints"]      = hintSet;
+  map[1]["hints"]         = hintSet;
 
   Property::Array array;
   array.PushBack(map[0]);
index 2b06e3a..61bcc20 100644 (file)
@@ -142,6 +142,12 @@ public:
   virtual bool IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) = 0;
 
   /**
+   * Returns shading language version.
+   * @Return shading language version.
+   */
+  virtual uint32_t GetShaderLanguageVersion() = 0;
+
+  /**
    * Returns shader prefix of shading language version.
    * @Return shader prefix of shading language version.
    */
index 6f7aad3..6e765a0 100644 (file)
@@ -164,6 +164,11 @@ bool ThreadLocalStorage::IsBlendEquationSupported(DevelBlendEquation::Type blend
   return mCore->GetGlAbstraction().IsBlendEquationSupported(blendEquation);
 }
 
+uint32_t ThreadLocalStorage::GetShaderLanguageVersion()
+{
+  return mCore->GetGlAbstraction().GetShaderLanguageVersion();
+}
+
 std::string ThreadLocalStorage::GetShaderVersionPrefix()
 {
   return mCore->GetGlAbstraction().GetShaderVersionPrefix();
index b6a4405..d0466f4 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_THREAD_LOCAL_STORAGE_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -177,6 +177,11 @@ public:
   /**
    * @brief Returns shader prefix of shading language version.
    */
+  uint32_t GetShaderLanguageVersion();
+
+  /**
+   * @brief Returns shader prefix of shading language version.
+   */
   std::string GetShaderVersionPrefix();
 
   /**
index 57b8b59..9faf9bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -316,6 +316,12 @@ Shader::~Shader()
   }
 }
 
+uint32_t Shader::GetShaderLanguageVersion()
+{
+  Dali::Internal::ThreadLocalStorage& tls = Dali::Internal::ThreadLocalStorage::Get();
+  return tls.GetShaderLanguageVersion();
+}
+
 std::string Shader::GetShaderVersionPrefix()
 {
   Dali::Internal::ThreadLocalStorage& tls = Dali::Internal::ThreadLocalStorage::Get();
index ca32c18..42633db 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_SHADER_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -112,8 +112,8 @@ protected:
   ~Shader() override;
 
 private: // unimplemented methods
-  Shader()                         = delete;
-  Shader(const Shader&)            = delete;
+  Shader()              = delete;
+  Shader(const Shader&) = delete;
   Shader& operator=(const Shader&) = delete;
 
 private:
@@ -121,6 +121,11 @@ private:
 
 public:
   /**
+   * @copydoc Dali::Shader::GetShaderLanguageVersion()
+   */
+  static uint32_t GetShaderLanguageVersion();
+
+  /**
    * @copydoc Dali::Shader::GetShaderVersionPrefix()
    */
   static std::string GetShaderVersionPrefix();
index 02b95ff..0931b2b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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,11 @@ Shader::Shader(Internal::Shader* pointer)
 {
 }
 
+uint32_t Shader::GetShaderLanguageVersion()
+{
+  return Dali::Internal::Shader::GetShaderLanguageVersion();
+}
+
 std::string Shader::GetShaderVersionPrefix()
 {
   return Dali::Internal::Shader::GetShaderVersionPrefix();
index fe7a883..2911f00 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_SHADER_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -201,6 +201,15 @@ public:
   Shader& operator=(Shader&& rhs);
 
   /**
+   * @brief Get the number of shading language version.
+   * @note This can potentially block until GL has been initialized
+   * when the first time any DALi application is launched in the system.
+   * @SINCE_2_3.10
+   * @return shader languange versoin as integer.
+   */
+  static uint32_t GetShaderLanguageVersion();
+
+  /**
    * @brief Get shader preprocessor of shading language version.
    * @note This can potentially block until GL has been initialized
    * when the first time any DALi application is launched in the system.