X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-application.cpp;h=47487e23a6aa73c325c3c1c162f7beb915634251;hb=dd6f3440be62f93951347a2d952eac07f2811c87;hp=2862284828b185952e3c7ba3bbc77a2be490be6b;hpb=177a529f5796ca4abe24fc5eafd7cddff423be3b;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 2862284..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 @@ -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. @@ -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() @@ -99,15 +101,15 @@ TestApplication::~TestApplication() delete mCore; } -void TestApplication::LogContext(bool start, const char* tag) +void TestApplication::LogContext(bool start, const char* tag, const char* message) { if(start) { - fprintf(stderr, "INFO: Trace Start: %s\n", tag); + fprintf(stderr, "INFO: Trace Start: %s %s\n", tag, message ? message : ""); } else { - fprintf(stderr, "INFO: Trace End: %s\n", tag); + fprintf(stderr, "INFO: Trace End: %s %s\n", tag, message ? message : ""); } } @@ -117,13 +119,16 @@ void TestApplication::LogMessage(Dali::Integration::Log::DebugPriority level, st { switch(level) { - case Dali::Integration::Log::DebugInfo: + case Dali::Integration::Log::DEBUG: + fprintf(stderr, "DEBUG: %s", message.c_str()); + break; + case Dali::Integration::Log::INFO: fprintf(stderr, "INFO: %s", message.c_str()); break; - case Dali::Integration::Log::DebugWarning: + case Dali::Integration::Log::WARNING: fprintf(stderr, "WARN: %s", message.c_str()); break; - case Dali::Integration::Log::DebugError: + case Dali::Integration::Log::ERROR: fprintf(stderr, "ERROR: %s", message.c_str()); break; default: @@ -179,7 +184,7 @@ void TestApplication::SendNotification() mCore->ProcessEvents(); } -void TestApplication::DoUpdate(uint32_t intervalMilliseconds, const char* location) +void TestApplication::DoUpdate(uint32_t intervalMilliseconds, const char* location, bool uploadOnly) { if(GetUpdateStatus() == 0 && mRenderStatus.NeedsUpdate() == false && @@ -191,25 +196,31 @@ void TestApplication::DoUpdate(uint32_t intervalMilliseconds, const char* locati uint32_t nextVSyncTime = mLastVSyncTime + intervalMilliseconds; float elapsedSeconds = static_cast(intervalMilliseconds) * 0.001f; - mCore->Update(elapsedSeconds, mLastVSyncTime, nextVSyncTime, mStatus, false, false); + mCore->Update(elapsedSeconds, mLastVSyncTime, nextVSyncTime, mStatus, false, false, uploadOnly); GetRenderController().Initialize(); mLastVSyncTime = nextVSyncTime; } -bool TestApplication::Render(uint32_t intervalMilliseconds, const char* location) +bool TestApplication::Render(uint32_t intervalMilliseconds, const char* location, bool uploadOnly) { - DoUpdate(intervalMilliseconds, location); + DoUpdate(intervalMilliseconds, location, uploadOnly); // Reset the status mRenderStatus.SetNeedsUpdate(false); mRenderStatus.SetNeedsPostRender(false); - mCore->PreRender(mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/); - mCore->RenderScene(mRenderStatus, mScene, true /*render the off-screen buffers*/); - mCore->RenderScene(mRenderStatus, mScene, false /*render the surface*/); - mCore->PostRender(false /*do not skip rendering*/); + mCore->PreRender(mRenderStatus, false /*do not force clear*/); + if(!uploadOnly) + { + for(auto&& scene : mScenes) + { + mCore->RenderScene(mRenderStatus, scene, true /*render the off-screen buffers*/); + mCore->RenderScene(mRenderStatus, scene, false /*render the surface*/); + } + } + mCore->PostRender(); mFrame++; @@ -220,7 +231,7 @@ bool TestApplication::PreRenderWithPartialUpdate(uint32_t intervalMilliseconds, { DoUpdate(intervalMilliseconds, location); - mCore->PreRender(mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/); + mCore->PreRender(mRenderStatus, false /*do not force clear*/); mCore->PreRender(mScene, damagedRects); return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate(); @@ -230,7 +241,37 @@ bool TestApplication::RenderWithPartialUpdate(std::vector>& damagedRec { mCore->RenderScene(mRenderStatus, mScene, true /*render the off-screen buffers*/); mCore->RenderScene(mRenderStatus, mScene, false /*render the surface*/, clippingRect); - mCore->PostRender(false /*do not skip rendering*/); + mCore->PostRender(); + + mFrame++; + + 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++; @@ -261,10 +302,10 @@ bool TestApplication::GetRenderNeedsPostRender() bool TestApplication::RenderOnly() { // Update Time values - mCore->PreRender(mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/); + mCore->PreRender(mRenderStatus, false /*do not force clear*/); mCore->RenderScene(mRenderStatus, mScene, true /*render the off-screen buffers*/); mCore->RenderScene(mRenderStatus, mScene, false /*render the surface*/); - mCore->PostRender(false /*do not skip rendering*/); + mCore->PostRender(); mFrame++; @@ -291,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