[D3D12] Don't drain PSO preload creation queue if not queueing at all
This commit is contained in:
parent
4b8740d94f
commit
50cf96ff36
|
@ -703,6 +703,7 @@ void PipelineCache::InitializeShaderStorage(
|
|||
++pipelines_created;
|
||||
}
|
||||
|
||||
if (!creation_threads_.empty()) {
|
||||
CreateQueuedPipelinesOnProcessorThread();
|
||||
if (creation_threads_.size() > creation_thread_original_count) {
|
||||
{
|
||||
|
@ -721,9 +722,9 @@ void PipelineCache::InitializeShaderStorage(
|
|||
// Cleanup so additional threads can be created later again.
|
||||
std::lock_guard<std::mutex> lock(creation_request_lock_);
|
||||
creation_threads_shutdown_from_ = SIZE_MAX;
|
||||
// If the invocation is blocking, all the shader storage initialization
|
||||
// is expected to be done before proceeding, to avoid latency in the
|
||||
// command processor after the invocation.
|
||||
// If the invocation is blocking, all the shader storage
|
||||
// initialization is expected to be done before proceeding, to avoid
|
||||
// latency in the command processor after the invocation.
|
||||
await_creation_completion_event =
|
||||
blocking && creation_threads_busy_ != 0;
|
||||
if (await_creation_completion_event) {
|
||||
|
@ -736,6 +737,7 @@ void PipelineCache::InitializeShaderStorage(
|
|||
xe::threading::Wait(creation_completion_event_.get(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
XELOGGPU(
|
||||
"Created {} graphics pipelines (not including reading the "
|
||||
|
|
Loading…
Reference in New Issue