Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 974ff062 authored by Mathias Agopian's avatar Mathias Agopian Committed by Ethan Chen
Browse files

reduce PB size from 2MB to 512KB

this allows us to enable h/w acceleration on low-end
devices while keeping memory usage down.

Bug: 6557760
Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
parent 5f550b26
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -51,6 +51,10 @@ endif
ifeq ($(TARGET_BOARD_PLATFORM), omap4)
  LOCAL_CFLAGS += -DWORKAROUND_BUG_10194508=1
endif
ifeq ($(BOARD_EGL_SYSTEMUI_PBSIZE_HACK),true)
  # see Loader.cpp for details
  LOCAL_CFLAGS += -DSYSTEMUI_PBSIZE_HACK=1
endif
ifeq ($(BOARD_EGL_WORKAROUND_BUG_10194508),true)
  LOCAL_CFLAGS += -DWORKAROUND_BUG_10194508=1
endif
+29 −0
Original line number Diff line number Diff line
@@ -374,6 +374,35 @@ void *Loader::load_driver(const char* kind,
        ALOGE_IF(!getProcAddress,
                "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;
        __eglMustCastToProperFunctionPointerType* curr =
            (__eglMustCastToProperFunctionPointerType*)egl;