Cleanup: Remove handling for default shader as it has been long gone from dali-core 51/127251/3
authorKimmo Hoikka <kimmo.hoikka@samsung.com>
Wed, 26 Apr 2017 17:51:43 +0000 (18:51 +0100)
committerKimmo Hoikka <kimmo.hoikka@samsung.com>
Thu, 27 Apr 2017 10:35:30 +0000 (11:35 +0100)
Change-Id: I8fe8fe593b562e45f8c9a2730a81fdafdd224977

dali/internal/render/common/render-algorithms.cpp
dali/internal/render/common/render-algorithms.h
dali/internal/render/common/render-manager.cpp
dali/internal/render/common/render-manager.h
dali/internal/render/renderers/render-renderer.cpp
dali/internal/render/renderers/render-renderer.h
dali/internal/update/manager/update-manager.cpp

index f85097e..660a9a6 100644 (file)
@@ -293,7 +293,6 @@ inline void SetupDepthBuffer( const RenderItem& item, Context& context, bool dep
  * @brief Process a render-list.
  * @param[in] renderList       The render-list to process.
  * @param[in] context          The GL context.
- * @param[in] defaultShader    The default shader to use.
  * @param[in] buffer           The current render buffer index (previous update buffer)
  * @param[in] viewMatrix       The view matrix from the appropriate camera.
  * @param[in] projectionMatrix The projection matrix from the appropriate camera.
@@ -301,7 +300,6 @@ inline void SetupDepthBuffer( const RenderItem& item, Context& context, bool dep
 inline void ProcessRenderList(
   const RenderList& renderList,
   Context& context,
-  SceneGraph::Shader& defaultShader,
   BufferIndex bufferIndex,
   const Matrix& viewMatrix,
   const Matrix& projectionMatrix )
@@ -339,7 +337,6 @@ inline void ProcessRenderList(
     item.mRenderer->Render( context,
                             bufferIndex,
                             *item.mNode,
-                            defaultShader,
                             item.mModelMatrix,
                             item.mModelViewMatrix,
                             viewMatrix,
@@ -351,7 +348,6 @@ inline void ProcessRenderList(
 
 void ProcessRenderInstruction( const RenderInstruction& instruction,
                                Context& context,
-                               SceneGraph::Shader& defaultShader,
                                BufferIndex bufferIndex )
 {
   DALI_PRINT_RENDER_INSTRUCTION( instruction, bufferIndex );
@@ -376,7 +372,6 @@ void ProcessRenderInstruction( const RenderInstruction& instruction,
       {
         ProcessRenderList( *renderList,
                            context,
-                           defaultShader,
                            bufferIndex,
                            *viewMatrix,
                            *projectionMatrix );
index b258dd6..0346ef7 100644 (file)
@@ -30,7 +30,6 @@ class Context;
 namespace SceneGraph
 {
 class RenderInstruction;
-class Shader;
 class TextureCache;
 }
 
@@ -41,12 +40,10 @@ namespace Render
  * Process a render-instruction.
  * @param[in] instruction The render-instruction to process.
  * @param[in] context The GL context.
- * @param[in] defaultShader The default shader.
  * @param[in] bufferIndex The current render buffer index (previous update buffer)
  */
 void ProcessRenderInstruction( const SceneGraph::RenderInstruction& instruction,
                                Context& context,
-                               SceneGraph::Shader& defaultShader,
                                BufferIndex bufferIndex );
 
 } // namespace Render
index e9f7b93..b44847d 100644 (file)
@@ -90,8 +90,6 @@ struct RenderManager::Impl
     textureContainer(),
     frameBufferContainer(),
     renderersAdded( false ),
-    firstRenderCompleted( false ),
-    defaultShader( NULL ),
     programController( glAbstraction )
   {
   }
@@ -155,8 +153,6 @@ struct RenderManager::Impl
 
   RenderTrackerContainer        mRenderTrackers;          ///< List of render trackers
 
-  bool                          firstRenderCompleted;     ///< False until the first render is done
-  Shader*                       defaultShader;            ///< Default shader to use
   ProgramController             programController;        ///< Owner of the GL programs
 
 };
@@ -477,11 +473,6 @@ void RenderManager::RemoveRenderTracker( Render::RenderTracker* renderTracker )
   mImpl->RemoveRenderTracker(renderTracker);
 }
 
-void RenderManager::SetDefaultShader( Shader* shader )
-{
-  mImpl->defaultShader = shader;
-}
-
 ProgramCache* RenderManager::GetProgramCache()
 {
   return &(mImpl->programController);
@@ -500,56 +491,46 @@ bool RenderManager::Render( Integration::RenderStatus& status )
   // Process messages queued during previous update
   mImpl->renderQueue.ProcessMessages( mImpl->renderBufferIndex );
 
-  // No need to make any gl calls if we've done 1st glClear & don't have any renderers to render during startup.
-  if( !mImpl->firstRenderCompleted || mImpl->renderersAdded )
+  // switch rendering to adaptor provided (default) buffer
+  mImpl->context.BindFramebuffer( GL_FRAMEBUFFER, 0 );
+
+  mImpl->context.Viewport( mImpl->defaultSurfaceRect.x,
+                           mImpl->defaultSurfaceRect.y,
+                           mImpl->defaultSurfaceRect.width,
+                           mImpl->defaultSurfaceRect.height );
+
+  mImpl->context.ClearColor( mImpl->backgroundColor.r,
+                             mImpl->backgroundColor.g,
+                             mImpl->backgroundColor.b,
+                             mImpl->backgroundColor.a );
+
+  mImpl->context.ClearStencil( 0 );
+
+  // Clear the entire color, depth and stencil buffers for the default framebuffer.
+  // It is important to clear all 3 buffers, for performance on deferred renderers like Mali
+  // e.g. previously when the depth & stencil buffers were NOT cleared, it caused the DDK to exceed a "vertex count limit",
+  // and then stall. That problem is only noticeable when rendering a large number of vertices per frame.
+  mImpl->context.SetScissorTest( false );
+  mImpl->context.ColorMask( true );
+  mImpl->context.DepthMask( true );
+  mImpl->context.StencilMask( 0xFF ); // 8 bit stencil mask, all 1's
+  mImpl->context.Clear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT,  Context::FORCE_CLEAR );
+
+  // reset the program matrices for all programs once per frame
+  // this ensures we will set view and projection matrix once per program per camera
+  mImpl->programController.ResetProgramMatrices();
+
+  size_t count = mImpl->instructions.Count( mImpl->renderBufferIndex );
+  for ( size_t i = 0; i < count; ++i )
   {
-    // switch rendering to adaptor provided (default) buffer
-    mImpl->context.BindFramebuffer( GL_FRAMEBUFFER, 0 );
-
-    mImpl->context.Viewport( mImpl->defaultSurfaceRect.x,
-                             mImpl->defaultSurfaceRect.y,
-                             mImpl->defaultSurfaceRect.width,
-                             mImpl->defaultSurfaceRect.height );
-
-    mImpl->context.ClearColor( mImpl->backgroundColor.r,
-                               mImpl->backgroundColor.g,
-                               mImpl->backgroundColor.b,
-                               mImpl->backgroundColor.a );
-
-    mImpl->context.ClearStencil( 0 );
-
-    // Clear the entire color, depth and stencil buffers for the default framebuffer.
-    // It is important to clear all 3 buffers, for performance on deferred renderers like Mali
-    // e.g. previously when the depth & stencil buffers were NOT cleared, it caused the DDK to exceed a "vertex count limit",
-    // and then stall. That problem is only noticeable when rendering a large number of vertices per frame.
-    mImpl->context.SetScissorTest( false );
-    mImpl->context.ColorMask( true );
-    mImpl->context.DepthMask( true );
-    mImpl->context.StencilMask( 0xFF ); // 8 bit stencil mask, all 1's
-    mImpl->context.Clear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT,  Context::FORCE_CLEAR );
-
-    // reset the program matrices for all programs once per frame
-    // this ensures we will set view and projection matrix once per program per camera
-    mImpl->programController.ResetProgramMatrices();
-
-    // if we don't have default shader, no point doing the render calls
-    if( mImpl->defaultShader )
-    {
-      size_t count = mImpl->instructions.Count( mImpl->renderBufferIndex );
-      for ( size_t i = 0; i < count; ++i )
-      {
-        RenderInstruction& instruction = mImpl->instructions.At( mImpl->renderBufferIndex, i );
+    RenderInstruction& instruction = mImpl->instructions.At( mImpl->renderBufferIndex, i );
 
-        DoRender( instruction, *mImpl->defaultShader );
-      }
-      GLenum attachments[] = { GL_DEPTH, GL_STENCIL };
-      mImpl->context.InvalidateFramebuffer(GL_FRAMEBUFFER, 2, attachments);
-
-      mImpl->UpdateTrackers();
-
-      mImpl->firstRenderCompleted = true;
-    }
+    DoRender( instruction );
   }
+  GLenum attachments[] = { GL_DEPTH, GL_STENCIL };
+  mImpl->context.InvalidateFramebuffer(GL_FRAMEBUFFER, 2, attachments);
+
+  mImpl->UpdateTrackers();
 
   //Notify RenderGeometries that rendering has finished
   for ( GeometryOwnerIter iter = mImpl->geometryContainer.Begin(); iter != mImpl->geometryContainer.End(); ++iter )
@@ -569,7 +550,7 @@ bool RenderManager::Render( Integration::RenderStatus& status )
   return false;
 }
 
-void RenderManager::DoRender( RenderInstruction& instruction, Shader& defaultShader )
+void RenderManager::DoRender( RenderInstruction& instruction )
 {
   Rect<int> viewportRect;
   Vector4   clearColor;
@@ -634,7 +615,6 @@ void RenderManager::DoRender( RenderInstruction& instruction, Shader& defaultSha
 
   Render::ProcessRenderInstruction( instruction,
                                     mImpl->context,
-                                    defaultShader,
                                     mImpl->renderBufferIndex );
 
   if( instruction.mRenderTracker && ( instruction.mFrameBuffer != NULL ) )
index 60c58f8..9d970cb 100644 (file)
@@ -310,12 +310,6 @@ public:
   void RemoveRenderTracker( Render::RenderTracker* renderTracker );
 
   /**
-   * Set the default shader that is to be used in absence of custom shader
-   * @param[in] shader that is the default one
-   */
-  void SetDefaultShader( Shader* shader );
-
-  /**
    * returns the Program controller for sending program messages
    * @return the ProgramController
    */
@@ -335,9 +329,8 @@ private:
   /**
    * Helper to process a single RenderInstruction.
    * @param[in] instruction A description of the rendering operation.
-   * @param[in] defaultShader default shader to use.
    */
-  void DoRender( RenderInstruction& instruction, Shader& defaultShader );
+  void DoRender( RenderInstruction& instruction );
 
 private:
 
index b59eb20..97f45ee 100644 (file)
@@ -524,7 +524,6 @@ StencilOperation::Type Renderer::GetStencilOperationOnZPass() const
 void Renderer::Render( Context& context,
                        BufferIndex bufferIndex,
                        const SceneGraph::NodeDataProvider& node,
-                       SceneGraph::Shader& defaultShader,
                        const Matrix& modelMatrix,
                        const Matrix& modelViewMatrix,
                        const Matrix& viewMatrix,
@@ -536,14 +535,8 @@ void Renderer::Render( Context& context,
   Program* program = mRenderDataProvider->GetShader().GetProgram();
   if( !program )
   {
-    // if program is NULL it means this is a custom shader with non matching geometry type so we need to use default shaders program
-    program = defaultShader.GetProgram();
-    DALI_ASSERT_DEBUG( program && "Default shader should always have a program available." );
-    if( !program )
-    {
-      DALI_LOG_ERROR( "Failed to get program for shader at address %p.\n", (void*)&mRenderDataProvider->GetShader() );
-      return;
-    }
+    DALI_LOG_ERROR( "Failed to get program for shader at address %p.\n", (void*)&mRenderDataProvider->GetShader() );
+    return;
   }
 
   //Set cull face  mode
index 6332d52..50a1d5d 100644 (file)
@@ -345,7 +345,6 @@ public:
    * @param[in] context The context used for rendering
    * @param[in] bufferIndex The index of the previous update buffer.
    * @param[in] node The node using this renderer
-   * @param[in] defaultShader in case there is no custom shader
    * @param[in] modelViewMatrix The model-view matrix.
    * @param[in] viewMatrix The view matrix.
    * @param[in] projectionMatrix The projection matrix.
@@ -355,7 +354,6 @@ public:
   void Render( Context& context,
                BufferIndex bufferIndex,
                const SceneGraph::NodeDataProvider& node,
-               SceneGraph::Shader& defaultShader,
                const Matrix& modelMatrix,
                const Matrix& modelViewMatrix,
                const Matrix& viewMatrix,
index 39e8a31..224f972 100644 (file)
@@ -509,19 +509,6 @@ void UpdateManager::AddShader( Shader* shader )
 {
   DALI_ASSERT_DEBUG( NULL != shader );
 
-  if( mImpl->shaders.Count() == 0 )
-  {
-    // the first added shader becomes our default shader
-    // Construct message in the render queue memory; note that delete should not be called on the return value
-    typedef MessageValue1< RenderManager, Shader* > DerivedType;
-
-    // Reserve some memory inside the render queue
-    unsigned int* slot = mImpl->renderQueue.ReserveMessageSlot( mSceneGraphBuffers.GetUpdateBufferIndex(), sizeof( DerivedType ) );
-
-    // Construct message in the render queue memory; note that delete should not be called on the return value
-    new (slot) DerivedType( &mImpl->renderManager, &RenderManager::SetDefaultShader, shader );
-  }
-
   mImpl->shaders.PushBack( shader );
 }