Added FILE_CACHE_SUPPORT Hint for shader 51/322651/7
authorsunghyun kim <scholb.kim@samsung.com>
Mon, 14 Apr 2025 04:32:10 +0000 (13:32 +0900)
committersunghyun kim <scholb.kim@samsung.com>
Tue, 22 Apr 2025 06:32:15 +0000 (15:32 +0900)
please refer to dali-core patch
: https://review.tizen.org/gerrit/c/platform/core/uifw/dali-core/+/322649

Change-Id: I6e6f1dd61064be5f514d7e80f8af5d2cdd63f688

automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h
dali-toolkit/internal/visuals/visual-factory-cache.cpp

index a70c21f40c50941975feeb75cb4aa03dbf9252fc..52b7411b17735907f946af75448daf65f293cdb8 100644 (file)
@@ -2120,6 +2120,7 @@ public:
 
   inline void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) override
   {
+    *length = bufSize; // commonly it is same. so we provide bufSize for test
     mGetProgramBinaryCalled = true;
   }
 
index 8b76dee31c9218a94d61f1683abf8f0debf78c08..751aa67212b6e620b3d93e0880bd5bfaf6b11798 100644 (file)
@@ -102,16 +102,22 @@ Shader VisualFactoryCache::GetShader(ShaderType type, bool useDefaultUniforms)
 Shader VisualFactoryCache::GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader, bool useDefaultUniforms)
 {
   Shader shader;
+  std::string shaderName = Scripting::GetLinearEnumerationName<ShaderType>(type, VISUAL_SHADER_TYPE_TABLE, VISUAL_SHADER_TYPE_TABLE_COUNT);
+
+  // If the shader name is empty, it means that the shader is not generated internally. So, there is need to support file caching. Otherwise, it is defined externally. So, it needs not to support file caching.
+  Shader::Hint::Value shaderHints = shaderName.empty()? Shader::Hint::NONE : Shader::Hint::FILE_CACHE_SUPPORT;
+
   if(useDefaultUniforms)
   {
-    shader               = Integration::ShaderNewWithUniformBlock(vertexShader, fragmentShader, Shader::Hint::NONE, Scripting::GetLinearEnumerationName<ShaderType>(type, VISUAL_SHADER_TYPE_TABLE, VISUAL_SHADER_TYPE_TABLE_COUNT), {GetDefaultUniformBlock()});
+    shader               = Integration::ShaderNewWithUniformBlock(vertexShader, fragmentShader, shaderHints, shaderName, {GetDefaultUniformBlock()});
     mDefaultShader[type] = shader;
   }
   else
   {
-    shader        = Shader::New(vertexShader, fragmentShader, Shader::Hint::NONE, Scripting::GetLinearEnumerationName<ShaderType>(type, VISUAL_SHADER_TYPE_TABLE, VISUAL_SHADER_TYPE_TABLE_COUNT));
+    shader = Shader::New(vertexShader, fragmentShader, shaderHints, shaderName);
     mShader[type] = shader;
   }
+
   return shader;
 }