X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task.cpp;h=d4305b97a3001982249ebeed566ff9fded30c87d;hb=f4fbb66fb2618691a624e672ec9547d9f240a16b;hp=29fee564f4be3ad2d3a82619241dd99d9ccf1afb;hpb=9399f25c2385050a3477900e76208a61bb124e07;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/render-tasks/scene-graph-render-task.cpp b/dali/internal/update/render-tasks/scene-graph-render-task.cpp index 29fee56..d4305b9 100644 --- a/dali/internal/update/render-tasks/scene-graph-render-task.cpp +++ b/dali/internal/update/render-tasks/scene-graph-render-task.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -21,7 +21,6 @@ // INTERNAL INCLUDES #include #include -#include #include #include #include @@ -57,10 +56,9 @@ RenderTask::~RenderTask() } } -void RenderTask::Initialize( RenderMessageDispatcher& renderMessageDispatcher, ResourceManager& resourceManager ) +void RenderTask::Initialize( RenderMessageDispatcher& renderMessageDispatcher ) { mRenderMessageDispatcher = &renderMessageDispatcher; - mResourceManager = &resourceManager; } void RenderTask::SetSourceNode( Node* node ) @@ -113,16 +111,14 @@ void RenderTask::SetCamera( Node* cameraNode, Camera* camera ) mCamera = camera; } -void RenderTask::SetFrameBufferId( unsigned int resourceId, bool isNativeFBO ) +void RenderTask::SetFrameBuffer( Render::FrameBuffer* frameBuffer ) { - // note that we might already have a RenderTracker - mTargetIsNativeFramebuffer = isNativeFBO; - mFrameBufferResourceId = resourceId; + mFrameBuffer = frameBuffer; } -unsigned int RenderTask::GetFrameBufferId() const +Render::FrameBuffer* RenderTask::GetFrameBuffer() { - return mFrameBufferResourceId; + return mFrameBuffer; } bool RenderTask::QueryViewport( BufferIndex bufferIndex, Viewport& viewport ) const @@ -190,8 +186,6 @@ void RenderTask::SetRefreshRate( unsigned int refreshRate ) mState = RENDER_ONCE_WAITING_FOR_RESOURCES; mWaitingToRender = true; mNotifyTrigger = false; - // need at least on other render on the FBO - mResourceManager->SetFrameBufferBeenRenderedTo( mFrameBufferResourceId, false ); } mFrameCounter = 0u; @@ -207,30 +201,26 @@ bool RenderTask::ReadyToRender( BufferIndex updateBufferIndex ) // If the source node of the render task is invisible we should still render // We want the render task to complete and possible clear colors to happen - // Check source node - if ( NULL == mSourceNode || - ( !mSourceNode->IsRoot() && NULL == mSourceNode->GetParent() ) ) + // Check the source node. + if( NULL == mSourceNode || + ( !mSourceNode->IsRoot() && NULL == mSourceNode->GetParent() ) ) { - TASK_LOG_FMT(Debug::General, " =F No source actor FC:%d\n", mFrameCounter ); + TASK_LOG_FMT( Debug::General, " Source actor not on stage. Frame counter: %d\n", mFrameCounter ); - // Source node is missing or disconnected + // The source node is missing or disconnected. return false; } // Check camera node - if ( NULL == mCameraNode || - NULL == mCameraNode->GetParent() || - NULL == mCamera ) + if( NULL == mCameraNode || + NULL == mCameraNode->GetParent() || + NULL == mCamera ) { - // Camera node is missing or disconnected + // The camera node is missing or disconnected. TASK_LOG_FMT(Debug::General, " =F No Camera FC:%d\n", mFrameCounter ); - return false; } - mCamera->Update( updateBufferIndex, *mCameraNode ); - - TASK_LOG_FMT(Debug::General, " =T (FBO ID:%d) FC:%d\n", mFrameBufferResourceId , mFrameCounter ); return true; } @@ -262,21 +252,11 @@ bool RenderTask::IsRenderRequired() return required; } -void RenderTask::SetResourcesFinished( bool resourcesFinished ) -{ - // resourcesFinished tells us that this render task will render to its FBO - mResourcesFinished = resourcesFinished; - if( mResourcesFinished ) - { - mResourceManager->SetFrameBufferBeenRenderedTo( mFrameBufferResourceId, true ); - } -} - // Called every frame regardless of whether render was required. // If render was not required, ignore resourcesFinished. void RenderTask::UpdateState() { - TASK_LOG_FMT( Debug::General, "(mResourcesFinished:%s) FC:%d State:%s RR:%d\n", mResourcesFinished?"T":"F", mFrameCounter, STATE_STRING(mState), mRefreshRate ); + TASK_LOG_FMT( Debug::General, "FC:%d State:%s RR:%d\n", mFrameCounter, STATE_STRING(mState), mRefreshRate ); switch( mState ) { @@ -286,10 +266,7 @@ void RenderTask::UpdateState() { if( mFrameCounter == 0 ) { - if( mResourcesFinished ) - { - ++mFrameCounter; // Only start skipping frames when resources are loaded - } + ++mFrameCounter; // Only start skipping frames when resources are loaded } else // Continue counting to skip frames { @@ -306,10 +283,7 @@ void RenderTask::UpdateState() case RENDER_ONCE_WAITING_FOR_RESOURCES: { - if( mResourcesFinished ) - { - mState = RENDERED_ONCE; - } + mState = RENDERED_ONCE; } break; @@ -317,17 +291,9 @@ void RenderTask::UpdateState() { mWaitingToRender = true; mNotifyTrigger = false; - if( mFrameBufferResourceId > 0 ) + if( mFrameBuffer ) { - if( mTargetIsNativeFramebuffer ) - { - if( mRenderSyncTracker && mRenderSyncTracker->IsSynced() ) - { - mWaitingToRender = false; - mNotifyTrigger = true; - } - } - else if( mResourceManager->HasFrameBufferBeenRenderedTo( mFrameBufferResourceId ) ) + if( !mRenderSyncTracker || (mRenderSyncTracker && mRenderSyncTracker->IsSynced() )) { mWaitingToRender = false; mNotifyTrigger = true; @@ -335,6 +301,7 @@ void RenderTask::UpdateState() } else { + mWaitingToRender = false; mNotifyTrigger = true; } } @@ -405,13 +372,12 @@ void RenderTask::PrepareRenderInstruction( RenderInstruction& instruction, Buffe bool viewportSet = QueryViewport( updateBufferIndex, viewport ); instruction.Reset( mCamera, - GetFrameBufferId(), + GetFrameBuffer(), viewportSet ? &viewport : NULL, mClearEnabled ? &GetClearColor( updateBufferIndex ) : NULL ); - if( mTargetIsNativeFramebuffer && mRequiresSync && - mRefreshRate == Dali::RenderTask::REFRESH_ONCE && - mResourcesFinished ) + if( mRequiresSync && + mRefreshRate == Dali::RenderTask::REFRESH_ONCE ) { // create tracker if one doesn't yet exist. if( !mRenderSyncTracker ) @@ -486,39 +452,28 @@ void RenderTask::SetSyncRequired( bool requiresSync ) mRequiresSync = requiresSync; } -void RenderTask::ResetDefaultProperties( BufferIndex updateBufferIndex ) -{ - // Reset default properties - mViewportPosition.ResetToBaseValue( updateBufferIndex ); - mViewportSize.ResetToBaseValue( updateBufferIndex ); - mClearColor.ResetToBaseValue( updateBufferIndex ); -} RenderTask::RenderTask() : mViewportPosition( Vector2::ZERO), mViewportSize( Vector2::ZERO), mClearColor( Dali::RenderTask::DEFAULT_CLEAR_COLOR ), mRenderMessageDispatcher( NULL ), - mResourceManager( NULL ), mRenderSyncTracker( NULL ), mSourceNode( NULL ), mCameraNode( NULL ), mCamera( NULL ), - mFrameBufferResourceId( 0 ), - mResourcesFinished( false ), + mFrameBuffer(0), mWaitingToRender( false ), mNotifyTrigger( false ), mExclusive( Dali::RenderTask::DEFAULT_EXCLUSIVE ), mClearEnabled( Dali::RenderTask::DEFAULT_CLEAR_ENABLED ), mCullMode( Dali::RenderTask::DEFAULT_CULL_MODE ), - mRenderTarget( NULL ), mState( (Dali::RenderTask::DEFAULT_REFRESH_RATE == Dali::RenderTask::REFRESH_ALWAYS) ? RENDER_CONTINUOUSLY : RENDER_ONCE_WAITING_FOR_RESOURCES ), mRefreshRate( Dali::RenderTask::DEFAULT_REFRESH_RATE ), mFrameCounter( 0u ), mRenderedOnceCounter( 0u ), - mTargetIsNativeFramebuffer( false ), mRequiresSync( false ) { }