summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2022-02-04 12:01:06 +0800
committeralk3pInjection <webmaster@raspii.tech>2022-02-04 12:01:06 +0800
commit75be5cbc9eb888531bf4f874d1fea1d4df0afab7 (patch)
tree8e95645c3e7ef5aeabe01a43eab45fb52894a404
parenta6c11a25c69b3633b494c5c85ef462d1c51e1ba2 (diff)
parent73011a81de450dcef2aab91bed6fcccff4aca65d (diff)
Merge tag 'LA.QSSI.12.0.r1-05800.02-qssi.0' into sugisawa
"LA.QSSI.12.0.r1-05800.02-qssi.0" Change-Id: I509f84ca4d65d83580cf34d7ea9a5b4120a8b9c7
-rw-r--r--core/java/android/util/BoostFramework.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java28
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java11
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java28
-rw-r--r--[-rwxr-xr-x]services/core/java/com/android/server/wm/ActivityTaskSupervisor.java56
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java75
6 files changed, 158 insertions, 66 deletions
diff --git a/core/java/android/util/BoostFramework.java b/core/java/android/util/BoostFramework.java
index 59ec6caba3ed..461d67a8ae83 100644
--- a/core/java/android/util/BoostFramework.java
+++ b/core/java/android/util/BoostFramework.java
@@ -48,6 +48,8 @@ public class BoostFramework {
private static final String UXPERFORMANCE_JAR = "/system/framework/UxPerformance.jar";
private static final String UXPERFORMANCE_CLASS = "com.qualcomm.qti.UxPerformance";
+ public static final float PERF_HAL_V22 = 2.2f;
+ public static final float PERF_HAL_V23 = 2.3f;
/** @hide */
private static boolean sIsLoaded = false;
@@ -63,6 +65,7 @@ public class BoostFramework {
private static Method sperfHintAcqRelFunc = null;
private static Method sperfHintRenewFunc = null;
private static Method sPerfEventFunc = null;
+ private static Method sPerfGetPerfHalVerFunc = null;
private static Method sIOPStart = null;
private static Method sIOPStop = null;
@@ -260,6 +263,15 @@ public class BoostFramework {
sperfHintRenewFunc = sPerfClass.getMethod("perfHintRenew", argClasses);
try {
+ argClasses = new Class[] {};
+ sPerfGetPerfHalVerFunc = sPerfClass.getMethod("perfGetHalVer", argClasses);
+
+ } catch (Exception e) {
+ Log.i(TAG, "BoostFramework() : Exception_1 = perfGetHalVer not supported");
+ sPerfGetPerfHalVerFunc = null;
+ }
+
+ try {
argClasses = new Class[] {int.class, int.class, String.class, int.class, String.class};
sUXEngineEvents = sPerfClass.getDeclaredMethod("perfUXEngine_events",
argClasses);
@@ -360,6 +372,20 @@ public class BoostFramework {
}
/** @hide */
+ public double getPerfHalVersion() {
+ double retVal = PERF_HAL_V22;
+ try {
+ if (sPerfGetPerfHalVerFunc != null) {
+ Object ret = sPerfGetPerfHalVerFunc.invoke(mPerf);
+ retVal = (double)ret;
+ }
+ } catch(Exception e) {
+ Log.e(TAG,"Exception " + e);
+ }
+ return retVal;
+ }
+
+/** @hide */
public int perfGetFeedback(int req, String pkg_name) {
int ret = -1;
try {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
index 11eb74d43e43..13cfddd2b0bb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
@@ -158,18 +158,6 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
if (requestLayout) {
requestLayout();
}
-
- if ( needFixVisibleState() ) {
- Log.d(TAG, "fix VisibleState width=" + getWidth() + " height=" + getHeight());
- mVisibleState = STATE_ICON;
- setVisibility(View.VISIBLE);
- requestLayout();
- }else if (needFixInVisibleState() ) {
- Log.d(TAG, "fix InVisibleState width=" + getWidth() + " height=" + getHeight());
- mVisibleState = -1;
- setVisibility(View.INVISIBLE);
- requestLayout();
- }
}
private void initViewState() {
@@ -356,22 +344,6 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
return mState;
}
- private boolean needFixVisibleState() {
- if ( mState.visible && (getVisibility() != View.VISIBLE) ) {
- return true;
- }else {
- return false;
- }
- }
-
- private boolean needFixInVisibleState() {
- if ( !mState.visible && (getVisibility() == View.VISIBLE)) {
- return true;
- }else {
- return false;
- }
- }
-
@Override
public String toString() {
return "StatusBarMobileView(slot=" + mSlot + " state=" + mState + ")";
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 69a8a2c60b7e..893c068dbdc9 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4444,7 +4444,16 @@ public class ActivityManagerService extends IActivityManager.Stub
EventLogTags.writeAmProcBound(app.userId, pid, app.processName);
if (mUxPerf != null && app.getHostingRecord() != null && app.getHostingRecord().isTopApp()) {
- mUxPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, app.processName, pid, BoostFramework.Launch.TYPE_ATTACH_APPLICATION);
+ if (mUxPerf.getPerfHalVersion() >= BoostFramework.PERF_HAL_V23) {
+ int pkgType = mUxPerf.perfGetFeedback(
+ BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE, app.processName);
+ mUxPerf.perfHintAcqRel(-1,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, app.processName,
+ pid, BoostFramework.Launch.TYPE_ATTACH_APPLICATION, 1, pkgType);
+ } else {
+ mUxPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, app.processName,
+ pid, BoostFramework.Launch.TYPE_ATTACH_APPLICATION);
+ }
}
synchronized (mProcLock) {
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index e0b9bf2f1d73..cd2b8c21f57d 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1738,9 +1738,19 @@ class ActivityStarter {
? mSourceRecord.getTask() : null;
String packageName= mService.mContext.getPackageName();
if (mPerf != null) {
- mStartActivity.perfActivityBoostHandler =
- mPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ if (mPerf.getPerfHalVersion() >= BoostFramework.PERF_HAL_V23) {
+ int pkgType =
+ mPerf.perfGetFeedback(BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE,
+ packageName);
+ mStartActivity.perfActivityBoostHandler =
+ mPerf.perfHintAcqRel(mStartActivity.perfActivityBoostHandler,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, packageName,
+ -1, BoostFramework.Launch.BOOST_V1, 1, pkgType);
+ } else {
+ mStartActivity.perfActivityBoostHandler =
+ mPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
packageName, -1, BoostFramework.Launch.BOOST_V1);
+ }
}
setNewTask(taskToAffiliate);
} else if (mAddingToTask) {
@@ -2713,9 +2723,19 @@ class ActivityStarter {
private void addOrReparentStartingActivity(Task parent, String reason) {
String packageName= mService.mContext.getPackageName();
if (mPerf != null) {
- mStartActivity.perfActivityBoostHandler =
- mPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ if (mPerf.getPerfHalVersion() >= BoostFramework.PERF_HAL_V23) {
+ int pkgType =
+ mPerf.perfGetFeedback(BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE,
+ packageName);
+ mStartActivity.perfActivityBoostHandler =
+ mPerf.perfHintAcqRel(mStartActivity.perfActivityBoostHandler,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, packageName,
+ -1, BoostFramework.Launch.BOOST_V1, 1, pkgType);
+ } else {
+ mStartActivity.perfActivityBoostHandler =
+ mPerf.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
packageName, -1, BoostFramework.Launch.BOOST_V1);
+ }
}
if (mStartActivity.getTask() == null || mStartActivity.getTask() == parent) {
parent.addChild(mStartActivity);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index b7c67a98792d..92da025ebb49 100755..100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1862,30 +1862,68 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
void acquireAppLaunchPerfLock(ActivityRecord r) {
/* Acquire perf lock during new app launch */
if (mPerfBoost != null) {
- mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName, -1, BoostFramework.Launch.BOOST_V1);
- mPerfSendTapHint = true;
- mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName, -1, BoostFramework.Launch.BOOST_V2);
+
+ int pkgType = mPerfBoost.perfGetFeedback(BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE,
+ r.packageName);
+ int wpcPid = -1;
if (mService != null && r != null && r.info != null && r.info.applicationInfo !=null) {
final WindowProcessController wpc =
mService.getProcessController(r.processName, r.info.applicationInfo.uid);
if (wpc != null && wpc.hasThread()) {
//If target process didn't start yet, this operation will be done when app call attach
- mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName, wpc.getPid(), BoostFramework.Launch.TYPE_ATTACH_APPLICATION);
+ wpcPid = wpc.getPid();
}
}
+ if (mPerfBoost.getPerfHalVersion() >= BoostFramework.PERF_HAL_V23) {
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V1, 2, pkgType, wpcPid);
+ mPerfSendTapHint = true;
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V2, 2, pkgType, wpcPid);
+ if (wpcPid != -1) {
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, wpcPid, BoostFramework.Launch.TYPE_ATTACH_APPLICATION,
+ 2, pkgType, wpcPid);
+ }
+
+ if (pkgType == BoostFramework.WorkloadType.GAME)
+ {
+ mPerfHandle =
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_GAME, 2, pkgType, wpcPid);
+ } else {
+ mPerfHandle =
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V3, 2, pkgType, wpcPid);
+ }
- if(mPerfBoost.perfGetFeedback(BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE, r.packageName) == BoostFramework.WorkloadType.GAME)
- {
- mPerfHandle = mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName, -1, BoostFramework.Launch.BOOST_GAME);
} else {
- mPerfHandle = mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName, -1, BoostFramework.Launch.BOOST_V3);
+ mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName,
+ -1, BoostFramework.Launch.BOOST_V1);
+ mPerfSendTapHint = true;
+ mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName,
+ -1, BoostFramework.Launch.BOOST_V2);
+ if (wpcPid != -1) {
+ mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, wpcPid, BoostFramework.Launch.TYPE_ATTACH_APPLICATION);
+ }
+
+ if (pkgType == BoostFramework.WorkloadType.GAME)
+ {
+ mPerfHandle = mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_GAME);
+ } else {
+ mPerfHandle = mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V3);
+ }
}
if (mPerfHandle > 0)
mIsPerfBoostAcquired = true;
// Start IOP
if (r.info.applicationInfo != null && r.info.applicationInfo.sourceDir != null) {
mPerfBoost.perfIOPrefetchStart(-1,r.packageName,
- r.info.applicationInfo.sourceDir.substring(0, r.info.applicationInfo.sourceDir.lastIndexOf('/')));
+ r.info.applicationInfo.sourceDir.substring(0,
+ r.info.applicationInfo.sourceDir.lastIndexOf('/')));
}
}
}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index d5439499328f..e159bfbf1811 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -2253,37 +2253,64 @@ public class RootWindowContainer extends WindowContainer<DisplayContent>
mPerfBoost = new BoostFramework();
}
if (mPerfBoost != null) {
- mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
- r.packageName, -1, BoostFramework.Launch.BOOST_V1);
- mPerfSendTapHint = true;
- mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
- r.packageName, -1, BoostFramework.Launch.BOOST_V2);
- if (mWmService.mAtmService != null && r != null && r.info != null
- && r.info.applicationInfo != null) {
+ int pkgType = mPerfBoost.perfGetFeedback(BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE,
+ r.packageName);
+ int wpcPid = -1;
+ if (mService != null && r != null && r.info != null && r.info.applicationInfo !=null) {
final WindowProcessController wpc =
- mWmService.mAtmService.getProcessController(r.processName,
- r.info.applicationInfo.uid);
+ mService.getProcessController(r.processName, r.info.applicationInfo.uid);
if (wpc != null && wpc.hasThread()) {
- // If target process didn't start yet,
- // this operation will be done when app call attach
+ //If target process didn't start yet,
+ // this operation will be done when app call attach
+ wpcPid = wpc.getPid();
+ }
+ }
+ if (mPerfBoost.getPerfHalVersion() >= BoostFramework.PERF_HAL_V23) {
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V1, 2, pkgType, wpcPid);
+ mPerfSendTapHint = true;
+ mPerfBoost.perfHintAcqRel(-1, BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V2, 2, pkgType, wpcPid);
+ if (wpcPid != -1) {
+ mPerfBoost.perfHintAcqRel(-1,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, wpcPid,
+ BoostFramework.Launch.TYPE_ATTACH_APPLICATION, 2, pkgType, wpcPid);
+ }
+
+ if (pkgType == BoostFramework.WorkloadType.GAME)
+ {
+ mPerfHandle = mPerfBoost.perfHintAcqRel(-1,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_GAME, 2, pkgType, wpcPid);
+ } else {
+ mPerfHandle = mPerfBoost.perfHintAcqRel(-1,
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V3, 2, pkgType, wpcPid);
+ }
+ } else {
+ mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST, r.packageName,
+ -1, BoostFramework.Launch.BOOST_V1);
+ mPerfSendTapHint = true;
+ mPerfBoost.perfHint(BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V2);
+ if (wpcPid != -1) {
mPerfBoost.perfHint(
BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
- r.packageName, wpc.getPid(),
+ r.packageName, wpcPid,
BoostFramework.Launch.TYPE_ATTACH_APPLICATION);
}
- }
- if(mPerfBoost.perfGetFeedback(
- BoostFramework.VENDOR_FEEDBACK_WORKLOAD_TYPE, r.packageName) ==
- BoostFramework.WorkloadType.GAME)
- {
- mPerfHandle = mPerfBoost.perfHint(
- BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
- r.packageName, -1, BoostFramework.Launch.BOOST_GAME);
- } else {
- mPerfHandle = mPerfBoost.perfHint(
- BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
- r.packageName, -1, BoostFramework.Launch.BOOST_V3);
+ if (pkgType == BoostFramework.WorkloadType.GAME)
+ {
+ mPerfHandle = mPerfBoost.perfHint(
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_GAME);
+ } else {
+ mPerfHandle = mPerfBoost.perfHint(
+ BoostFramework.VENDOR_HINT_FIRST_LAUNCH_BOOST,
+ r.packageName, -1, BoostFramework.Launch.BOOST_V3);
+ }
}
if (mPerfHandle > 0)
mIsPerfBoostAcquired = true;