Merge "Reduce Render::Renderer size" into devel/master
authorHeeyong Song <heeyong.song@samsung.com>
Fri, 6 Jan 2023 02:22:48 +0000 (02:22 +0000)
committerGerrit Code Review <gerrit@review>
Fri, 6 Jan 2023 02:22:48 +0000 (02:22 +0000)
dali/internal/render/renderers/render-renderer.cpp
dali/internal/render/renderers/render-renderer.h

index b70408b..db30a4e 100644 (file)
@@ -426,13 +426,18 @@ bool Renderer::Render(Graphics::CommandBuffer&                             comma
   // Check if there is render callback
   if(mRenderCallback)
   {
+    if(!mRenderCallbackInput)
+    {
+      mRenderCallbackInput = std::unique_ptr<RenderCallbackInput>(new RenderCallbackInput);
+    }
+
     Graphics::DrawNativeInfo info{};
     info.api      = Graphics::DrawNativeAPI::GLES;
     info.callback = &static_cast<Dali::CallbackBase&>(*mRenderCallback);
-    info.userData = &mRenderCallbackInput;
+    info.userData = mRenderCallbackInput.get();
 
     // Set storage for the context to be used
-    info.glesNativeInfo.eglSharedContextStoragePointer = &mRenderCallbackInput.eglContext;
+    info.glesNativeInfo.eglSharedContextStoragePointer = &mRenderCallbackInput->eglContext;
     info.reserved                                      = nullptr;
 
     auto& textureResources = mRenderCallback->GetTextureResources();
@@ -440,7 +445,7 @@ bool Renderer::Render(Graphics::CommandBuffer&                             comma
     if(!textureResources.empty())
     {
       mRenderCallbackTextureBindings.clear();
-      mRenderCallbackInput.textureBindings.resize(textureResources.size());
+      mRenderCallbackInput->textureBindings.resize(textureResources.size());
       auto i = 0u;
       for(auto& texture : textureResources)
       {
@@ -450,17 +455,17 @@ bool Renderer::Render(Graphics::CommandBuffer&                             comma
         auto properties = mGraphicsController->GetTextureProperties(*graphicsTexture);
 
         mRenderCallbackTextureBindings.emplace_back(graphicsTexture);
-        mRenderCallbackInput.textureBindings[i++] = properties.nativeHandle;
+        mRenderCallbackInput->textureBindings[i++] = properties.nativeHandle;
       }
       info.textureCount = mRenderCallbackTextureBindings.size();
       info.textureList  = mRenderCallbackTextureBindings.data();
     }
 
     // pass render callback input
-    mRenderCallbackInput.size       = size;
-    mRenderCallbackInput.projection = projectionMatrix;
+    mRenderCallbackInput->size       = size;
+    mRenderCallbackInput->projection = projectionMatrix;
 
-    MatrixUtils::Multiply(mRenderCallbackInput.mvp, modelViewMatrix, projectionMatrix);
+    MatrixUtils::Multiply(mRenderCallbackInput->mvp, modelViewMatrix, projectionMatrix);
 
     // submit draw
     commandBuffer.DrawNative(&info);
index 51f661e..94e34c8 100644 (file)
@@ -405,7 +405,11 @@ public:
    */
   RenderCallbackInput& GetRenderCallbackInput()
   {
-    return mRenderCallbackInput;
+    if(!mRenderCallbackInput)
+    {
+      mRenderCallbackInput = std::unique_ptr<RenderCallbackInput>(new RenderCallbackInput);
+    }
+    return *mRenderCallbackInput;
   }
 
   /**
@@ -603,7 +607,7 @@ private:
 
   std::vector<Dali::DevelRenderer::DrawCommand> mDrawCommands; // Devel stuff
   RenderCallback*                               mRenderCallback{nullptr};
-  RenderCallbackInput                           mRenderCallbackInput{};
+  std::unique_ptr<RenderCallbackInput>          mRenderCallbackInput{nullptr};
   std::vector<Graphics::Texture*>               mRenderCallbackTextureBindings{};
 };