diff --git a/app/src/main/cpp/skyline/gpu/interconnect/command_executor.cpp b/app/src/main/cpp/skyline/gpu/interconnect/command_executor.cpp index 9c2c360c..7f080a55 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/command_executor.cpp +++ b/app/src/main/cpp/skyline/gpu/interconnect/command_executor.cpp @@ -37,6 +37,7 @@ namespace skyline::gpu::interconnect { } void CommandRecordThread::ProcessSlot(Slot *slot) { + TRACE_EVENT_FMT("gpu", "ProcessSlot: 0x{:X}, execution: {}", slot, slot->executionNumber); auto &gpu{*state.gpu}; vk::RenderPass lRenderPass; @@ -129,6 +130,7 @@ namespace skyline::gpu::interconnect { slot = recordThread.AcquireSlot(); cycle = slot->Reset(gpu); + slot->executionNumber = executionNumber; allocator = &slot->allocator; } @@ -411,12 +413,12 @@ namespace skyline::gpu::interconnect { for (const auto &callback : flushCallbacks) callback(); + executionNumber++; + if (!slot->nodes.empty()) { TRACE_EVENT("gpu", "CommandExecutor::Submit"); SubmitInternal(); } ResetInternal(); - - executionNumber++; } } diff --git a/app/src/main/cpp/skyline/gpu/interconnect/command_executor.h b/app/src/main/cpp/skyline/gpu/interconnect/command_executor.h index 70ee6d24..497897cc 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/command_executor.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/command_executor.h @@ -25,6 +25,7 @@ namespace skyline::gpu::interconnect { std::shared_ptr cycle; boost::container::stable_vector nodes; LinearAllocatorState<> allocator; + u32 executionNumber; Slot(GPU &gpu); @@ -151,7 +152,7 @@ namespace skyline::gpu::interconnect { std::shared_ptr cycle; //!< The fence cycle that this command executor uses to wait for the GPU to finish executing commands LinearAllocatorState<> *allocator; ContextTag tag; //!< The tag associated with this command executor, any tagged resource locking must utilize this tag - size_t executionNumber{}; + u32 executionNumber{}; CommandExecutor(const DeviceState &state);