Merge "liboverlay: Rotator-assisted MDP downscaling of videos."
diff --git a/libgralloc/framebuffer.cpp b/libgralloc/framebuffer.cpp
index 5293ca9..961d2b6 100644
--- a/libgralloc/framebuffer.cpp
+++ b/libgralloc/framebuffer.cpp
@@ -84,20 +84,6 @@
return 0;
}
-static int fb_setUpdateRect(struct framebuffer_device_t* dev,
- int l, int t, int w, int h)
-{
- if (((w|h) <= 0) || ((l|t)<0))
- return -EINVAL;
- fb_context_t* ctx = (fb_context_t*)dev;
- private_module_t* m = reinterpret_cast<private_module_t*>(
- dev->common.module);
- m->info.reserved[0] = 0x54445055; // "UPDT";
- m->info.reserved[1] = (uint16_t)l | ((uint32_t)t << 16);
- m->info.reserved[2] = (uint16_t)(l+w) | ((uint32_t)(t+h) << 16);
- return 0;
-}
-
static int fb_post(struct framebuffer_device_t* dev, buffer_handle_t buffer)
{
@@ -421,11 +407,7 @@
const_cast<int&>(dev->device.maxSwapInterval) =
PRIV_MAX_SWAP_INTERVAL;
const_cast<int&>(dev->device.numFramebuffers) = m->numBuffers;
- if (m->finfo.reserved[0] == 0x5444 &&
- m->finfo.reserved[1] == 0x5055) {
- dev->device.setUpdateRect = fb_setUpdateRect;
- ALOGD("UPDATE_ON_DEMAND supported");
- }
+ dev->device.setUpdateRect = 0;
*device = &dev->device.common;
}
diff --git a/libhwcomposer/hwc.cpp b/libhwcomposer/hwc.cpp
index ba84580..84b1100 100644
--- a/libhwcomposer/hwc.cpp
+++ b/libhwcomposer/hwc.cpp
@@ -125,7 +125,6 @@
hwc_display_contents_1_t *list) {
hwc_context_t* ctx = (hwc_context_t*)(dev);
const int dpy = HWC_DISPLAY_PRIMARY;
-
if (LIKELY(list && list->numHwLayers > 1) &&
ctx->dpyAttr[dpy].isActive) {
@@ -306,14 +305,14 @@
int ret = 0;
const int dpy = HWC_DISPLAY_PRIMARY;
- if (LIKELY(list && list->numHwLayers > 1) &&
- ctx->dpyAttr[dpy].isActive) {
+ if (LIKELY(list) && ctx->dpyAttr[dpy].isActive) {
uint32_t last = list->numHwLayers - 1;
hwc_layer_1_t *fbLayer = &list->hwLayers[last];
int fd = -1; //FenceFD from the Copybit(valid in async mode)
if(ctx->mCopyBit[dpy])
ctx->mCopyBit[dpy]->draw(ctx, list, dpy, &fd);
- hwc_sync(ctx, list, dpy, fd);
+ if(list->numHwLayers > 1)
+ hwc_sync(ctx, list, dpy, fd);
if (!VideoOverlay::draw(ctx, list, dpy)) {
ALOGE("%s: VideoOverlay::draw fail!", __FUNCTION__);
ret = -1;
@@ -327,7 +326,8 @@
//always. Last layer is always FB
private_handle_t *hnd = (private_handle_t *)fbLayer->handle;
if(fbLayer->compositionType == HWC_FRAMEBUFFER_TARGET && hnd) {
- if(!(fbLayer->flags & HWC_SKIP_LAYER)) {
+ if(!(fbLayer->flags & HWC_SKIP_LAYER) &&
+ (list->numHwLayers > 1)) {
if (!ctx->mFBUpdate[dpy]->draw(ctx, fbLayer)) {
ALOGE("%s: FBUpdate::draw fail!", __FUNCTION__);
ret = -1;
@@ -349,8 +349,7 @@
Locker::Autolock _l(ctx->mExtSetLock);
- if (LIKELY(list && list->numHwLayers > 1) &&
- ctx->dpyAttr[dpy].isActive &&
+ if (LIKELY(list) && ctx->dpyAttr[dpy].isActive &&
ctx->dpyAttr[dpy].connected) {
uint32_t last = list->numHwLayers - 1;
hwc_layer_1_t *fbLayer = &list->hwLayers[last];
@@ -358,7 +357,8 @@
if(ctx->mCopyBit[dpy])
ctx->mCopyBit[dpy]->draw(ctx, list, dpy, &fd);
- hwc_sync(ctx, list, dpy, fd);
+ if(list->numHwLayers > 1)
+ hwc_sync(ctx, list, dpy, fd);
if (!VideoOverlay::draw(ctx, list, dpy)) {
ALOGE("%s: VideoOverlay::draw fail!", __FUNCTION__);
@@ -367,7 +367,8 @@
private_handle_t *hnd = (private_handle_t *)fbLayer->handle;
if(fbLayer->compositionType == HWC_FRAMEBUFFER_TARGET &&
- !(fbLayer->flags & HWC_SKIP_LAYER) && hnd) {
+ !(fbLayer->flags & HWC_SKIP_LAYER) && hnd &&
+ (list->numHwLayers > 1)) {
if (!ctx->mFBUpdate[dpy]->draw(ctx, fbLayer)) {
ALOGE("%s: FBUpdate::draw fail!", __FUNCTION__);
ret = -1;