From: Heeyong Song Date: Fri, 6 Jan 2023 02:22:48 +0000 (+0000) Subject: Merge "Reduce Render::Renderer size" into devel/master X-Git-Tag: dali_2.2.9~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=commitdiff_plain;h=aa03392fb87007c43c0fd38daf67d43ed93126c0;hp=a620043289b98fd6b96ec9467be888caf416b8e6 Merge "Reduce Render::Renderer size" into devel/master --- diff --git a/dali/internal/render/renderers/render-renderer.cpp b/dali/internal/render/renderers/render-renderer.cpp index b70408b..db30a4e 100644 --- a/dali/internal/render/renderers/render-renderer.cpp +++ b/dali/internal/render/renderers/render-renderer.cpp @@ -426,13 +426,18 @@ bool Renderer::Render(Graphics::CommandBuffer& comma // Check if there is render callback if(mRenderCallback) { + if(!mRenderCallbackInput) + { + mRenderCallbackInput = std::unique_ptr(new RenderCallbackInput); + } + Graphics::DrawNativeInfo info{}; info.api = Graphics::DrawNativeAPI::GLES; info.callback = &static_cast(*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); diff --git a/dali/internal/render/renderers/render-renderer.h b/dali/internal/render/renderers/render-renderer.h index 51f661e..94e34c8 100644 --- a/dali/internal/render/renderers/render-renderer.h +++ b/dali/internal/render/renderers/render-renderer.h @@ -405,7 +405,11 @@ public: */ RenderCallbackInput& GetRenderCallbackInput() { - return mRenderCallbackInput; + if(!mRenderCallbackInput) + { + mRenderCallbackInput = std::unique_ptr(new RenderCallbackInput); + } + return *mRenderCallbackInput; } /** @@ -603,7 +607,7 @@ private: std::vector mDrawCommands; // Devel stuff RenderCallback* mRenderCallback{nullptr}; - RenderCallbackInput mRenderCallbackInput{}; + std::unique_ptr mRenderCallbackInput{nullptr}; std::vector mRenderCallbackTextureBindings{}; };