X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fcommon%2Fscene-graph-scene.cpp;h=36b4049320731f6b218ccce912d396b5ad279fce;hb=5c90c8f9fc80c6802da0694710abf4e164b5360f;hp=a4fb196a0800503cb0bbf48187aa787be2358da4;hpb=acc5890841e76f9a4b8c313664d25ed430233605;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/common/scene-graph-scene.cpp b/dali/internal/update/common/scene-graph-scene.cpp index a4fb196..36b4049 100644 --- a/dali/internal/update/common/scene-graph-scene.cpp +++ b/dali/internal/update/common/scene-graph-scene.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ #include // INTERNAL INCLUDES -#include +#include #include namespace Dali @@ -28,13 +28,13 @@ namespace Internal namespace SceneGraph { Scene::Scene() -: mContext(nullptr), - mFrameRenderedCallbacks(), +: mFrameRenderedCallbacks(), mFramePresentedCallbacks(), mSkipRendering(false), mSurfaceRect(), mSurfaceOrientation(0), - mSurfaceRectChanged(false) + mSurfaceRectChanged(false), + mRotationCompletedAcknowledgement(false) { } @@ -44,31 +44,54 @@ Scene::~Scene() mFramePresentedCallbacks.clear(); } -void Scene::Initialize(Context& context, Graphics::Controller& graphicsController) +void Scene::Initialize(Graphics::Controller& graphicsController, Integration::DepthBufferAvailable depthBufferAvailable, Integration::StencilBufferAvailable stencilBufferAvailable) { - mContext = &context; - // Create the render pass for the surface std::vector attachmentDescriptions; // Default behaviour for color attachments is to CLEAR and STORE mClearValues.clear(); + mClearValues.emplace_back(); + + // Assume single color attachment Graphics::AttachmentDescription desc{}; desc.SetLoadOp(Graphics::AttachmentLoadOp::CLEAR); desc.SetStoreOp(Graphics::AttachmentStoreOp::STORE); attachmentDescriptions.push_back(desc); - mClearValues.emplace_back(); + + if(depthBufferAvailable == Integration::DepthBufferAvailable::TRUE || + stencilBufferAvailable == Integration::StencilBufferAvailable::TRUE) + { + // Depth + desc.SetLoadOp(Graphics::AttachmentLoadOp::CLEAR); + desc.SetStoreOp(Graphics::AttachmentStoreOp::STORE); + + // Stencil + desc.SetStencilLoadOp(Graphics::AttachmentLoadOp::CLEAR); + desc.SetStencilStoreOp(Graphics::AttachmentStoreOp::STORE); + attachmentDescriptions.push_back(desc); + + mClearValues.emplace_back(); + mClearValues.back().depthStencil.depth = 0; + mClearValues.back().depthStencil.stencil = 0; + } Graphics::RenderPassCreateInfo rpInfo{}; rpInfo.SetAttachments(attachmentDescriptions); // Add default render pass (loadOp = clear) - mRenderPass = graphicsController.CreateRenderPass(rpInfo, nullptr); -} + mRenderPass = graphicsController.CreateRenderPass(rpInfo, nullptr); // Warning: Shallow ptr -Context* Scene::GetContext() -{ - return mContext; + desc.SetLoadOp(Graphics::AttachmentLoadOp::LOAD); + attachmentDescriptions[0] = desc; + if(attachmentDescriptions.size() > 1) + { + desc.SetLoadOp(Graphics::AttachmentLoadOp::LOAD); + desc.SetStencilLoadOp(Graphics::AttachmentLoadOp::LOAD); + attachmentDescriptions.back() = desc; + } + + mRenderPassNoClear = graphicsController.CreateRenderPass(rpInfo, nullptr); // Warning: Shallow ptr } RenderInstructionContainer& Scene::GetRenderInstructions() @@ -122,6 +145,11 @@ void Scene::SetSurfaceRect(const Rect& rect) { mSurfaceRect = rect; mSurfaceRectChanged = true; + + if(mRoot) + { + mRoot->SetUpdated(true); + } } const Rect& Scene::GetSurfaceRect() const @@ -132,6 +160,11 @@ const Rect& Scene::GetSurfaceRect() const void Scene::SetSurfaceOrientation(int32_t orientation) { mSurfaceOrientation = orientation; + + if(mRoot) + { + mRoot->SetUpdated(true); + } } int32_t Scene::GetSurfaceOrientation() const @@ -147,6 +180,23 @@ bool Scene::IsSurfaceRectChanged() return surfaceRectChanged; } +void Scene::SetRotationCompletedAcknowledgement() +{ + mRotationCompletedAcknowledgement = true; +} + +bool Scene::IsRotationCompletedAcknowledgementSet() +{ + bool setRotationCompletedAcknowledgement = mRotationCompletedAcknowledgement; + mRotationCompletedAcknowledgement = false; + return setRotationCompletedAcknowledgement; +} + +std::vector& Scene::GetItemsDirtyRects() +{ + return mItemsDirtyRects; +} + } // namespace SceneGraph } // namespace Internal