Commit Graph

7385 Commits

Author SHA1 Message Date
SirLynix fe00b3fd16 Build: Don't link with system-installed libs on CI
Same but less aggressive
2024-02-09 16:57:21 +01:00
SirLynix bc6521cb7c Build: Don't link with system-installed libs on CI 2024-02-09 14:39:55 +01:00
SirLynix 89c08d3925 OpenGLRenderer/ContextObject: Fix destruction after move 2024-02-09 13:48:19 +01:00
SirLynix 23645fc398 Widgets: Add SimpleLabelWidget
A simpler alternative to LabelWidget
2024-02-08 00:24:31 +01:00
SirLynix f0b4674039 Plugins/Assimp: Don't use Matrix4f::Transform for a scale 2024-02-07 15:56:58 +01:00
SirLynix 18b6d14670 Graphics/Model: Add mesh callback parameter
It allows to query/save/update the mesh before it's used to create a GraphicalMesh and disposed of
2024-02-07 15:56:16 +01:00
SirLynix 5a46ebda36 Graphics/PropertyHandler: Warn if an option if set but doesn't exist in material 2024-02-07 15:55:14 +01:00
SirLynix 37e90ecea9 Graphics/Materials: Fix normal maps for PhongMaterial 2024-02-07 15:53:09 +01:00
SirLynix 8a5e5f7643 Core/PluginLoader: Add [[nodiscard]] qualifier to Load function 2024-02-07 15:51:07 +01:00
SirLynix b889c992ea VulkanRenderer/Loader: Don't rely on std::filesystem::path constructor taking a const char* 2024-02-06 17:06:39 +01:00
SirLynix 993722ed0b Fix unity build compilation 2024-02-06 13:50:51 +01:00
SirLynix d3f7e20473 Widgets/TextAreaWidget: Fix clipboard paste cursor with non-ascii chars 2024-02-06 13:28:08 +01:00
SirLynix 99952db736 Core/TaskScheduler: Fix shutdown data-race 2024-02-06 13:27:39 +01:00
SirLynix 17b6449472 UnitTests/Process: Increase waiting duration
GitHub CI seems very slow at this
2024-02-06 11:09:17 +01:00
SirLynix 67f78b25f2 Update EnTT version to 3.13.1 2024-02-06 11:08:38 +01:00
SirLynix ff4277e97f CI: Save asan packages in a different cache 2024-02-05 16:56:00 +01:00
SirLynix bcd64a0ad0 Core/TaskScheduler: Remove tsan workaround 2024-02-05 16:53:00 +01:00
SirLynix a4827a99a0 Core/TaskScheduler: Make implementation private 2024-02-05 15:59:45 +01:00
SirLynix 3eae055d3a Core/TaskScheduler: Replace atomic queue from wsq to concurrentqueue
This is because wsq makes stealing work by stealing from the opposite end of the queue which will be a problem in the long term
2024-02-05 15:08:36 +01:00
SirLynix a30f64ef49 Core/TaskScheduler: Increase shutdown performance
Tell all threads to exit and join them all at once instead of one by one
2024-02-04 13:46:06 +01:00
SirLynix b69c0bb444 Core/TaskScheduler: Fix deadlock when exiting
If a worker was not given a task, it could happen to ignore the exit signal (for example if it's set before the worker started, causing it to clear the notifier boolean and test it again before checking m_running)
2024-02-04 13:43:55 +01:00
SirLynix 44617bd14d Core/TaskScheduler: Another try to remove race condition 2024-02-04 13:04:29 +01:00
SirLynix c148bc2851 UnitTests: Increase task scheduler wait duration
it seems GitHub CI is pretty bad at scheduling threads
2024-02-03 23:24:41 +01:00
SirLynix 3a612d8655 Minor fixes 2024-02-03 22:56:58 +01:00
SirLynix 19935a2b07 CI: Remove macOS temporary fix against xmake issue 2024-02-03 22:56:48 +01:00
SirLynix aca5a7a00d CI: Fix msys2 package name 2024-02-03 22:52:08 +01:00
SirLynix e3ad9be759 Core/TaskScheduler: Fix work ending condition
Use remaining task count instead of idle worker count, this avoids a race condition where a worker signals idle after being tasked with a new job
2024-02-03 22:40:12 +01:00
SirLynix 59e172c2ee CI: Add static job 2024-02-03 22:35:55 +01:00
SirLynix 91c9706016 Build: Fix OpenGL/Vulkan packages in static/embedded_renderer
Build: Fix circular dependencies when compiling static

Update xmake.lua
2024-02-03 22:35:55 +01:00
SirLynix 8b9b47ba59 Core/TaskScheduler: Fix WaitForTasks returning before all tasks are executed
This could happen because a worker only counts as active when starting a job, but after acquiring one.

So one possibility was that :
1. All workers except W1 and W2 are idle
2. W1 is about to notify as idle, as W2 got a task (but did not notify as active yet)
3. W1 notifies as idle, idle count == worker count -> wake main thread
4. W2 didn't run its task yet
2024-02-03 14:41:10 +01:00
SirLynix 653e56f8ce Network/ENetHost: Remove unused mt19937_64 2024-02-03 14:31:52 +01:00
SirLynix d2b3b93646 Fix compilation 2024-02-02 23:48:35 +01:00
SirLynix c303bf9283 Core/TaskScheduler: Use WorkStealingQueue::pop
steal() can incorrectly return nullptr even if the list is not empty in case of concurrent access, but push and pop are not threadsafe so we use a spinlock to prevent concurrent uses
2024-02-02 23:19:29 +01:00
SirLynix 2e56bb4db4 Build: Disable -Wtrampolines on Clang 2024-02-02 21:19:27 +01:00
SirLynix e3fa6fed89 Core/TaskScheduler: Fix TSan false-positive and remove std::optional 2024-02-02 21:19:17 +01:00
SirLynix 06a42b4ecb Cleanup code 2024-02-02 17:31:12 +01:00
SirLynix adc6a5c0a5 Tests: Add task scheduler tests 2024-02-02 16:23:01 +01:00
SirLynix fa73e463a6 Core/TaskScheduler: Fix race conditions when calling AddTask while workers are not idle
Update TaskScheduler.cpp
2024-02-02 16:23:00 +01:00
SirLynix 44e55adcd9 Tests: Add negative Time formatting tests 2024-02-02 14:31:40 +01:00
SirLynix 56751072f5 Add SchedulerBenchmark test 2024-02-02 14:27:37 +01:00
SirLynix 7f1ef0fe41 Core/TaskScheduler: Rework using atomics and WorkStealingQueue 2024-02-02 14:27:18 +01:00
SirLynix 5db0c4ed09 Core/Time: Fix operator<< with negative values not using units 2024-02-01 12:57:29 +01:00
SirLynix 369f273894 Core/TaskScheduler: Fix AddTask 2024-02-01 09:53:17 +01:00
SirLynix 5d6a094bfe Core/TaskScheduler: Add std::hardware_destructive_interference_size fallback
It was implemented in GCC 12.1 which is not yet available on the CI
2024-01-31 22:16:35 +01:00
SirLynix 9db333fa80 Core/TaskScheduler: Remove jthread and stop_token
jthread/stop_token are not yet implemented in libc++ and on Apple Clang
2024-01-31 21:04:42 +01:00
Lynix 47283776e6 VulkanRenderer: Fix warning 2024-01-31 16:42:35 +01:00
Lynix 9d669f722e Core: Rework TaskScheduler (WIP) 2024-01-31 16:42:25 +01:00
Lynix 2b88f50c21 Minor improvements 2024-01-29 18:34:46 +01:00
SirLynix 0191256493 Fix Nz::ErrorFlags API and usage 2024-01-28 15:03:24 +01:00
SirLynix f06752b08d Renderer/WindowSwapchain: Fix calls to GetSize() happening after window destruction 2024-01-28 13:56:06 +01:00