- size_t count = renderList.Count();
- for ( size_t index = 0; index < count; ++index )
- {
- const RenderItem& item = renderList.GetItem( index );
- DALI_PRINT_RENDER_ITEM( item );
-
- SetupPerRendererFlags( item, context, usedStencilBuffer, stencilManagedByDrawMode );
- item.mRenderer->Render( context, textureCache, bufferIndex, *item.mNode, defaultShader,
- item.mModelMatrix, item.mModelViewMatrix, viewMatrix, projectionMatrix, item.mSize, !item.mIsOpaque );
- }
- }
- else
- {
- size_t count = renderList.Count();
- for ( size_t index = 0; index < count; ++index )
- {
- const RenderItem& item = renderList.GetItem( index );
- DALI_PRINT_RENDER_ITEM( item );
-
- // Set up the depth buffer based on per-renderer flags.
- SetupDepthBuffer( item, context, isLayer3D );
- SetupPerRendererFlags( item, context, usedStencilBuffer, stencilManagedByDrawMode );
-
- item.mRenderer->Render( context, textureCache, bufferIndex, *item.mNode, defaultShader,
- item.mModelMatrix, item.mModelViewMatrix, viewMatrix, projectionMatrix, item.mSize, !item.mIsOpaque );
- }
+ const RenderItem& item = renderList.GetItem( index );
+ DALI_PRINT_RENDER_ITEM( item );
+
+ // Set up the depth buffer based on per-renderer flags.
+ // If the per renderer flags are set to "ON" or "OFF", they will always override any Layer depth mode or
+ // draw-mode state, such as Overlays.
+ // If the flags are set to "AUTO", the behaviour then depends on the type of renderer. Overlay Renderers will always
+ // disable depth testing and writing. Color Renderers will enable them if the Layer does.
+ SetupDepthBuffer( item, context, autoDepthTestMode );
+ SetupPerRendererFlags( item, context, usedStencilBuffer, stencilManagedByDrawMode );
+
+ item.mRenderer->Render( context, textureCache, bufferIndex, *item.mNode, defaultShader,
+ item.mModelMatrix, item.mModelViewMatrix, viewMatrix, projectionMatrix, item.mSize, !item.mIsOpaque );