Geometry Batching
[platform/core/uifw/dali-core.git] / dali / internal / update / rendering / scene-graph-renderer.cpp
index 17b402f..c28a236 100644 (file)
@@ -107,7 +107,8 @@ enum Flags
   RESEND_STENCIL_OPERATION_ON_FAIL   = 1 << 16,
   RESEND_STENCIL_OPERATION_ON_Z_FAIL = 1 << 17,
   RESEND_STENCIL_OPERATION_ON_Z_PASS = 1 << 18,
-  RESEND_WRITE_TO_COLOR_BUFFER       = 1 << 19
+  RESEND_WRITE_TO_COLOR_BUFFER       = 1 << 19,
+  RESEND_BATCHING_MODE               = 1 << 20,
 };
 
 } // Anonymous namespace
@@ -146,6 +147,7 @@ Renderer::Renderer()
   mResourcesReady( false ),
   mFinishedResourceAcquisition( false ),
   mPremultipledAlphaEnabled( false ),
+  mBatchingEnabled( false ),
   mDepthIndex( 0 )
 {
   mUniformMapChanged[0] = false;
@@ -376,6 +378,13 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex )
       new (slot) DerivedType( mRenderer, &Render::Renderer::SetWriteToColorBuffer, mWriteToColorBuffer );
     }
 
+    if( mResendFlag & RESEND_BATCHING_MODE )
+    {
+      typedef MessageValue1< Render::Renderer, bool > DerivedType;
+      unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) );
+      new (slot) DerivedType( mRenderer, &Render::Renderer::SetBatchingEnabled, mBatchingEnabled );
+    }
+
     mResendFlag = 0;
   }
 }
@@ -550,6 +559,12 @@ void Renderer::SetWriteToColorBuffer( bool writeToColorBuffer )
   mResendFlag |= RESEND_WRITE_TO_COLOR_BUFFER;
 }
 
+void Renderer::SetBatchingEnabled( bool batchingEnabled )
+{
+  mBatchingEnabled = batchingEnabled;
+  mResendFlag |= RESEND_BATCHING_MODE;
+}
+
 //Called when SceneGraph::Renderer is added to update manager ( that happens when an "event-thread renderer" is created )
 void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
 {