android_hardware_qcom_display/libgralloc
Alex Naidis 24176c9dff
hwcomposer: Fix regression in hwc_sync
Hwc_sync is in the hotpath of display
rendering and gets called every ~17ms
during active rerendering.

Reading the property "debug.egl.swapinterval"
on every execution of hwc_sync causes a major
regression where the execution of hwc_sync
is much slower than it can be.

Doing I/O in hotpaths is inacceptable
and can cause an unnecessary constant
I/O load, additionally to the slowdown
in display rendering which was caused
in this case.

As solution, we condition this debugging
feature with "DISPLAY_DEBUG_SWAPINTERVAL",
so it can be enabled when explicitly needed.

Gralloc is not directly affected by the regression,
it was adjusted to match the conditioning
of the swapinterval debugging feature.

The HALs of msm8084,msm8226,msm8909,msm8960 and
msm8994 are affected by the regression and
get patched by this patch. Newer HALs
are not affected.

The stats contained in this patch were
collected using a Nextbit Robin (MSM8992),
which uses the msm8994 HAL.

Test: Manual testing for proper conditioning.
Test: Running full CTS suite without DISPLAY_DEBUG_SWAPINTERVAL set.

Change-Id: If08595d37ac0c1a19edd8d296289a21c9f95512a
Signed-off-by: Alex Naidis <alex.naidis@linux.com>
2017-06-20 14:16:22 +03:00
..
Android.mk Revert "gralloc: allow forcing old pixel alignment" 2016-05-13 11:13:10 -07:00
MODULE_LICENSE_APACHE2 initial GL libraries for msm8960 2012-06-11 23:50:46 -07:00
NOTICE initial GL libraries for msm8960 2012-06-11 23:50:46 -07:00
alloc_controller.cpp gralloc: Fix gralloc protected allocations 2016-11-03 19:45:47 +02:00
alloc_controller.h hwc: Fix klockwork errors 2014-05-27 12:59:05 +05:30
fb_priv.h display: Remove framebuffer HAL usage 2013-03-18 16:38:54 -04:00
framebuffer.cpp hwcomposer: Fix regression in hwc_sync 2017-06-20 14:16:22 +03:00
gpu.cpp gralloc: Fix gralloc protected allocations 2016-11-03 19:45:47 +02:00
gpu.h gralloc: Enable framebuffer memory mapping. 2013-04-11 13:16:06 -04:00
gr.h Revert "gralloc: Use adreno_utils api for NV21 and NV12 alignment" 2016-03-09 11:18:50 +05:30
gralloc.cpp display: Fix issues when building with Clang 2015-11-01 05:04:43 -08:00
gralloc_priv.h gralloc: Add a private flag for INTERNAL only 2015-10-20 00:15:00 -07:00
ionalloc.cpp gralloc: use new API for Ion handles 2013-12-10 12:10:55 -08:00
ionalloc.h display: Use cache invalidate and clean correctly 2013-03-25 20:58:54 -04:00
mapper.cpp gralloc-8974: Add workaround for GRALLOC_PERFORM_GET_CUSTOM_STRIDE issue 2015-11-04 14:49:02 -08:00
memalloc.h display: Use cache invalidate and clean correctly 2013-03-25 20:58:54 -04:00