From 0f6cf24d379fc839763a4e570ae5f496828ec3ec Mon Sep 17 00:00:00 2001 From: seungho baek Date: Wed, 19 Jul 2023 17:30:46 +0900 Subject: [PATCH] [Tizen] To Caching UniformMap per node/renderer/program triple. Change-Id: I67dee410688be3f5e0e7e2911fdaa89b66354938 Signed-off-by: seungho baek --- dali/internal/render/renderers/render-renderer.cpp | 6 ++++-- dali/internal/render/renderers/render-renderer.h | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dali/internal/render/renderers/render-renderer.cpp b/dali/internal/render/renderers/render-renderer.cpp index 25705de..ecaf530 100644 --- a/dali/internal/render/renderers/render-renderer.cpp +++ b/dali/internal/render/renderers/render-renderer.cpp @@ -610,18 +610,20 @@ int Renderer::BuildUniformIndexMap(BufferIndex bufferIndex, const SceneGraph::No // Specially, if node don't have uniformMap, we mark nodePtr as nullptr. // So, all nodes without uniformMap will share same UniformIndexMap, contains only render data providers. const auto nodePtr = uniformMapNode.Count() ? &node : nullptr; + const auto programPtr = &program; const auto nodeChangeCounter = nodePtr ? uniformMapNode.GetChangeCounter() : 0; const auto renderItemMapChangeCounter = uniformMap.GetChangeCounter(); - auto iter = std::find_if(mNodeIndexMap.begin(), mNodeIndexMap.end(), [nodePtr](RenderItemLookup& element) { return element.node == nodePtr; }); + auto iter = std::find_if(mNodeIndexMap.begin(), mNodeIndexMap.end(), [nodePtr, programPtr](RenderItemLookup& element) { return (element.node == nodePtr && element.program == programPtr); }); - int renderItemMapIndex; + std::size_t renderItemMapIndex; if(iter == mNodeIndexMap.end()) { renderItemMapIndex = mUniformIndexMaps.size(); RenderItemLookup renderItemLookup; renderItemLookup.node = nodePtr; + renderItemLookup.program = programPtr; renderItemLookup.index = renderItemMapIndex; renderItemLookup.nodeChangeCounter = nodeChangeCounter; renderItemLookup.renderItemMapChangeCounter = renderItemMapChangeCounter; diff --git a/dali/internal/render/renderers/render-renderer.h b/dali/internal/render/renderers/render-renderer.h index a954035..468d549 100644 --- a/dali/internal/render/renderers/render-renderer.h +++ b/dali/internal/render/renderers/render-renderer.h @@ -580,7 +580,8 @@ private: /** Struct to map node to index into mNodeMapCounters and mUniformIndexMaps */ struct RenderItemLookup { - const SceneGraph::NodeDataProvider* node{nullptr}; ///