From 80fae1058ffedc5e2ab03abf8de710eaf1e7ecda Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 20 Sep 2023 11:03:39 +0200 Subject: [PATCH] Default to vsync for OpenGL rendering Fixes #3516 (cherry picked from commit fd123b27bdb9a1a263499524bfceb8fe41e40de9) --- internal/backends/winit/renderer/femtovg/glcontext.rs | 8 ++++++++ internal/renderers/skia/opengl_surface.rs | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/internal/backends/winit/renderer/femtovg/glcontext.rs b/internal/backends/winit/renderer/femtovg/glcontext.rs index 795424ad46..5bb8f1972a 100644 --- a/internal/backends/winit/renderer/femtovg/glcontext.rs +++ b/internal/backends/winit/renderer/femtovg/glcontext.rs @@ -179,6 +179,14 @@ impl OpenGLContext { ); } + // Try to default to vsync and ignore if the driver doesn't support it. + surface + .set_swap_interval( + &context, + glutin::surface::SwapInterval::Wait(NonZeroU32::new(1).unwrap()), + ) + .ok(); + Ok((window, Self { context, surface })) } } diff --git a/internal/renderers/skia/opengl_surface.rs b/internal/renderers/skia/opengl_surface.rs index fb9584fbaa..ed31202765 100644 --- a/internal/renderers/skia/opengl_surface.rs +++ b/internal/renderers/skia/opengl_surface.rs @@ -340,6 +340,14 @@ impl OpenGLSurface { .into()); } + // Try to default to vsync and ignore if the driver doesn't support it. + surface + .set_swap_interval( + &context, + glutin::surface::SwapInterval::Wait(NonZeroU32::new(1).unwrap()), + ) + .ok(); + Ok((context, surface)) }