From e8147e0658a2ae8d93f30908ab3e11e76f81b5e2 Mon Sep 17 00:00:00 2001 From: Daniel Kwan Date: Wed, 9 Jun 2021 01:11:11 -0400 Subject: [PATCH 1/2] Set GL_MaxFramesAllowed=1 instead of GL_YIELD=usleep --- src/backend/driver.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/driver.c b/src/backend/driver.c index 34406bf..a41d2fd 100644 --- a/src/backend/driver.c +++ b/src/backend/driver.c @@ -15,7 +15,8 @@ /// Apply driver specified global workarounds. It's safe to call this multiple times. void apply_driver_workarounds(struct session *ps, enum driver driver) { if (driver & DRIVER_NVIDIA) { - setenv("__GL_YIELD", "usleep", true); + // setenv("__GL_YIELD", "usleep", true); + setenv("__GL_MaxFramesAllowed", "1", true); ps->o.xrender_sync_fence = true; } } From 976d0740fd083a0234cd7fdccdb8c2e86a39a479 Mon Sep 17 00:00:00 2001 From: Daniel Kwan Date: Sat, 3 Jul 2021 20:31:09 -0400 Subject: [PATCH 2/2] Partially revert commit 0efdb6c; use glFinish only for non-NVIDIA --- src/backend/gl/glx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/gl/glx.c b/src/backend/gl/glx.c index 6cccaa9..1397d19 100644 --- a/src/backend/gl/glx.c +++ b/src/backend/gl/glx.c @@ -467,7 +467,9 @@ static void glx_present(backend_t *base, const region_t *region attr_unused) { struct _glx_data *gd = (void *)base; gl_present(base, region); glXSwapBuffers(gd->display, gd->target_win); - glFinish(); + if (!gd->gl.is_nvidia) { + glFinish(); + } } static int glx_buffer_age(backend_t *base) {