fix external displays
we were not calling eglSwapBuffers() on external displays because they can't use HWC which caused us to think they didn't have GLES composition. Change-Id: I6cef4ae40b138412d2e6f2acda33c9d222b03a83
This commit is contained in:
parent
41cb1b5f67
commit
d870703d55
@ -188,14 +188,21 @@ void DisplayDevice::swapBuffers(HWComposer& hwc) const {
|
||||
// no HWC, we call eglSwapBuffers()
|
||||
eglSwapBuffers(mDisplay, mSurface);
|
||||
} else {
|
||||
// We have a valid HWC, but not all displays can use it, in particular
|
||||
// the virtual displays are on their own.
|
||||
// TODO: HWC 1.2 will allow virtual displays
|
||||
if (mType >= DisplayDevice::DISPLAY_VIRTUAL) {
|
||||
// always call eglSwapBuffers() for virtual displays
|
||||
eglSwapBuffers(mDisplay, mSurface);
|
||||
} else if (hwc.supportsFramebufferTarget()) {
|
||||
// as of hwc 1.1 we always call eglSwapBuffers if we have some
|
||||
// GLES layers
|
||||
if (hwc.hasGlesComposition(mType)) {
|
||||
if (hwc.supportsFramebufferTarget() ||
|
||||
mType >= DisplayDevice::DISPLAY_VIRTUAL) {
|
||||
// as of hwc 1.1 we always call eglSwapBuffers, however,
|
||||
// on older versions of HWC, we need to call it only on
|
||||
// virtual displays
|
||||
eglSwapBuffers(mDisplay, mSurface);
|
||||
}
|
||||
} else {
|
||||
// HWC doesn't have the framebuffer target, we don't call
|
||||
// eglSwapBuffers(), since this is handled by HWComposer::commit().
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user