summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGowtham Tammana2017-03-02 16:24:53 -0600
committerGowtham Tammana2017-03-03 16:55:11 -0600
commitaca5e15f639d596a22d0419cbc399c3512bf0bf4 (patch)
tree35220efabd8291eebd35c6a68c6bd820acadd498
parent5e6d0998164eab9afa0a9c93441bbd504749be2a (diff)
downloadhardware-ti-dra7xx-aca5e15f639d596a22d0419cbc399c3512bf0bf4.tar.gz
hardware-ti-dra7xx-aca5e15f639d596a22d0419cbc399c3512bf0bf4.tar.xz
hardware-ti-dra7xx-aca5e15f639d596a22d0419cbc399c3512bf0bf4.zip
hwc: Reset pipe info on each frame
DSS pipe information was being reset only on DSS composition. Reset them irrespective of DSS usage and release any active drm fb on previously active planes. Change-Id: Ic7dad28cbe992eac885fc8ec87aec485743c18fd Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
-rw-r--r--hwcomposer/display.c2
-rw-r--r--hwcomposer/hwc.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/hwcomposer/display.c b/hwcomposer/display.c
index 918a91b..de1aa25 100644
--- a/hwcomposer/display.c
+++ b/hwcomposer/display.c
@@ -1249,7 +1249,7 @@ int update_display(omap_hwc_device_t *ctx, int disp,
1249 1249
1250 drmModeAtomicFree(kdisp->atomic_req); 1250 drmModeAtomicFree(kdisp->atomic_req);
1251 1251
1252 for (i = 0; i < comp->used_ovls; i++) { 1252 for (i = 0; i < DSS_AVAILABLE_PIPES; i++) {
1253 kdisp->fb_bufs[i].next = comp->plane_info[i].fb_info; 1253 kdisp->fb_bufs[i].next = comp->plane_info[i].fb_info;
1254 kdisp->fb_bufs[i].updated = true; 1254 kdisp->fb_bufs[i].updated = true;
1255 } 1255 }
diff --git a/hwcomposer/hwc.c b/hwcomposer/hwc.c
index ef78293..8c064e4 100644
--- a/hwcomposer/hwc.c
+++ b/hwcomposer/hwc.c
@@ -168,9 +168,6 @@ static void hwc_check_dss_composition(omap_hwc_device_t *hwc_dev, int disp)
168 if (!property_get_bool("persist.hwc.dss.comp", 1)) 168 if (!property_get_bool("persist.hwc.dss.comp", 1))
169 return; 169 return;
170 170
171 for (i = 0; i < DSS_AVAILABLE_PIPES; i++)
172 reset_drm_plane(&comp->plane_info[i]);
173
174 if (can_dss_render_all_layers(hwc_dev, disp)) { 171 if (can_dss_render_all_layers(hwc_dev, disp)) {
175 comp->use_dss = true; 172 comp->use_dss = true;
176 comp->use_sgx = false; 173 comp->use_sgx = false;
@@ -230,6 +227,10 @@ static int hwc_prepare_for_display(omap_hwc_device_t *hwc_dev, int disp)
230 display_t *display = hwc_dev->displays[disp]; 227 display_t *display = hwc_dev->displays[disp];
231 hwc_display_contents_1_t *list = display->contents; 228 hwc_display_contents_1_t *list = display->contents;
232 composition_t *comp = &display->composition; 229 composition_t *comp = &display->composition;
230 uint32_t i = 0;
231
232 for (i = 0; i < DSS_AVAILABLE_PIPES; i++)
233 reset_drm_plane(&comp->plane_info[i]);
233 234
234 comp->num_buffers = 0; 235 comp->num_buffers = 0;
235 236