Henrik Rydgård
e01ca5b057
Logging API change (refactor) ( #19324 )
...
* Rename LogType to Log
* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.
* Mac/ARM64 buildfix
* Do the same with the hle result log macros
* Rename the log names to mixed case while at it.
* iOS buildfix
* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård
ee62ffdb02
Audit our use of condition variables, fix some minor issues
2024-01-29 11:09:08 +01:00
Henrik Rydgård
f0f96750b1
After picking a task from the global queue, gotta break from the loop.
2023-03-15 22:31:24 +01:00
Henrik Rydgård
e625727543
Fix debug symbols for ThreadContext by renaming it (was clashing with something else)
...
Also reorder the fields.
2023-03-15 12:06:32 +01:00
Unknown W. Brackets
c690b12669
ThreadManager: Use priority across global/thread.
2023-02-02 17:08:24 -08:00
Unknown W. Brackets
0971555e51
ThreadManager: Add simple priority queues.
...
This allows basic differentiation of priorities.
2023-02-02 17:08:24 -08:00
Henrik Rydgård
6b0903f566
Add facility to run tasks on dedicated threads using the ThreadManager interface.
...
Useful for things that should be run ASAP even if the threadpool is full,
at a small extra cost. (Not recommended for very small tasks).
Considering using this to resolve the deadlocks in #16802 .
2023-01-31 11:07:40 +01:00
Unknown W. Brackets
3a6fa9b4ba
ThreadManager: Don't allow reordering of queue.
...
Allowing a priority item is faster, but can cause confusion when you
expect things to run in the same sequence they're enqueued.
2023-01-14 16:35:01 -08:00
Henrik Rydgård
b56eef487c
Strict mode checking - no way to forget detaching now.
...
And if we forget to attach, boom. Hopefully I caught all of them.
2023-01-05 08:38:52 +01:00
Henrik Rydgård
916404f0e4
Try to get a bit better at detaching threads that have used JNI from the VM.
2023-01-05 08:38:49 +01:00
Unknown W. Brackets
a800938604
Common: Fix worker thread names.
2022-12-10 10:40:32 -08:00
Johan Mattsson
2b1d57257a
Fix comparison
2022-12-03 15:28:22 +01:00
Unknown W. Brackets
ffbd9bbe98
Global: Fix some int/size_t conversion warnings.
2022-03-13 12:03:48 -07:00
Unknown W. Brackets
55c11425e4
softgpu: Use persistent bin task state.
...
It's constant, so it's better to avoid the copying and allocation. A
small win, but removes new from the profile.
2022-01-20 16:58:43 -08:00
Unknown W. Brackets
dffc333120
softgpu: Avoid thread ordering hazard.
...
Must run the primitives in the right order. No shortcutting allowed.
2022-01-13 23:03:42 -08:00
Unknown W. Brackets
7c7340e338
ThreadManager: Check for exchange failure.
...
Even if expected stays null, since it's weak assume it can fail.
2021-12-07 18:24:01 -08:00
Unknown W. Brackets
f9a7ad3e3d
ThreadManager: Use separate pool for IO blocking.
...
This prevents starving the compute pool (which may be used very regularly
parallel loops or other tasks) if the IO operations are slow.
2021-12-05 21:01:49 -08:00
Unknown W. Brackets
8b5173350f
ThreadManager: Make TaskType a property of a Task.
2021-12-05 21:01:49 -08:00
Unknown W. Brackets
12b790bb81
ThreadManager: Protect against teardown hang/leak.
...
Make sure we lock during canceled checks/updates, and also try to free
tasks queued on threads that didn't end up running.
2021-11-27 08:57:19 -08:00
Unknown W. Brackets
de9a4dcede
ThreadManager: Lock notify on global queue add.
...
Otherwise, it's possible the chosen thread might not wake up, and then it
may wait for another task to be enqueued - potentially causing a hang.
2021-11-27 08:57:19 -08:00
Unknown W. Brackets
d15af6e9d9
ThreadManager: Use atomic task optimistically.
...
This makes EnqueueTaskOnThread take priority as well.
Gives about 1% improvement in softgpu, reducing overhead a bit.
2021-11-27 08:07:12 -08:00
Henrik Rydgård
0d9d360b07
ThreadManager cleanups
2021-09-08 23:24:00 +02:00
Unknown W. Brackets
8ae3f5eb41
Android: Fix logical CPU count.
...
Otherwise bad things happen.
2021-06-13 12:47:11 -07:00
Henrik Rydgård
81f0c3a8e4
Address feedback (except the mailbox refcount)
2021-06-13 10:16:53 +02:00
Henrik Rydgård
1d59560409
Make use of hyperthreading for worker threads. Still cap to 16 workers.
2021-06-13 00:05:18 +02:00
Henrik Rydgård
62eadd2dac
typo, unnecessary
2021-06-12 23:47:34 +02:00
Henrik Rydgård
2d6a73792b
Untested libretro fixes, misc
2021-06-12 23:42:52 +02:00
Henrik Rydgård
0fa27ff9d7
Autodetect number of threads (remove setting). Fix some bugs.
2021-06-12 21:06:59 +02:00
Henrik Rydgård
dc94cb8b04
Fix memory leak
2021-06-12 13:03:54 +02:00
Henrik Rydgård
a9e9929a72
Change the policy for number of threads
2021-06-12 13:03:54 +02:00
Henrik Rydgård
78f068d7ea
Fix a way the threadmanager could get stuck.
2021-06-12 13:03:53 +02:00
Henrik Rydgård
446c2c027e
Get rid of the PrioritizedWorkQueue. Instead just queue tasks on the ThreadManager.
2021-06-12 13:03:53 +02:00
Henrik Rydgård
34f8fc557f
GameInfoCache: Don't expose the workqueue. Was unused anyway.
2021-06-12 13:03:53 +02:00
Henrik Rydgård
73871b9b7e
Implement new thread manager, port stuff to it.
2021-06-12 13:03:53 +02:00