hwc: Add support for Macro Tile feature
Macro tile is enabled only if all the conditions are met:
1. GPU hardware should support Macro Tiling.
2. MDSS hardware should support Macro Tiling.
3. USAGE flags shouldnt contain GRALLOC_USAGE_SW_READ_OFTEN and
GRALLOC_USAGE_SW_WRITE_OFTEN.
4. RGB 16bit and 32bit formats.
5. persist.hwc.macro_tile_enable flag should be enabled.
PRIV_FLAGS_TILE_RENDERED flag is added to indicate whether the layer
is rendered/composited in Macro Tiling or Linear format.
Change-Id: Ie3139839c84d76c5d1a2300f33910a09eb7336f4
diff --git a/libqdutils/mdp_version.cpp b/libqdutils/mdp_version.cpp
index b219cd5..525010d 100644
--- a/libqdutils/mdp_version.cpp
+++ b/libqdutils/mdp_version.cpp
@@ -47,6 +47,7 @@
mFeatures = 0;
mMDPUpscale = 0;
mMDPDownscale = 0;
+ mMacroTileEnabled = false;
mPanelType = NO_PANEL;
mLowBw = 0;
mHighBw = 0;
@@ -136,6 +137,14 @@
memset(sysfsPath, 0, sizeof(sysfsPath));
snprintf(sysfsPath , sizeof(sysfsPath),
"/sys/class/graphics/fb0/mdp/caps");
+ char property[PROPERTY_VALUE_MAX];
+ bool enableMacroTile = false;
+
+ if((property_get("persist.hwc.macro_tile_enable", property, NULL) > 0) &&
+ (!strncmp(property, "1", PROPERTY_VALUE_MAX ) ||
+ (!strncasecmp(property,"true", PROPERTY_VALUE_MAX )))) {
+ enableMacroTile = true;
+ }
sysfsFd = fopen(sysfsPath, "rb");
@@ -185,6 +194,11 @@
strlen("decimation"))) {
mFeatures |= MDP_DECIMATION_EN;
}
+ else if(!strncmp(tokens[i], "tile_format",
+ strlen("tile_format"))) {
+ if(enableMacroTile)
+ mMacroTileEnabled = true;
+ }
}
}
}
@@ -244,5 +258,10 @@
return (mFeatures & MDP_BWC_EN);
}
+bool MDPVersion::supportsMacroTile() {
+ // MACRO TILE support
+ return mMacroTileEnabled;
+}
+
}; //namespace qdutils