1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "rme_core_sched.h"
17 #include <hitrace_meter.h>
18 #include <memory>
19 #include <string>
20 #include <unistd.h>
21 #include "rtg_interface.h"
22 #include "rme_log_domain.h"
23
24 #undef LOG_TAG
25 #define LOG_TAG "ueaClient-RmeCoreSched"
26
27 namespace OHOS {
28 namespace RME {
29 namespace {
30 constexpr int MARGIN_BEGIN = -3;
31 constexpr int MARGIN_MIDDLE = -5;
32 constexpr int MARGIN_END = -13;
33 }
RmeCoreSched()34 RmeCoreSched::RmeCoreSched() {}
35
~RmeCoreSched()36 RmeCoreSched::~RmeCoreSched()
37 {
38 EnableRtg(false);
39 return;
40 }
41
Init()42 bool RmeCoreSched::Init()
43 {
44 StartTrace(HITRACE_TAG_ACE, "FrameS-Init");
45 int ret = GetRtgEnable();
46 if (ret > 0) {
47 RME_LOGE("[Init]: rtgEnabled! scheme Open!ret: %{public}d", ret);
48 } else {
49 RME_LOGE("[Init]: do not enabled!ret: %{public}d", ret);
50 }
51 FinishTrace(HITRACE_TAG_ACE);
52 return ret;
53 }
54
HandleBeginScene()55 void RmeCoreSched::HandleBeginScene()
56 {
57 HITRACE_METER(HITRACE_TAG_ACE);
58 }
59
BeginFlushAnimation()60 void RmeCoreSched::BeginFlushAnimation()
61 {
62 m_pid = getpid();
63 if (m_rtg <= 0) {
64 m_rtg = SearchRtgForTid(m_pid);
65 if (m_rtg <= 0) {
66 return;
67 }
68 }
69 int ret = BeginFrameFreq(0);
70 m_uiTid = gettid();
71 if (!m_uiHasSend) {
72 StartTrace(HITRACE_TAG_ACE,
73 ("FrameS-Begin&AddThread-rtg:" + to_string(m_rtg) + " ret:" + to_string(ret)).c_str());
74 m_uiHasSend = true;
75 } else {
76 StartTrace(HITRACE_TAG_ACE, "FrameS-Begin");
77 }
78 FinishTrace(HITRACE_TAG_ACE);
79 return;
80 }
81
EndFlushAnimation()82 void RmeCoreSched::EndFlushAnimation() {}
83
BeginFlushBuild()84 void RmeCoreSched::BeginFlushBuild()
85 {
86 StartTrace(HITRACE_TAG_ACE,
87 ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_BEGIN)).c_str());
88 SetMargin(MARGIN_BEGIN);
89 FinishTrace(HITRACE_TAG_ACE);
90 }
91
EndFlushBuild()92 void RmeCoreSched::EndFlushBuild() {}
93
BeginFlushLayout()94 void RmeCoreSched::BeginFlushLayout() {}
95
EndFlushLayout()96 void RmeCoreSched::EndFlushLayout() {}
97
BeginFlushRender()98 void RmeCoreSched::BeginFlushRender()
99 {
100 StartTrace(HITRACE_TAG_ACE,
101 ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_MIDDLE)).c_str());
102 SetMargin(MARGIN_MIDDLE);
103 FinishTrace(HITRACE_TAG_ACE);
104 }
105
EndFlushRender()106 void RmeCoreSched::EndFlushRender() {}
107
BeginFlushRenderFinish()108 void RmeCoreSched::BeginFlushRenderFinish() {}
109
EndFlushRenderFinish()110 void RmeCoreSched::EndFlushRenderFinish() {}
111
BeginProcessPostFlush()112 void RmeCoreSched::BeginProcessPostFlush() {}
113
ProcessCommandsStart()114 void RmeCoreSched::ProcessCommandsStart() {}
115
AnimateStart()116 void RmeCoreSched::AnimateStart()
117 {
118 if (m_rtg <= 0) {
119 return;
120 }
121 }
122
RenderStart()123 void RmeCoreSched::RenderStart()
124 {
125 StartTrace(HITRACE_TAG_ACE,
126 ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_END)).c_str());
127 SetMargin(MARGIN_END);
128 FinishTrace(HITRACE_TAG_ACE);
129 }
130
SendCommandsStart()131 void RmeCoreSched::SendCommandsStart()
132 {
133 if (m_rtg <= 0) {
134 return;
135 }
136 StartTrace(HITRACE_TAG_ACE, "SendCommandsStart-EndFreq");
137 EndFrameFreq(0);
138 FinishTrace(HITRACE_TAG_ACE);
139 }
140
HandleEndScene()141 void RmeCoreSched::HandleEndScene()
142 {
143 HITRACE_METER(HITRACE_TAG_ACE);
144 if (m_rtg <= 0) {
145 return;
146 }
147 int ret = 0;
148 m_uiHasSend = false;
149 StartTrace(HITRACE_TAG_ACE,
150 ("FrameS-EndFrameFreq-rtg:" + to_string(m_rtg) + " ret:" + to_string(ret)).c_str());
151 FinishTrace(HITRACE_TAG_ACE);
152 }
153 } // namespace RME
154 } // OHOS
155