[mutter/wip/rstrode/finish-to-boost] cogl: glFinish before swap buffers for speed boost
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/rstrode/finish-to-boost] cogl: glFinish before swap buffers for speed boost
- Date: Fri, 18 Aug 2017 17:59:22 +0000 (UTC)
commit 4035543d4f73b9f2571c1f2dea67de5d0b1352f0
Author: Ray Strode <rstrode redhat com>
Date: Fri Aug 18 12:50:17 2017 -0400
cogl: glFinish before swap buffers for speed boost
The intel driver will automatically boost the clockspeed
of the GPU when the client calls glFinish and there's
pending drawing.
This commit makes sure to do that call explicitly before
swap buffers to help prevent animation stutter.
cogl/cogl/winsys/cogl-winsys-egl.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/cogl/cogl/winsys/cogl-winsys-egl.c b/cogl/cogl/winsys/cogl-winsys-egl.c
index 8f2bcc7..7dd4a0a 100644
--- a/cogl/cogl/winsys/cogl-winsys-egl.c
+++ b/cogl/cogl/winsys/cogl-winsys-egl.c
@@ -740,6 +740,15 @@ _cogl_winsys_onscreen_bind (CoglOnscreen *onscreen)
bind_onscreen (onscreen);
}
+static void
+_cogl_winsys_wait_for_gpu (CoglOnscreen *onscreen)
+{
+ CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
+ CoglContext *ctx = framebuffer->context;
+
+ ctx->glFinish ();
+}
+
#ifndef EGL_BUFFER_AGE_EXT
#define EGL_BUFFER_AGE_EXT 0x313D
#endif
@@ -820,6 +829,11 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
COGL_FRAMEBUFFER (onscreen),
COGL_FRAMEBUFFER_STATE_BIND);
+ /* Waiting for the GPU here lets the kernel know it should boost
+ * the GPU clock speed
+ */
+ _cogl_winsys_wait_for_gpu (onscreen);
+
if (n_rectangles && egl_renderer->pf_eglSwapBuffersWithDamage)
{
CoglFramebuffer *fb = COGL_FRAMEBUFFER (onscreen);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]