separate emu thread

This commit is contained in:
2026-06-15 11:52:17 +02:00
parent 10d3daf86a
commit de6e324bde
8 changed files with 167 additions and 154 deletions
@@ -1462,7 +1462,7 @@ Helper::BatchComposer::BatchComposer()
void Helper::BatchComposer::begin_batch()
{
if (!waits[submit_index].empty() || !cmds[submit_index].empty() || !signals[submit_index].empty())
if (!waits[submit_index].empty() || !cmds[submit_index].empty() || !signals_[submit_index].empty())
{
submit_index = submits.size();
submits.emplace_back();
@@ -1491,8 +1491,8 @@ Helper::BatchComposer::bake(int profiling_iteration)
submit = { VK_STRUCTURE_TYPE_SUBMIT_INFO_2 };
submit.commandBufferInfoCount = uint32_t(cmds[i].size());
submit.pCommandBufferInfos = cmds[i].data();
submit.signalSemaphoreInfoCount = uint32_t(signals[i].size());
submit.pSignalSemaphoreInfos = signals[i].data();
submit.signalSemaphoreInfoCount = uint32_t(signals_[i].size());
submit.pSignalSemaphoreInfos = signals_[i].data();
submit.waitSemaphoreInfoCount = uint32_t(waits[i].size());
submit.pWaitSemaphoreInfos = waits[i].data();
@@ -1523,7 +1523,7 @@ Helper::BatchComposer::bake(int profiling_iteration)
void Helper::BatchComposer::add_command_buffer(VkCommandBuffer cmd)
{
if (!signals[submit_index].empty())
if (!signals_[submit_index].empty())
begin_batch();
VkCommandBufferSubmitInfo info = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO };
@@ -1537,12 +1537,12 @@ void Helper::BatchComposer::add_signal_semaphore(VkSemaphore sem, VkPipelineStag
info.semaphore = sem;
info.stageMask = stages;
info.value = timeline;
signals[submit_index].push_back(info);
signals_[submit_index].push_back(info);
}
void Helper::BatchComposer::add_wait_semaphore(SemaphoreHolder &sem, VkPipelineStageFlags2 stage)
{
if (!cmds[submit_index].empty() || !signals[submit_index].empty())
if (!cmds[submit_index].empty() || !signals_[submit_index].empty())
begin_batch();
bool is_timeline = sem.get_semaphore_type() == VK_SEMAPHORE_TYPE_TIMELINE;
@@ -1556,7 +1556,7 @@ void Helper::BatchComposer::add_wait_semaphore(SemaphoreHolder &sem, VkPipelineS
void Helper::BatchComposer::add_wait_semaphore(VkSemaphore sem, VkPipelineStageFlags2 stage)
{
if (!cmds[submit_index].empty() || !signals[submit_index].empty())
if (!cmds[submit_index].empty() || !signals_[submit_index].empty())
begin_batch();
VkSemaphoreSubmitInfo info = { VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO };
@@ -144,7 +144,7 @@ private:
VkPerformanceQuerySubmitInfoKHR profiling_infos[Helper::BatchComposer::MaxSubmissions];
Util::SmallVector<VkSemaphoreSubmitInfo> waits[MaxSubmissions];
Util::SmallVector<VkSemaphoreSubmitInfo> signals[MaxSubmissions];
Util::SmallVector<VkSemaphoreSubmitInfo> signals_[MaxSubmissions];
Util::SmallVector<VkCommandBufferSubmitInfo> cmds[MaxSubmissions];
unsigned submit_index = 0;