platform/core/uifw/dali-core.git
8 weeks agoAdded useFileCaching flag for shader resf/for/devel/master
sunghyun kim [Mon, 14 Apr 2025 04:25:00 +0000 (13:25 +0900)]
Added useFileCaching flag for shader

Previously, all custom Shaders supported file caching, which was not the intended behavior.
therefore, we added a flag to distinguish between internally generated code and externally generated code.
if you want to enable File Caching for externally generated shader code, you can do so using this flag.
(however, the validity of the shader must be verified by the app itself.)

Change-Id: I5e0cb0c6f4177da8159c50e2e27a0833b2c6e54f

8 weeks agoMerge "DALi Version 2.4.15" into devel/master
David Steele [Thu, 17 Apr 2025 07:54:06 +0000 (07:54 +0000)]
Merge "DALi Version 2.4.15" into devel/master

8 weeks agoDALi Version 2.4.15 80/322880/1 dali_2.4.15
Richard Huang [Thu, 17 Apr 2025 07:44:54 +0000 (08:44 +0100)]
DALi Version 2.4.15

Change-Id: Idec53ed89316aa8ac9af6e55b6da1909ac63fca3

8 weeks agoAdd RenderInputCallback worldColor value 45/322845/1
Eunki, Hong [Wed, 16 Apr 2025 10:02:45 +0000 (19:02 +0900)]
Add RenderInputCallback worldColor value

Let we include world color infomation of actor,
so native draw callback use the color infomation

Change-Id: Iccd1057e35fcbc925091fefbeee50ea65bb57ba0
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
8 weeks agoFix typo error (2) 20/322820/1
Eunki, Hong [Wed, 16 Apr 2025 07:11:02 +0000 (16:11 +0900)]
Fix typo error (2)

Sorry :(

Change-Id: I88c1b22aef6c58a0f6617617699f3197c3eeea02
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
8 weeks agoFix typo error 86/322786/2
Eunki, Hong [Wed, 16 Apr 2025 01:59:28 +0000 (10:59 +0900)]
Fix typo error

Change-Id: I262c32601df7eb2c993f0ec54bb3171d082404da
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMake UBOV2::AlignSize() API as inline 32/322632/3
Eunki, Hong [Mon, 14 Apr 2025 01:17:10 +0000 (10:17 +0900)]
Make UBOV2::AlignSize() API as inline

Since we don't change mAlighment ever, we can mark it as const,
and move calculate Aligned size as inline function.

Change-Id: I7aeab753325aff16dca19ab53d13e9cb9f94d975
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "Use UniformBufferView memory pool" into devel/master
Eunki Hong [Fri, 11 Apr 2025 12:39:37 +0000 (12:39 +0000)]
Merge "Use UniformBufferView memory pool" into devel/master

2 months agoMerge "DALi Version 2.4.14" into devel/master
David Steele [Fri, 11 Apr 2025 08:54:25 +0000 (08:54 +0000)]
Merge "DALi Version 2.4.14" into devel/master

2 months agoDALi Version 2.4.14 91/322591/1 dali_2.4.14
Adeel Kazmi [Fri, 11 Apr 2025 07:27:02 +0000 (08:27 +0100)]
DALi Version 2.4.14

Change-Id: I0e18651e8ae0d091c711b3b9fba8bf9fd67aa8f7

2 months agoUse UniformBufferView memory pool 86/322586/1
Eunki, Hong [Fri, 11 Apr 2025 06:14:08 +0000 (15:14 +0900)]
Use UniformBufferView memory pool

Per each Renderer::Render time, we create UniformBufferView the number of uniform blocks,
and destroy at that time.

Since we create & destroy UboView very frequency every frame, we'd better
keep this memory as pool system.

Moreover, let we remove some useless values and operations relative with
UBO View.

Let we make UboView.Write's offset parameter is relative of
View itself's offset, instead of UboBuffer's offset.

It will reduce useless offset getter calling

Change-Id: I583728ec1bd4cf0a1a34f6002a647f4f15a32e12
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoDestroy renderer's node index map if node detached 52/322452/2
Eunki, Hong [Wed, 9 Apr 2025 07:36:25 +0000 (16:36 +0900)]
Destroy renderer's node index map if node detached

It will reduce the time of Renderer with single, or multiple Node connected case.

It was useless iterate when renderer with single node (==usual cases) connected
and detached.

Instead, let we just destroy whole container, and re-generate at next render loop.

Change-Id: Ied6dd91b97ce4f693e5a004acfdec11b59bc3f80
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMake HashUtil implements as cpp, So reduce duplicated implmenets 07/322207/14
Eunki Hong [Sun, 6 Apr 2025 05:05:43 +0000 (14:05 +0900)]
Make HashUtil implements as cpp, So reduce duplicated implmenets

Let we make basement of hash calculate optimization

+

Include below patchset, due to line coverage
https://review.tizen.org/gerrit/c/platform/core/uifw/dali-core/+/322289

Change-Id: I8b4679b737f5adfa0c09932af17f02d61bdea8a4
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
2 months agoMerge "Use swap for some cases instead move assign." into devel/master
David Steele [Wed, 9 Apr 2025 09:21:23 +0000 (09:21 +0000)]
Merge "Use swap for some cases instead move assign." into devel/master

2 months agoUse swap for some cases instead move assign. 49/322449/1
Eunki, Hong [Wed, 9 Apr 2025 07:18:52 +0000 (16:18 +0900)]
Use swap for some cases instead move assign.

Since library don't make sure that moved std::vector container is cleared.

To make ensure, let we use std::vector::swap() instead move assign with clear.

Change-Id: I88742bc6cea8f32f15db6e733278f103467792e6
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoPrint some critical warning message as error to print at release mode 62/322162/5
Eunki, Hong [Fri, 4 Apr 2025 04:10:40 +0000 (13:10 +0900)]
Print some critical warning message as error to print at release mode

Since DALI_LOG_WARNING didn't print any logs at release mode,
several critical errors didn't print any infomations.

To make ensure those are real error, let we change the
log level as 'ERROR' and allow to print at release mode binary.

Change-Id: Ib74c21979799a53d4288d87feb849360fd3f9072
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "Fix svace - Assert if RenderItem.mNode is nullptr + Print log if sceneobject...
Eunki Hong [Wed, 9 Apr 2025 05:17:33 +0000 (05:17 +0000)]
Merge "Fix svace - Assert if RenderItem.mNode is nullptr + Print log if sceneobject is nullptr" into devel/master

2 months agoMerge "GeometryTouchEvent :InterceptTouchEvents are propagated in a parent-child...
joogab yun [Wed, 9 Apr 2025 04:23:25 +0000 (04:23 +0000)]
Merge "GeometryTouchEvent :InterceptTouchEvents are propagated in a parent-child relationship." into devel/master

2 months agoGeometryTouchEvent :InterceptTouchEvents are propagated in a parent-child relationship. 68/322368/4
joogab.yun [Tue, 8 Apr 2025 04:54:41 +0000 (13:54 +0900)]
GeometryTouchEvent :InterceptTouchEvents are propagated in a parent-child relationship.

Change-Id: Iffe7d8d5aca362ce9fee7e0fed4eac28d87c15cf

2 months agoFix svace - Assert if RenderItem.mNode is nullptr + Print log if sceneobject is nullptr 25/322425/1
Eunki, Hong [Wed, 9 Apr 2025 00:52:55 +0000 (09:52 +0900)]
Fix svace - Assert if RenderItem.mNode is nullptr + Print log if sceneobject is nullptr

Change-Id: Ib85427f2605a6685e4a0c37142195ab82361c399
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "Give range of tags for constraints" into devel/master
Eunki Hong [Tue, 8 Apr 2025 22:40:46 +0000 (22:40 +0000)]
Merge "Give range of tags for constraints" into devel/master

2 months agoMerge "Adding UniformBlock for shared uniforms" into devel/master
Eunki Hong [Tue, 8 Apr 2025 22:39:19 +0000 (22:39 +0000)]
Merge "Adding UniformBlock for shared uniforms" into devel/master

2 months agoAdd Rendered flag for PreRender the Scene 93/321993/6
Eunki, Hong [Wed, 2 Apr 2025 02:07:31 +0000 (11:07 +0900)]
Add Rendered flag for PreRender the Scene

Let we make some interface whether given scene rendered previous frame or not.

Until now, we only had "current" scene has render instruction to scene or not.
But also, we should clear the scene if "previous" scene had render instruction
but not now.

Since it could not be known by single boolean value, we make another class
to communicate the PreRender result.

By this infomation, we should determine whether we should call
ClearScene() or not even if fullSwap keyword not applied.

Furthermore, Let we make PreRender(Scene) API name as PreRenderScene,
pairwise with RenderScene().

Change-Id: Iab820942aff1d136cef1ab111901dc99c7ccdcf7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "(Animation) Allow to print debugging logs for release mode" into devel/master
Eunki Hong [Tue, 8 Apr 2025 04:54:32 +0000 (04:54 +0000)]
Merge "(Animation) Allow to print debugging logs for release mode" into devel/master

2 months agoAdding UniformBlock for shared uniforms 46/315546/39
David Steele [Mon, 26 Jun 2023 08:46:13 +0000 (09:46 +0100)]
Adding UniformBlock for shared uniforms

Let we make UniformBlock class and connect it to Shader.

The UniformBlock who have same name with at shader, will ignore
the value of Actor - Renderer - Shader propert chain. And will use
UniformBlock itself's value.

All renderer who has same shader with connected uniform block, will have
same uniform values at rendering time.

It will reduce the number of UniformWrite call at render thread.

Note : Since Uniform have dependency with Program, we should clear
cached Program at program-controller whenerver we try to connect uniform blocks
to shader.

TODO : We should notify to Graphics::Program s.t. given uniform block is shared.

The binding value of shared uniform block
 - glUniformBlockBinding(~~, ~~, binding);

should not call BindBufferRange in future, match as

 - glBindBufferRange(~~, binding, ~~~~);

Cherry-pick of patchset : https://archive.tizen.org/gerrit/c/platform/core/uifw/dali-core/+/294788

Change-Id: I9b0dab139a7064bb8889db9693e4f84ad74185ad

2 months agoGive range of tags for constraints 10/321910/7
Eunki, Hong [Tue, 1 Apr 2025 02:27:58 +0000 (11:27 +0900)]
Give range of tags for constraints

Let we give constraint tag's range for custom and internal.

The tags what we can control as public is only for custom ranges,
and make internal constraint didn't removed.

Change-Id: I0ab45d4ed258cdcd30f4c98a61b0a0251cf4c692
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoDALi Version 2.4.13 01/322301/1 dali_2.4.13
David Steele [Mon, 7 Apr 2025 10:38:38 +0000 (11:38 +0100)]
DALi Version 2.4.13

Change-Id: I7d7acdc14f56d7866bc3d4274e8d6c27caafa7a2

2 months ago(Animation) Allow to print debugging logs for release mode 52/322152/4
Eunki, Hong [Fri, 4 Apr 2025 02:28:46 +0000 (11:28 +0900)]
(Animation) Allow to print debugging logs for release mode

Let we print animation relative logs if
- trace enabled
- DALI_TRACE_PERFORMANCE_MARKER enabled
- DALI_LOG_DEBUG_INFO printable

Change-Id: I1619b265bda50e6a98a45eddbb14b954ee023237
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "(dali_env) Check if vulkan is installed when outputting setenv" into devel...
Adeel Kazmi [Thu, 3 Apr 2025 15:56:22 +0000 (15:56 +0000)]
Merge "(dali_env) Check if vulkan is installed when outputting setenv" into devel/master

2 months agoMerge "Hit Test for OffScreenRendering" into devel/master
Seungho BAEK [Thu, 3 Apr 2025 06:19:05 +0000 (06:19 +0000)]
Merge "Hit Test for OffScreenRendering" into devel/master

2 months agoHit Test for OffScreenRendering 90/321890/12
Seungho Baek [Mon, 31 Mar 2025 12:02:16 +0000 (21:02 +0900)]
Hit Test for OffScreenRendering

Change-Id: I32c7c00def338a804cf118436a2de13b11b8f4cc
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
2 months ago(UnsafeDirectRendering) Reset geometry cache after direct native draw 14/321914/1
Eunki, Hong [Tue, 1 Apr 2025 03:52:16 +0000 (12:52 +0900)]
(UnsafeDirectRendering) Reset geometry cache after direct native draw

Change-Id: If8d398b12a0ea477794defff703c6b81f4e86cd5
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months ago(dali_env) Check if vulkan is installed when outputting setenv 26/321826/1
Adeel Kazmi [Fri, 28 Mar 2025 18:05:50 +0000 (18:05 +0000)]
(dali_env) Check if vulkan is installed when outputting setenv

Change-Id: I374cc14ffe3dd09d313411a70ca7e10a18e78313

2 months agoRemove error message when we set/get AnimatableProperty 25/321825/2
Eunki Hong [Fri, 28 Mar 2025 14:48:11 +0000 (23:48 +0900)]
Remove error message when we set/get AnimatableProperty

We only need to call setFunc/getFunc only if it exist.
Until now, it check as error if sefFunc/getFunc not exist.

Change-Id: I534e9dd2f7b76e9a50db1935931eea99cc1b70ca
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
2 months agoMerge "DALi Version 2.4.12" into devel/master
Adeel Kazmi [Fri, 28 Mar 2025 12:13:52 +0000 (12:13 +0000)]
Merge "DALi Version 2.4.12" into devel/master

2 months agoDALi Version 2.4.12 10/321810/1 dali_2.4.12
Adeel Kazmi [Fri, 28 Mar 2025 11:46:52 +0000 (11:46 +0000)]
DALi Version 2.4.12

Change-Id: I188963c11f5fbc4624282a535801da9238696313

2 months agoAllow animatable property getter and setter functions 93/320793/9
jmm [Fri, 7 Mar 2025 08:35:12 +0000 (17:35 +0900)]
Allow animatable property getter and setter functions

Change-Id: I2b314566bb1ecfffad9533bee61d085289604788
Signed-off-by: jmm <j0064423.lee@samsung.com>
2 months ago(Constraint) Bake constraint property only if value changed 25/321625/1
Eunki, Hong [Wed, 26 Mar 2025 02:10:57 +0000 (11:10 +0900)]
(Constraint) Bake constraint property only if value changed

Change-Id: I8aa0bd9b0a5f2f41f0466f8bba278ac978327946
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoSet RendererAdded value at UpdateStatus 39/321539/1
Eunki, Hong [Mon, 24 Mar 2025 04:39:26 +0000 (13:39 +0900)]
Set RendererAdded value at UpdateStatus

Change-Id: Ia6dd039946ed952585beb8be54b908201acde0de
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoEnsure to SceneObject initialized 32/321532/2
Eunki, Hong [Mon, 24 Mar 2025 10:30:59 +0000 (19:30 +0900)]
Ensure to SceneObject initialized

Change-Id: Ia8a6a842840def7a758adaf45f0957e0a6a171de
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoMerge "(HitTest) Use l-value or raw pointer of Internal::Actor, instead IntrusivePtr...
Eunki Hong [Tue, 25 Mar 2025 01:22:37 +0000 (01:22 +0000)]
Merge "(HitTest) Use l-value or raw pointer of Internal::Actor, instead IntrusivePtr" into devel/master

2 months agoMerge changes I0c29d9e4,Iee4f76dc,Id6ea7306 into devel/master
David Steele [Mon, 24 Mar 2025 15:01:54 +0000 (15:01 +0000)]
Merge changes I0c29d9e4,Iee4f76dc,Id6ea7306 into devel/master

* changes:
  Core::PreRender returns true if something is renderable to scene
  Adding clear color to scene-graph Scene
  Debugging render scene

2 months ago(HitTest) Use l-value or raw pointer of Internal::Actor, instead IntrusivePtr 02/321502/2
Eunki, Hong [Mon, 24 Mar 2025 07:55:30 +0000 (16:55 +0900)]
(HitTest) Use l-value or raw pointer of Internal::Actor, instead IntrusivePtr

Since std::atomic is expensive, we need to touch him less times if we can.

Hit test logic only works internally. So we could remove IntrusivePtr usage.

The only problem is HitTestResult callback case.
But for now, it used less usage, so we can ignore this cases.

Change-Id: Iaff07402401ecde339629068f52406dd1105a00d
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoInvert Y when the camera renders on Framebuffer and y invert is true. 94/321494/1
Seungho Baek [Mon, 24 Mar 2025 05:44:53 +0000 (14:44 +0900)]
Invert Y when the camera renders on Framebuffer and y invert is true.

 - When scene is drawn on window (with viewport), DALi draws scene on window directly so picking ray and result is always fit.
 - When scene is drawn on FBO, DALi cannot know how the result is drawn by app, so picking ray is always on space that has (0, -1, 0) as UP.

Change-Id: I441356c5b128711ca864a9cd2d51e166f297d245
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
2 months agoMerge "Hit Test Fix for layered Hit test" into devel/master
Seungho BAEK [Mon, 24 Mar 2025 05:23:04 +0000 (05:23 +0000)]
Merge "Hit Test Fix for layered Hit test" into devel/master

2 months agoCore::PreRender returns true if something is renderable to scene 76/321476/1
David Steele [Fri, 21 Mar 2025 17:36:03 +0000 (17:36 +0000)]
Core::PreRender returns true if something is renderable to scene

Change-Id: I0c29d9e4ed1034b622e130d347a157f1e3f6633b

2 months agoMerge "(DirectRendering) Send rotated clippingBox so we can call glScissor without...
Eunki Hong [Fri, 21 Mar 2025 11:33:10 +0000 (11:33 +0000)]
Merge "(DirectRendering) Send rotated clippingBox so we can call glScissor without convert" into devel/master

2 months agoAdding clear color to scene-graph Scene 39/321239/4
David Steele [Mon, 17 Mar 2025 18:58:03 +0000 (18:58 +0000)]
Adding clear color to scene-graph Scene

Change-Id: Iee4f76dcb41feab4d0bce7d8bc2bc4cbbe7bcc58

2 months agoDebugging render scene 38/321238/3
David Steele [Tue, 11 Mar 2025 18:36:18 +0000 (18:36 +0000)]
Debugging render scene

Added more debug to RenderScene under LOG_RENDER_MANAGER tag

Change-Id: Id6ea7306dc166a438abe8033b7015e1f057a16e8

2 months agoMerge "DALi Version 2.4.11" into devel/master
David Steele [Fri, 21 Mar 2025 10:50:21 +0000 (10:50 +0000)]
Merge "DALi Version 2.4.11" into devel/master

2 months agoDALi Version 2.4.11 59/321459/1 dali_2.4.11
Richard Huang [Fri, 21 Mar 2025 10:46:34 +0000 (10:46 +0000)]
DALi Version 2.4.11

Change-Id: Ia6e5fabdfc964527bc5517822530c07345eb4136

2 months ago(DirectRendering) Send rotated clippingBox so we can call glScissor without convert 43/321443/3
Eunki, Hong [Fri, 21 Mar 2025 08:12:08 +0000 (17:12 +0900)]
(DirectRendering) Send rotated clippingBox so we can call glScissor without convert

Let we make RenderCallbackInput's clippingBox is screen coordinates.

It will make that we don't consider window surface rotated or not.

Change-Id: I9d7e0c89682a4de12fad6bb57d322b3eaafb5d3c
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoSupport UpdateAreaExtents for Renderer 77/321077/7
Eunki, Hong [Thu, 13 Mar 2025 11:01:01 +0000 (20:01 +0900)]
Support UpdateAreaExtents for Renderer

Add property for extents the dirty rect calculated range for the renderer.

Change-Id: Ibdfe6ea2a90906d01d29c93b0e632d5e631249d4
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
2 months agoHit Test Fix for layered Hit test 45/317745/46
Seungho Baek [Tue, 7 Jan 2025 07:19:35 +0000 (16:19 +0900)]
Hit Test Fix for layered Hit test

Change-Id: Id2611e20a20259dcfbd341fa37b3029cd326e3cc
Signed-off-by: Seungho Baek <sbsh.baek@samsung.com>
2 months ago(Animation) Calculate AutoReverse looping mode progress at Animation time, not Animator. 78/321178/2
Eunki, Hong [Mon, 17 Mar 2025 02:26:19 +0000 (11:26 +0900)]
(Animation) Calculate AutoReverse looping mode progress at Animation time, not Animator.

Until now, we control the looping mode's progress at Animator side.
It make some mis-implements when we add newly animators.

AnimateTo(A)
SetLoopingMode(AUTO_REVERSE) ///< A become auto-reversed..
AnimateTo(B)                 ///< B is not auto-reversed!!

Since LoopingMode is Animation's property, we should apply newly added animators.

But actually, Animation know all informations, so I think Animation could control
the calculation logics.

Change-Id: I5820985f59066a279a59bd9c19adfede068fde59
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoMerge "DALi Version 2.4.10" into devel/master
Adeel Kazmi [Fri, 14 Mar 2025 11:55:22 +0000 (11:55 +0000)]
Merge "DALi Version 2.4.10" into devel/master

3 months agoDALi Version 2.4.10 47/321147/1 dali_2.4.10
David Steele [Fri, 14 Mar 2025 11:48:09 +0000 (11:48 +0000)]
DALi Version 2.4.10

Change-Id: Ibccc817080227fd72e93a944ebe2e49a87e2cdaf

3 months agoWhen hoverevent of geometry type is used, DispatchHoverMotion is not handled properly... 08/321008/3
joogab.yun [Thu, 13 Mar 2025 04:33:53 +0000 (13:33 +0900)]
When hoverevent of geometry type is used, DispatchHoverMotion is not handled properly when false. This is fixed.

Change-Id: Ibcd68776f55a6779485a36d2d17b030801225b7f

3 months agoIf IsDispatchHoverMotion is false, the move event was not dispatched. So consumedActo... 04/321004/4
joogab.yun [Thu, 13 Mar 2025 00:28:41 +0000 (09:28 +0900)]
If IsDispatchHoverMotion is false, the move event was not dispatched. So consumedActor should keep the previous LastConsumedActor value.

Change-Id: Ifbadde1b21abfca728c9e91be81a8f57c4650a6e

3 months agoDALi Version 2.4.9 06/320806/1 dali_2.4.9
Adeel Kazmi [Fri, 7 Mar 2025 10:29:26 +0000 (10:29 +0000)]
DALi Version 2.4.9

Change-Id: I33fb7c331cf4aab53d6a787060cc409d12ef99f9

3 months agoAllow to create renderer without geometry and shader 98/320698/2
Eunki, Hong [Thu, 6 Mar 2025 04:28:51 +0000 (13:28 +0900)]
Allow to create renderer without geometry and shader

Let we make constructor renderer without geometry and shader.

Also, check some codes s.t. we can allow nullptr mGeometry and mShader.

Change-Id: I99eb3011c4cb7f1a3c9ff69f90842c44005048f6
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoClear pipelie cache if geometry destroyed or buffer changed 57/320657/1
Eunki, Hong [Mon, 24 Feb 2025 13:39:07 +0000 (22:39 +0900)]
Clear pipelie cache if geometry destroyed or buffer changed

We also cache pipeline cache the Render::Geometry by the raw pointer.
If someone use duplicated pointer, it might return invalid pipeline
with unmatched vertexInputState.

To avoid this issue, let we erase cache if Render::Geometry destroyed,
same as Render::Program

 - This is the commit message #2:

Reset cached pipeline if geometry buffer changed

Until now, we don't re-cache the geometry
if the vertex buffer added/removed, or data changed.

Since the vertex attribute might be changed if we try to use
same geometry, the rendering result
show some non-common results.

To fix this cache issue, let we ensure to reset the cached infomations
if the vertex buffer / indices buffer changed.

Change-Id: I0dc5b4fb6b0645d4b7763d7aa890d6ad946d54c6
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoDALi Version 2.4.8 30/320430/1 dali_2.4.8
Richard Huang [Fri, 28 Feb 2025 12:44:23 +0000 (12:44 +0000)]
DALi Version 2.4.8

Change-Id: I42df6d888f5101778ba29ad50cafed19e33e9746

3 months agoMerge "Make PixelData Stride return byte size, instead of pixel" into devel/master
Eunki Hong [Wed, 26 Feb 2025 22:58:53 +0000 (22:58 +0000)]
Merge "Make PixelData Stride return byte size, instead of pixel" into devel/master

3 months agoIncrease warning message threshold for animator 32/320232/1
Eunki Hong [Tue, 25 Feb 2025 14:13:07 +0000 (23:13 +0900)]
Increase warning message threshold for animator

When we launch benchmark.example, it print too much warning logs :(

Change-Id: I95a8558710ea219fe478d92c567e12f415536373
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
3 months agoMake PixelData Stride return byte size, instead of pixel 28/318828/6
Eunki Hong [Fri, 24 Jan 2025 11:24:30 +0000 (20:24 +0900)]
Make PixelData Stride return byte size, instead of pixel

Some cases doesn't have stride byte as multiply of BytesPerPixel().
But until now, PixelBuffer and PixelData only support Stride as pixels count
(It looks since GL_UNPACK_ROW_LENGTH is pixel scale, not a bytes.)

For example, If we have 2 width image with RGB888 format, stride byte
should be 8 byte, which is not a multiply of 3 byte.

To support those cases, let we set stride value as bytes scale.

Change-Id: I27aa9757e7320475b7f0519a62262d1ae2f7e07b
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
3 months agoMerge "DALi Version 2.4.7" into devel/master
Adeel Kazmi [Fri, 21 Feb 2025 11:31:28 +0000 (11:31 +0000)]
Merge "DALi Version 2.4.7" into devel/master

3 months agoDALi Version 2.4.7 66/320066/1 dali_2.4.7
David Steele [Fri, 21 Feb 2025 11:24:56 +0000 (11:24 +0000)]
DALi Version 2.4.7

Change-Id: Id6252a283cf17a78688548f01d0263369e292bcc

3 months agoMerge "(Partial Update) Ensure to renderer dirty if Geometry changed" into devel...
Eunki Hong [Fri, 21 Feb 2025 04:29:33 +0000 (04:29 +0000)]
Merge "(Partial Update) Ensure to renderer dirty if Geometry changed" into devel/master

3 months agoMerge "Reduce IntrusivePtr<ActorPtr> reference change during PropagateAll" into devel...
Eunki Hong [Fri, 21 Feb 2025 04:29:22 +0000 (04:29 +0000)]
Merge "Reduce IntrusivePtr<ActorPtr> reference change during PropagateAll" into devel/master

3 months agoPrint more debug logs for Animation 94/319994/2
Eunki, Hong [Thu, 20 Feb 2025 12:43:30 +0000 (21:43 +0900)]
Print more debug logs for Animation

Let we print more infomations for dali animations
whenever we call API

Change-Id: I5c7db1144adff6b742536ae08a760f066a7cac3e
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months ago(Animation) Bug fix when Cleared state animation finish normally don't emit signal 39/319939/1
Eunki, Hong [Thu, 20 Feb 2025 02:11:51 +0000 (11:11 +0900)]
(Animation) Bug fix when Cleared state animation finish normally don't emit signal

Their was some bug if

(Event Thread) Clear()
(Render Thread) Finish animation normally
(Event Thread) NotificationManager->ProcessMessages() -> HasFinished() called
...
(Event Thread) Play()
(Render Thread) Finish animation normally
(Event Thread) NotificationManager->ProcessMessages() -> HasFinished() called

progress comes.

The first HasFinished() should not emit finished signal.
But second HasFinisehd() should emit finished signal, but not.

It was bugs since HasFinished() update some values, but we don't use it.
(Cleared state should have mNotificationCount always) It make bug.

Change-Id: I593c9983fe97924638c85f0ef30d3c98064d9415
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoReduce float hash collision by squaring valueHash 02/319802/2
ANZ1217 [Tue, 18 Feb 2025 05:17:59 +0000 (14:17 +0900)]
Reduce float hash collision by squaring valueHash

Applied valueHash^2 to reduce frequent hash collisions in similar float values.

Change-Id: I8877b24e2936e8a3cbf7da3ca52998f74d75e65c

3 months agoMerge "Share partial update data info to RenderItem" into devel/master
Eunki Hong [Mon, 17 Feb 2025 04:45:08 +0000 (04:45 +0000)]
Merge "Share partial update data info to RenderItem" into devel/master

3 months agoDALi Version 2.4.6 71/319671/1 dali_2.4.6
Adeel Kazmi [Fri, 14 Feb 2025 12:34:13 +0000 (12:34 +0000)]
DALi Version 2.4.6

Change-Id: I21a91c30091c3b411e9068c450921be029fd4cb1

3 months ago(Partial Update) Ensure to renderer dirty if Geometry changed 00/319500/3
Eunki, Hong [Wed, 12 Feb 2025 03:24:09 +0000 (12:24 +0900)]
(Partial Update) Ensure to renderer dirty if Geometry changed

Let we also make item.mRenderer is Updated() if Render::Geometry information
changed.

For example, Toolkit::TextEditor change the vertex buffer data and indicise
when some texts, or highlighted area are changed.
But if the size of each actors are not be changed, the infomation of
geometry changed not be applied to the PreRender() dirtyrect calculation.

To fix this issue, let we make ensure that geometry is updated at Upload time,
and notify it to Render::Renderer's Update() time.

Change-Id: I67ff3c9e7a155703fba6b3be8b80d5aede8ce02d
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoShare partial update data info to RenderItem 75/318475/18
Eunki, Hong [Fri, 17 Jan 2025 07:26:55 +0000 (16:26 +0900)]
Share partial update data info to RenderItem

Let we make RenderItem use Node's PartialUpdateData directly,
instead copy the matrix and etc.

It will reduce each item's memory, and memory copy time.

Change-Id: I42e12b24a6429734f7754db5880524b8bc4e4f32
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
3 months agoReduce IntrusivePtr<ActorPtr> reference change during PropagateAll 03/319603/5
Eunki, Hong [Thu, 13 Feb 2025 10:12:36 +0000 (19:12 +0900)]
Reduce IntrusivePtr<ActorPtr> reference change during PropagateAll

std::atomic value changeness might gave overhead if we call it
very frequencly.

To reduce it's overhead, let we use Interal::Actor& instead Actor handle
if we can.

Note that we cannot remove Dali::Actor handle at RelayoutInfo,
since we need to guard case that Actor itself destruct during
Relayout callback at application side.

Change-Id: I5f058be4706c8c2be77f1677e1f5624f37d50478
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
4 months agoReduce dlog spam per frame 42/319342/3
David Steele [Fri, 7 Feb 2025 18:21:57 +0000 (18:21 +0000)]
Reduce dlog spam per frame

Added debug filter for  animation update and transform manager.
These can be turned on by setting DALI_LOG_ANIMATION or
DALI_LOG_TRANSFORM_MANAGER environment variables to 3 before running.

(Or temporarily turned on in a build by modifying the filter
constructor arguments).

Change-Id: I1ade7dfecb5fd0b9d4a7dc8d043486af52a791bf

4 months agoCheck if scene has something to render 41/319341/3
David Steele [Fri, 7 Feb 2025 12:16:03 +0000 (12:16 +0000)]
Check if scene has something to render

Core::PreRender(scene) now returns true if there is any render instruction
with a render list with render items for that scene.

Change-Id: Ib628f0a03dc9959fc945bdb410a7af52ec54e86b

4 months agoDALi Version 2.4.5 15/319315/1 dali_2.4.5
Richard Huang [Fri, 7 Feb 2025 10:39:27 +0000 (10:39 +0000)]
DALi Version 2.4.5

Change-Id: If0bc883cbcb85fbcb5518e66a1bf3300310d0810

4 months agoDALi Version 2.4.4 19/318919/1 dali_2.4.4
David Steele [Fri, 31 Jan 2025 12:31:31 +0000 (12:31 +0000)]
DALi Version 2.4.4

Change-Id: I02cf6f6f0652bab320bcd0ab7d7a6c5f0669c394

4 months agoMerge "Changed command buffer ownership" into devel/master
David Steele [Fri, 24 Jan 2025 14:18:41 +0000 (14:18 +0000)]
Merge "Changed command buffer ownership" into devel/master

4 months agoDALi Version 2.4.3 13/318813/1 dali_2.4.3
Richard Huang [Fri, 24 Jan 2025 10:47:26 +0000 (10:47 +0000)]
DALi Version 2.4.3

Change-Id: I342647c70b396a90fabad694551d4931a684ae46

4 months agoChanged command buffer ownership 17/317917/7
David Steele [Thu, 9 Jan 2025 18:57:34 +0000 (18:57 +0000)]
Changed command buffer ownership

Each render instruction now has a command buffer.

This enables the backend/gpu to synchronize each command buffer when
rendering to framebuffers.

Because RenderTask API is freeform, the same framebuffer can be written
to more than once in a frame using different actors, so each render pass
needs it's own command buffer.

(May still be potential issue with multiple render tasks against the
scene, e.g. magnifier isn't fixed in Vulkan by this change)

Change-Id: I367f94144ab9670c346b98a8e57ad2b54db96fd5
Signed-off-by: David Steele <david.steele@samsung.com>
4 months agoMake mat2 type uniform also use matrix stride 16/318716/2
Eunki, Hong [Wed, 22 Jan 2025 13:05:50 +0000 (22:05 +0900)]
Make mat2 type uniform also use matrix stride

Dali use mat2 type as Vector4 property.
But if we just use Vector4 type as mat2 uniform,
matrix stride information not be applied.

To fix this issue, let we also check matrixStride value
of uniform reflection, and use it.

Change-Id: I310dd565f73d2af3a58e3a7c40e07db902eb6877
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
4 months agoMerge "Minor optimization (Use l-value of ShaderData + Move matrix + less hash)"...
Eunki Hong [Mon, 20 Jan 2025 01:55:00 +0000 (01:55 +0000)]
Merge "Minor optimization (Use l-value of ShaderData + Move matrix + less hash)" into devel/master

4 months agoDALi Version 2.4.2 58/318458/1 dali_2.4.2
Adeel Kazmi [Fri, 17 Jan 2025 06:42:27 +0000 (06:42 +0000)]
DALi Version 2.4.2

Change-Id: I9d2c3790442d7a7825ea2b442d70278983439ba4

4 months agoMinor optimization (Use l-value of ShaderData + Move matrix + less hash) 43/318443/4
Eunki, Hong [Fri, 17 Jan 2025 02:39:18 +0000 (11:39 +0900)]
Minor optimization (Use l-value of ShaderData + Move matrix + less hash)

- Make SG::Shader::GetShaderData return const l-value.
  (It will not call useless refcount increase + decrease)

- Move Matrix if possible

- Less creation and hashing for PartialUpdateData
  Let we use const l-value and less creation matrix and vector.

After this patch, when render 16,000 view with color animate,
fps increased 32 --> 36

Change-Id: I4e10abc718616e037d768ea915b00f2e95b448f0
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
4 months agoSupport equality operator for Property::Map and Property::Array 41/318241/9
Eunki, Hong [Tue, 14 Jan 2025 12:33:59 +0000 (21:33 +0900)]
Support equality operator for Property::Map and Property::Array

Change-Id: I8528b5cc46be1cd7c1ba2d6c44c0a39018997917
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
4 months agoFix coverity : do not call move to const & type 75/318175/1
Eunki, Hong [Tue, 14 Jan 2025 03:16:23 +0000 (12:16 +0900)]
Fix coverity : do not call move to const & type

Change-Id: I9e053c8e4339ac6ac75f1ac1fd8f987ef80e17db
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
4 months agoSupport DecoratedVisualRenderer borderine with blur radius 87/318087/1
Eunki, Hong [Mon, 13 Jan 2025 05:50:57 +0000 (14:50 +0900)]
Support DecoratedVisualRenderer borderine with blur radius

Change-Id: Ib41f6528bc0814630aa293ac10e1b6d8e3b99596
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
5 months agoDALi Version 2.4.1 36/318036/1 dali_2.4.1
David Steele [Fri, 10 Jan 2025 15:08:54 +0000 (15:08 +0000)]
DALi Version 2.4.1

Change-Id: I90f0d7c3a81bd906ffca9283dc5867985057ce84

5 months agoMerge "Allow to set empty data for vertex buffer" into devel/master
Eunki Hong [Mon, 6 Jan 2025 06:16:11 +0000 (06:16 +0000)]
Merge "Allow to set empty data for vertex buffer" into devel/master

5 months agoAllow to use moved Property::Map & Property::Array 06/316306/7
Eunki, Hong [Thu, 12 Dec 2024 11:35:54 +0000 (20:35 +0900)]
Allow to use moved Property::Map & Property::Array

Until now, we make those value's mImpl as nullptr.
So their was a lots of DALI_ASSERT_DEBUG() to check
whether they are moved or not.

Those codes might not be fair than other moved objects implementation.

we allow to use moved object like WeakHandle, or Dali::Vector.
Let we also allow to use them.

And let we make surely assert by DALI_ASSERT_ALWAYS if we need, instead DALI_ASSERT_DEBUG

Change-Id: If08853a1635a8c33317edc1d25531223f7c427ed
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
5 months agoAllow to set empty data for vertex buffer 90/317490/2
Eunki, Hong [Tue, 31 Dec 2024 05:50:11 +0000 (14:50 +0900)]
Allow to set empty data for vertex buffer

Let we allow to set data with nullptr and size 0 for VertexBuffer

Change-Id: Ife70c7b0a033c883f16a7d36decf1b81c05267d5
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
5 months agoMerge "Implement CircularQueue Resize, Clear. And optimize some useless branch" into...
Eunki Hong [Thu, 2 Jan 2025 09:20:55 +0000 (09:20 +0000)]
Merge "Implement CircularQueue Resize, Clear. And optimize some useless branch" into devel/master

5 months ago(dali_env) Install libuv1-dev 27/317127/1
Adeel Kazmi [Tue, 24 Dec 2024 13:34:18 +0000 (13:34 +0000)]
(dali_env) Install libuv1-dev

Change-Id: I5380e39b7589fa9e5ed54df5b0f5e88dd31fa4f3

5 months agoImplement CircularQueue Resize, Clear. And optimize some useless branch 48/315548/2
Eunki, Hong [Wed, 25 Oct 2023 02:18:43 +0000 (11:18 +0900)]
Implement CircularQueue Resize, Clear. And optimize some useless branch

There was some useless branch behaviour exist for CircularQueue implements.
Let we optimize it.

And also, make a API that we can change the max capacity of queue.

Change-Id: I562778a5b9dfbdecf68f2a949b97c96c1b1c339c
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
5 months agoDALi Version 2.4.0 68/316968/1 dali_2.4.0
Adeel Kazmi [Fri, 20 Dec 2024 11:36:45 +0000 (11:36 +0000)]
DALi Version 2.4.0

Change-Id: I814ba9dc36c6d35a6521f799b592f79f4850b9fc