From: sunghyun kim Date: Mon, 14 Apr 2025 04:32:10 +0000 (+0900) Subject: Added FILE_CACHE_SUPPORT Hint for shader X-Git-Tag: dali_2.4.16~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F51%2F322651%2F7;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Added FILE_CACHE_SUPPORT Hint for shader please refer to dali-core patch : https://review.tizen.org/gerrit/c/platform/core/uifw/dali-core/+/322649 Change-Id: I6e6f1dd61064be5f514d7e80f8af5d2cdd63f688 --- diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h index a70c21f40c..52b7411b17 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h @@ -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; } diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.cpp b/dali-toolkit/internal/visuals/visual-factory-cache.cpp index 8b76dee31c..751aa67212 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-cache.cpp @@ -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(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(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(type, VISUAL_SHADER_TYPE_TABLE, VISUAL_SHADER_TYPE_TABLE_COUNT)); + shader = Shader::New(vertexShader, fragmentShader, shaderHints, shaderName); mShader[type] = shader; } + return shader; }