From 80a1839aa9fe026d98f505ac5048c33eb912c702 Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Wed, 4 Sep 2024 13:48:14 +0800 Subject: [PATCH 1/7] bugfix Signed-off-by: mengyiping <1091773127@qq.com> --- common/include/rtg_interface.h | 11 ++-- interfaces/innerkits/frameintf/BUILD.gn | 1 - .../innerkits/frameintf/rtg_interface.cpp | 59 +++++++++++++++++-- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/common/include/rtg_interface.h b/common/include/rtg_interface.h index 71c472b..1f88c90 100644 --- a/common/include/rtg_interface.h +++ b/common/include/rtg_interface.h @@ -49,7 +49,9 @@ enum grp_ctrl_cmd { CMD_ADD_RTG_THREAD, CMD_REMOVE_RTG_THREAD, CMD_CLEAR_RTG_GRP, - CMD_DESTROY_RTG_GRP + CMD_DESTROY_RTG_GRP, + CMD_ADD_SELF_RENDER_RTG_THREAD, + CMD_REMOVE_SELF_RENDER_RTG_THREAD, }; struct rtg_grp_data { @@ -86,9 +88,10 @@ enum rtg_sched_cmdid { extern "C" { int EnableRtg(bool flag); - int AddThreadToRtg(int tid, int grpId, int prioType = 0); - int AddThreadsToRtg(vector tids, int grpId, int prioType = 0); - int RemoveRtgThread(int tid); + int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isSelfRender = false); + int AddThreadsToRtg(vector tids, int grpId, int prioType = 0, bool isSelfRender = false); + int RemoveRtgThread(int tid, bool isSelfRender = false); + int RemoveRtgThreads(vector tids, bool isSelfRender = false); int DestroyRtgGrp(int grpId); int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType); int BeginFrameFreq(int stateParam); diff --git a/interfaces/innerkits/frameintf/BUILD.gn b/interfaces/innerkits/frameintf/BUILD.gn index 4fab553..7d3e688 100644 --- a/interfaces/innerkits/frameintf/BUILD.gn +++ b/interfaces/innerkits/frameintf/BUILD.gn @@ -86,7 +86,6 @@ ohos_shared_library("frame_ui_intf") { "hitrace:hitrace_meter", ] - innerapi_tags = [ "platformsdk" ] subsystem_name = "resourceschedule" part_name = "frame_aware_sched" } diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index 96116c9..1d49ac5 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -102,7 +102,7 @@ int EnableRtg(bool flag) return 0; }; -int AddThreadToRtg(int tid, int grpId, int prioType) +int AddThreadToRtg(int tid, int grpId, int prioType, bool isSelfRender) { if (g_fd < 0) { return g_fd; @@ -113,13 +113,18 @@ int AddThreadToRtg(int tid, int grpId, int prioType) grp_data.tid_num = 1; grp_data.tids[0] = tid; grp_data.grp_id = grpId; - grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; + grp_data.prio_type = prioType; + if (isSelfRender) { + grp_data.rtg_cmd = CMD_ADD_SELF_RENDER_RTG_THREAD; + } else { + grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; + } ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); return ret; } -int AddThreadsToRtg(vector tids, int grpId, int prioType) +int AddThreadsToRtg(vector tids, int grpId, int prioType, bool isSelfRender) { struct rtg_grp_data grp_data; int ret; @@ -133,8 +138,13 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType) } grp_data.tid_num = num; grp_data.grp_id = grpId; - grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; + grp_data.prio_type = prioType; + if (isSelfRender) { + grp_data.rtg_cmd = CMD_ADD_SELF_RENDER_RTG_THREAD; + } else { + grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; + } for (int i = 0; i < num; i++) { if (tids[i] < 0) { return -1; @@ -148,7 +158,7 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType) return ret; }; -int RemoveRtgThread(int tid) +int RemoveRtgThread(int tid, bool isSelfRender) { if (g_fd < 0) { return g_fd; @@ -158,7 +168,11 @@ int RemoveRtgThread(int tid) (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); grp_data.tid_num = 1; grp_data.tids[0] = tid; - grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; + if (isSelfRender) { + grp_data.rtg_cmd = CMD_REMOVE_SELF_RENDER_RTG_THREAD; + } else { + grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; + } ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); if (ret < 0) { RME_LOGE("remove grp failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); @@ -168,6 +182,39 @@ int RemoveRtgThread(int tid) return ret; }; +int RemoveRtgThreads(vector tids, bool isSelfRender) +{ + struct rtg_grp_data grp_data; + int ret; + if (g_fd < 0) { + return g_fd; + } + (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); + int num = static_cast(tids.size()); + if (num > MAX_TID_NUM) { + return -1; + } + grp_data.tid_num = num; + if (isSelfRender) { + grp_data.rtg_cmd = CMD_REMOVE_SELF_RENDER_RTG_THREAD; + } else { + grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; + } + for (int i = 0; i < num; i++) { + if (tids[i] < 0) { + return -1; + } + grp_data.tids[i] = tids[i]; + } + ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); + if (ret < 0) { + RME_LOGE("remove grp threads failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); + } else { + RME_LOGI("remove grp threads success, get rtg id %{public}d.", ret); + } + return ret; +} + int DestroyRtgGrp(int grpId) { if (g_fd < 0) { -- Gitee From d0786d74a8de0ee19c367967dcf7cb1f874dafc9 Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 03:03:32 +0000 Subject: [PATCH 2/7] update interfaces/innerkits/frameintf/BUILD.gn. Signed-off-by: mengyiping <1091773127@qq.com> --- interfaces/innerkits/frameintf/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/interfaces/innerkits/frameintf/BUILD.gn b/interfaces/innerkits/frameintf/BUILD.gn index 7d3e688..4fab553 100644 --- a/interfaces/innerkits/frameintf/BUILD.gn +++ b/interfaces/innerkits/frameintf/BUILD.gn @@ -86,6 +86,7 @@ ohos_shared_library("frame_ui_intf") { "hitrace:hitrace_meter", ] + innerapi_tags = [ "platformsdk" ] subsystem_name = "resourceschedule" part_name = "frame_aware_sched" } -- Gitee From d7b41da5127ef6f3524e8141a019d1cb0ce3af8b Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 08:09:20 +0000 Subject: [PATCH 3/7] update common/include/rtg_interface.h. Signed-off-by: mengyiping <1091773127@qq.com> --- common/include/rtg_interface.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/common/include/rtg_interface.h b/common/include/rtg_interface.h index 1f88c90..68779f0 100644 --- a/common/include/rtg_interface.h +++ b/common/include/rtg_interface.h @@ -49,9 +49,7 @@ enum grp_ctrl_cmd { CMD_ADD_RTG_THREAD, CMD_REMOVE_RTG_THREAD, CMD_CLEAR_RTG_GRP, - CMD_DESTROY_RTG_GRP, - CMD_ADD_SELF_RENDER_RTG_THREAD, - CMD_REMOVE_SELF_RENDER_RTG_THREAD, + CMD_DESTROY_RTG_GRP }; struct rtg_grp_data { @@ -88,10 +86,10 @@ enum rtg_sched_cmdid { extern "C" { int EnableRtg(bool flag); - int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isSelfRender = false); - int AddThreadsToRtg(vector tids, int grpId, int prioType = 0, bool isSelfRender = false); - int RemoveRtgThread(int tid, bool isSelfRender = false); - int RemoveRtgThreads(vector tids, bool isSelfRender = false); + int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isRender = false); + int AddThreadsToRtg(vector tids, int grpId, int prioType = 0, bool isRender = false); + int RemoveRtgThread(int tid, bool isRender = false); + int RemoveRtgThreads(vector tids, bool isRender = false); int DestroyRtgGrp(int grpId); int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType); int BeginFrameFreq(int stateParam); -- Gitee From c621f4d9f566281863ed75e9a0eccb10d39f0827 Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 08:18:02 +0000 Subject: [PATCH 4/7] update interfaces/innerkits/frameintf/rtg_interface.cpp. Signed-off-by: mengyiping <1091773127@qq.com> --- .../innerkits/frameintf/rtg_interface.cpp | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index 1d49ac5..6574623 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -102,7 +102,7 @@ int EnableRtg(bool flag) return 0; }; -int AddThreadToRtg(int tid, int grpId, int prioType, bool isSelfRender) +int AddThreadToRtg(int tid, int grpId, int prioType, [[maybe_unused]] bool isRender) { if (g_fd < 0) { return g_fd; @@ -113,18 +113,17 @@ int AddThreadToRtg(int tid, int grpId, int prioType, bool isSelfRender) grp_data.tid_num = 1; grp_data.tids[0] = tid; grp_data.grp_id = grpId; - + grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; grp_data.prio_type = prioType; - if (isSelfRender) { - grp_data.rtg_cmd = CMD_ADD_SELF_RENDER_RTG_THREAD; - } else { - grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; - } ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); + if (ret != 0) { + RME_LOGE("add thread to rtg failed, errno = %{public}d (%{public}s), ret = %{public}d", + errno, strerror(errno), ret); + } return ret; } -int AddThreadsToRtg(vector tids, int grpId, int prioType, bool isSelfRender) +int AddThreadsToRtg(vector tids, int grpId, int prioType, [[maybe_unused]] bool isRender) { struct rtg_grp_data grp_data; int ret; @@ -138,13 +137,8 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType, bool isSelfRender } grp_data.tid_num = num; grp_data.grp_id = grpId; - + grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; grp_data.prio_type = prioType; - if (isSelfRender) { - grp_data.rtg_cmd = CMD_ADD_SELF_RENDER_RTG_THREAD; - } else { - grp_data.rtg_cmd = CMD_ADD_RTG_THREAD; - } for (int i = 0; i < num; i++) { if (tids[i] < 0) { return -1; @@ -158,7 +152,7 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType, bool isSelfRender return ret; }; -int RemoveRtgThread(int tid, bool isSelfRender) +int RemoveRtgThread(int tid, bool [[maybe_unused]] isRender) { if (g_fd < 0) { return g_fd; @@ -168,11 +162,7 @@ int RemoveRtgThread(int tid, bool isSelfRender) (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); grp_data.tid_num = 1; grp_data.tids[0] = tid; - if (isSelfRender) { - grp_data.rtg_cmd = CMD_REMOVE_SELF_RENDER_RTG_THREAD; - } else { - grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; - } + grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); if (ret < 0) { RME_LOGE("remove grp failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); @@ -182,7 +172,7 @@ int RemoveRtgThread(int tid, bool isSelfRender) return ret; }; -int RemoveRtgThreads(vector tids, bool isSelfRender) +int RemoveRtgThreads(vector tids, [[maybe_unused]] bool isRender) { struct rtg_grp_data grp_data; int ret; @@ -195,11 +185,7 @@ int RemoveRtgThreads(vector tids, bool isSelfRender) return -1; } grp_data.tid_num = num; - if (isSelfRender) { - grp_data.rtg_cmd = CMD_REMOVE_SELF_RENDER_RTG_THREAD; - } else { - grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; - } + grp_data.rtg_cmd = CMD_REMOVE_RTG_THREAD; for (int i = 0; i < num; i++) { if (tids[i] < 0) { return -1; -- Gitee From 7345e8bb8082dd922a7bbea5efe2f486cf7b5a5e Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 08:19:51 +0000 Subject: [PATCH 5/7] update interfaces/innerkits/frameintf/rtg_interface.cpp. Signed-off-by: mengyiping <1091773127@qq.com> --- interfaces/innerkits/frameintf/rtg_interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index 6574623..f68dc61 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -152,7 +152,7 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType, [[maybe_unused]] return ret; }; -int RemoveRtgThread(int tid, bool [[maybe_unused]] isRender) +int RemoveRtgThread(int tid, [[maybe_unused]] bool isRender) { if (g_fd < 0) { return g_fd; -- Gitee From 458e8f29e38f8103dd91dedb5d2df48ff8337266 Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 09:18:51 +0000 Subject: [PATCH 6/7] update common/include/rtg_interface.h. Signed-off-by: mengyiping <1091773127@qq.com> --- common/include/rtg_interface.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/include/rtg_interface.h b/common/include/rtg_interface.h index 68779f0..1d52022 100644 --- a/common/include/rtg_interface.h +++ b/common/include/rtg_interface.h @@ -86,10 +86,10 @@ enum rtg_sched_cmdid { extern "C" { int EnableRtg(bool flag); - int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isRender = false); - int AddThreadsToRtg(vector tids, int grpId, int prioType = 0, bool isRender = false); - int RemoveRtgThread(int tid, bool isRender = false); - int RemoveRtgThreads(vector tids, bool isRender = false); + int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isBlue = false); + int AddThreadsToRtg(vector tids, int grpId, int prioType = 0, bool isBlue = false); + int RemoveRtgThread(int tid, bool isBlue = false); + int RemoveRtgThreads(vector tids, bool isBlue = false); int DestroyRtgGrp(int grpId); int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType); int BeginFrameFreq(int stateParam); -- Gitee From deb4dd9ad71894523786894862df4655968b71cc Mon Sep 17 00:00:00 2001 From: mengyiping <1091773127@qq.com> Date: Thu, 5 Sep 2024 09:20:20 +0000 Subject: [PATCH 7/7] update interfaces/innerkits/frameintf/rtg_interface.cpp. Signed-off-by: mengyiping <1091773127@qq.com> --- interfaces/innerkits/frameintf/rtg_interface.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index f68dc61..154b15c 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -102,7 +102,7 @@ int EnableRtg(bool flag) return 0; }; -int AddThreadToRtg(int tid, int grpId, int prioType, [[maybe_unused]] bool isRender) +int AddThreadToRtg(int tid, int grpId, int prioType, [[maybe_unused]] bool isBlue) { if (g_fd < 0) { return g_fd; @@ -123,7 +123,7 @@ int AddThreadToRtg(int tid, int grpId, int prioType, [[maybe_unused]] bool isRen return ret; } -int AddThreadsToRtg(vector tids, int grpId, int prioType, [[maybe_unused]] bool isRender) +int AddThreadsToRtg(vector tids, int grpId, int prioType, [[maybe_unused]] bool isBlue) { struct rtg_grp_data grp_data; int ret; @@ -152,7 +152,7 @@ int AddThreadsToRtg(vector tids, int grpId, int prioType, [[maybe_unused]] return ret; }; -int RemoveRtgThread(int tid, [[maybe_unused]] bool isRender) +int RemoveRtgThread(int tid, [[maybe_unused]] bool isBlue) { if (g_fd < 0) { return g_fd; @@ -172,7 +172,7 @@ int RemoveRtgThread(int tid, [[maybe_unused]] bool isRender) return ret; }; -int RemoveRtgThreads(vector tids, [[maybe_unused]] bool isRender) +int RemoveRtgThreads(vector tids, [[maybe_unused]] bool isBlue) { struct rtg_grp_data grp_data; int ret; -- Gitee