@@ -1102,17 +1102,22 @@ extern void Sys_CPUCount( int & logicalNum, int & coreNum, int & packageNum );
1102
1102
CORE_ANY, CORE_ANY, CORE_ANY, CORE_ANY }
1103
1103
1104
1104
1105
- idCVar jobs_numThreads (
1106
- " jobs_numThreads " , " -1" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1105
+ idCVar jobs_numThreadsRealtime (
1106
+ " jobs_numThreadsRealtime " , " -1" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1107
1107
" Number of threads used by job system during gameplay (REALTIME joblists). "
1108
1108
" -1 means it is determined automatically." ,
1109
1109
-1 , MAX_JOB_THREADS );
1110
- idCVar jobs_numThreadsOffset (
1111
- " jobs_numThreadsOffset " , " 0" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1110
+ idCVar jobs_offsetThreadsRealtime (
1111
+ " jobs_offsetThreadsRealtime " , " 0" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1112
1112
" Added to automatically computed number of threads for jobs system during gameplay. "
1113
- " Only takes effect if jobs_numThreads is set to auto. "
1113
+ " Only takes effect if jobs_numThreadsRealtime is set to auto. "
1114
1114
" For instance: set -1 if you want to leave one free thread for graphics driver." ,
1115
1115
-MAX_JOB_THREADS, MAX_JOB_THREADS );
1116
+ idCVar jobs_numThreadsNonInteractive (
1117
+ " jobs_numThreadsNonInteractive" , " -1" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1118
+ " Number of threads used by job system for non-interactive tasks (NONINTERACTIVE joblists). "
1119
+ " -1 means it is determined automatically." ,
1120
+ -1 , MAX_JOB_THREADS );
1116
1121
idCVar jobs_maxHddThreads (
1117
1122
" jobs_maxHddThreads" , " 1" , CVAR_INTEGER | CVAR_NOCHEAT | CVAR_ARCHIVE,
1118
1123
" Maximum number of threads used for jobs that read from disk if game is on Hard Disk Drive. "
@@ -1323,13 +1328,16 @@ void idParallelJobManagerLocal::Submit( idParallelJobList_Threads * jobList, int
1323
1328
// we assume that calling thread will wait immediately and free its core for one of the worker threads
1324
1329
numThreads = numPhysicalCpuCores - dedicatedOccupiedThreads + 1 ;
1325
1330
// leave a few cores for OS background tasks, and maybe for OpenGL driver since they often do work in separate thread
1326
- numThreads += jobs_numThreadsOffset .GetInteger ();
1331
+ numThreads += jobs_offsetThreadsRealtime .GetInteger ();
1327
1332
1328
- if ( jobs_numThreads .GetInteger () >= 0 )
1329
- numThreads = jobs_numThreads .GetInteger ();
1333
+ if ( jobs_numThreadsRealtime .GetInteger () >= 0 )
1334
+ numThreads = jobs_numThreadsRealtime .GetInteger ();
1330
1335
}
1331
1336
else if ( parallelism == JOBLIST_PARALLELISM_NONINTERACTIVE ) {
1332
1337
numThreads = numLogicalCpuCores;
1338
+
1339
+ if ( jobs_numThreadsNonInteractive.GetInteger () >= 0 )
1340
+ numThreads = jobs_numThreadsNonInteractive.GetInteger ();
1333
1341
}
1334
1342
else if ( parallelism == JOBLIST_PARALLELISM_NONE ) {
1335
1343
numThreads = 0 ;
0 commit comments