qdutils : Read max mixer width from drivers.

Read the maximum width mixer can output from drivers
and consider this in identifying if dual pipes are required
to support a layer. So far above 2K dimensions we are using dual
pipes, but 8x39 mixer output can be upto 2560. So there is no
need of dual pipes as long as pipe data is less than this limit.
Compare layer/panel resolutions against this limit to deduce
if there is a need for dual pipes or split.

Change-Id: I52e1d28e381327d4f0b00f5ea8547c1e6157313c
This commit is contained in:
Prabhanjan Kandula
2014-05-15 16:48:18 +05:30
committed by Gerrit - the friendly Code Review server
parent e6a8d2aaef
commit 5bae9f5d35
6 changed files with 47 additions and 40 deletions

View File

@@ -78,7 +78,7 @@ namespace qhwc {
bool isValidResolution(hwc_context_t *ctx, uint32_t xres, uint32_t yres)
{
return !((xres > qdutils::MAX_DISPLAY_DIM &&
return !((xres > qdutils::MDPVersion::getInstance().getMaxMixerWidth() &&
!isDisplaySplit(ctx, HWC_DISPLAY_PRIMARY)) ||
(xres < MIN_DISPLAY_XRES || yres < MIN_DISPLAY_YRES));
}
@@ -2034,12 +2034,12 @@ int getLeftSplit(hwc_context_t *ctx, const int& dpy) {
}
bool isDisplaySplit(hwc_context_t* ctx, int dpy) {
if(ctx->dpyAttr[dpy].xres > qdutils::MAX_DISPLAY_DIM) {
qdutils::MDPVersion& mdpHw = qdutils::MDPVersion::getInstance();
if(ctx->dpyAttr[dpy].xres > mdpHw.getMaxMixerWidth()) {
return true;
}
//For testing we could split primary via device tree values
if(dpy == HWC_DISPLAY_PRIMARY &&
qdutils::MDPVersion::getInstance().getRightSplit()) {
if(dpy == HWC_DISPLAY_PRIMARY && mdpHw.getRightSplit()) {
return true;
}
return false;
@@ -2173,7 +2173,8 @@ void BwcPM::setBwc(const hwc_rect_t& crop,
const hwc_rect_t& dst, const int& transform,
ovutils::eMdpFlags& mdpFlags) {
//Target doesnt support Bwc
if(!qdutils::MDPVersion::getInstance().supportsBWC()) {
qdutils::MDPVersion& mdpHw = qdutils::MDPVersion::getInstance();
if(!mdpHw.supportsBWC()) {
return;
}
int src_w = crop.right - crop.left;
@@ -2184,7 +2185,7 @@ void BwcPM::setBwc(const hwc_rect_t& crop,
swap(src_w, src_h);
}
//src width > MAX mixer supported dim
if(src_w > qdutils::MAX_DISPLAY_DIM) {
if(src_w > qdutils::MDPVersion::getInstance().getMaxMixerWidth()) {
return;
}
//Decimation necessary, cannot use BWC. H/W requirement.