/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
// INTERNAL INCLUDES
#include <dali/integration-api/debug.h>
+#include <dali/internal/render/common/render-instruction.h>
#include <dali/internal/render/common/render-item.h>
#include <dali/internal/render/common/render-list.h>
-#include <dali/internal/render/common/render-instruction.h>
+#include <dali/internal/update/nodes/node.h>
+using Dali::Internal::SceneGraph::Node;
using Dali::Internal::SceneGraph::RenderList;
namespace Dali
{
-
namespace Internal
{
-
namespace Render
{
+// These functions should only be defined if they are being used by the #define in the header.
+// Otherwise they will contribute negatively to code coverage.
+#ifdef DALI_PRINT_RENDER_INFO
-void PrintFrameStart( BufferIndex bufferIndex )
+void PrintFrameStart(BufferIndex bufferIndex)
{
- DALI_LOG_RENDER_INFO( "RENDER START - bufferIndex: %d\n", bufferIndex );
+ DALI_LOG_RENDER_INFO("RENDER START - bufferIndex: %d\n", bufferIndex);
}
void PrintFrameEnd()
{
- DALI_LOG_RENDER_INFO( "RENDER END\n\n" );
+ DALI_LOG_RENDER_INFO("RENDER END\n\n");
}
-void PrintRenderInstruction( const SceneGraph::RenderInstruction& instruction )
+void PrintRenderInstruction(const SceneGraph::RenderInstruction& instruction, BufferIndex index)
{
- const char* target = (0 != instruction.mOffscreenTextureId) ? "FrameBuffer" : "Screen";
+ const char* target = (nullptr != instruction.mFrameBuffer) ? "FrameBuffer" : "Screen";
std::stringstream debugStream;
- debugStream << "Rendering to " << target << ", View: " << *(instruction.mViewMatrix) << " Projection: " << *(instruction.mProjectionMatrix);
+ debugStream << "Rendering to " << target << ", View: " << *(instruction.GetViewMatrix(index)) << " Projection: " << *(instruction.GetProjectionMatrix(index));
- if( instruction.mIsViewportSet )
+ if(instruction.mIsViewportSet)
{
debugStream << " Viewport: " << instruction.mViewport.x << "," << instruction.mViewport.y << " " << instruction.mViewport.width << "x" << instruction.mViewport.height;
}
- if( instruction.mIsClearColorSet )
+ if(instruction.mIsClearColorSet)
{
debugStream << " ClearColor: " << instruction.mClearColor;
}
- std::string debugString( debugStream.str() );
- DALI_LOG_RENDER_INFO( " %s\n", debugString.c_str() );
+ std::string debugString(debugStream.str());
+ DALI_LOG_RENDER_INFO(" %s\n", debugString.c_str());
}
-void PrintRenderList( const RenderList& list )
+void PrintRenderList(const RenderList& list)
{
- unsigned int flags = list.GetFlags();
-
std::stringstream debugStream;
debugStream << "Rendering items";
- if( flags )
- {
- debugStream << " with:";
-
- if( flags & RenderList::DEPTH_TEST )
- {
- debugStream << " DEPTH_TEST";
- }
-
- if( flags & RenderList::DEPTH_WRITE )
- {
- debugStream << " DEPTH_WRITE";
- }
-
- if( flags & RenderList::DEPTH_CLEAR )
- {
- debugStream << " DEPTH_CLEAR";
- }
-
- if( flags & RenderList::STENCIL_TEST )
- {
- debugStream << " STENCIL_TEST";
- }
-
- if( flags & RenderList::STENCIL_WRITE )
- {
- debugStream << " STENCIL_WRITE";
- }
-
- if( flags & RenderList::STENCIL_CLEAR )
- {
- debugStream << " STENCIL_CLEAR";
- }
- }
- else
- {
- debugStream << " without any DEPTH_TEST, DEPTH_WRITE etc";
- }
-
- if( list.IsClipping() )
+ if(list.IsClipping())
{
debugStream << ", ClippingBox: " << list.GetClippingBox().x << "," << list.GetClippingBox().y << " " << list.GetClippingBox().width << "x" << list.GetClippingBox().height;
}
- std::string debugString( debugStream.str() );
- DALI_LOG_RENDER_INFO( " %s\n", debugString.c_str() );
+ std::string debugString(debugStream.str());
+ DALI_LOG_RENDER_INFO(" %s\n", debugString.c_str());
}
-void PrintRenderItem( const SceneGraph::RenderItem& item )
+void PrintRenderItem(const SceneGraph::RenderItem& item)
{
std::stringstream debugStream;
- debugStream << "Rendering item, ModelView: " << item.GetModelViewMatrix();
+ debugStream << "Rendering item, ModelView: " << item.mModelViewMatrix;
+
+ std::string debugString(debugStream.str());
+ DALI_LOG_RENDER_INFO(" %s\n", debugString.c_str());
+}
- std::string debugString( debugStream.str() );
- DALI_LOG_RENDER_INFO( " %s\n", debugString.c_str() );
+void PrintRendererCount(unsigned int frameCount, unsigned int rendererCount)
+{
+ if(frameCount % 120 == 30) // Print every 2 seconds reg
+ {
+ Debug::LogMessage(Debug::INFO, "Renderer Total # renderers: %u\n", rendererCount);
+ }
}
-} // Render
+#endif
+
+} // namespace Render
-} // Internal
+} // namespace Internal
-} // Dali
+} // namespace Dali