From 6d596adcdcc76843c6759d24173660265512a46a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 30 Jan 2025 11:30:49 +0000 Subject: [PATCH] Add sdl3_atomic.odin --- vendor/sdl3/sdl3__foreign.odin | 6 +++++ vendor/sdl3/sdl3_asyncio.odin | 2 +- vendor/sdl3/sdl3_atomic.odin | 42 ++++++++++++++++++++++++++++++++++ vendor/sdl3/sdl3_stdinc.odin | 5 ---- 4 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 vendor/sdl3/sdl3__foreign.odin create mode 100644 vendor/sdl3/sdl3_atomic.odin diff --git a/vendor/sdl3/sdl3__foreign.odin b/vendor/sdl3/sdl3__foreign.odin new file mode 100644 index 000000000..863a37329 --- /dev/null +++ b/vendor/sdl3/sdl3__foreign.odin @@ -0,0 +1,6 @@ +package sdl3 + +@(export) +foreign import lib { + "SDL3.lib" +} \ No newline at end of file diff --git a/vendor/sdl3/sdl3_asyncio.odin b/vendor/sdl3/sdl3_asyncio.odin index c62700b9b..b0a497cf7 100644 --- a/vendor/sdl3/sdl3_asyncio.odin +++ b/vendor/sdl3/sdl3_asyncio.odin @@ -29,7 +29,7 @@ AsyncIOOutcome :: struct { AsyncIOQueue :: struct {} -@(default_calling_convention="c", link_prefix="SDL_") +@(default_calling_convention="c", link_prefix="SDL_", require_results) foreign lib { AsyncIOFromFile :: proc(file: cstring, mode: cstring) -> ^AsyncIO --- GetAsyncIOSize :: proc(asyncio: ^AsyncIO) -> Sint64 --- diff --git a/vendor/sdl3/sdl3_atomic.odin b/vendor/sdl3/sdl3_atomic.odin new file mode 100644 index 000000000..178a44a5b --- /dev/null +++ b/vendor/sdl3/sdl3_atomic.odin @@ -0,0 +1,42 @@ +package sdl3 + +import "base:intrinsics" +import "core:c" + +SpinLock :: distinct c.int + +@(default_calling_convention="c", link_prefix="SDL_") +foreign lib { + @(require_results) + TryLockSpinlock :: proc(lock: ^SpinLock) -> bool --- + LockSpinlock :: proc(lock: ^SpinLock) --- + UnlockSpinlock :: proc(lock: ^SpinLock) --- + + + MemoryBarrierReleaseFunction :: proc() --- + MemoryBarrierAcquireFunction :: proc() --- +} + +MemoryBarrierRelease :: MemoryBarrierReleaseFunction +MemoryBarrierAcquire :: MemoryBarrierAcquireFunction + +CPUPauseInstruction :: intrinsics.cpu_relax + + +AtomicInt :: distinct c.int +AtomicU32 :: distinct Uint32 + +@(default_calling_convention="c", link_prefix="SDL_", require_results) +foreign lib { + CompareAndSwapAtomicInt :: proc(a: ^AtomicInt, oldval, newval: c.int) -> bool --- + SetAtomicInt :: proc(a: ^AtomicInt, v: c.int) -> int --- + GetAtomicInt :: proc(a: ^AtomicInt) -> int --- + AddAtomicInt :: proc(a: ^AtomicInt, v: c.int) -> int --- + + CompareAndSwapAtomicU32 :: proc(a: ^AtomicU32, oldval, newval: Uint32) -> bool --- + SetAtomicU32 :: proc(a: ^AtomicU32, v: Uint32) -> Uint32 --- + GetAtomicU32 :: proc(a: ^AtomicU32) -> Uint32 --- + CompareAndSwapAtomicPointer :: proc(a: ^rawptr, oldval, newval: rawptr) -> bool --- + SetAtomicPointer :: proc(a: ^rawptr, v: rawptr) -> rawptr --- + GetAtomicPointer :: proc(a: ^rawptr) -> rawptr --- +} \ No newline at end of file diff --git a/vendor/sdl3/sdl3_stdinc.odin b/vendor/sdl3/sdl3_stdinc.odin index 5a8bf385d..7dd445c61 100644 --- a/vendor/sdl3/sdl3_stdinc.odin +++ b/vendor/sdl3/sdl3_stdinc.odin @@ -7,11 +7,6 @@ import "core:c" #assert(size_of(c.int) == size_of(b32)) #assert(size_of(c.int) == size_of(rune)) -foreign import lib_ { - "SDL3.lib" -} -lib :: lib_ - SIZE_MAX :: 1<<(8*size_of(uint)) - 1