Use the main thread for draw execution when single-threaded. Bug 23073037 Change-Id: I47d5a7d80dc48dffae0014fbf619810290c30628 Reviewed-on: https://swiftshader-review.googlesource.com/3840 Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Greg Hartman <ghartman@google.com> Reviewed-by: Nicolas Capens <capn@google.com> Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp index 197802f..e17bc11 100644 --- a/src/Renderer/Renderer.cpp +++ b/src/Renderer/Renderer.cpp
@@ -610,14 +610,24 @@ nextDraw++; schedulerMutex.unlock(); - if(!threadsAwake) + if(threadCount > 1) { - suspend[0]->wait(); + if(!threadsAwake) + { + suspend[0]->wait(); + threadsAwake = 1; + task[0].type = Task::RESUME; + + resume[0]->signal(); + } + } + else // Use main thread for draw execution + { threadsAwake = 1; task[0].type = Task::RESUME; - resume[0]->signal(); + taskLoop(0); } } }