diff options
author | Dandawate Saket <dsaket@ti.com> | 2012-08-24 11:42:38 -0700 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-11-28 21:16:24 +0200 |
commit | 4c1eea2cdbd44b2f39db91fbe078a348d927904b (patch) | |
tree | 599265507e7b21531423b56fb2f6efddd6bb9aa1 | |
parent | b490df5f108eff571fcece0a2f72c46dc121f510 (diff) | |
download | hardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.zip hardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.tar.gz hardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.tar.bz2 |
hwc: Stop queuing compositions to disabled default display
When HDMI is the default screen it may not be attached even
though the UI is active. UI compositions will keep coming but
the DSS manager will have problems if being programmed with
content incompatible with the intermediate display mode.
The last_mode variable is reset to "0" when hdmi panel is
not present. The on_tv variable indicates hdmi is default
panel. So if both are set then we need to make the overlay
number in composition to be "0".
OMAPLFB will skip posting the composition to dss driver when
overlay as "0".
There are still possibly compositions in the DSSCOMP queue
or in flight from PVR services to OMAPLFB so this behavior
doesn't cover all cases - so this should be considered a
work-around.
kernel dependency:
http://review.omapzoom.org/#/c/26982/
Change-Id: Idb6864aa57ebf6c403b91ea5b0e0865467008934
Signed-off-by: Dandawate Saket <dsaket@ti.com>
Signed-off-by: Tony Lofthouse <tony.lofthouse@ti.com>
-rw-r--r-- | hwc/hwc.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1959,6 +1959,14 @@ static int omap4_hwc_prepare(struct hwc_composer_device *dev, hwc_layer_list_t* hwc_dev->ext_ovls = dsscomp->num_ovls - hwc_dev->post2_layers; } + /* + * Whilst the mode of the display is being changed drop compositions to the + * display + */ + if (ext->last_mode == 0 && hwc_dev->on_tv) { + dsscomp->num_ovls = 0; + } + if (debug) { ALOGD("prepare (%d) - %s (comp=%d, poss=%d/%d scaled, RGB=%d,BGR=%d,NV12=%d) (ext=%s%s%ddeg%s %dex/%dmx (last %dex,%din)\n", dsscomp->sync_id, |