From 066e03a9fba3484f28cb8b83b4722769cee09466 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Thu, 25 May 2023 18:16:19 +0900 Subject: [PATCH] Sync test harness Change-Id: Ia4081494e429aa3674402fb8b39f7e7f8c83a417 --- .../dali-toolkit-test-utils/test-application.cpp | 49 +++++++++++++++++++++- .../dali-toolkit-test-utils/test-application.h | 9 +++- .../toolkit-test-application.cpp | 4 +- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp index a8354e8..47487e2 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp @@ -85,6 +85,8 @@ void TestApplication::CreateScene() rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really. mScene.SetSurfaceRenderTarget(rtInfo); + + mScenes.push_back(mScene); } void TestApplication::InitializeCore() @@ -212,8 +214,11 @@ bool TestApplication::Render(uint32_t intervalMilliseconds, const char* location mCore->PreRender(mRenderStatus, false /*do not force clear*/); if(!uploadOnly) { - mCore->RenderScene(mRenderStatus, mScene, true /*render the off-screen buffers*/); - mCore->RenderScene(mRenderStatus, mScene, false /*render the surface*/); + for(auto&& scene : mScenes) + { + mCore->RenderScene(mRenderStatus, scene, true /*render the off-screen buffers*/); + mCore->RenderScene(mRenderStatus, scene, false /*render the surface*/); + } } mCore->PostRender(); @@ -243,6 +248,36 @@ bool TestApplication::RenderWithPartialUpdate(std::vector>& damagedRec return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate(); } +bool TestApplication::RenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location) +{ + DoUpdate(intervalMilliseconds, location); + + // Reset the status + mRenderStatus.SetNeedsUpdate(false); + mRenderStatus.SetNeedsPostRender(false); + + mCore->PreRender(mRenderStatus, false /*do not force clear*/); + + for(auto&& scene : mScenes) + { + std::vector> damagedRects; + Rect clippingRect{}; + + mCore->PreRender(scene, damagedRects); + mCore->RenderScene(mRenderStatus, scene, true /*render the off-screen buffers*/); + for(auto&& iter : damagedRects) + { + clippingRect.Merge(iter); + } + mCore->RenderScene(mRenderStatus, scene, false /*render the surface*/, clippingRect); + } + mCore->PostRender(); + + mFrame++; + + return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate(); +} + uint32_t TestApplication::GetUpdateStatus() { return mStatus.KeepUpdating(); @@ -297,4 +332,14 @@ uint32_t TestApplication::Wait(uint32_t durationToWait) return time; } +void TestApplication::AddScene(Integration::Scene scene) +{ + mScenes.push_back(scene); +} + +void TestApplication::RemoveScene(Integration::Scene scene) +{ + mScenes.erase(std::remove(mScenes.begin(), mScenes.end(), scene), mScenes.end()); +} + } // namespace Dali diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.h index ce0e151..5e86b3c 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.h @@ -75,6 +75,7 @@ public: bool Render(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location = NULL, bool uploadOnly = false); bool PreRenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location, std::vector>& damagedRects); bool RenderWithPartialUpdate(std::vector>& damagedRects, Rect& clippingRect); + bool RenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location = NULL); uint32_t GetUpdateStatus(); bool UpdateOnly(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL); bool RenderOnly(); @@ -92,6 +93,9 @@ public: return mScene; } + void AddScene(Integration::Scene scene); + void RemoveScene(Integration::Scene scene); + private: void DoUpdate(uint32_t intervalMilliseconds, const char* location = NULL, bool uploadOnly = false); @@ -103,8 +107,9 @@ protected: Integration::UpdateStatus mStatus; Integration::RenderStatus mRenderStatus; - Integration::Core* mCore; - Dali::Integration::Scene mScene; + Integration::Core* mCore; + Dali::Integration::Scene mScene; + std::vector mScenes; uint32_t mSurfaceWidth; uint32_t mSurfaceHeight; diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp index 07b1013..1e36828 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -50,6 +50,8 @@ ToolkitTestApplication::ToolkitTestApplication(size_t surfaceWidth, size_t surfa rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight}); mScene.SetSurfaceRenderTarget(rtInfo); + mScenes.push_back(mScene); + // Core needs to be initialized next before we start the adaptor InitializeCore(); Accessibility::Accessible::SetObjectRegistry(mCore->GetObjectRegistry()); -- 2.7.4