mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-04-28 13:27:58 +03:00
Prevent rendering ownership change between command lists. (#1486)
This commit is contained in:
parent
49d3b675ed
commit
f5f92d0761
1 changed files with 8 additions and 0 deletions
|
@ -736,10 +736,13 @@ static void DestructTempResources()
|
|||
}
|
||||
|
||||
static std::thread::id g_presentThreadId = std::this_thread::get_id();
|
||||
static std::atomic<bool> g_readyForCommands;
|
||||
|
||||
PPC_FUNC_IMPL(__imp__sub_824ECA00);
|
||||
PPC_FUNC(sub_824ECA00)
|
||||
{
|
||||
// Guard against thread ownership changes when between command lists.
|
||||
g_readyForCommands.wait(false);
|
||||
g_presentThreadId = std::this_thread::get_id();
|
||||
__imp__sub_824ECA00(ctx, base);
|
||||
}
|
||||
|
@ -1624,6 +1627,9 @@ static void BeginCommandList()
|
|||
commandList->setGraphicsDescriptorSet(g_textureDescriptorSet.get(), 1);
|
||||
commandList->setGraphicsDescriptorSet(g_textureDescriptorSet.get(), 2);
|
||||
commandList->setGraphicsDescriptorSet(g_samplerDescriptorSet.get(), 3);
|
||||
|
||||
g_readyForCommands = true;
|
||||
g_readyForCommands.notify_one();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
@ -2749,6 +2755,8 @@ static std::atomic<bool> g_executedCommandList;
|
|||
|
||||
void Video::Present()
|
||||
{
|
||||
g_readyForCommands = false;
|
||||
|
||||
RenderCommand cmd;
|
||||
cmd.type = RenderCommandType::ExecutePendingStretchRectCommands;
|
||||
g_renderQueue.enqueue(cmd);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue