gralloc: Add support to enable UBWC aligned framebuffer
Gralloc checks the system property "debug.gralloc.enable_fb_ubwc"
to enable UBWC aligned allocation for framebuffer. The allocation
will be linear by default.
Change-Id: I7fdb5878eec620f264ba3a6425a9810b28b54604
diff --git a/libgralloc/gpu.cpp b/libgralloc/gpu.cpp
index a6f7874..bca1317 100644
--- a/libgralloc/gpu.cpp
+++ b/libgralloc/gpu.cpp
@@ -308,6 +308,25 @@
grallocFormat = HAL_PIXEL_FORMAT_RGBA_8888;
}
+ bool useFbMem = false;
+ char property[PROPERTY_VALUE_MAX];
+ char isUBWC[PROPERTY_VALUE_MAX];
+ if (usage & GRALLOC_USAGE_HW_FB) {
+ if ((property_get("debug.gralloc.map_fb_memory", property, NULL) > 0) &&
+ (!strncmp(property, "1", PROPERTY_VALUE_MAX ) ||
+ (!strncasecmp(property,"true", PROPERTY_VALUE_MAX )))) {
+ useFbMem = true;
+ } else {
+ if (property_get("debug.gralloc.enable_fb_ubwc", isUBWC, NULL) > 0){
+ if ((!strncmp(isUBWC, "1", PROPERTY_VALUE_MAX)) ||
+ (!strncasecmp(isUBWC, "true", PROPERTY_VALUE_MAX))) {
+ // Allocate UBWC aligned framebuffer
+ usage |= GRALLOC_USAGE_PRIVATE_ALLOC_UBWC;
+ }
+ }
+ }
+ }
+
getGrallocInformationFromFormat(grallocFormat, &bufferType);
size = getBufferSizeAndDimensions(w, h, grallocFormat, usage, alignedw,
alignedh);
@@ -316,15 +335,6 @@
return -EINVAL;
size = (bufferSize >= size)? bufferSize : size;
- bool useFbMem = false;
- char property[PROPERTY_VALUE_MAX];
- if((usage & GRALLOC_USAGE_HW_FB) &&
- (property_get("debug.gralloc.map_fb_memory", property, NULL) > 0) &&
- (!strncmp(property, "1", PROPERTY_VALUE_MAX ) ||
- (!strncasecmp(property,"true", PROPERTY_VALUE_MAX )))) {
- useFbMem = true;
- }
-
int err = 0;
if(useFbMem) {
err = gralloc_alloc_framebuffer(usage, pHandle);