overlay: Add support for decimation.
Add support for decimation on top of what MDP can downscale,
because decimation can have quality issues.
B-family MDP downscale of 1/4, plus decimation of 1/16 can let
us have a total downscale of 1/64.
Also decimate by 2 (min) if width is greater than what layer mixer
supports and is not handled by the client.
Change-Id: I3b7c4bf321c7561bd98206ad118f4ac1ee2879ae
diff --git a/libqdutils/mdp_version.cpp b/libqdutils/mdp_version.cpp
index cd21490..8da293d 100644
--- a/libqdutils/mdp_version.cpp
+++ b/libqdutils/mdp_version.cpp
@@ -44,8 +44,12 @@
struct fb_fix_screeninfo fb_finfo;
mMdpRev = 0;
- mRGBPipes = mVGPipes = 0;
+ mRGBPipes = 0;
+ mVGPipes = 0;
mDMAPipes = 0;
+ mFeatures = 0;
+ //TODO get this from driver, default for A-fam to 8
+ mMDPDownscale = 8;
if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &fb_finfo) < 0) {
ALOGE("FBIOGET_FSCREENINFO failed");
@@ -80,6 +84,7 @@
mRGBPipes = metadata.data.caps.rgb_pipes;
mVGPipes = metadata.data.caps.vig_pipes;
mDMAPipes = metadata.data.caps.dma_pipes;
+ mFeatures = metadata.data.caps.features;
}
#endif
} else {
@@ -96,7 +101,21 @@
mHasOverlay = false;
if((mMDPVersion >= MDP_V4_0) || (mMDPVersion == MDP_V_UNKNOWN))
mHasOverlay = true;
+ if(mMDPVersion >= MDSS_V5) {
+ //TODO get this from driver
+ mMDPDownscale = 4;
+ }
+
mPanelType = panel_type;
}
+
+bool MDPVersion::supportsDecimation() {
+ return mFeatures & MDP_DECIMATION_EN;
+}
+
+uint32_t MDPVersion::getMaxMDPDownscale() {
+ return mMDPDownscale;
+}
+
}; //namespace qdutils
diff --git a/libqdutils/mdp_version.h b/libqdutils/mdp_version.h
index 98de371..2fca640 100644
--- a/libqdutils/mdp_version.h
+++ b/libqdutils/mdp_version.h
@@ -52,6 +52,10 @@
MDSS_V5 = 500,
};
+enum {
+ MAX_DISPLAY_DIM = 2048,
+};
+
#define MDDI_PANEL '1'
#define EBI2_PANEL '2'
#define LCDC_PANEL '3'
@@ -76,6 +80,8 @@
uint8_t getRGBPipes() { return mRGBPipes; }
uint8_t getVGPipes() { return mVGPipes; }
uint8_t getDMAPipes() { return mDMAPipes; }
+ bool supportsDecimation();
+ uint32_t getMaxMDPDownscale();
private:
int mMDPVersion;
char mPanelType;
@@ -84,6 +90,8 @@
uint8_t mRGBPipes;
uint8_t mVGPipes;
uint8_t mDMAPipes;
+ uint32_t mFeatures;
+ uint32_t mMDPDownscale;
};
}; //namespace qdutils
#endif //INCLUDE_LIBQCOMUTILS_MDPVER