Merge "Treat composition frames with no layers as using GLES composition" into klp-dev
This commit is contained in:
commit
93573e91c2
@ -611,6 +611,10 @@ status_t HWComposer::prepare() {
|
|||||||
// here we're just making sure that "skip" layers are set
|
// here we're just making sure that "skip" layers are set
|
||||||
// to HWC_FRAMEBUFFER and we're also counting how many layers
|
// to HWC_FRAMEBUFFER and we're also counting how many layers
|
||||||
// we have of each type.
|
// we have of each type.
|
||||||
|
//
|
||||||
|
// If there are no window layers, we treat the display has having FB
|
||||||
|
// composition, because SurfaceFlinger will use GLES to draw the
|
||||||
|
// wormhole region.
|
||||||
for (size_t i=0 ; i<mNumDisplays ; i++) {
|
for (size_t i=0 ; i<mNumDisplays ; i++) {
|
||||||
DisplayData& disp(mDisplayData[i]);
|
DisplayData& disp(mDisplayData[i]);
|
||||||
disp.hasFbComp = false;
|
disp.hasFbComp = false;
|
||||||
@ -632,6 +636,11 @@ status_t HWComposer::prepare() {
|
|||||||
disp.hasOvComp = true;
|
disp.hasOvComp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (disp.list->numHwLayers == (disp.framebufferTarget ? 1 : 0)) {
|
||||||
|
disp.hasFbComp = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
disp.hasFbComp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1524,7 +1524,7 @@ void SurfaceFlinger::doComposeSurfaces(const sp<const DisplayDevice>& hw, const
|
|||||||
HWComposer::LayerListIterator cur = hwc.begin(id);
|
HWComposer::LayerListIterator cur = hwc.begin(id);
|
||||||
const HWComposer::LayerListIterator end = hwc.end(id);
|
const HWComposer::LayerListIterator end = hwc.end(id);
|
||||||
|
|
||||||
const bool hasGlesComposition = hwc.hasGlesComposition(id) || (cur==end);
|
bool hasGlesComposition = hwc.hasGlesComposition(id);
|
||||||
if (hasGlesComposition) {
|
if (hasGlesComposition) {
|
||||||
if (!hw->makeCurrent(mEGLDisplay, mEGLContext)) {
|
if (!hw->makeCurrent(mEGLDisplay, mEGLContext)) {
|
||||||
ALOGW("DisplayDevice::makeCurrent failed. Aborting surface composition for display %s",
|
ALOGW("DisplayDevice::makeCurrent failed. Aborting surface composition for display %s",
|
||||||
|
Loading…
Reference in New Issue
Block a user