![]() |
DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
|
|
Go to the source code of this file.
Data Structures | |
| struct | taskqueue_state_t |
| struct | taskqueue_state_thread_t |
Macros | |
| #define | MAXTHREADS 1024 |
| #define | RECENTFRAMES 64 |
| #define | THREADBATCH 64 |
| #define | THREADSLEEPCOUNT 1000 |
| #define | THREADTASKS 256 |
Functions | |
| static void | TaskQueue_DistributeTasks (void) |
| void | TaskQueue_Enqueue (int numtasks, taskqueue_task_t *tasks) |
| static void | TaskQueue_ExecuteTask (taskqueue_task_t *t) |
| void | TaskQueue_Frame (qbool shutdown) |
| void | TaskQueue_Init (void) |
| qbool | TaskQueue_IsDone (taskqueue_task_t *t) |
| void | TaskQueue_Setup (taskqueue_task_t *t, taskqueue_task_t *preceding, void(*func)(taskqueue_task_t *), size_t i0, size_t i1, void *p0, void *p1) |
| void | TaskQueue_Shutdown (void) |
| void | TaskQueue_Task_CheckTasksDone (taskqueue_task_t *t) |
| static int | TaskQueue_ThreadFunc (void *d) |
| void | TaskQueue_WaitForTaskDone (taskqueue_task_t *t) |
| void | TaskQueue_Yield (taskqueue_task_t *t) |
Variables | |
| cvar_t | taskqueue_maxthreads = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_maxthreads", "32", "maximum number of threads to start up as needed based on task count"} |
| cvar_t | taskqueue_minthreads = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_minthreads", "0", "minimum number of threads to keep active for executing tasks"} |
| static taskqueue_state_t | taskqueue_state |
| cvar_t | taskqueue_tasksperthread = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_tasksperthread", "4000", "expected amount of work that a single thread can do in a frame - the number of threads being used depends on the average workload in recent frames"} |
| #define MAXTHREADS 1024 |
Definition at line 8 of file taskqueue.c.
Referenced by TaskQueue_Frame().
| #define RECENTFRAMES 64 |
Definition at line 9 of file taskqueue.c.
Referenced by TaskQueue_Frame().
| #define THREADBATCH 64 |
Definition at line 11 of file taskqueue.c.
| #define THREADSLEEPCOUNT 1000 |
Definition at line 12 of file taskqueue.c.
Referenced by TaskQueue_ThreadFunc().
| #define THREADTASKS 256 |
Definition at line 10 of file taskqueue.c.
Referenced by TaskQueue_DistributeTasks(), and TaskQueue_ThreadFunc().
Definition at line 144 of file taskqueue.c.
References taskqueue_state_thread_t::dequeueposition, taskqueue_state_thread_t::enqueueposition, NULL, taskqueue_task_t::preceding, taskqueue_state_thread_t::queue, TaskQueue_ExecuteTask(), taskqueue_state, Thread_AtomicLock, Thread_AtomicUnlock, and THREADTASKS.
Referenced by TaskQueue_Frame(), and TaskQueue_WaitForTaskDone().
| void TaskQueue_Enqueue | ( | int | numtasks, |
| taskqueue_task_t * | tasks ) |
Definition at line 105 of file taskqueue.c.
References Mem_Realloc, taskqueue_state, Thread_AtomicLock, Thread_AtomicUnlock, and zonemempool.
Referenced by R_Shadow_BounceGrid_EnqueuePhotons_Task(), R_Shadow_BounceGrid_EnqueueSlices_Task(), R_Shadow_UpdateBounceGridTexture(), and TaskQueue_Yield().
|
static |
Definition at line 66 of file taskqueue.c.
References taskqueue_task_t::func, taskqueue_task_t::preceding, and TaskQueue_Yield().
Referenced by TaskQueue_DistributeTasks(), and TaskQueue_ThreadFunc().
Definition at line 213 of file taskqueue.c.
References bound, MAXTHREADS, NULL, RECENTFRAMES, TaskQueue_DistributeTasks(), taskqueue_maxthreads, taskqueue_minthreads, taskqueue_state, taskqueue_tasksperthread, TaskQueue_ThreadFunc(), Thread_AtomicLock, Thread_AtomicUnlock, Thread_CreateThread, and Thread_WaitThread.
Referenced by Host_Frame(), and TaskQueue_Shutdown().
Definition at line 53 of file taskqueue.c.
References Cvar_RegisterVariable(), taskqueue_maxthreads, taskqueue_minthreads, and taskqueue_tasksperthread.
Referenced by Host_Init().
| qbool TaskQueue_IsDone | ( | taskqueue_task_t * | t | ) |
Definition at line 139 of file taskqueue.c.
References taskqueue_task_t::done.
| void TaskQueue_Setup | ( | taskqueue_task_t * | t, |
| taskqueue_task_t * | preceding, | ||
| void(* | func )(taskqueue_task_t *), | ||
| size_t | i0, | ||
| size_t | i1, | ||
| void * | p0, | ||
| void * | p1 ) |
Definition at line 282 of file taskqueue.c.
References taskqueue_task_t::func, taskqueue_task_t::i, taskqueue_task_t::p, and taskqueue_task_t::preceding.
Referenced by R_Shadow_BounceGrid_EnqueuePhotons_Task(), R_Shadow_BounceGrid_EnqueueSlices_Task(), and R_Shadow_UpdateBounceGridTexture().
Definition at line 60 of file taskqueue.c.
References TaskQueue_Frame(), and taskqueue_state.
Referenced by Host_Shutdown().
| void TaskQueue_Task_CheckTasksDone | ( | taskqueue_task_t * | t | ) |
Definition at line 293 of file taskqueue.c.
References taskqueue_task_t::done, taskqueue_task_t::i, taskqueue_task_t::p, taskqueue_task_t::preceding, and TaskQueue_Yield().
Referenced by R_Shadow_BounceGrid_EnqueuePhotons_Task(), and R_Shadow_BounceGrid_EnqueueSlices_Task().
Definition at line 77 of file taskqueue.c.
References taskqueue_state_thread_t::dequeueposition, taskqueue_state_thread_t::enqueueposition, NULL, taskqueue_state_thread_t::queue, taskqueue_state_thread_t::quit, Sys_Sleep(), TaskQueue_ExecuteTask(), taskqueue_state, Thread_AtomicLock, Thread_AtomicUnlock, THREADSLEEPCOUNT, and THREADTASKS.
Referenced by TaskQueue_Frame().
| void TaskQueue_WaitForTaskDone | ( | taskqueue_task_t * | t | ) |
Definition at line 199 of file taskqueue.c.
References taskqueue_task_t::done, TaskQueue_DistributeTasks(), taskqueue_state, Thread_AtomicLock, and Thread_AtomicUnlock.
Referenced by R_Shadow_UpdateBounceGridTexture().
| void TaskQueue_Yield | ( | taskqueue_task_t * | t | ) |
Definition at line 133 of file taskqueue.c.
References TaskQueue_Enqueue(), and taskqueue_task_t::yieldcount.
Referenced by R_Shadow_BounceGrid_EnqueueSlices_Task(), TaskQueue_ExecuteTask(), and TaskQueue_Task_CheckTasksDone().
| cvar_t taskqueue_maxthreads = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_maxthreads", "32", "maximum number of threads to start up as needed based on task count"} |
Definition at line 5 of file taskqueue.c.
Referenced by TaskQueue_Frame(), and TaskQueue_Init().
| cvar_t taskqueue_minthreads = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_minthreads", "0", "minimum number of threads to keep active for executing tasks"} |
Definition at line 4 of file taskqueue.c.
Referenced by TaskQueue_Frame(), and TaskQueue_Init().
|
static |
Definition at line 51 of file taskqueue.c.
Referenced by TaskQueue_DistributeTasks(), TaskQueue_Enqueue(), TaskQueue_Frame(), TaskQueue_Shutdown(), TaskQueue_ThreadFunc(), and TaskQueue_WaitForTaskDone().
| cvar_t taskqueue_tasksperthread = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "taskqueue_tasksperthread", "4000", "expected amount of work that a single thread can do in a frame - the number of threads being used depends on the average workload in recent frames"} |
Definition at line 6 of file taskqueue.c.
Referenced by TaskQueue_Frame(), and TaskQueue_Init().