From 2d695c4d46a41f446097b52d3869355a1e078ff5 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 5 May 2025 15:49:13 +0900 Subject: [PATCH] example: disable vsync of sw window for stability. SDL + software engine doesn't need the vsync? Observed the rendering performance is noticeably unstable on Intel Arc chipsets with certain window sizes (ie 800x800) when VSync is enabled on software-rendered windows. This might be a workaround, or it could be an issue with the driver or SDL. Either way, the SDL + software engine doesn't need VSync. --- examples/Example.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/examples/Example.h b/examples/Example.h index 9ea003f7..909a60ca 100644 --- a/examples/Example.h +++ b/examples/Example.h @@ -283,6 +283,8 @@ struct Window struct SwWindow : Window { + SDL_Renderer* renderer = nullptr; + SwWindow(Example* example, uint32_t width, uint32_t height, uint32_t threadsCnt) : Window(example, width, height, threadsCnt) { if (!initialized) return; @@ -296,9 +298,17 @@ struct SwWindow : Window return; } + //VSync has been disabled. Remove this line if you need VSync enabled. + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC); + resize(); } + ~SwWindow() + { + if (renderer) SDL_DestroyRenderer(renderer); + } + void resize() override { auto surface = SDL_GetWindowSurface(window);