From c669a0beb721d704241980675154cb35b0221d92 Mon Sep 17 00:00:00 2001 From: Elad <18193363+elad335@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:15:08 +0200 Subject: [PATCH] kernel_explorer: Order PPUs by priority --- rpcs3/rpcs3qt/kernel_explorer.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/rpcs3/rpcs3qt/kernel_explorer.cpp b/rpcs3/rpcs3qt/kernel_explorer.cpp index 360c352100..68c6f45e2b 100644 --- a/rpcs3/rpcs3qt/kernel_explorer.cpp +++ b/rpcs3/rpcs3qt/kernel_explorer.cpp @@ -651,15 +651,29 @@ void kernel_explorer::update() return fmt::format(" (%.1fs)", wait_time); }; + std::vector> ppu_threads; + idm::select>([&](u32 id, ppu_thread& ppu) { const auto func = ppu.last_function; const ppu_thread_status status = lv2_obj::ppu_state(&ppu, false, false).first; - add_leaf(find_node(root, additional_nodes::ppu_threads), QString::fromStdString(fmt::format(u8"PPU 0x%07x: “%s”, PRIO: %d, Joiner: %s, Status: %s, State: %s, %s func: “%s”%s", id, *ppu.ppu_tname.load(), ppu.prio.load().prio, ppu.joiner.load(), status, ppu.state.load() - , ppu.ack_suspend ? "After" : (ppu.current_function ? "In" : "Last"), func ? func : "", get_wait_time_str(ppu.start_time)))); + const s32 prio = ppu.prio.load().prio; + std::string prio_text = fmt::format("%4d", prio); + prio_text = fmt::replace_all(prio_text, " ", " "); + + ppu_threads.emplace_back(prio, fmt::format(u8"PPU 0x%07x: PRIO: %s, “%s”Joiner: %s, Status: %s, State: %s, %s func: “%s”%s", id, prio_text, *ppu.ppu_tname.load(), ppu.joiner.load(), status, ppu.state.load() + , ppu.ack_suspend ? "After" : (ppu.current_function ? "In" : "Last"), func ? func : "", get_wait_time_str(ppu.start_time))); }, idm::unlocked); + // Sort by priority + std::stable_sort(ppu_threads.begin(), ppu_threads.end(), FN(x.first < y.first)); + + for (const auto& [prio, text] : ppu_threads) + { + add_leaf(find_node(root, additional_nodes::ppu_threads), QString::fromStdString(text)); + } + lock_idm_lv2.reset(); idm::select>([&](u32 /*id*/, spu_thread& spu)