[Tizen] Regenerating uniform maps fix
[platform/core/uifw/dali-core.git] / dali / internal / render / renderers / render-renderer.h
index 1f8d99e..406dff4 100755 (executable)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_RENDER_RENDERER_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
@@ -335,6 +335,12 @@ public:
   StencilOperation::Type GetStencilOperationOnZPass() const;
 
   /**
+   * Called to upload during RenderManager::Render().
+   * @param[in] context The context used for uploading
+   */
+  void Upload( Context& context );
+
+  /**
    * Called to render during RenderManager::Render().
    * @param[in] context The context used for rendering
    * @param[in] bufferIndex The index of the previous update buffer.
@@ -344,6 +350,7 @@ public:
    * @param[in] projectionMatrix The projection matrix.
    * @param[in] size Size of the render item
    * @param[in] blend If true, blending is enabled
+   * @param[in] boundTextures The textures bound for rendering
    */
   void Render( Context& context,
                BufferIndex bufferIndex,
@@ -353,7 +360,8 @@ public:
                const Matrix& viewMatrix,
                const Matrix& projectionMatrix,
                const Vector3& size,
-               bool blend );
+               bool blend,
+               Vector<GLuint>& boundTextures );
 
   /**
    * Write the renderer's sort attributes to the passed in reference
@@ -363,6 +371,13 @@ public:
    */
   void SetSortAttributes( BufferIndex bufferIndex, SceneGraph::RenderInstructionProcessor::SortAttributes& sortAttributes ) const;
 
+  /**
+   * Sets the flag indicating whether shader changed.
+   *
+   * @param[in] value True if shader changed
+   */
+  void SetShaderChanged( bool value );
+
 private:
 
   struct UniformIndexMap;
@@ -401,9 +416,10 @@ private:
    * Bind the textures and setup the samplers
    * @param[in] context The GL context
    * @param[in] program The shader program
+   * @param[in] boundTextures The textures bound for rendering
    * @return False if create or bind failed, true if success.
    */
-  bool BindTextures( Context& context, Program& program );
+  bool BindTextures( Context& context, Program& program, Vector<GLuint>& boundTextures );
 
 private:
 
@@ -435,6 +451,8 @@ private:
   DepthTestMode::Type          mDepthTestMode:3;            ///< The depth test mode
   bool                         mUpdateAttributesLocation:1; ///< Indicates attribute locations have changed
   bool                         mPremultipledAlphaEnabled:1; ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
+  bool                         mShaderChanged:1;            ///< Flag indicating the shader changed and uniform maps have to be updated
+
 
 };