- // programs are owned by context at the moment.
- Context context; ///< Holds the GL state of the share resource context
- Context* currentContext; ///< Holds the GL state of the current context for rendering
- OwnerContainer< Context* > sceneContextContainer; ///< List of owned contexts holding the GL state per scene
- Integration::GlAbstraction& glAbstraction; ///< GL abstraction
- Integration::GlSyncAbstraction& glSyncAbstraction; ///< GL sync abstraction
- Integration::GlContextHelperAbstraction& glContextHelperAbstraction; ///< GL context helper abstraction
- RenderQueue renderQueue; ///< A message queue for receiving messages from the update-thread.
-
- std::vector< SceneGraph::Scene* > sceneContainer; ///< List of pointers to the scene graph objects of the scenes
-
- Render::RenderAlgorithms renderAlgorithms; ///< The RenderAlgorithms object is used to action the renders required by a RenderInstruction
-
- uint32_t frameCount; ///< The current frame count
- BufferIndex renderBufferIndex; ///< The index of the buffer to read from; this is opposite of the "update" buffer
-
- Rect<int32_t> defaultSurfaceRect; ///< Rectangle for the default surface we are rendering to
-
- OwnerContainer< Render::Renderer* > rendererContainer; ///< List of owned renderers
- OwnerContainer< Render::Sampler* > samplerContainer; ///< List of owned samplers
- OwnerContainer< Render::Texture* > textureContainer; ///< List of owned textures
- OwnerContainer< Render::FrameBuffer* > frameBufferContainer; ///< List of owned framebuffers
- OwnerContainer< Render::VertexBuffer* > vertexBufferContainer; ///< List of owned vertex buffers
- OwnerContainer< Render::Geometry* > geometryContainer; ///< List of owned Geometries
-
- bool lastFrameWasRendered; ///< Keeps track of the last frame being rendered due to having render instructions
-
- OwnerContainer< Render::RenderTracker* > mRenderTrackers; ///< List of render trackers
-
- ProgramController programController; ///< Owner of the GL programs
-
- Integration::DepthBufferAvailable depthBufferAvailable; ///< Whether the depth buffer is available
- Integration::StencilBufferAvailable stencilBufferAvailable; ///< Whether the stencil buffer is available
- Integration::PartialUpdateAvailable partialUpdateAvailable; ///< Whether the partial update is available
-
- std::unique_ptr<Dali::ThreadPool> threadPool; ///< The thread pool
- Vector<GLuint> boundTextures; ///< The textures bound for rendering
- Vector<GLuint> textureDependencyList; ///< The dependency list of binded textures
-
- int defaultSurfaceOrientation; ///< defaultSurfaceOrientation for the default surface we are rendering to
-
+ Graphics::Controller& graphicsController;
+ RenderQueue renderQueue; ///< A message queue for receiving messages from the update-thread.
+ std::vector<SceneGraph::Scene*> sceneContainer; ///< List of pointers to the scene graph objects of the scenes
+ Render::RenderAlgorithms renderAlgorithms; ///< The RenderAlgorithms object is used to action the renders required by a RenderInstruction
+
+ OwnerContainer<Render::Sampler*> samplerContainer; ///< List of owned samplers
+ OwnerContainer<Render::FrameBuffer*> frameBufferContainer; ///< List of owned framebuffers
+ OwnerContainer<Render::VertexBuffer*> vertexBufferContainer; ///< List of owned vertex buffers
+ OwnerContainer<Render::Geometry*> geometryContainer; ///< List of owned Geometries
+ OwnerContainer<Render::RenderTracker*> mRenderTrackers; ///< List of render trackers
+ OwnerKeyContainer<Render::Renderer> rendererContainer; ///< List of owned renderers
+ OwnerKeyContainer<Render::Texture> textureContainer; ///< List of owned textures
+
+ ProgramController programController; ///< Owner of the programs
+ Render::ShaderCache shaderCache; ///< The cache for the graphics shaders
+
+ std::unique_ptr<Render::UniformBufferManager> uniformBufferManager; ///< The uniform buffer manager
+ std::unique_ptr<Render::PipelineCache> pipelineCache;
+
+ Integration::DepthBufferAvailable depthBufferAvailable; ///< Whether the depth buffer is available
+ Integration::StencilBufferAvailable stencilBufferAvailable; ///< Whether the stencil buffer is available
+ Integration::PartialUpdateAvailable partialUpdateAvailable; ///< Whether the partial update is available
+
+ std::unique_ptr<Dali::ThreadPool> threadPool; ///< The thread pool
+ Vector<Graphics::Texture*> boundTextures; ///< The textures bound for rendering
+ Vector<Graphics::Texture*> textureDependencyList; ///< The dependency list of bound textures
+
+ uint32_t frameCount{0u}; ///< The current frame count
+ BufferIndex renderBufferIndex{SceneGraphBuffers::INITIAL_UPDATE_BUFFER_INDEX}; ///< The index of the buffer to read from; this is opposite of the "update" buffer
+
+ bool lastFrameWasRendered{false}; ///< Keeps track of the last frame being rendered due to having render instructions
+ bool commandBufferSubmitted{false};