From 7c581455247e38ee6992ec75119a7d545c3824e3 Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Mon, 13 Mar 2023 12:21:33 +0100 Subject: [PATCH] [mtl surface] Allow setting swap interval to 0. Note however that vsync needs to be turned off at the OS level for that to work smoothly. Otherwise, we get jittery frame rate with stalls when we run off of drawables (I suppose? should investigate some more). This can be done with Quart Debugger in Additional Tools for XCode. --- examples/canvas/main.c | 4 ++-- src/mtl_surface.m | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/canvas/main.c b/examples/canvas/main.c index 6106c21..cef34b9 100644 --- a/examples/canvas/main.c +++ b/examples/canvas/main.c @@ -193,14 +193,14 @@ int main() mg_set_font(font); mg_set_font_size(12); mg_move_to(50, 600-50); - +/* str8 text = str8_pushf(mem_scratch(), "Milepost vector graphics test program (frame time = %fs, fps = %f)...", frameTime, 1./frameTime); mg_text_outlines(text); mg_fill(); - +*/ printf("Milepost vector graphics test program (frame time = %fs, fps = %f)...\n", frameTime, 1./frameTime); diff --git a/src/mtl_surface.m b/src/mtl_surface.m index 1d9aa56..e963024 100644 --- a/src/mtl_surface.m +++ b/src/mtl_surface.m @@ -120,10 +120,10 @@ void mg_mtl_surface_present(mg_surface_data* interface) void mg_mtl_surface_swap_interval(mg_surface_data* interface, int swap) { mg_mtl_surface* surface = (mg_mtl_surface*)interface; - - //////////////////////////////////////////////////////////////// - //TODO - //////////////////////////////////////////////////////////////// + @autoreleasepool + { + [surface->mtlLayer setDisplaySyncEnabled: (swap ? YES : NO)]; + } } void mg_mtl_surface_set_frame(mg_surface_data* interface, mp_rect frame)