Revert "[4.0] Discard render instruction if it is empty"
[platform/core/uifw/dali-core.git] / dali / internal / render / shaders / program-controller.cpp
index 949e2d4..85230ba 100644 (file)
 
 // INTERNAL INCLUDES
 #include <dali/integration-api/gl-defines.h>
-#include <dali/internal/update/resources/resource-manager-declarations.h>
-#include <dali/internal/render/shaders/program.h>
-#include <dali/internal/render/common/post-process-resource-dispatcher.h>
+#include <dali/internal/common/shader-saver.h>
 #include <dali/internal/render/gl-resources/gl-call-debug.h>
+#include <dali/internal/render/shaders/program.h>
 
 namespace Dali
 {
@@ -31,8 +30,8 @@ namespace Dali
 namespace Internal
 {
 
-ProgramController::ProgramController( SceneGraph::PostProcessResourceDispatcher& postProcessDispatcher, Integration::GlAbstraction& glAbstraction )
-: mPostProcessDispatcher( postProcessDispatcher ),
+ProgramController::ProgramController( Integration::GlAbstraction& glAbstraction )
+: mShaderSaver( 0 ),
   mGlAbstraction( glAbstraction ),
   mCurrentProgram( NULL ),
   mProgramBinaryFormat( 0 ),
@@ -140,10 +139,20 @@ unsigned int ProgramController::ProgramBinaryFormat()
   return mProgramBinaryFormat;
 }
 
-void ProgramController::StoreBinary( Integration::ShaderDataPtr programData )
+void ProgramController::StoreBinary( Internal::ShaderDataPtr programData )
+{
+  DALI_ASSERT_DEBUG( programData->GetBufferSize() > 0 );
+  DALI_ASSERT_DEBUG( mShaderSaver && "SetShaderSaver() should have been called during startup." );
+
+  if( mShaderSaver != NULL )
+  {
+    mShaderSaver->SaveBinary( programData );
+  }
+}
+
+void ProgramController::SetShaderSaver( ShaderSaver& shaderSaver )
 {
-  ResourcePostProcessRequest request( programData->GetResourceId(), ResourcePostProcessRequest::SAVE );
-  mPostProcessDispatcher.DispatchPostProcessRequest( request );
+  mShaderSaver = &shaderSaver;
 }
 
 } // namespace Internal