internal void SDLAddEntry(platform_work_queue *Queue, platform_work_queue_callback *Callback, void *Data) { int NewNextEntryToWrite = (Queue->NextEntryToWrite.value + 1 ) % ArrayCount(Queue->Entries); Assert(NewNextEntryToWrite != Queue->NextEntryToRead.value); platform_work_queue_entry *Entry = Queue->Entries + Queue->NextEntryToWrite.value; Entry->Callback = Callback; Entry->Data = Data; ++Queue->CompletionGoal; SDL_CompilerBarrier(); Queue->NextEntryToWrite.value = NewNextEntryToWrite; SDL_SemPost(Queue->Sem); }
LUMIX_ENGINE_API void memoryBarrier() { SDL_CompilerBarrier(); }