gralloc : Add singleton class for mdp capability
Many case reading the same mdp capability multiple times from
sys file causing delay in operation. Hence reading only once.
Change-Id: I1b94ca63074aba2f078fe6add5a8de628ca87740
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index 9b21dde..147b9cb 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -76,6 +76,7 @@
using namespace android;
ANDROID_SINGLETON_STATIC_INSTANCE(AdrenoMemInfo);
+ANDROID_SINGLETON_STATIC_INSTANCE(MDPCapabilityInfo);
static void getYuvUBwcWidthHeight(int, int, int, int&, int&);
static unsigned int getUBwcSize(int, int, int, const int, const int);
@@ -97,7 +98,17 @@
return false;
}
-//-------------- AdrenoMemInfo-----------------------//
+//------------- MDPCapabilityInfo-----------------------//
+MDPCapabilityInfo :: MDPCapabilityInfo() {
+ isMacroTileSupported = false;
+ qdutils::querySDEInfo(HAS_MACRO_TILE, &isMacroTileSupported);
+}
+
+int MDPCapabilityInfo :: isMacroTilingSupportedByMDP(){
+ return isMacroTileSupported;
+ }
+
+//------------- AdrenoMemInfo-----------------------//
AdrenoMemInfo::AdrenoMemInfo()
{
LINK_adreno_compute_aligned_width_and_height = NULL;
@@ -516,13 +527,9 @@
bool isMacroTileEnabled(int format, int usage)
{
bool tileEnabled = false;
- int isMacroTileSupportedByMDP = 0;
-
- qdutils::querySDEInfo(HAS_MACRO_TILE, &isMacroTileSupportedByMDP);
-
// Check whether GPU & MDSS supports MacroTiling feature
if(AdrenoMemInfo::getInstance().isMacroTilingSupportedByGPU() &&
- isMacroTileSupportedByMDP)
+ MDPCapabilityInfo::getInstance().isMacroTilingSupportedByMDP())
{
// check the format
switch(format)