X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Fcommon%2Frender-manager.h;h=2e3ea2db1bc4383340c207071df6dcf1a17f14d2;hb=df36176f354b67024161a57a1cbb234023772749;hp=5ed42961e352f18339f630c8ddd8eb55e3ee61c3;hpb=287725b70acc8ef86fc59515dc4a13dde8eb5b2d;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/common/render-manager.h b/dali/internal/render/common/render-manager.h index 5ed4296..2e3ea2d 100644 --- a/dali/internal/render/common/render-manager.h +++ b/dali/internal/render/common/render-manager.h @@ -22,9 +22,9 @@ #include #include #include -#include -#include #include +#include +#include namespace Dali { @@ -62,7 +62,6 @@ class RenderQueue; class RenderInstruction; class RenderInstructionContainer; class Shader; -class PropertyBufferDataProvider; class Scene; /** @@ -85,7 +84,8 @@ public: Integration::GlSyncAbstraction& glSyncAbstraction, Integration::GlContextHelperAbstraction& glContextHelperAbstraction, Integration::DepthBufferAvailable depthBufferAvailable, - Integration::StencilBufferAvailable stencilBufferAvailable ); + Integration::StencilBufferAvailable stencilBufferAvailable, + Integration::PartialUpdateAvailable partialUpdateAvailable ); /** * Non-virtual destructor; not intended as a base class @@ -175,17 +175,17 @@ public: /** * Add a property buffer to the render manager. - * @param[in] propertyBuffer The property buffer to add. + * @param[in] vertexBuffer The property buffer to add. * @post propertBuffer is owned by RenderManager */ - void AddPropertyBuffer( OwnerPointer< Render::PropertyBuffer >& propertyBuffer ); + void AddVertexBuffer( OwnerPointer< Render::VertexBuffer >& vertexBuffer ); /** * Remove a property buffer from the render manager. - * @param[in] propertyBuffer The property buffer to remove. - * @post propertyBuffer is destroyed. + * @param[in] vertexBuffer The property buffer to remove. + * @post vertexBuffer is destroyed. */ - void RemovePropertyBuffer( Render::PropertyBuffer* propertyBuffer ); + void RemoveVertexBuffer( Render::VertexBuffer* vertexBuffer ); /** * Add a geometry to the render manager. @@ -204,32 +204,32 @@ public: /** * Adds a property buffer to a geometry from the render manager. * @param[in] geometry The geometry - * @param[in] propertyBuffer The property buffer to remove. + * @param[in] vertexBuffer The property buffer to remove. */ - void AttachVertexBuffer( Render::Geometry* geometry, Render::PropertyBuffer* propertyBuffer ); + void AttachVertexBuffer( Render::Geometry* geometry, Render::VertexBuffer* vertexBuffer ); /** * Remove a property buffer from a Render::Geometry from the render manager. * @param[in] geometry The geometry - * @param[in] propertyBuffer The property buffer to remove. + * @param[in] vertexBuffer The property buffer to remove. * @post property buffer is destroyed. */ - void RemoveVertexBuffer( Render::Geometry* geometry, Render::PropertyBuffer* propertyBuffer ); + void RemoveVertexBuffer( Render::Geometry* geometry, Render::VertexBuffer* vertexBuffer ); /** * Sets the format of an existing property buffer - * @param[in] propertyBuffer The property buffer. + * @param[in] vertexBuffer The property buffer. * @param[in] format The new format of the buffer */ - void SetPropertyBufferFormat( Render::PropertyBuffer* propertyBuffer, OwnerPointer< Render::PropertyBuffer::Format>& format ); + void SetVertexBufferFormat( Render::VertexBuffer* vertexBuffer, OwnerPointer< Render::VertexBuffer::Format>& format ); /** * Sets the data of an existing property buffer - * @param[in] propertyBuffer The property buffer. + * @param[in] vertexBuffer The property buffer. * @param[in] data The new data of the buffer * @param[in] size The new size of the buffer */ - void SetPropertyBufferData( Render::PropertyBuffer* propertyBuffer, OwnerPointer< Vector >& data, uint32_t size ); + void SetVertexBufferData( Render::VertexBuffer* vertexBuffer, OwnerPointer< Vector >& data, uint32_t size ); /** * Sets the data for the index buffer of an existing geometry @@ -359,6 +359,18 @@ public: */ void PreRender( Integration::RenderStatus& status, bool forceClear, bool uploadOnly ); + // This method should be called from Core::PreRender() + + /** + * This is called before rendering any scene in the next frame. This method should be preceded + * by a call up Update. + * Multi-threading note: this method should be called from a dedicated rendering thread. + * @pre The GL context must have been created, and made current. + * @param[in] scene The scene to be rendered. + * @param[out] damagedRects The list of damaged rects for the current render pass. + */ + void PreRender( Integration::Scene& scene, std::vector>& damagedRects ); + // This method should be called from Core::RenderScene() /** @@ -373,6 +385,19 @@ public: */ void RenderScene( Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo ); + /** + * Render a scene in the next frame. This method should be preceded by a call up PreRender. + * This method should be called twice. The first pass to render off-screen frame buffers if any, + * and the second pass to render the surface. + * Multi-threading note: this method should be called from a dedicated rendering thread. + * @pre The GL context must have been created, and made current. + * @param[out] status contains the rendering flags. + * @param[in] scene The scene to be rendered. + * @param[in] renderToFbo True to render off-screen frame buffers only if any, and False to render the surface only. + * @param[in] clippingRect The clipping rect for the rendered scene. + */ + void RenderScene( Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo, Rect& clippingRect ); + // This method should be called from Core::PostRender() /**