Add MultiSampling FrameBuffer implement.
[platform/core/uifw/dali-core.git] / dali / internal / update / manager / update-manager.h
index 99d7e72..d1f82be 100644 (file)
@@ -581,6 +581,13 @@ public:
   void AttachDepthStencilTextureToFrameBuffer(Render::FrameBuffer* frameBuffer, Render::Texture* texture, uint32_t mipmapLevel);
 
   /**
+   * Set a multisampling level value as texture output to the existing FrameBuffer
+   * @param[in] frameBuffer The FrameBuffer
+   * @param[in] multiSamplingLevel The level of multisampling
+   */
+  void SetMultiSamplingLevelToFrameBuffer(Render::FrameBuffer* frameBuffer, uint8_t multiSamplingLevel);
+
+  /**
    * This is called when the surface of the scene has been replaced.
    * @param[in] scene The scene.
    */
@@ -1426,6 +1433,17 @@ inline void AttachDepthStencilTextureToFrameBuffer(UpdateManager& manager, Rende
   new(slot) LocalType(&manager, &UpdateManager::AttachDepthStencilTextureToFrameBuffer, &frameBuffer, texture, mipmapLevel);
 }
 
+inline void SetMultiSamplingLevelToFrameBuffer(UpdateManager& manager, Render::FrameBuffer& frameBuffer, uint8_t multiSamplingLevel)
+{
+  using LocalType = MessageValue2<UpdateManager, Render::FrameBuffer*, uint8_t>;
+
+  // Reserve some memory inside the message queue
+  uint32_t* slot = manager.ReserveMessageSlot(sizeof(LocalType));
+
+  // Construct message in the message queue memory; note that delete should not be called on the return value
+  new(slot) LocalType(&manager, &UpdateManager::SetMultiSamplingLevelToFrameBuffer, &frameBuffer, multiSamplingLevel);
+}
+
 inline void SetDepthIndicesMessage(UpdateManager& manager, OwnerPointer<NodeDepths>& nodeDepths)
 {
   using LocalType = MessageValue1<UpdateManager, OwnerPointer<NodeDepths>>;