void RenderScene(RenderStatus& status, Integration::Scene& scene, bool renderToFbo);
/**
- * Render a scene in the next frame. This method should be preceded by a call up PreRender.
+ * Render a scene in the next frame. This method should be preceded by a call to PreRender.
* This method should be called twice. The first pass to render off-screen frame buffers if any,
* and the second pass to render the surface.
* Multi-threading note: this method should be called from a dedicated rendering thread.
/**
* This is called after rendering all the scenes in the next frame. This method should be
- * followed by a call up RenderScene.
+ * followed by a call to RenderScene.
* Multi-threading note: this method should be called from a dedicated rendering thread.
* @pre The GL context must have been created, and made current.
*/
void RenderManager::RenderScene(Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo, Rect<int>& clippingRect)
{
+ DALI_LOG_INFO(gLogFilter, Debug::General, "Rendering to %s\n", renderToFbo ? "Framebuffer" : "Surface");
+
if(mImpl->partialUpdateAvailable == Integration::PartialUpdateAvailable::TRUE && !renderToFbo && clippingRect.IsEmpty())
{
+ DALI_LOG_INFO(gLogFilter, Debug::General, "PartialUpdate and no clip\n");
DALI_LOG_DEBUG_INFO("ClippingRect was empty. Skip rendering\n");
return;
}
DALI_LOG_ERROR("Scene was empty handle. Skip rendering\n");
return;
}
+ DALI_LOG_INFO(gLogFilter, Debug::General, "No early out\n");
// @todo These should be members of scene
const Integration::DepthBufferAvailable depthBufferAvailable = mImpl->depthBufferAvailable;
bool sceneNeedsDepthBuffer = false;
bool sceneNeedsStencilBuffer = false;
+
+ DALI_LOG_INFO(gLogFilter, Debug::General, "Instruction count: %d\n", instructionCount);
for(uint32_t i = 0; i < instructionCount; ++i)
{
RenderInstruction& instruction = sceneObject->GetRenderInstructions().At(mImpl->renderBufferIndex, i);
}
}
- // Set surface orientation
- // @todo Inform graphics impl by another route.
- // was: mImpl->currentContext->SetSurfaceOrientation(surfaceOrientation);
-
/*** Clear region of framebuffer or surface before drawing ***/
bool clearFullFrameRect = (surfaceRect == viewportRect);
if(instruction.mFrameBuffer != nullptr)
submitInfo.cmdBuffer.push_back(commandBuffer);
}
+ DALI_LOG_INFO(gLogFilter, Debug::General, "CmdBuffer count: %u\n", submitInfo.cmdBuffer.size());
+
if(!submitInfo.cmdBuffer.empty())
{
mImpl->graphicsController.SubmitCommandBuffers(submitInfo);
// present render target (if main scene)
if(!renderToFbo)
{
+ DALI_LOG_INFO(gLogFilter, Debug::General, "Present\n");
+
DALI_TRACE_BEGIN(gTraceFilter, "DALI_RENDER_FINISHED");
auto renderTarget = sceneObject->GetSurfaceRenderTarget();
mImpl->graphicsController.PresentRenderTarget(renderTarget);
void RenderScene(Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo);
/**
- * Render a scene in the next frame. This method should be preceded by a call up PreRender.
+ * Render a scene in the next frame. This method should be preceded by a call to PreRender.
* This method should be called twice. The first pass to render off-screen frame buffers if any,
* and the second pass to render the surface.
* Multi-threading note: this method should be called from a dedicated rendering thread.
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
!renderTask.ReadyToRender(updateBufferIndex))
{
// Skip to next task.
+ DALI_LOG_INFO(gRenderTaskLogFilter, Debug::General, " Skip to next task\n");
continue;
}
#define DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_DEBUG_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
(state == RENDER_CONTINUOUSLY ? "RenderContinuously" : (state == RENDER_ONCE_WAITING_FOR_RESOURCES ? "RenderOnceWaiting" : (state == RENDERED_ONCE ? "RenderedOnce" : (state == RENDERED_ONCE_AND_NOTIFIED ? "RenderedOnceAndNotified" : "Unknown"))))
#define TASK_LOG(level) \
- DALI_LOG_INFO(gRenderTaskLogFilter, level, "SceneGraph::RenderTask::%s: this:%p\n", __FUNCTION__, this)
+ DALI_LOG_INFO(gRenderTaskLogFilter, level, "this:%p\n", this)
#define TASK_LOG_FMT(level, format, ...) \
- DALI_LOG_INFO(gRenderTaskLogFilter, level, "SceneGraph::RenderTask::%s: this:%p " format, __FUNCTION__, this, ##__VA_ARGS__)
+ DALI_LOG_INFO(gRenderTaskLogFilter, level, "this:%p " format, this, ##__VA_ARGS__)
#else
#define TASK_LOG(level)
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
bool RenderTask::ReadyToRender(BufferIndex updateBufferIndex)
{
+ TASK_LOG_FMT(Debug::General, " Active(ReadyToRender):%s\n", mActive ? "T" : "F");
return mActive;
}