aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNataraj Deshpande <[email protected]>2020-01-10 08:58:00 -0800
committerMarge Bot <[email protected]>2020-01-15 09:42:08 +0000
commitbe08e6a4496aad219df1fd829fca3e4f7b322538 (patch)
treec7eb3716077b407d5960b3f2f5a115ddaaaf127b
parenta01410549807cc4db6fc5fe10c47649cde1fe3fc (diff)
egl/android: Restrict minimum triple buffering for android color_buffers
The patch restricts triple buffering as minimum at driver for android color_buffers in order to fix onscreen performance hit for T-Rex and Manhattan. v2: Update min_buffer check condition (Tapani Pälli) v3: further code cleanup (Eric Engestrom) Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2332 Fixes: 0661c357c60 ("egl/android: Update color_buffers querying for buffer age") Signed-off-by: Nataraj Deshpande <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3384> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3384>
-rw-r--r--src/egl/drivers/dri2/platform_android.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
index 6ed0b416cf8..d1b50a3fa72 100644
--- a/src/egl/drivers/dri2/platform_android.c
+++ b/src/egl/drivers/dri2/platform_android.c
@@ -375,6 +375,7 @@ droid_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
if (type == EGL_WINDOW_BIT) {
int format;
int buffer_count;
+ const int min_buffers = 3;
if (window->common.magic != ANDROID_NATIVE_WINDOW_MAGIC) {
_eglError(EGL_BAD_NATIVE_WINDOW, "droid_create_surface");
@@ -393,17 +394,20 @@ droid_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
_eglError(EGL_BAD_NATIVE_WINDOW, "droid_create_surface");
goto cleanup_surface;
}
- if (native_window_set_buffer_count(window, buffer_count+1)) {
+
+ if (buffer_count < min_buffers)
+ buffer_count = min_buffers;
+ if (native_window_set_buffer_count(window, buffer_count)) {
_eglError(EGL_BAD_NATIVE_WINDOW, "droid_create_surface");
goto cleanup_surface;
}
- dri2_surf->color_buffers = calloc(buffer_count+1,
+ dri2_surf->color_buffers = calloc(buffer_count,
sizeof(*dri2_surf->color_buffers));
if (!dri2_surf->color_buffers) {
_eglError(EGL_BAD_ALLOC, "droid_create_surface");
goto cleanup_surface;
}
- dri2_surf->color_buffers_count = buffer_count+1;
+ dri2_surf->color_buffers_count = buffer_count;
if (format != dri2_conf->base.NativeVisualID) {
_eglLog(_EGL_WARNING, "Native format mismatch: 0x%x != 0x%x",