From b6a7b2192cdc0fac8e3958cb5cc292506ca94351 Mon Sep 17 00:00:00 2001 From: Lorenzo Torres Date: Wed, 12 Nov 2025 15:15:46 +0100 Subject: [PATCH] Vulkan fixes on Linux --- core/log.h | 2 +- makefile | 2 +- rendering/vk/instance.c | 6 +++++- rendering/vk/renderer.c | 4 ++-- topaz.c | 5 ----- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/core/log.h b/core/log.h index 60439d0..7995cb2 100644 --- a/core/log.h +++ b/core/log.h @@ -14,6 +14,6 @@ #define log_warning(msg) do { printf("\x1b[33m" "[WARN]" "\x1b[0m: %s", (msg)); } while (0) #define log_info(msg) do { printf("\x1b[32m" "[INFO]" "\x1b[0m: %s", (msg)); } while (0) -#define fatal(msg) do { arena_bump(global_arena); arena_deinit(global_arena); log_error(msg); exit(1); } while (0) +#define fatal(msg) do { log_error(msg); exit(1); } while (0) #endif diff --git a/makefile b/makefile index 329eb82..516bfde 100644 --- a/makefile +++ b/makefile @@ -8,8 +8,8 @@ endif SRC:=\ topaz.c\ core/linear.c\ - core/arena.c\ core/vector.c\ + core/arena.c ifeq (${GRAPHICS_BACKEND},gl) SRC += rendering/gl/gl.c\ diff --git a/rendering/vk/instance.c b/rendering/vk/instance.c index 49e5458..2187495 100644 --- a/rendering/vk/instance.c +++ b/rendering/vk/instance.c @@ -67,11 +67,15 @@ void vk_instance_init(struct renderer_context *context) usize extension_count = 0; const char **extension_names = vk_instance_extensions(&extension_count); + u32 flags = 0; +#ifdef PLATFORM_MACOS + flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; +#endif VkInstanceCreateInfo instance_info = { .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pApplicationInfo = &application_info, - .flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR, + .flags = flags, .enabledLayerCount = LAYER_COUNT, .ppEnabledLayerNames = layers, .enabledExtensionCount = extension_count, diff --git a/rendering/vk/renderer.c b/rendering/vk/renderer.c index 5e304ba..2ac4135 100644 --- a/rendering/vk/renderer.c +++ b/rendering/vk/renderer.c @@ -5,13 +5,12 @@ #include "device.h" #include "surface.h" #include "vk.h" -#include "../../core/arena.h" #include #include struct renderer_context *renderer_context_init(RGFW_window *window) { - struct renderer_context *context = (struct renderer_context *)arena_alloc(global_arena, (sizeof(struct renderer_context))); + struct renderer_context *context = (struct renderer_context *)malloc(sizeof(struct renderer_context)); context->window = window; vk_instance_init(context); @@ -27,6 +26,7 @@ void renderer_context_deinit(struct renderer_context *context) vk_surface_deinit(context); vk_device_deinit(context); vk_instance_deinit(context); + free(context); } struct mesh *renderer_build_chunk_mesh(void) diff --git a/topaz.c b/topaz.c index a3084fc..2d4b7ef 100644 --- a/topaz.c +++ b/topaz.c @@ -5,13 +5,8 @@ #include "core/arena.h" #include "types.h" -struct arena_allocator *global_arena = NULL; - i32 main(i32 argc, char **argv) { - global_arena = arena_init(1); u32 result = platform_run(argc, argv); - arena_bump(global_arena); - arena_deinit(global_arena); return result; }