Eunki, Hong [Thu, 25 Jul 2024 07:26:31 +0000 (16:26 +0900)]
Make bake flag dont change set dirty flag
Since we can bake componet side, it may have problem
if component property baked, and full property is set.
In this case, property call reset to base value only 1 times.
So it will show flickering.
To fix this issue, let we make mDirtyFlag |= BAKED_FLAG instead of
mDirtyFlag = BAKED_FLAG
Change-Id: I7269ac79ab1ec7796f62eaea438ee47dd104e963
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki Hong [Tue, 23 Jul 2024 07:08:40 +0000 (07:08 +0000)]
Merge "Do not calculate transform if there is nothing changed as transform" into devel/master
Eunki, Hong [Thu, 11 Jul 2024 02:25:21 +0000 (11:25 +0900)]
Add internal UTC to use ShaderFactory.SaveShader
Since there was no UTC relative with it, platform abstraction code become broken.
To make code clean, let we implement something internal UTC about shader cache.
Change-Id: I83f10b5a7231af9f6a68c33336c92bc1f7ea1a68
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Wed, 12 Jun 2024 12:21:46 +0000 (21:21 +0900)]
Do not calculate transform if there is nothing changed as transform
Since we can know every cases when the local-world matrix changeness,
we can "skip" if there is nothing changed during current frame.
Transform calculation is kind of heavy operation.
So if there is any timing that we can skip it, it could be
increase performance for non-transform cases (a.k.a Lottie, AniamtedImage, Particle)
Change-Id: Ie7b6fdd8099810e599bf696fca267e48c7f83066
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
David Steele [Mon, 22 Jul 2024 10:21:46 +0000 (10:21 +0000)]
Merge changes Ia910ced0,Ifa949d9b into devel/master
* changes:
Print log if TypeInfo asserted + Do not assert if we call SetProperty for readonly + Add keyword LIKELY / UNLIKELY
Remove useless macro
Adeel Kazmi [Fri, 19 Jul 2024 09:59:55 +0000 (09:59 +0000)]
Merge "DALi Version 2.3.33" into devel/master
Adam Bialogonski [Fri, 19 Jul 2024 06:54:24 +0000 (07:54 +0100)]
DALi Version 2.3.33
Change-Id: I42061d53504977f1cd2b39eb984ecc9b9625f166
David Steele [Thu, 18 Jul 2024 17:38:48 +0000 (18:38 +0100)]
Fix secondary command buffer Begin flag
Change-Id: I52db5f89da394444bcb248ff97ed0a2b0bf2b6da
David Steele [Mon, 15 Jul 2024 16:53:48 +0000 (17:53 +0100)]
Adding Begin/End commands to graphics API
Change-Id: Iff0f91133f4a8646f17ccaebf6d7d95e84c8fc17
David Steele [Mon, 15 Jul 2024 13:20:00 +0000 (13:20 +0000)]
Merge "Cleaned up render pass creation comments" into devel/master
Adeel Kazmi [Mon, 15 Jul 2024 09:47:33 +0000 (10:47 +0100)]
(TestApplication) Fix SVACE issue
Change-Id: I654a48b18ef90fb7c0a4737ac9dc273f4c3e661a
David Steele [Fri, 12 Jul 2024 15:44:43 +0000 (15:44 +0000)]
Merge changes I03cb1f37,I66ce8530,Iad1ace55,Ib9eef3cf into devel/master
* changes:
Making test-render-surface.h/cpp common across repos
Updating framebuffer to use renderpass
Minor test harness updates
Updating graphics-api for Vulkan
David Steele [Tue, 9 Jul 2024 17:58:31 +0000 (18:58 +0100)]
Cleaned up render pass creation comments
Change-Id: I92a7a4c4beb236fd2caa9207c7726079374bc480
David Steele [Fri, 12 Jul 2024 10:12:04 +0000 (11:12 +0100)]
DALi Version 2.3.32
Change-Id: If9a370530f2668add53306b58726d6cfb7c5f60a
Eunki, Hong [Thu, 11 Jul 2024 10:26:56 +0000 (19:26 +0900)]
Calculate Has with std::string_view
Since convert from std::string_view to std::string
might requred memory copy.
To avoid this overhead, let we make a API that calculate
hash as string_view, instead of full string
Change-Id: Ie5455a5001e1c1f423023708a4988d53badff74c
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Mon, 8 Jul 2024 01:52:43 +0000 (10:52 +0900)]
Print log if TypeInfo asserted + Do not assert if we call SetProperty for readonly + Add keyword LIKELY / UNLIKELY
Change-Id: Ia910ced0e022f95a262cd508b02b31917b1e3a83
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
David Steele [Thu, 27 Jun 2024 17:12:20 +0000 (18:12 +0100)]
Making test-render-surface.h/cpp common across repos
Change-Id: I03cb1f37ad9f51bc96b08bb31b6ee9d7d20cd083
Signed-off-by: David Steele <david.steele@samsung.com>
David Steele [Thu, 20 Jun 2024 17:21:04 +0000 (18:21 +0100)]
Updating framebuffer to use renderpass
Vulkan framebuffer requires a renderpass to be defined before
the framebuffer can be created. Currently in gles backend, this
order is irrelevant, and is not defined in the graphics api.
Added Graphics::RenderPass vector to the
Graphics::FramebufferCreateInfo - this vector may have more than one
compatible render pass in it. The first render pass will be used to
create the framebuffer, but BeginRenderPass may use any of the defined
render passes with that framebuffer (as long as they are compatible in
vulkan, i.e. only differ by layout or load/store ops).
Change-Id: I66ce8530a34bcb1da57461db5644771efe0af48c
David Steele [Wed, 19 Jun 2024 09:07:58 +0000 (10:07 +0100)]
Minor test harness updates
Adding test-render-surface to dali-core
Change-Id: Iad1ace557fd4bab95a5e5cae5cf8281a9f4d2c64
David Steele [Fri, 14 Jun 2024 08:56:47 +0000 (09:56 +0100)]
Updating graphics-api for Vulkan
Change-Id: Ib9eef3cf2901b4fae094891d9ac82939c5be9d49
Eunki, Hong [Mon, 8 Jul 2024 01:30:30 +0000 (10:30 +0900)]
Remove useless macro
Since we use IndexedMap for a long time and it doesn't show any problem, let we remove this macro
Change-Id: Ifa949d9b4a2b40238770d63b170d9dd462ff0f95
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adam Bialogonski [Fri, 5 Jul 2024 09:08:01 +0000 (10:08 +0100)]
DALi Version 2.3.31
Change-Id: Ifa20f9c8ef8faea482e55bcfd24cf71f1460af05
Adeel Kazmi [Thu, 4 Jul 2024 15:56:28 +0000 (15:56 +0000)]
Merge "Print log if worker thread destruction occured for UI items." into devel/master
Eunki, Hong [Wed, 3 Jul 2024 11:24:22 +0000 (20:24 +0900)]
Print log if worker thread destruction occured for UI items.
Change-Id: I15db9dd5d6763b403b4b5015c95e3491c18443dc
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 4 Jul 2024 10:16:18 +0000 (19:16 +0900)]
Make Log::LogMessage print to stderr / stdout if log function not installed
Until now, we just ignore the messages when we use Dali::Integration::Log::LogMessage(Something like, DALI_LOG_ERROR macro) when we don't install log function.
The log function exist per each threads.
But it is difficult to debug something at worker thread jobs
what DALi cannot controled. (Like GC thread for dotnet Application)
For more general and each debugging, let we print 'something' even if
log function is not installed, like stderr.
For now, Tizen platform re-open the stderr / stdout as dlog.
and Linux-friendly + Windows support to print logs into stderr, stdout file.
Change-Id: Iaf6a49d8aa9f53108b4c83bbdb18df406e3b57fa
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 2 Jul 2024 03:35:07 +0000 (12:35 +0900)]
Fix coverity issue : Uninitialized value at HitTestResult + PanGestureDetector SG delete
Since PanGestureDetector use SG::PanGesture, which the memory ownership is on UpdateManager,
we need to take carefully to control the memory usage.
Change-Id: I7c2929c97b57e6e14072e0598bcd1788aa43af98
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
David Steele [Fri, 28 Jun 2024 14:36:30 +0000 (14:36 +0000)]
Merge "Added element stride to the UniformInfo" into devel/master
Richard Huang [Fri, 28 Jun 2024 10:10:21 +0000 (11:10 +0100)]
DALi Version 2.3.30
Change-Id: I4ac6554c928cb7a90cea3574308c40634476147d
Adam Bialogonski [Tue, 25 Jun 2024 11:27:33 +0000 (12:27 +0100)]
Added element stride to the UniformInfo
Added element stride to the UniformInfo when uniform is an array.
Change-Id: Ib006d0ce50589b2ef5cf1a5bd1e6b3ab7fe9ec45
joogab yun [Tue, 25 Jun 2024 07:15:28 +0000 (07:15 +0000)]
Merge "Add TouchPropagationType enum. PARENT events are propagated to parents in the traditional way. GEOMETRY is a new way in which events are propagated based on geometry." into devel/master
joogab.yun [Tue, 25 Jun 2024 01:24:26 +0000 (10:24 +0900)]
Add TouchPropagationType enum.
PARENT events are propagated to parents in the traditional way.
GEOMETRY is a new way in which events are propagated based on geometry.
Change-Id: I3a717d5433e73f22e835ed3e6cd384a337160688
Eunki Hong [Mon, 24 Jun 2024 02:09:50 +0000 (02:09 +0000)]
Merge changes I576e6929,Ib8bae68c into devel/master
* changes:
Mark dirty flag into SG::Renderer directly if visual property changed
Remove static_cast when we try to get decorated visual properties
David Steele [Fri, 21 Jun 2024 11:28:01 +0000 (12:28 +0100)]
DALi Version 2.3.29
Change-Id: I130c77353c8488d8d62b02bbbff076bd016acdb5
Eunki, Hong [Thu, 20 Jun 2024 05:29:47 +0000 (14:29 +0900)]
Mark dirty flag into SG::Renderer directly if visual property changed
Since age-down the visual property every frames make performance down,
let we update VisualRenderer's property send updated flag into SG::Renderer directly.
Now it will reduce some useless call of PrepareProperties of visual renderer.
Change-Id: I576e6929fca6945379b72988b4f3633e2ad70e22
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 20 Jun 2024 04:35:07 +0000 (13:35 +0900)]
Remove static_cast when we try to get decorated visual properties
Since we don't have any plan to add extra data for VisualRenderer now,
let we specify the class of Extension of VisualRenderer, instead of void*
Change-Id: Ib8bae68c58082c93fb9a7dbe673c589f3b523766
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
joogab yun [Thu, 20 Jun 2024 05:02:42 +0000 (05:02 +0000)]
Merge "If Hittable is false, actor should not receive events except INTERRUPTED" into devel/master
joogab yun [Thu, 20 Jun 2024 01:52:41 +0000 (01:52 +0000)]
Merge "For Frame Event" into devel/master
joogab.yun [Thu, 20 Jun 2024 01:02:48 +0000 (10:02 +0900)]
If Hittable is false, actor should not receive events except INTERRUPTED
Change-Id: I6f782f0e3021ea1d3bcc8a9ce630956bd2128fda
Eunki, Hong [Wed, 19 Jun 2024 09:57:05 +0000 (18:57 +0900)]
Call OnBake(), OnSet only if the value is really changed
Let we check the current value and inputed value, so if they are same, ignore.
It will be useful when we don't want to mark dirty for animatable property doesn't changed.
For performance issue, let we just check only for bool / int / float.
TODO : Chould we check them also at Vector2,3,4?
Change-Id: I70b36eab97585a09c2c021da4f37a1d983a771af
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
joogab yun [Tue, 18 Jun 2024 07:47:36 +0000 (07:47 +0000)]
Merge "If USER_INTERACTION_ENABLED is false, actor should not receive events." into devel/master
joogab yun [Tue, 18 Jun 2024 07:33:01 +0000 (07:33 +0000)]
Merge "A new gesture recognition method. 1. Add HandleEvent(actor, touch) api at GestureDetector This is an API that recognizes gestures by passing the actor for which the gesture should be recognized and the touch event to GestureDetector. You can use it in the touch event callback. This should be used with SetGeometryHittestEnabled(true). 2. To support multi-gesture, we hit-test each multi-touch" into devel/master
joogab yun [Tue, 18 Jun 2024 07:32:41 +0000 (07:32 +0000)]
Merge "Reverts the previously implemented FeedTouch. The new Logic FeedTouch is coming soon." into devel/master
joogab.yun [Tue, 28 May 2024 07:12:24 +0000 (16:12 +0900)]
For Frame Event
When processing multiple multi-touches, they are grouped and processed. Add handledMultiTouch condition for grouping.
Change-Id: I9870485f03c0ef16f7ba7231f47d5bd3e8bc1f84
Eunki Hong [Mon, 17 Jun 2024 05:52:25 +0000 (05:52 +0000)]
Merge "Make Transform Component dirty as 2 frames, not for true/false" into devel/master
Adam Bialogonski [Fri, 14 Jun 2024 08:32:14 +0000 (09:32 +0100)]
DALi Version 2.3.28
Change-Id: I6208c856efbdcce2f56dc53d8745062c3c012f94
joogab.yun [Thu, 13 Jun 2024 09:07:11 +0000 (18:07 +0900)]
If USER_INTERACTION_ENABLED is false, actor should not receive events.
Change-Id: I21ca9b8587dfecf7412d6dff736f0bbcbc9b8bed
Eunki, Hong [Thu, 13 Jun 2024 05:02:29 +0000 (14:02 +0900)]
Remove old pan gesture history when guesture started.
Change-Id: I2cec5ea23b801c5dc6e7ac2e0fd0da0c780c42c2
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
joogab.yun [Mon, 15 Apr 2024 07:02:41 +0000 (16:02 +0900)]
A new gesture recognition method.
1. Add HandleEvent(actor, touch) api at GestureDetector
This is an API that recognizes gestures by passing the actor for which the gesture should be recognized and the touch event to GestureDetector.
You can use it in the touch event callback. This should be used with SetGeometryHittestEnabled(true).
2. To support multi-gesture, we hit-test each multi-touch
Change-Id: I6ea2d42fe54d1ebd7ce8a1844f91434765f9b478
Eunki, Hong [Wed, 12 Jun 2024 13:18:42 +0000 (22:18 +0900)]
Fix partial update issue after VisualRenderer patch applied
Change-Id: I0df716d6a4607ada01119c67f77f127a70566ab2
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Wed, 12 Jun 2024 09:11:58 +0000 (18:11 +0900)]
Make Transform Component dirty as 2 frames, not for true/false
Since ResetToBaseValue for TransfromProperty doesn't use basic
AnimatableProperty logic, the dirty flag is not match with common sence.
To match it as frame-by-frame, let we make component dirty as 2 bit,
and age-down every frame.
And after we allow to use dirty flag feature for transform,
we can determine whether we need to re-calculate matrix or not.
If that flag be used, we can 'skip' heavy matrix multiply operation.
Change-Id: Icf51e0be37962bee5147c08bb0cd3302bf203f89
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
joogab.yun [Mon, 15 Apr 2024 05:52:37 +0000 (14:52 +0900)]
Reverts the previously implemented FeedTouch. The new Logic FeedTouch is coming soon.
Revert "1. Fixes a bug where events do not occur when longPressGestures overlap. This is when using gestures with FeedTouch."
This reverts commit
b0516efeefaff68139bee29a7317eccd3729adbb.
Revert "actorCoordinates were missing from TapGesture when FeedTouch was used"
This reverts commit
9e32a10a253c53d66ec41fe915d6d378bf2d8aa4.
Revert "Touch and Hover event propagrated by geometry way.(5)"
This reverts commit
c1ead670ee0d10718449be889b6bdacf98d93a60.
Revert "Add FeedTouch api to GestureDetector."
This reverts commit
54e52fd9d4556e19b2e97082b057ad886952e55e.
Change-Id: Iffe838047df670006ad23f7c5d46eb7f938cd16c
Seungho BAEK [Wed, 12 Jun 2024 04:56:04 +0000 (04:56 +0000)]
Merge "Fix for GCC14" into devel/master
Eunki Hong [Fri, 7 Jun 2024 08:26:06 +0000 (17:26 +0900)]
Call ResetToBaseValue only 1 times per PropertyBase
If multiple animation try to change single property, the dirty flag
of PropertyBase would not be works well.
To ensure the dirty flag, let we collect resetter required properties
into single container, and call ResetToBaseValue only one times.
It will ensure that we call the resetter only 1 times per 1 frame.
Change-Id: I1a3792993f2ef681399f72f6f1718731408f2128
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
Seungho Baek [Mon, 10 Jun 2024 09:06:51 +0000 (18:06 +0900)]
Fix for GCC14
Change-Id: I3a0528f8c6752e2f042a5cf6bfa11b66d875b22a
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
Eunki, Hong [Tue, 4 Jun 2024 12:38:38 +0000 (21:38 +0900)]
Fix Animation with EndAction::DISCARD dont reset properties.
If Animation::EndAction::DISCARD finisehd normally cases,
The mDirtyFlag was not matched with real world
For example
ResetToBaseValue[0](mDirtyFlag become 1)
Animate and finished (mValue[0] changed.)
(update)
ResetToBaseValue[1](mDirtyFlag become 0)
(update)
(ResetToBaseValue did not called. So mValue[0] is last frame value)
(update)
(ResetToBaseValue did not called. So mValue[1] is BaseValue)
Now, mValue become flickering.
To avoid this problem, let we call ResetToBaseValue at least 2 frames
if finished animation's EndAction is DISCARD.
(Note that we don't consider Stop() call cases, since Stop() will not Animate
Animator, so mValue[0] is BaseValue)
And also, There was some issue that visual renderer property changeness not updated to
the dirty rect infomation.
(Since SG::Renderer don't be mark as updated)
To fix this issue, let we ensure to check the visual renderer property dirty.
And also, for apply Animation::EndAction::DISCARD case,
Let we make visual renderer coefficient use double buffered flags,
and age down every frames.
TODO : UpdateManager need to ResetBaseValue at least 2 frames
if Finished animation is EndAction::DISCARD.
This will need update manager side fix. So just keep this bug and fix as another patch.
Change-Id: Ibf654f723e1f986843cda620bc741b1121ee95d7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 4 Jun 2024 02:26:51 +0000 (11:26 +0900)]
Make InternalState for animation. So ensure Stop() Play() make the playstate is Playing
Since there is no way to determine that Animation::HasFinished() function called
due to we call Stop() API, or Animation finished normally.
To seperate the state, let we make new internal state
: STOPPING, PLAYING_DURING_STOPPING, PAUSED_DURING_STOPPING
STOPPING will be changed as STOPPED after Animation::HasFinished() function called.
And also, make CLEARED state so we can easly control Clear() function call.
Change-Id: I2acccfaaa034dd1edc956e4a23b0726b5d1b65e7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Fri, 7 Jun 2024 17:25:58 +0000 (18:25 +0100)]
DALi Version 2.3.27
Change-Id: Icdbaecd822027f41547003ee98b716227d07306d
Eunki, Hong [Mon, 3 Jun 2024 01:51:16 +0000 (10:51 +0900)]
Ensure cleared animation not emit finished signal during finished signal emit
Since we collect all finished animations and emit after,
It is possible that finisehd signal emitted what we should not
(e.g. Animation::Clear() called during another animation's finished signal)
To avoid it, let we ensure to check whether given animation is ignored or not.
Change-Id: I681c2c8e0f1624e0846409eb862862e5392ab7ec
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki Hong [Mon, 3 Jun 2024 01:35:17 +0000 (01:35 +0000)]
Merge "Ignore AnimationFinishedCallback when we call Animation::Clear() hard + Resolve bug when we call Play multiple times" into devel/master
Adeel Kazmi [Fri, 31 May 2024 10:45:04 +0000 (11:45 +0100)]
DALi Version 2.3.26
Change-Id: I8aa7325ed7b1a0ea7980c47e6c9f062db0c3060b
Eunki, Hong [Thu, 30 May 2024 11:18:50 +0000 (20:18 +0900)]
Ignore AnimationFinishedCallback when we call Animation::Clear() hard + Resolve bug when we call Play multiple times
There was several bugs at AnimationPlayList.
1. Core::ProcessCoreEvents sequence is like this :
SceneEvent -> NotificationManager -> Relayout -> Flush.
If we call Animation::Clear() at SceneEvent timing, Notfication will send animation finished signal
what we must not send.
To avoid this system, let we store the cleared animations at AnimationPlayList.
Since AnimationFinished callback required at least 1 frame times after flush,
we can ignore whole notify events before Flush done.
2. Scene mPlayList keep the reference of Animation whenever we call Play, there
were several problems. For example, If we call Play() 2 times and Clear(),
that Dali::Animation never be removed.
Change-Id: Ie9d5298311b9e5318fecad21b1124c896fcf3a8e
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 30 May 2024 04:18:09 +0000 (13:18 +0900)]
Remove render once trace log
Since it print too much logs, let we remove it
Change-Id: I8987d8fe6b184938780f268f0349702456dd0433
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
sunghyun kim [Wed, 29 May 2024 03:59:11 +0000 (03:59 +0000)]
Merge "Add FittingMode for visual fittingMode" into devel/master
Jeongmin Lee [Tue, 28 May 2024 14:32:29 +0000 (14:32 +0000)]
Merge "Apply RenderUntil() on sorted RenderList" into devel/master
jmm [Fri, 19 Apr 2024 11:55:52 +0000 (20:55 +0900)]
Apply RenderUntil() on sorted RenderList
Change-Id: I64a3b567984494d1f284095d68e44b7e318a04d5
Eunki, Hong [Tue, 28 May 2024 04:06:18 +0000 (13:06 +0900)]
Implement ProcessorOnce
Since unregister processor during Process will give overhead,
we'd better make another container to process only once time
during ProcessCoreEvent.
Change-Id: I0b38490ccdbd7da4f7ec1acf80253a1aee8c42ad
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki Hong [Tue, 19 Mar 2024 14:28:22 +0000 (23:28 +0900)]
Optimize Add/Remove SG::RenderTask from SG::RenderTaskList
Let we make render task list use OrderedSet instead of vector container.
Vector container is slow if we call RemoveRenderTask.
TODO : Optimize event side render task list too.
But since it is quite complex, we'd better optimize that points
in another patch
Change-Id: Icd6f2e7a24964eb05c92fa9a5ce0e306814445ee
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
Richard Huang [Fri, 24 May 2024 11:32:58 +0000 (12:32 +0100)]
DALi Version 2.3.25
Change-Id: Ib32a2c7cb1d61bff3955047cb03be7142d14693f
Eunki, Hong [Thu, 23 May 2024 08:27:59 +0000 (17:27 +0900)]
Control core policy as one flag
Let we collect core creation status, instead of parameter increasement.
It will be useful when we add more features of Core.
Change-Id: I746bdb714eac5dcbd792a1a33a93abd2b96fe4cb
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 23 May 2024 05:13:06 +0000 (14:13 +0900)]
Performance trace for some bottleneck of update/render manager
Let we check trace the top 5 area of update : update itself / animation /
frame update callback / update renderer / transform
and top 2 area of render : render instruction process / flush
TODO : Since the name of environment need to be sync with peformance
trace tool, we'd better change it after the system prepared.
Change-Id: I4a9e38b6b957508138737ee225c0cfa9ad94a8f9
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki Hong [Thu, 23 May 2024 06:20:51 +0000 (06:20 +0000)]
Merge changes Ib3f51bd8,Ibfbeca64 into devel/master
* changes:
Pint log if animation play / stop / pause / clear / destroy
Print top5 longest time spend AnimationFinished & FrameUpdate callbacks
Eunki, Hong [Thu, 23 May 2024 04:53:40 +0000 (13:53 +0900)]
Pint log if animation play / stop / pause / clear / destroy
Let we know the animation's state by id, if user want to know.
Change-Id: Ib3f51bd8035ae6958f37f2340b1dbbe10cfaf029
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 20 Feb 2024 04:55:34 +0000 (13:55 +0900)]
Print top5 longest time spend AnimationFinished & FrameUpdate callbacks
Very rarely, we got some report from performance team that
"DALI_NOTIFICATION_NOTIFY_COMPLETED" and "DALI_FRAME_CALLBACK_UPDATE" is bottleneck.
To escape the false accusation, let we collect the App side callback
execute time and print it.
This time checker already merged at tizen_8.0 branch.
Change-Id: Ibfbeca6440f1b9c46ebb2f71200139de611a2b4a
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
joogab.yun [Wed, 22 May 2024 05:07:38 +0000 (14:07 +0900)]
Even when multi-touching, the captured actor is used without a hittest every time.
Change-Id: Ib934b4b5626747a9ed7036d7489f82c94e7b4b16
Jeongmin Lee [Tue, 21 May 2024 04:49:53 +0000 (04:49 +0000)]
Merge "Remove an unneccessary argument at Process()" into devel/master
jmm [Mon, 20 May 2024 07:05:36 +0000 (16:05 +0900)]
Remove an unneccessary argument at Process()
Change-Id: I62c8ab7fe11b28c67fa3fe5e277142d969af8698
sunghyun kim [Mon, 20 May 2024 06:15:05 +0000 (15:15 +0900)]
Add FittingMode for visual fittingMode
Add new type for visual fittingMode
Change-Id: I17cb51564117a1c0426052dac547d0beb944e1c2
David Steele [Fri, 17 May 2024 11:10:57 +0000 (12:10 +0100)]
DALi Version 2.3.24
Change-Id: Ifbf8d83b68753dea68479978185e75da8fb81b49
Eunki Hong [Tue, 14 May 2024 05:38:24 +0000 (05:38 +0000)]
Merge "(Partial Update) Refactorize PartialRenderingData check logic" into devel/master
David Steele [Mon, 13 May 2024 16:45:22 +0000 (16:45 +0000)]
Merge "Add compile time option to memory management for low spec devices (Dali::Vector, OrderedSet and memory pool)" into devel/master
David Steele [Mon, 13 May 2024 16:10:36 +0000 (16:10 +0000)]
Merge "Use some observer list use OrderedSet instead of Dali::Vector" into devel/master
David Steele [Mon, 13 May 2024 16:07:58 +0000 (16:07 +0000)]
Merge "Assert to add / remove observer during notifying" into devel/master
Eunki, Hong [Thu, 9 May 2024 07:51:46 +0000 (16:51 +0900)]
(Partial Update) Refactorize PartialRenderingData check logic
Since we check node's partial update data only 1 times and then update directly
when we add RenderItem.
Unfortunatly, VisualRenderer has there own update area calculation logic
(like offset and size) and Node can add multiple renderer,
The partial update data said that it is not updated for the 'second' Renderer.
So it was possible that second renderer's update area could not be applied
when we check dirty rects.
===
To fix this issue, we reset the partial update data flags for all nodes every begin of
update. And keep + calculate the partial data only 1 times.
If we check the updateness at this frame, keep this infomation and reuse it.
It will avoid useless Hash calculation.
Change-Id: Ib01712b56131b5813c8629c013f60223ed850577
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Fri, 10 May 2024 10:01:56 +0000 (11:01 +0100)]
DALi Version 2.3.23
Change-Id: Ie50bf0ceb4c85aafd71a46b2497e30e419e99d33
Eunki Hong [Wed, 27 Mar 2024 12:20:24 +0000 (21:20 +0900)]
Add compile time option to memory management for low spec devices (Dali::Vector, OrderedSet and memory pool)
Let we give some option to reduce memory capacity for low spec devices.
If app create a lots of Actors and release all of them,
the memory might not be reduced, since we don't release capacity of continous array.
Most of memory bottleneck occured at Transform::Data and Node memory pool, and
Graphics::CommandBuffer.
CommandBuffer pool control at dali-adaptor. So let we control what dali-core
can reduce capacities first.
Note : 64bit OS will always use memory pool feature even if we give compile option
, due to KeyType is uint32_t.
USAGE :
* gbs build -A armv7l --include-all --define "%enable_low_spec_memory_management 1"
* cmake -DCMAKE_INSTALL_PREFIX=$DESKTOP_PREFIX -DENABLE_LOW_SPEC_MEMORY_MANAGEMENT=ON
Change-Id: Ifeb2e81a5e56fd31b7a61e55dc311f1205b8dfa8
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Wed, 17 Apr 2024 12:40:40 +0000 (21:40 +0900)]
Use some observer list use OrderedSet instead of Dali::Vector
Let we use Integration::OrderedSet instead of Dali::Vector.
Integration::OrderedSet has good point if we try to remove the items.
For BaseObject::Observer case, it will be called only 1 times per
each object's lifetime. So we have low priority of iteration overhead.
Change-Id: I227e8ecb2021448d892fcaeae78b814d52e09739
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Fri, 19 Apr 2024 09:25:16 +0000 (18:25 +0900)]
Assert to add / remove observer during notifying
Let we assert the cases when observer list try to be changed during notifying.
But, allow to remove observer during notifying, only for Object cases.
Until now, we just change the observer list directly, so if notifying, then
memory corruption occured.
To avoid this case, follow as ProcessorInterface did, copy the observer lists
and check whether it is valid or not, only if somebody touch original list.
Note : For BaseObject::Impl case, it is not opened
and it didn't send notify when scene on/off.
The only observer for BaseObject::Impl is WeakHandle. and OnDestroy() didnt'
send callback that timing.
Note2 : PropertyOwner case, it is also only for update-render thread for DALi.
We can control that non of callback change the observers for this thing.
So let we assume BaseObject::Impl::RemoveObserver and
PropertyOwner::RemoveObserver will not be called
during desturct object.
TODO : Should we also control Object::RemoveObserver case?
TODO : Should we remove observer copy?
Change-Id: Ia373243bdaae83613b1b91680a77b86409977028
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Seungho BAEK [Tue, 7 May 2024 02:48:19 +0000 (02:48 +0000)]
Merge "Fix several hit issue for offscreen rendering" into devel/master
Adam Bialogonski [Fri, 3 May 2024 13:57:38 +0000 (14:57 +0100)]
Support for recognizing legacy shaders.
Legacy shaders should be bypassed through the shader processing
pipeline as they are.
Change-Id: I04b2d15c5e95edaaf78ddff3e5c3ca99096fcc2e
Adeel Kazmi [Fri, 3 May 2024 09:07:47 +0000 (09:07 +0000)]
Merge "DALi Version 2.3.22" into devel/master
Adam Bialogonski [Fri, 3 May 2024 08:26:37 +0000 (09:26 +0100)]
DALi Version 2.3.22
Change-Id: I2cf0620aa085c2c9de12bc47519570164f6d2e19
Seungho Baek [Wed, 24 Apr 2024 12:21:39 +0000 (21:21 +0900)]
Fix several hit issue for offscreen rendering
- Previous implementation
- MappingActor is not hittable by default, but it was used to check
whether it is hitted from OnScreen RenderTask or not in HitTestRenderTaskList.
- There is nothing to check the layer including MappingActor is consuming hit.
- Current implementation
- For the OnScreen hit result, check whether there is a mappingActor of OffScreen
hit results that can be hit in front of the OnScreen hit result.
If it is, returns the OffScreen hit results.
- If the OnScreen hit result is layer and the layer consumes hit(the layer must
not be hittable), returns the OffScreen hit results.
- If there is no hit in OnScreen but there are hit results from OffScreen
RenderTask, returns the top OffScreen hit results.
Change-Id: I2788ed90dbe0145b4c263c371353b201c65c2a80
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
Eunki, Hong [Thu, 2 May 2024 06:58:19 +0000 (15:58 +0900)]
Print logs if dali skip rendering
Change-Id: I9ddca01a172b742c60b4d01c3d997306b0710d5f
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 2 May 2024 13:19:52 +0000 (22:19 +0900)]
Do not allow to add duplicated renderer into actor
Internal::Actor allow to add same renderer, but SceneGraph::Node doesn't allow.
If we do something like this, the logic might be breakdown.
actor.AddRenderer(renderer);
actor.AddRenderer(renderer);
actor.RemoveRenderer(renderer);
///< actor will have renderer, but actor's node doesn't have renderer.
To match with node's logic, let we don't allow to push-back the duplicated renderer.
Instead, just check the duplication and return the index.
Change-Id: I689896171b3df5d140089c3b99f44e1d3f0f8722
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
jmm [Fri, 19 Apr 2024 11:52:19 +0000 (20:52 +0900)]
Add RenderTask::RenderUntil()
Change-Id: I264e29303deedaf0f8539137b26e7d0c3e8454ce
Seungho Baek [Mon, 22 Apr 2024 07:43:13 +0000 (16:43 +0900)]
Add Inherited Visibility Changed signal
Change-Id: I1d592e6a5c9f17b77b8ee9f8828586f424985699
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
David Steele [Fri, 26 Apr 2024 09:48:47 +0000 (09:48 +0000)]
Merge "DALi Version 2.3.21" into devel/master
Richard Huang [Fri, 26 Apr 2024 09:42:44 +0000 (10:42 +0100)]
DALi Version 2.3.21
Change-Id: I9ebe010c86446d8cae0e243144673306e0235ac9
joogab yun [Fri, 26 Apr 2024 09:02:07 +0000 (09:02 +0000)]
Merge "Add log in EmitSingleTap" into devel/master
joogab yun [Fri, 26 Apr 2024 09:02:01 +0000 (09:02 +0000)]
Merge "Allows updating MinimumDistance and MinimumPanEvents of pan gestures." into devel/master