@@ -47,7 +47,6 @@ TaskList::TaskList() {
4747}
4848
4949TaskList::~TaskList () {
50- Shutdown ();
5150}
5251
5352void TaskList::AdjustThreadCount ( uint32_t newMaxThreads ) {
@@ -169,7 +168,7 @@ constexpr TaskRing& TaskList::TaskRingIDToTaskRing( const TaskRingID taskRingID
169168 case MAIN :
170169 return mainTaskRing;
171170 case FORWARD :
172- return forwardTaskRing;
171+ return mainTaskRing; // forwardTaskRing;
173172 default :
174173 ASSERT_UNREACHABLE ();
175174 }
@@ -212,7 +211,6 @@ uint16_t TaskRing::AddToTaskRing( Task& task, const bool unlockQueueAfterAdd ) {
212211void TaskList::MoveToTaskRing ( TaskRing& taskRing, Task& task ) {
213212 TLM .addTimer .Start ();
214213
215- IDToTaskRing ( task.id ).RemoveTask ( IDToTaskQueue ( task.id ), IDToTaskID ( task.id ) );
216214 taskRing.AddToTaskRing ( task );
217215
218216 TLM .addTimer .Stop ();
@@ -229,7 +227,7 @@ void TaskList::FinishDependency( const uint16_t bufferID ) {
229227}
230228
231229template <IsTask T>
232- bool TaskList::ResolveDependencies ( Task& task, TaskInitList<T>& dependencies ) {
230+ void TaskList::ResolveDependencies ( Task& task, TaskInitList<T>& dependencies ) {
233231 uint32_t counter = 0 ;
234232 for ( const T* dep = dependencies.start ; dep < dependencies.end ; dep++ ) {
235233 if ( !BitSet ( ( *dep )->id , TASK_SHIFT_ALLOCATED ) ) {
@@ -256,8 +254,6 @@ bool TaskList::ResolveDependencies( Task& task, TaskInitList<T>& dependencies )
256254 }
257255
258256 task.dependencyCounter .fetch_add ( counter, std::memory_order_relaxed );
259-
260- return counter;
261257}
262258
263259template <IsTask T>
@@ -276,28 +272,18 @@ void TaskList::AddTask( Task& task, TaskInitList<T>&& dependencies ) {
276272
277273 *taskMemory = task;
278274
279- TaskRing* taskRing;
280- if ( ResolveDependencies ( *taskMemory, dependencies ) ) {
281- task.id = forwardTaskRing.AddToTaskRing ( *taskMemory, false );
282- taskRing = &forwardTaskRing;
283- } else {
284- task.id = mainTaskRing.AddToTaskRing ( *taskMemory, false );
285- taskRing = &mainTaskRing;
286- }
275+ ResolveDependencies ( *taskMemory, dependencies );
287276
288277 SetBit ( &task.id , TASK_SHIFT_ALLOCATED );
289278
290279 taskMemory->id = task.id ;
291280
292281 const uint32_t counter = taskMemory->dependencyCounter .fetch_sub ( 1 , std::memory_order_relaxed ) - 1 ;
293282
294- if ( !counter && taskRing == &forwardTaskRing ) {
295- forwardTaskRing.RemoveTask ( IDToTaskQueue ( task.id ), IDToTaskID ( task.id ), true );
296- taskRing->AddToTaskRing ( task );
283+ if ( !counter ) {
284+ mainTaskRing.AddToTaskRing ( *taskMemory );
297285 }
298286
299- taskRing->UnlockQueue ( IDToTaskQueue ( task.id ) );
300-
301287 TLM .addTimer .Stop ();
302288}
303289
@@ -361,6 +347,7 @@ Task* TaskList::FetchTask( Thread* thread, const bool longestTask ) {
361347
362348 break ;
363349 }
350+
364351 TLM .fetchQueueLockTimer .Stop ();
365352
366353 task = FindLSB ( mainTaskRing.queues [queue].availableTasks );
0 commit comments