X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frendering%2Fscene-graph-renderer.h;h=a06fa2a8d7712ebcaf797fc56152b8f00ae77999;hb=0fb391f04a2faae7d874e146068372b7a0ca9ce4;hp=3dda873976e4a3744d2a0185112a5392266e169f;hpb=700e2070be55ed470768d7e40cdf3549dc94e61e;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/rendering/scene-graph-renderer.h b/dali/internal/update/rendering/scene-graph-renderer.h old mode 100755 new mode 100644 index 3dda873..a06fa2a --- a/dali/internal/update/rendering/scene-graph-renderer.h +++ b/dali/internal/update/rendering/scene-graph-renderer.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_SCENE_GRAPH_RENDERER_H /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -47,9 +47,9 @@ namespace SceneGraph class SceneController; class Renderer; -typedef Dali::Vector< Renderer* > RendererContainer; -typedef RendererContainer::Iterator RendererIter; -typedef RendererContainer::ConstIterator RendererConstIter; +using RendererContainer = Dali::Vector; +using RendererIter = RendererContainer::Iterator; +using RendererConstIter = RendererContainer::ConstIterator; class TextureSet; class Geometry; @@ -76,7 +76,7 @@ public: /** * Destructor */ - virtual ~Renderer(); + ~Renderer() override; /** * Overriden delete operator @@ -339,8 +339,9 @@ public: * Prepare the object for rendering. * This is called by the UpdateManager when an object is due to be rendered in the current frame. * @param[in] updateBufferIndex The current update buffer index. + * @return Whether this renderer has been updated in the current frame */ - void PrepareRender( BufferIndex updateBufferIndex ); + bool PrepareRender( BufferIndex updateBufferIndex ); /** * Retrieve the Render thread renderer @@ -380,18 +381,6 @@ public: */ void DisconnectFromSceneGraph( SceneController& sceneController, BufferIndex bufferIndex ); - /** - * Enable/Disable Partial update dirty flag - * @param[in] true to mark dirty else false - */ - void SetDirty( bool value ); - - /** - * Get Partial update dirty flag - * @return true if dirty else false - */ - bool IsDirty() const; - public: // Implementation of ConnectionChangePropagator /** * @copydoc ConnectionChangePropagator::AddObserver @@ -407,24 +396,24 @@ public: // UniformMap::Observer /** * @copydoc UniformMap::Observer::UniformMappingsChanged */ - virtual void UniformMappingsChanged( const UniformMap& mappings ); + void UniformMappingsChanged( const UniformMap& mappings ) override; public: // ConnectionChangePropagator::Observer /** * @copydoc ConnectionChangePropagator::ConnectionsChanged */ - virtual void ConnectionsChanged( PropertyOwner& owner ); + void ConnectionsChanged( PropertyOwner& owner ) override; /** * @copydoc ConnectionChangePropagator::ConnectedUniformMapChanged */ - virtual void ConnectedUniformMapChanged( ); + void ConnectedUniformMapChanged( ) override; /** * @copydoc ConnectionChangePropagator::ConnectedUniformMapChanged */ - virtual void ObservedObjectDestroyed(PropertyOwner& owner); + void ObservedObjectDestroyed(PropertyOwner& owner) override; public: // PropertyOwner implementation /** @@ -437,12 +426,14 @@ public: // From UniformMapDataProvider /** * @copydoc UniformMapDataProvider::GetUniformMapChanged */ - virtual bool GetUniformMapChanged( BufferIndex bufferIndex ) const{ return mUniformMapChanged[bufferIndex];} + bool GetUniformMapChanged( BufferIndex bufferIndex ) const override{ return mUniformMapChanged[bufferIndex];} /** * @copydoc UniformMapDataProvider::GetUniformMap */ - virtual const CollectedUniformMap& GetUniformMap( BufferIndex bufferIndex ) const; + const CollectedUniformMap& GetUniformMap( BufferIndex bufferIndex ) const override; + + void SetDrawCommands( Dali::DevelRenderer::DrawCommand* pDrawCommands, uint32_t size ); private: @@ -482,10 +473,10 @@ private: DepthWriteMode::Type mDepthWriteMode:3; ///< Local copy of the depth write mode DepthTestMode::Type mDepthTestMode:3; ///< Local copy of the depth test mode DevelRenderer::Rendering::Type mRenderingBehavior:2; ///< The rendering behavior - bool mUniformMapChanged[2]; ///< Records if the uniform map has been altered this frame bool mPremultipledAlphaEnabled:1; ///< Flag indicating whether the Pre-multiplied Alpha Blending is required - bool mDirty:1; ///< Required for marking it dirty in case of partial update. + + std::vector mDrawCommands; public: @@ -498,7 +489,7 @@ public: /// Messages inline void SetTexturesMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, const TextureSet& textureSet ) { - typedef MessageValue1< Renderer, TextureSet* > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -509,7 +500,7 @@ inline void SetTexturesMessage( EventThreadServices& eventThreadServices, const inline void SetGeometryMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, const Render::Geometry& geometry ) { - typedef MessageValue1< Renderer, Render::Geometry* > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -520,7 +511,7 @@ inline void SetGeometryMessage( EventThreadServices& eventThreadServices, const inline void SetShaderMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, const Shader& shader ) { - typedef MessageValue1< Renderer, Shader* > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -531,7 +522,7 @@ inline void SetShaderMessage( EventThreadServices& eventThreadServices, const Re inline void SetDepthIndexMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, int depthIndex ) { - typedef MessageValue1< Renderer, int > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -542,7 +533,7 @@ inline void SetDepthIndexMessage( EventThreadServices& eventThreadServices, cons inline void SetFaceCullingModeMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, FaceCullingMode::Type faceCullingMode ) { - typedef MessageValue1< Renderer, FaceCullingMode::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -552,7 +543,7 @@ inline void SetFaceCullingModeMessage( EventThreadServices& eventThreadServices, inline void SetBlendModeMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, BlendMode::Type blendingMode ) { - typedef MessageValue1< Renderer, BlendMode::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -562,7 +553,7 @@ inline void SetBlendModeMessage( EventThreadServices& eventThreadServices, const inline void SetBlendingOptionsMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, uint32_t options ) { - typedef MessageValue1< Renderer, uint32_t > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -572,7 +563,7 @@ inline void SetBlendingOptionsMessage( EventThreadServices& eventThreadServices, inline void SetBlendColorMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, const Vector4& blendColor ) { - typedef MessageValue1< Renderer, Vector4 > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -582,7 +573,7 @@ inline void SetBlendColorMessage( EventThreadServices& eventThreadServices, cons inline void SetIndexedDrawFirstElementMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, uint32_t firstElement ) { - typedef MessageValue1< Renderer, uint32_t > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -592,7 +583,7 @@ inline void SetIndexedDrawFirstElementMessage( EventThreadServices& eventThreadS inline void SetIndexedDrawElementsCountMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, uint32_t elementsCount ) { - typedef MessageValue1< Renderer, uint32_t > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -602,7 +593,7 @@ inline void SetIndexedDrawElementsCountMessage( EventThreadServices& eventThread inline void SetEnablePreMultipliedAlphaMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, bool preMultiplied ) { - typedef MessageValue1< Renderer, bool > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -612,7 +603,7 @@ inline void SetEnablePreMultipliedAlphaMessage( EventThreadServices& eventThread inline void SetDepthWriteModeMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, DepthWriteMode::Type depthWriteMode ) { - typedef MessageValue1< Renderer, DepthWriteMode::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -622,7 +613,7 @@ inline void SetDepthWriteModeMessage( EventThreadServices& eventThreadServices, inline void SetDepthTestModeMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, DepthTestMode::Type depthTestMode ) { - typedef MessageValue1< Renderer, DepthTestMode::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -632,7 +623,7 @@ inline void SetDepthTestModeMessage( EventThreadServices& eventThreadServices, c inline void SetDepthFunctionMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, DepthFunction::Type depthFunction ) { - typedef MessageValue1< Renderer, DepthFunction::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -642,7 +633,7 @@ inline void SetDepthFunctionMessage( EventThreadServices& eventThreadServices, c inline void SetRenderModeMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, RenderMode::Type mode ) { - typedef MessageValue1< Renderer, RenderMode::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -652,7 +643,7 @@ inline void SetRenderModeMessage( EventThreadServices& eventThreadServices, cons inline void SetStencilFunctionMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, StencilFunction::Type stencilFunction ) { - typedef MessageValue1< Renderer, StencilFunction::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -662,7 +653,7 @@ inline void SetStencilFunctionMessage( EventThreadServices& eventThreadServices, inline void SetStencilFunctionMaskMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, int mask ) { - typedef MessageValue1< Renderer, int > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -672,7 +663,7 @@ inline void SetStencilFunctionMaskMessage( EventThreadServices& eventThreadServi inline void SetStencilFunctionReferenceMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, int stencilFunctionReference ) { - typedef MessageValue1< Renderer, int > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -682,7 +673,7 @@ inline void SetStencilFunctionReferenceMessage( EventThreadServices& eventThread inline void SetStencilMaskMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, int stencilMask ) { - typedef MessageValue1< Renderer, int > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -692,7 +683,7 @@ inline void SetStencilMaskMessage( EventThreadServices& eventThreadServices, con inline void SetStencilOperationOnFailMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, StencilOperation::Type stencilOperation ) { - typedef MessageValue1< Renderer, StencilOperation::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -702,7 +693,7 @@ inline void SetStencilOperationOnFailMessage( EventThreadServices& eventThreadSe inline void SetStencilOperationOnZFailMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, StencilOperation::Type stencilOperation ) { - typedef MessageValue1< Renderer, StencilOperation::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -712,7 +703,7 @@ inline void SetStencilOperationOnZFailMessage( EventThreadServices& eventThreadS inline void SetStencilOperationOnZPassMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, StencilOperation::Type stencilOperation ) { - typedef MessageValue1< Renderer, StencilOperation::Type > LocalType; + using LocalType = MessageValue1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -722,7 +713,7 @@ inline void SetStencilOperationOnZPassMessage( EventThreadServices& eventThreadS inline void BakeOpacityMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, float opacity ) { - typedef MessageDoubleBuffered1< Renderer, float > LocalType; + using LocalType = MessageDoubleBuffered1; // Reserve some memory inside the message queue uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); @@ -740,6 +731,17 @@ inline void SetRenderingBehaviorMessage( EventThreadServices& eventThreadService new (slot) LocalType( &renderer, &Renderer::SetRenderingBehavior, renderingBehavior ); } +inline void SetDrawCommandsMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, Dali::DevelRenderer::DrawCommand* pDrawCommands, uint32_t size ) +{ + using LocalType = MessageValue2; + + // Reserve some memory inside the message queue + uint32_t* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + + new (slot) LocalType( &renderer, &Renderer::SetDrawCommands, pDrawCommands, size ); +} + + } // namespace SceneGraph } // namespace Internal } // namespace Dali