Signed-off-by: mengyiping <1091773127@qq.com>
This commit is contained in:
mengyiping
2024-09-04 13:48:14 +08:00
parent 7e20b72674
commit b4200e0bf1
3 changed files with 60 additions and 11 deletions
+7 -4
View File
@@ -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<int> 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<int> tids, int grpId, int prioType = 0, bool isSelfRender = false);
int RemoveRtgThread(int tid, bool isSelfRender = false);
int RemoveRtgThreads(vector<int> tids, bool isSelfRender = false);
int DestroyRtgGrp(int grpId);
int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType);
int BeginFrameFreq(int stateParam);
-1
View File
@@ -86,7 +86,6 @@ ohos_shared_library("frame_ui_intf") {
"hitrace:hitrace_meter",
]
innerapi_tags = [ "platformsdk" ]
subsystem_name = "resourceschedule"
part_name = "frame_aware_sched"
}
@@ -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<int> tids, int grpId, int prioType)
int AddThreadsToRtg(vector<int> tids, int grpId, int prioType, bool isSelfRender)
{
struct rtg_grp_data grp_data;
int ret;
@@ -133,8 +138,13 @@ int AddThreadsToRtg(vector<int> 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<int> 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<int> 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<int>(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) {