Files
device_xiaomi_stone/libinit/libinit_dalvik_heap.cpp
Jyotiraditya 2c6d485c69 stone: libinit: Enable config_avoidGfxAccel for 4GB variants
- This flag turns off GPU/CPU intensive UI effects and
  reduces the RAM footprint.

- Using this is a better compromise than the 'low_ram' flag
  as this does not disable features in the rom but still
  reduces RAM usage and gives better smoothness in the UI.

Signed-off-by: Arijit78 <sahaarijit2007@gmail.com>
2024-07-06 17:18:49 +00:00

71 lines
2.0 KiB
C++

/*
* Copyright (C) 2021 The LineageOS Project
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <sys/sysinfo.h>
#include <libinit_utils.h>
#include <libinit_dalvik_heap.h>
#define HEAPSTARTSIZE_PROP "dalvik.vm.heapstartsize"
#define HEAPGROWTHLIMIT_PROP "dalvik.vm.heapgrowthlimit"
#define HEAPSIZE_PROP "dalvik.vm.heapsize"
#define HEAPMINFREE_PROP "dalvik.vm.heapminfree"
#define HEAPMAXFREE_PROP "dalvik.vm.heapmaxfree"
#define HEAPTARGETUTILIZATION_PROP "dalvik.vm.heaptargetutilization"
#define GB(b) (b * 1024ull * 1024 * 1024)
static const dalvik_heap_info_t dalvik_heap_info_8192 = {
.heapstartsize = "24m",
.heapgrowthlimit = "256m",
.heapsize = "512m",
.heapminfree = "8m",
.heapmaxfree = "48m",
.heaptargetutilization = "0.46",
};
static const dalvik_heap_info_t dalvik_heap_info_6144 = {
.heapstartsize = "16m",
.heapgrowthlimit = "256m",
.heapsize = "512m",
.heapminfree = "8m",
.heapmaxfree = "32m",
.heaptargetutilization = "0.5",
};
static const dalvik_heap_info_t dalvik_heap_info_4096 = {
.heapstartsize = "8m",
.heapgrowthlimit = "192m",
.heapsize = "512m",
.heapminfree = "8m",
.heapmaxfree = "16m",
.heaptargetutilization = "0.6",
};
void set_dalvik_heap() {
struct sysinfo sys;
const dalvik_heap_info_t *dhi;
sysinfo(&sys);
if (sys.totalram > GB(7))
dhi = &dalvik_heap_info_8192;
else if (sys.totalram > GB(5))
dhi = &dalvik_heap_info_6144;
else
dhi = &dalvik_heap_info_4096;
if (sys.totalram < GB(5))
property_override("ro.config.avoid_gfx_accel", "true");
property_override(HEAPSTARTSIZE_PROP, dhi->heapstartsize);
property_override(HEAPGROWTHLIMIT_PROP, dhi->heapgrowthlimit);
property_override(HEAPSIZE_PROP, dhi->heapsize);
property_override(HEAPTARGETUTILIZATION_PROP, dhi->heaptargetutilization);
property_override(HEAPMINFREE_PROP, dhi->heapminfree);
property_override(HEAPMAXFREE_PROP, dhi->heapmaxfree);
}