summaryrefslogtreecommitdiffstats
path: root/hwc
diff options
context:
space:
mode:
authorLajos Molnar <molnar@ti.com>2011-12-12 12:34:53 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-12-12 12:34:53 -0800
commit2bb4b2916471bf8b2ff5693a52c52e223a92edc6 (patch)
treea326d254625eb3e70b67c81a90bd9b582622bcf9 /hwc
parent42e67cd12c61239ec153888b77c9c1eb2398f914 (diff)
parente10ef2cd8f619915d9638b5b5178ceae23520290 (diff)
downloadhardware_ti_omap4xxx-2bb4b2916471bf8b2ff5693a52c52e223a92edc6.zip
hardware_ti_omap4xxx-2bb4b2916471bf8b2ff5693a52c52e223a92edc6.tar.gz
hardware_ti_omap4xxx-2bb4b2916471bf8b2ff5693a52c52e223a92edc6.tar.bz2
am e10ef2cd: am b81fb68c: hwc: simplify layer hint setting
* commit 'e10ef2cd8f619915d9638b5b5178ceae23520290': hwc: simplify layer hint setting
Diffstat (limited to 'hwc')
-rw-r--r--hwc/hwc.c36
1 files changed, 9 insertions, 27 deletions
diff --git a/hwc/hwc.c b/hwc/hwc.c
index b610b96..aef6add 100644
--- a/hwc/hwc.c
+++ b/hwc/hwc.c
@@ -1093,6 +1093,7 @@ static int omap4_hwc_prepare(struct hwc_composer_device *dev, hwc_layer_list_t*
/* set up if DSS layers */
unsigned int mem_used = 0;
+ hwc_dev->ovls_blending = 0;
for (i = 0; list && i < list->numHwLayers; i++) {
hwc_layer_t *layer = &list->hwLayers[i];
IMG_native_handle_t *handle = (IMG_native_handle_t *)layer->handle;
@@ -1110,6 +1111,14 @@ static int omap4_hwc_prepare(struct hwc_composer_device *dev, hwc_layer_list_t*
/* render via DSS overlay */
mem_used += mem1d(handle);
layer->compositionType = HWC_OVERLAY;
+
+ /* clear FB above all opaque layers if rendering via SGX */
+ if (hwc_dev->use_sgx && !is_BLENDED(layer))
+ layer->hints |= HWC_HINT_CLEAR_FB;
+ /* see if any of the (non-backmost) overlays are doing blending */
+ else if (is_BLENDED(layer) && i > 0)
+ hwc_dev->ovls_blending = 1;
+
hwc_dev->buffers[dsscomp->num_ovls] = layer->handle;
omap4_hwc_setup_layer(hwc_dev,
@@ -1156,33 +1165,6 @@ static int omap4_hwc_prepare(struct hwc_composer_device *dev, hwc_layer_list_t*
}
}
- /* clear FB above all opaque layers if rendering via SGX */
- if (hwc_dev->use_sgx) {
- for (i = 0; list && i < list->numHwLayers; i++) {
- hwc_layer_t *layer = &list->hwLayers[i];
- IMG_native_handle_t *handle = (IMG_native_handle_t *)layer->handle;
- if (layer->compositionType == HWC_FRAMEBUFFER)
- continue;
- if ((layer->flags & HWC_SKIP_LAYER) || !layer->handle)
- continue;
- if (!is_BLENDED(layer))
- layer->hints |= HWC_HINT_CLEAR_FB;
- }
- }
-
- /* see if any of the (non-backmost) overlays are doing blending */
- hwc_dev->ovls_blending = 0;
- for (i = 1; list && i < list->numHwLayers; i++) {
- hwc_layer_t *layer = &list->hwLayers[i];
- IMG_native_handle_t *handle = (IMG_native_handle_t *)layer->handle;
- if (layer->compositionType == HWC_FRAMEBUFFER)
- continue;
- if ((layer->flags & HWC_SKIP_LAYER) || !layer->handle)
- continue;
- if (is_BLENDED(layer))
- hwc_dev->ovls_blending = 1;
- }
-
/* if scaling GFX (e.g. only 1 scaled surface) use a VID pipe */
if (scaled_gfx)
dsscomp->ovls[0].cfg.ix = dsscomp->num_ovls;