Skip to content

Commit

Permalink
reduce PB size from 2MB to 512KB
Browse files Browse the repository at this point in the history
this allows us to enable h/w acceleration on low-end
devices while keeping memory usage down.

Bug: 6557760
Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
  • Loading branch information
pixelflinger committed Jun 6, 2012
1 parent 4824d40 commit d75f84d
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
7 changes: 6 additions & 1 deletion opengl/libs/Android.mk
Expand Up @@ -41,7 +41,12 @@ ifeq ($(BOARD_ALLOW_EGL_HIBERNATION),true)
endif endif


ifeq ($(TARGET_BOARD_PLATFORM),msm7k) ifeq ($(TARGET_BOARD_PLATFORM),msm7k)
LOCAL_CFLAGS += -DADRENO130=1 LOCAL_CFLAGS += -DADRENO130=1
endif

ifeq ($(TARGET_BOARD_PLATFORM), s5pc110)
# see Loader.cpp for details
LOCAL_CFLAGS += -DSYSTEMUI_PBSIZE_HACK=1
endif endif


ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true) ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
Expand Down
47 changes: 47 additions & 0 deletions opengl/libs/EGL/Loader.cpp
Expand Up @@ -81,6 +81,24 @@ checkGlesEmulationStatus(void)


// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------


static char const * getProcessCmdline() {
long pid = getpid();
char procPath[128];
snprintf(procPath, 128, "/proc/%ld/cmdline", pid);
FILE * file = fopen(procPath, "r");
if (file) {
static char cmdline[256];
char *str = fgets(cmdline, sizeof(cmdline) - 1, file);
fclose(file);
if (str) {
return cmdline;
}
}
return NULL;
}

// ----------------------------------------------------------------------------

Loader::driver_t::driver_t(void* gles) Loader::driver_t::driver_t(void* gles)
{ {
dso[0] = gles; dso[0] = gles;
Expand Down Expand Up @@ -280,6 +298,35 @@ void *Loader::load_driver(const char* kind, const char *tag,
ALOGE_IF(!getProcAddress, ALOGE_IF(!getProcAddress,
"can't find eglGetProcAddress() in %s", driver_absolute_path); "can't find eglGetProcAddress() in %s", driver_absolute_path);


#ifdef SYSTEMUI_PBSIZE_HACK
#warning "SYSTEMUI_PBSIZE_HACK enabled"
/*
* TODO: replace SYSTEMUI_PBSIZE_HACK by something less hackish
*
* Here we adjust the PB size from its default value to 512KB which
* is the minimum acceptable for the systemui process.
* We do this on low-end devices only because it allows us to enable
* h/w acceleration in the systemui process while keeping the
* memory usage down.
*
* Obviously, this is the wrong place and wrong way to make this
* adjustment, but at the time of this writing this was the safest
* solution.
*/
const char *cmdline = getProcessCmdline();
if (strstr(cmdline, "systemui")) {
void *imgegl = dlopen("/vendor/lib/libIMGegl.so", RTLD_LAZY);
if (imgegl) {
unsigned int *PVRDefaultPBS =
(unsigned int *)dlsym(imgegl, "PVRDefaultPBS");
if (PVRDefaultPBS) {
ALOGD("setting default PBS to 512KB, was %d KB", *PVRDefaultPBS / 1024);
*PVRDefaultPBS = 512*1024;
}
}
}
#endif

egl_t* egl = &cnx->egl; egl_t* egl = &cnx->egl;
__eglMustCastToProperFunctionPointerType* curr = __eglMustCastToProperFunctionPointerType* curr =
(__eglMustCastToProperFunctionPointerType*)egl; (__eglMustCastToProperFunctionPointerType*)egl;
Expand Down

0 comments on commit d75f84d

Please sign in to comment.