X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Frendering%2Fframe-buffer-impl.h;h=86f50930b29228e4163cda71c50308824911406d;hb=e8224a75acf610f8e45bf66907926bdee1c7aa96;hp=f15b4bdbf6c4674deb6779418146df8e91da5efe;hpb=6cd8e473d54b3d231b49893a973afa63d865ce2e;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/rendering/frame-buffer-impl.h b/dali/internal/event/rendering/frame-buffer-impl.h old mode 100644 new mode 100755 index f15b4bd..86f5093 --- a/dali/internal/event/rendering/frame-buffer-impl.h +++ b/dali/internal/event/rendering/frame-buffer-impl.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_FRAME_BUFFER_H /* - * Copyright (c) 2016 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. @@ -23,11 +23,18 @@ #include // Dali::IntrusivePtr #include #include +#include #include #include namespace Dali { + +namespace Integration +{ +class RenderSurface; +} + namespace Internal { namespace Render @@ -42,17 +49,31 @@ class FrameBuffer : public BaseObject { public: - typedef Dali::FrameBuffer::Format Format; + using Mask = Dali::FrameBuffer::Attachment::Mask; /** * @brief Create a new FrameBuffer * - * @param[in] width The width of the FrameBuffer - * @param[in] height The height of the FrameBuffer - * @param[in] format The format of the FrameBuffer + * @param[in] width The width of the FrameBuffer + * @param[in] height The height of the FrameBuffer + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) * @return A smart-pointer to the newly allocated Texture. */ - static FrameBufferPtr New( unsigned int width, unsigned int height, Format format ); + static FrameBufferPtr New( uint32_t width, uint32_t height, Mask attachments ); + + /** + * @brief Create a new FrameBuffer + * + * @param[in] renderSurface The render surface + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) + * @return A smart-pointer to the newly allocated Texture. + */ + static FrameBufferPtr New( Dali::Integration::RenderSurface& renderSurface, Mask attachments ); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~FrameBuffer(); /** * @brief Get the FrameBuffer render object @@ -64,48 +85,71 @@ public: /** * @copydoc Dali::FrameBuffer::AttachColorTexture() */ - void AttachColorTexture( NewTexturePtr texture, unsigned int mipmapLevel, unsigned int layer ); + void AttachColorTexture( TexturePtr texture, uint32_t mipmapLevel, uint32_t layer ); /** * @copydoc Dali::FrameBuffer::GetColorTexture() */ - NewTexture* GetColorTexture(); + Texture* GetColorTexture(uint8_t index) const; + + /** + * @brief Sets the frame buffer size. + * @param[in] width The width size + * @param[in] height The height size + */ + void SetSize( uint32_t width, uint32_t height ); + + /** + * @brief Mark the render surface as invalid + * + * The render surface is maked as invalid when it is deleted. + * + * @note Only for FrameBuffer backed by a render surface. + * @return True if the FrameBuffer is backed by a render surface + */ + void MarkSurfaceAsInvalid(); + + /** + * @brief Sets whether to enable partial update. + * @param[in] value whether partial update or not + */ + void SetPartialUpdateEnabled( bool value ); private: // implementation /** * Constructor - * @param[in] width The width of the FrameBuffer - * @param[in] height The height of the FrameBuffer - * @param[in] format The format of the FrameBuffer + * @param[in] width The width of the FrameBuffer + * @param[in] height The height of the FrameBuffer + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) */ - FrameBuffer( unsigned int width, unsigned int height, Format format ); + FrameBuffer( uint32_t width, uint32_t height, Mask attachments ); /** * Second stage initialization of the Texture */ - void Initialize(); + void Initialize( Integration::RenderSurface* renderSurface = nullptr ); protected: - /** - * A reference counted object may only be deleted by calling Unreference() - */ - virtual ~FrameBuffer(); - private: // unimplemented methods - FrameBuffer( const FrameBuffer& ); - FrameBuffer& operator=( const FrameBuffer& ); + + FrameBuffer() = delete; + FrameBuffer( const FrameBuffer& ) = delete; + FrameBuffer& operator=( const FrameBuffer& ) = delete; private: // data - Internal::EventThreadServices& mEventThreadServices; ///