X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task.h;h=99ed6c192a35ae96f8c1ebf054d16c97b24682ec;hb=c0893b7d9077a1053150caccb2534f8b12476253;hp=b8d6e2f7eaf5a37dca3cf133ab2b977ca8b8ffcb;hpb=b9006b2a891668b2ef85ee9d7b786d15d1155cda;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/render-tasks/scene-graph-render-task.h b/dali/internal/update/render-tasks/scene-graph-render-task.h index b8d6e2f..99ed6c1 100644 --- a/dali/internal/update/render-tasks/scene-graph-render-task.h +++ b/dali/internal/update/render-tasks/scene-graph-render-task.h @@ -2,7 +2,7 @@ #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_H__ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -26,14 +26,13 @@ #include #include #include +#include namespace Dali { namespace Internal { -class FrameBufferTexture; -class ResourceManager; namespace Render { @@ -75,9 +74,8 @@ public: /** * Initialize the render task. Called in update thread * @param[in] renderMessageDispatcher to send messages to render thread - * @param[in] resourceManager to check and update status of FBOs */ - void Initialize( RenderMessageDispatcher& renderMessageDispatcher, ResourceManager& resourceManager ); + void Initialize( RenderMessageDispatcher& renderMessageDispatcher ); /** * Set the nodes to be rendered. @@ -124,6 +122,18 @@ public: unsigned int GetFrameBufferId() const; /** + * Set the frame-buffer used as a render target. + * @param[in] frameBuffer The framebuffer + */ + void SetFrameBuffer( Render::FrameBuffer* frameBuffer ); + + /** + * Retrieve the resource ID of the frame-buffer. + * @return The resource ID, or zero if not rendering off-screen. + */ + Render::FrameBuffer* GetFrameBuffer(); + + /** * Set the value of property viewportPosition * This value will persist only for the current frame. * @param[in] updateBufferIndex The current update buffer index. @@ -258,12 +268,6 @@ public: bool IsRenderRequired(); /** - * Set whether all resources were available when the render-task was processed - * @param[in] resourcesComplete True if the resources of the source tree are completely loaded. - */ - void SetResourcesFinished( bool resourcesFinished ); - - /** * Process a frame. This method is called each frame for every ready render task, regardless * of whether it needs to render (so that the frame counter can be updated). */ @@ -359,44 +363,37 @@ public: // Animatable Properties private: RenderMessageDispatcher* mRenderMessageDispatcher; - ResourceManager* mResourceManager; Render::RenderTracker* mRenderSyncTracker; Node* mSourceNode; Node* mCameraNode; SceneGraph::Camera* mCamera; - unsigned int mFrameBufferResourceId; + Render::FrameBuffer* mFrameBuffer; - bool mResourcesFinished:1; ///< True if all resources were available when the render-task was processed bool mWaitingToRender:1; ///< True when an render once to FBO is waiting bool mNotifyTrigger:1; ///< True if a render once render task has finished renderering bool mExclusive: 1; ///< Whether the render task has exclusive access to the source actor (node in the scene graph implementation). bool mClearEnabled: 1; ///< Whether previous results are cleared. bool mCullMode: 1; ///< Whether renderers should be frustum culled - FrameBufferTexture* mRenderTarget; - Viewport mViewport; - State mState; ///< Render state. unsigned int mRefreshRate; ///< REFRESH_ONCE, REFRESH_ALWAYS or render every N frames unsigned int mFrameCounter; ///< counter for rendering every N frames unsigned int mRenderedOnceCounter; ///< Incremented whenever state changes to RENDERED_ONCE_AND_NOTIFIED - bool mTargetIsNativeFramebuffer; ///< Tells if our target is a native framebuffer bool mRequiresSync; ///< Whether sync is needed to track the render }; // Messages for RenderTask - -inline void SetFrameBufferIdMessage( EventThreadServices& eventThreadServices, RenderTask& task, unsigned int resourceId, bool isNativeFBO ) +inline void SetFrameBufferMessage( EventThreadServices& eventThreadServices, RenderTask& task, Render::FrameBuffer* frameBuffer ) { - typedef MessageValue2< RenderTask, unsigned int, bool > LocalType; + typedef MessageValue1< RenderTask, Render::FrameBuffer*> LocalType; // Reserve some memory inside the message queue unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &task, &RenderTask::SetFrameBufferId, resourceId, isNativeFBO ); + new (slot) LocalType( &task, &RenderTask::SetFrameBuffer, frameBuffer ); } inline void SetClearColorMessage( EventThreadServices& eventThreadServices, RenderTask& task, const Vector4& value )