Merge "Fix GL memory not being removed from lost RAM" am: f7e97bd385 am: 72b5ecdea4

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1901032

Change-Id: I4d09f3cb7698ae89a0fade3b364ef48978916a17
This commit is contained in:
Kalesh Singh
2021-11-24 03:40:24 +00:00
committed by Automerger Merge Worker

View File

@@ -34,6 +34,7 @@
#include <vector>
#include <android-base/logging.h>
#include <android-base/properties.h>
#include <bionic/malloc.h>
#include <debuggerd/client.h>
#include <log/log.h>
@@ -859,7 +860,22 @@ static jlong android_os_Debug_getDmabufHeapPoolsSizeKb(JNIEnv* env, jobject claz
return poolsSizeKb;
}
static bool halSupportsGpuPrivateMemory() {
int productApiLevel =
android::base::GetIntProperty("ro.product.first_api_level",
android::base::GetIntProperty("ro.build.version.sdk",
__ANDROID_API_FUTURE__));
int boardApiLevel =
android::base::GetIntProperty("ro.board.api_level",
android::base::GetIntProperty("ro.board.first_api_level",
__ANDROID_API_FUTURE__));
return std::min(productApiLevel, boardApiLevel) >= __ANDROID_API_S__;
}
static jlong android_os_Debug_getGpuPrivateMemoryKb(JNIEnv* env, jobject clazz) {
static bool gpuPrivateMemorySupported = halSupportsGpuPrivateMemory();
struct memtrack_proc* p = memtrack_proc_new();
if (p == nullptr) {
LOG(ERROR) << "getGpuPrivateMemoryKb: Failed to create memtrack_proc";
@@ -876,6 +892,12 @@ static jlong android_os_Debug_getGpuPrivateMemoryKb(JNIEnv* env, jobject clazz)
ssize_t gpuPrivateMem = memtrack_proc_gl_pss(p);
memtrack_proc_destroy(p);
// Old HAL implementations may return 0 for GPU private memory if not supported
if (gpuPrivateMem == 0 && !gpuPrivateMemorySupported) {
return -1;
}
return gpuPrivateMem / 1024;
}