From: Eunki Hong Date: Mon, 28 Apr 2025 13:23:46 +0000 (+0900) Subject: Change non-shared uniform shader also ignore UBO X-Git-Tag: dali_2.4.17~5^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F52%2F323452%2F2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Change non-shared uniform shader also ignore UBO Let we make non-shared UBO also use standalone uniform blocks, instead of UBO. We should remove this code after UBO performance issue resolved. Change-Id: If1bef2679ae993faf5d32efd4d1aa760365a2865 Signed-off-by: Eunki Hong --- diff --git a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert index 8a74212432..240820744d 100644 --- a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert @@ -18,7 +18,7 @@ UNIFORM_BLOCK VertBlock UNIFORM highp mat4 uMvpMatrix; }; -UNIFORM_BLOCK VisualVertBlock +UNIFORM_BLOCK NisualVertBlock { //Visual size and offset UNIFORM highp vec2 offset; diff --git a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert index d5a529bdbe..a31f4b0f15 100644 --- a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert @@ -13,7 +13,7 @@ UNIFORM_BLOCK VertBlock UNIFORM highp vec3 uSize; }; -UNIFORM_BLOCK VisualVertBlock +UNIFORM_BLOCK NisualVertBlock { //Visual size and offset UNIFORM highp vec2 offset; diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.cpp b/dali-toolkit/internal/visuals/visual-factory-cache.cpp index 751aa67212..a9651fb46e 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-cache.cpp @@ -57,6 +57,24 @@ bool NeedToLoadYuvPlanes() return loadYuvPlanes; } +// Happy trick for Tizen platform! since 2025-04-22. eunkiki.hong@samsung.com +// Since uniform buffer reduce fps near 10% than before, let we ignore uniform block feature +// except several default SharedUniformBlocks, like "VisualVertBlock". +// If we resolve performance issue, please remove below code! +#define IGNORE_UNIFORM_BLOCKS_FOR_NORMAL_CASES 1 + +#if IGNORE_UNIFORM_BLOCKS_FOR_NORMAL_CASES +inline bool ApplyNonDefaultUniformBlockVertexShaderCode(std::string& vertexShader) +{ + auto it = vertexShader.find("VisualVertBlock"); + if(it != std::string::npos) + { + vertexShader.replace(it, 15, "NisualVertBlock"); + return true; + } + return false; +} +#endif } // namespace VisualFactoryCache::VisualFactoryCache(bool preMultiplyOnLoad) @@ -101,11 +119,11 @@ Shader VisualFactoryCache::GetShader(ShaderType type, bool useDefaultUniforms) Shader VisualFactoryCache::GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader, bool useDefaultUniforms) { - Shader shader; + 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; + Shader::Hint::Value shaderHints = shaderName.empty() ? Shader::Hint::NONE : Shader::Hint::FILE_CACHE_SUPPORT; if(useDefaultUniforms) { @@ -114,7 +132,15 @@ Shader VisualFactoryCache::GenerateAndSaveShader(ShaderType type, std::string_vi } else { - shader = Shader::New(vertexShader, fragmentShader, shaderHints, shaderName); +#if IGNORE_UNIFORM_BLOCKS_FOR_NORMAL_CASES + std::string convertedVertexShader = std::string(vertexShader); + if(ApplyNonDefaultUniformBlockVertexShaderCode(convertedVertexShader)) + { + vertexShader = convertedVertexShader; + shaderName += "_N"; + } +#endif + shader = Shader::New(vertexShader, fragmentShader, shaderHints, shaderName); mShader[type] = shader; }