From 8881f08455b6a714b2f3ecc889de3f90a3327970 Mon Sep 17 00:00:00 2001 From: Aman Mehta Date: Wed, 22 Dec 2021 15:09:04 +0530 Subject: Perf: Added support for app type in launch hint Added support for app type in launch hint CRs-Fixed: 3099018 Change-Id: Icba61c84d179767596fb2aa2ada38adb1ffba900 --- core/java/android/util/BoostFramework.java | 26 ++++++++ .../android/server/am/ActivityManagerService.java | 11 +++- .../com/android/server/wm/ActivityStarter.java | 28 ++++++-- .../android/server/wm/ActivityTaskSupervisor.java | 56 +++++++++++++--- .../com/android/server/wm/RootWindowContainer.java | 75 +++++++++++++++------- 5 files changed, 158 insertions(+), 38 deletions(-) mode change 100755 => 100644 services/core/java/com/android/server/wm/ActivityTaskSupervisor.java 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; @@ -259,6 +262,15 @@ public class BoostFramework { int.class, int.class, int[].class}; 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", @@ -359,6 +371,20 @@ public class BoostFramework { return ret; } +/** @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; 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 old mode 100755 new mode 100644 index b7c67a98792d..92da025ebb49 --- 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 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; -- cgit v1.2.3 From da0eb95fceff1a75c34124e695fcfa83729c0250 Mon Sep 17 00:00:00 2001 From: Weijie Wang Date: Thu, 13 Jan 2022 11:25:44 +0800 Subject: Revert "SystemUI: Display one signal bar for two SIM after SIM hotswapping" This reverts commit 10ca00b7d3fee0984cc6b63b8507627fbff08c4b. Change-Id: I5befe96fa45428aa25bc6cfd0c2d642db7d91e64 CRs-Fixed: 3106834 --- .../systemui/statusbar/StatusBarMobileView.java | 28 ---------------------- 1 file changed, 28 deletions(-) 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 + ")"; -- cgit v1.2.3