From 27b9405eeafd599ae7949b0b5adc68ea48990d05 Mon Sep 17 00:00:00 2001 From: Greg Wells Date: Fri, 30 May 2025 11:21:49 -0400 Subject: [PATCH] kinda a metal semaphore class --- .../metal/src/core/sync/semaphore/metal_semaphore.h | 7 +++++++ .../metal/src/core/sync/semaphore/metal_semaphore.m | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 rendering_api/metal/src/core/sync/semaphore/metal_semaphore.h create mode 100644 rendering_api/metal/src/core/sync/semaphore/metal_semaphore.m diff --git a/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.h b/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.h new file mode 100644 index 0000000..f359699 --- /dev/null +++ b/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.h @@ -0,0 +1,7 @@ +#pragma once +#include "core/sync/semaphore/gryphn_semaphore.h" +#import + +typedef struct gnPlatformSemaphore_t { + id event; +} gnPlatformSemaphore; diff --git a/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.m b/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.m new file mode 100644 index 0000000..342e73a --- /dev/null +++ b/rendering_api/metal/src/core/sync/semaphore/metal_semaphore.m @@ -0,0 +1,13 @@ +#include "metal_semaphore.h" +#include "core/devices/metal_output_devices.h" + +gnReturnCode gnCreateSemaphoreFn(struct gnSemaphore_t* semaphore, struct gnOutputDevice_t* device) { + semaphore->semaphore = malloc(sizeof(gnPlatformSemaphore)); + semaphore->semaphore->event = [device->outputDevice->device newEvent]; + + return GN_SUCCESS; +} +void gnDestroySemaphoreFn(struct gnSemaphore_t* semaphore) { + [semaphore->semaphore->event release]; + free(semaphore->semaphore); +}