зеркало из https://github.com/mozilla/gecko-dev.git
Bug 901978 - Query HWC to check for "R/B swap" and Color layer support. r=ncameron
This commit is contained in:
Родитель
705f278597
Коммит
481ac47355
|
@ -61,6 +61,8 @@ HwcComposer2D::HwcComposer2D()
|
|||
: mMaxLayerCount(0)
|
||||
, mList(nullptr)
|
||||
, mHwc(nullptr)
|
||||
, mColorFill(false)
|
||||
, mRBSwapSupport(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -84,9 +86,20 @@ HwcComposer2D::Init(hwc_display_t dpy, hwc_surface_t sur)
|
|||
mozilla::Framebuffer::GetSize(&screenSize);
|
||||
mScreenRect = nsIntRect(nsIntPoint(0, 0), screenSize);
|
||||
|
||||
#if ANDROID_VERSION >= 18
|
||||
int supported = 0;
|
||||
if (mHwc->query(mHwc, HwcUtils::HWC_COLOR_FILL, &supported) == NO_ERROR) {
|
||||
mColorFill = supported ? true : false;
|
||||
}
|
||||
if (mHwc->query(mHwc, HwcUtils::HWC_FORMAT_RB_SWAP, &supported) == NO_ERROR) {
|
||||
mRBSwapSupport = supported ? true : false;
|
||||
}
|
||||
#else
|
||||
char propValue[PROPERTY_VALUE_MAX];
|
||||
property_get("ro.display.colorfill", propValue, "0");
|
||||
mColorFill = (atoi(propValue) == 1) ? true : false;
|
||||
mRBSwapSupport = true;
|
||||
#endif
|
||||
|
||||
mDpy = dpy;
|
||||
mSur = sur;
|
||||
|
@ -270,6 +283,10 @@ HwcComposer2D::PrepareLayerList(Layer* aLayer,
|
|||
|
||||
if (!fillColor) {
|
||||
if (state.FormatRBSwapped()) {
|
||||
if (!mRBSwapSupport) {
|
||||
LOGD("No R/B swap support in H/W Composer");
|
||||
return false;
|
||||
}
|
||||
hwcLayer.flags |= HwcUtils::HWC_FORMAT_RB_SWAP;
|
||||
}
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ private:
|
|||
nsIntRect mScreenRect;
|
||||
int mMaxLayerCount;
|
||||
bool mColorFill;
|
||||
bool mRBSwapSupport;
|
||||
//Holds all the dynamically allocated RectVectors needed
|
||||
//to render the current frame
|
||||
std::list<RectVector> mVisibleRegions;
|
||||
|
|
Загрузка…
Ссылка в новой задаче