mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-29 23:09:11 -05:00
Prevent rendering ownership change between command lists. (#1486)
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user