X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task.cpp;h=42dcba55a7808f10ccba951537a4e6546333b94b;hb=ef69dab91f1e3d7f0b7cb345933ef22046bf70a8;hp=5c06a120569ed7310ca0c7ccd362e36ecf061c3c;hpb=956396a07f6ab262893ac0636119a5f3878da083;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 5c06a12..42dcba5 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) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -107,20 +107,10 @@ bool RenderTask::IsExclusive() const return mExclusive; } -void RenderTask::SetCameraNode( Node* cameraNode ) +void RenderTask::SetCamera( Node* cameraNode, Camera* camera ) { - // if camera changed - if( cameraNode != mCameraNode ) - { - if( cameraNode ) - { - // get attachment. when camera node is changed we will get a message from event thread object - // so no need to observe the node here - mCameraAttachment = dynamic_cast< CameraAttachment* >( &cameraNode->GetAttachment() ); - DALI_ASSERT_DEBUG( mCameraAttachment && "Camera without attachment" ); - } - mCameraNode = cameraNode; - } + mCameraNode = cameraNode; + mCamera = camera; } void RenderTask::SetFrameBufferId( unsigned int resourceId, bool isNativeFBO ) @@ -135,6 +125,17 @@ unsigned int RenderTask::GetFrameBufferId() const return mFrameBufferResourceId; } +void RenderTask::SetFrameBuffer( Render::FrameBuffer* frameBuffer ) +{ + mTargetIsNativeFramebuffer = false; + mFrameBuffer = frameBuffer; +} + +Render::FrameBuffer* RenderTask::GetFrameBuffer() +{ + return mFrameBuffer; +} + bool RenderTask::QueryViewport( BufferIndex bufferIndex, Viewport& viewport ) const { if( ! GetViewportEnabled( bufferIndex ) ) @@ -230,7 +231,7 @@ bool RenderTask::ReadyToRender( BufferIndex updateBufferIndex ) // Check camera node if ( NULL == mCameraNode || NULL == mCameraNode->GetParent() || - !mCameraNode->HasAttachment() ) + NULL == mCamera ) { // Camera node is missing or disconnected TASK_LOG_FMT(Debug::General, " =F No Camera FC:%d\n", mFrameCounter ); @@ -238,6 +239,8 @@ bool RenderTask::ReadyToRender( BufferIndex updateBufferIndex ) return false; } + mCamera->Update( updateBufferIndex, *mCameraNode ); + TASK_LOG_FMT(Debug::General, " =T (FBO ID:%d) FC:%d\n", mFrameBufferResourceId , mFrameCounter ); return true; } @@ -365,7 +368,7 @@ bool RenderTask::IsWaitingToRender() bool RenderTask::HasRendered() { bool notify = false; - if( mNotifyTrigger == true ) + if( mNotifyTrigger ) { ++mRenderedOnceCounter; mState = RENDERED_ONCE_AND_NOTIFIED; @@ -385,39 +388,40 @@ unsigned int RenderTask::GetRenderedOnceCounter() const const Matrix& RenderTask::GetViewMatrix( BufferIndex bufferIndex ) const { - DALI_ASSERT_DEBUG( NULL != mCameraAttachment ); + DALI_ASSERT_DEBUG( NULL != mCamera ); - return mCameraAttachment->GetViewMatrix( bufferIndex ); + return mCamera->GetViewMatrix( bufferIndex ); } -SceneGraph::CameraAttachment& RenderTask::GetCameraAttachment() const +SceneGraph::Camera& RenderTask::GetCamera() const { - DALI_ASSERT_DEBUG( NULL != mCameraAttachment ); - return *mCameraAttachment; + DALI_ASSERT_DEBUG( NULL != mCamera ); + return *mCamera; } const Matrix& RenderTask::GetProjectionMatrix( BufferIndex bufferIndex ) const { - DALI_ASSERT_DEBUG( NULL != mCameraAttachment ); + DALI_ASSERT_DEBUG( NULL != mCamera ); - return mCameraAttachment->GetProjectionMatrix( bufferIndex ); + return mCamera->GetProjectionMatrix( bufferIndex ); } void RenderTask::PrepareRenderInstruction( RenderInstruction& instruction, BufferIndex updateBufferIndex ) { - DALI_ASSERT_DEBUG( NULL != mCameraAttachment ); + DALI_ASSERT_DEBUG( NULL != mCamera ); TASK_LOG(Debug::General); Viewport viewport; bool viewportSet = QueryViewport( updateBufferIndex, viewport ); - instruction.Reset( mCameraAttachment, + instruction.Reset( mCamera, GetFrameBufferId(), + GetFrameBuffer(), viewportSet ? &viewport : NULL, mClearEnabled ? &GetClearColor( updateBufferIndex ) : NULL ); - if( mTargetIsNativeFramebuffer && + if( mTargetIsNativeFramebuffer && mRequiresSync && mRefreshRate == Dali::RenderTask::REFRESH_ONCE && mResourcesFinished ) { @@ -439,9 +443,9 @@ void RenderTask::PrepareRenderInstruction( RenderInstruction& instruction, Buffe bool RenderTask::ViewMatrixUpdated() { bool retval = false; - if( mCameraAttachment ) + if( mCamera ) { - retval = mCameraAttachment->ViewMatrixUpdated(); + retval = mCamera->ViewMatrixUpdated(); } return retval; } @@ -489,9 +493,9 @@ bool RenderTask::GetViewportEnabled( BufferIndex bufferIndex ) const return false; } -Node* RenderTask::GetCamera() const +void RenderTask::SetSyncRequired( bool requiresSync ) { - return mCameraNode; + mRequiresSync = requiresSync; } void RenderTask::ResetDefaultProperties( BufferIndex updateBufferIndex ) @@ -511,8 +515,9 @@ RenderTask::RenderTask() mRenderSyncTracker( NULL ), mSourceNode( NULL ), mCameraNode( NULL ), - mCameraAttachment( NULL ), + mCamera( NULL ), mFrameBufferResourceId( 0 ), + mFrameBuffer(0), mResourcesFinished( false ), mWaitingToRender( false ), mNotifyTrigger( false ), @@ -526,7 +531,8 @@ RenderTask::RenderTask() mRefreshRate( Dali::RenderTask::DEFAULT_REFRESH_RATE ), mFrameCounter( 0u ), mRenderedOnceCounter( 0u ), - mTargetIsNativeFramebuffer( false ) + mTargetIsNativeFramebuffer( false ), + mRequiresSync( false ) { }