meta-raspberrypi/recipes-graphics/userland/files/0010-Fix-for-framerate-with-nested-composition.patch
Khem Raj 909a962fe1 userland: Update to 20200316 snapshot
- Refresh patches

- userland now needs to create symlinks for egl.pc,glesv2.pc and vg.pc
  when vc4 is not used

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-04-03 17:34:07 +01:00

58 lines
2.4 KiB
Diff

From 0af26805c35c6a600a13ed106bbc7cf85a37ce66 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 29 Mar 2016 20:38:30 -0700
Subject: [PATCH] Fix for framerate with nested composition
frame rate appears irregular and lower than expected when using nested composition.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/egl/egl_client.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
index 03fe67b..13a110c 100644
--- a/interface/khronos/egl/egl_client.c
+++ b/interface/khronos/egl/egl_client.c
@@ -2342,6 +2342,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
surface->back_wl_buffer = buffer;
}
+ glFlush();
+ glFinish();
+
RPC_CALL7(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID_V2,
@@ -2353,6 +2356,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
RPC_UINT(khrn_platform_get_window_position(surface->win)),
RPC_INT(surface->back_wl_buffer->resource));
+ RPC_FLUSH(thread);
+
surface->front_wl_buffer->in_use = 1;
wl_surface_attach(wl_egl_window->wl_surface,
surface->front_wl_buffer->wl_buffer,
@@ -2360,11 +2365,13 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
wl_surface_damage(wl_egl_window->wl_surface, 0, 0,
surface->width, surface->height);
wl_surface_commit(wl_egl_window->wl_surface);
+ wl_display_flush(wl_display);
while(ret != -1 && surface->back_wl_buffer->in_use)
ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
} else
#endif
+ {
RPC_CALL6(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID,
@@ -2376,6 +2383,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
RPC_UINT(khrn_platform_get_window_position(surface->win)));
RPC_FLUSH(thread);
+ }
#ifdef ANDROID
CLIENT_UNLOCK();