偶现在访问PipelineStateCache时出现多线程冲突,提交DrawCommand获取缓存的PSO过程中缓存被consolidate
CallStack:
TSharedPipelineStateCache<FGraphicsPipelineStateInitializer,FGraphicsPipelineState *>::Find() [[EngineDir]Engine/Source/Runtime/RHI/Private/PipelineStateCache.cpp:1376]
PipelineStateCache::GetAndOrCreateGraphicsPipelineState() [[EngineDir]Engine/Source/Runtime/RHI/Private/PipelineStateCache.cpp:3783]
SetGraphicsPipelineStateCheckApply() [[EngineDir]Engine/Source/Runtime/RHI/Private/PipelineStateCache.cpp:1265]
FMeshDrawCommand::SubmitDrawBegin() [[EngineDir]Engine/Source/Runtime/Renderer/Private/MeshPassProcessor.cpp:1422]
FMeshDrawCommand::SubmitDraw() [[EngineDir]Engine/Source/Runtime/Renderer/Private/MeshPassProcessor.cpp:1725]
FInstanceCullingContext::SubmitDrawCommands() [[EngineDir]Engine/Source/Runtime/Renderer/Private/InstanceCulling/InstanceCullingContext.cpp:1730]
FDrawVisibleMeshCommandsAnyThreadTask::DoTask() [[EngineDir]Engine/Source/Runtime/Renderer/Private/MeshDrawCommands.cpp:1640]
TGraphTask<FDrawVisibleMeshCommandsAnyThreadTask>::ExecuteTask() [[EngineDir]Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:646]
UE::Tasks::Private::FTaskBase::TryExecuteTask() [[EngineDir]Engine/Source/Runtime/Core/Public/Tasks/TaskPrivate.h:506]
LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init’::`2’::<lambda_1> >’::`17’::<lambda_2>,0>::CallAndMove() [[EngineDir]Engine/Source/Runtime/Core/Public/Async/Fundamental/TaskDelegate.h:171]
LowLevelTasks::FTask::ExecuteTask() [[EngineDir]Engine/Source/Runtime/Core/Public/Async/Fundamental/Task.h:627]
LowLevelTasks::FScheduler::ExecuteTask() [[EngineDir]Engine/Source/Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:244]
LowLevelTasks::FScheduler::WorkerLoop() [[EngineDir]Engine/Source/Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:514]
`LowLevelTasks::FScheduler::CreateWorker’::`2’::<lambda_1>::operator()() [[EngineDir]Engine/Source/Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:75]
FThreadImpl::Run() [[EngineDir]Engine/Source/Runtime/Core/Private/HAL/Thread.cpp:71]
FRunnableThreadWin::Run() [[EngineDir]Engine/Source/Runtime/Core/Private/Windows/WindowsRunnableThread.cpp:168]
FRunnableThreadWin::GuardedRun() [[EngineDir]Engine/Source/Runtime/Core/Private/Windows/WindowsRunnableThread.cpp:81]
UnknownFunction []