diff options
| author | Scott Mansell <phiren@gmail.com> | 2026-07-31 01:02:32 +1200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-31 01:02:32 +1200 |
| commit | 74c51895c8df8e08a8cd6713de305fe28f36f4f4 (patch) | |
| tree | 65de3abeaade36535738d2e3c05ddf3e52f16c20 /Source/Core | |
| parent | 5e1e4dbc4cdb122e38267e1f0dc872e9e677a75c (diff) | |
| parent | 8f48111ed6af4c715abd23359a02799916748ed7 (diff) | |
Merge pull request #13452 from tygyh/Use-structured-binding-DolphinQt-FifoAnalyzer
DolphinQt/FIFO/FifoAnalyzer: Use structured bindings
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp b/Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp index 3df9dfcbbc..e574c2d6e1 100644 --- a/Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp +++ b/Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp @@ -155,15 +155,15 @@ void FIFOAnalyzer::UpdateTree() recording_item->addChild(frame_item); - const AnalyzedFrameInfo& frame_info = m_fifo_player.GetAnalyzedFrameInfo(frame); - ASSERT(frame_info.parts.size() != 0); + const auto& [parts, part_type_counts] = m_fifo_player.GetAnalyzedFrameInfo(frame); + ASSERT(parts.size() != 0); Common::EnumMap<u32, FramePartType::EFBCopy> part_counts; u32 part_start = 0; - for (u32 part_nr = 0; part_nr < frame_info.parts.size(); part_nr++) + for (u32 part_nr = 0; part_nr < parts.size(); part_nr++) { - const auto& part = frame_info.parts[part_nr]; + const auto& part = parts[part_nr]; const u32 part_type_nr = part_counts[part.m_type]; part_counts[part.m_type]++; @@ -189,9 +189,9 @@ void FIFOAnalyzer::UpdateTree() } // We shouldn't end on a Command (it should end with an EFB copy) - ASSERT(part_start == frame_info.parts.size()); + ASSERT(part_start == parts.size()); // The counts we computed should match the frame's counts - ASSERT(std::ranges::equal(frame_info.part_type_counts, part_counts)); + ASSERT(std::ranges::equal(part_type_counts, part_counts)); } } @@ -344,18 +344,18 @@ void FIFOAnalyzer::UpdateDetails() const u32 start_part_nr = items[0]->data(0, PART_START_ROLE).toUInt(); const u32 end_part_nr = items[0]->data(0, PART_END_ROLE).toUInt(); - const AnalyzedFrameInfo& frame_info = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); + const auto& [parts, _part_type_counts] = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); const auto& fifo_frame = m_fifo_player.GetFile()->GetFrame(frame_nr); - const u32 object_start = frame_info.parts[start_part_nr].m_start; - const u32 object_end = frame_info.parts[end_part_nr].m_end; + const u32 object_start = parts[start_part_nr].m_start; + const u32 object_end = parts[end_part_nr].m_end; const u32 object_size = object_end - object_start; u32 object_offset = 0; // NOTE: object_info.m_cpmem is the state of cpmem _after_ all of the commands in this object. // However, it doesn't matter that it doesn't match the start, since it will match by the time // primitives are reached. - auto callback = DetailCallback(frame_info.parts[end_part_nr].m_cpmem); + auto callback = DetailCallback(parts[end_part_nr].m_cpmem); while (object_offset < object_size) { @@ -427,11 +427,11 @@ void FIFOAnalyzer::BeginSearch() const u32 start_part_nr = items[0]->data(0, PART_START_ROLE).toUInt(); const u32 end_part_nr = items[0]->data(0, PART_END_ROLE).toUInt(); - const AnalyzedFrameInfo& frame_info = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); + const auto& [parts, _part_type_counts] = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); const FifoFrameInfo& fifo_frame = m_fifo_player.GetFile()->GetFrame(frame_nr); - const u32 object_start = frame_info.parts[start_part_nr].m_start; - const u32 object_end = frame_info.parts[end_part_nr].m_end; + const u32 object_start = parts[start_part_nr].m_start; + const u32 object_end = parts[end_part_nr].m_end; const u32 object_size = object_end - object_start; const u8* const object = &fifo_frame.fifoData[object_start]; @@ -612,7 +612,7 @@ public: text = QObject::tr("Primitive %1").arg(QString::fromStdString(name)); text += QLatin1Char{'\n'}; - const auto& vtx_desc = m_cpmem.vtx_desc; + const auto& [low, high] = m_cpmem.vtx_desc; const auto& vtx_attr = m_cpmem.vtx_attr[vat]; u32 i = 0; @@ -668,22 +668,21 @@ public: ASSERT(i == vertex_num * vertex_size); text += QLatin1Char{'\n'}; - if (vtx_desc.low.PosMatIdx) + if (low.PosMatIdx) process_simple_component(1); - for (auto texmtxidx : vtx_desc.low.TexMatIdx) + for (auto texmtxidx : low.TexMatIdx) { if (texmtxidx) process_simple_component(1); } - process_component(vtx_desc.low.Position, vtx_attr.g0.PosFormat, + process_component(low.Position, vtx_attr.g0.PosFormat, vtx_attr.g0.PosElements == CoordComponentCount::XY ? 2 : 3); - const u32 normal_component_count = - vtx_desc.low.Normal == VertexComponentFormat::Direct ? 3 : 1; + const u32 normal_component_count = low.Normal == VertexComponentFormat::Direct ? 3 : 1; const u32 normal_elements = vtx_attr.g0.NormalElements == NormalComponentCount::NTB ? 3 : 1; - process_component(vtx_desc.low.Normal, vtx_attr.g0.NormalFormat, + process_component(low.Normal, vtx_attr.g0.NormalFormat, normal_component_count * normal_elements, vtx_attr.g0.NormalIndex3 ? normal_elements : 1); - for (u32 c = 0; c < vtx_desc.low.Color.Size(); c++) + for (u32 c = 0; c < low.Color.Size(); c++) { static constexpr Common::EnumMap<u32, ColorFormat::RGBA8888> component_sizes = { 2, // RGB565 @@ -693,7 +692,7 @@ public: 3, // RGBA6666 4, // RGBA8888 }; - switch (vtx_desc.low.Color[c]) + switch (low.Color[c]) { case VertexComponentFormat::Index8: process_simple_component(1); @@ -708,9 +707,9 @@ public: break; } } - for (u32 t = 0; t < vtx_desc.high.TexCoord.Size(); t++) + for (u32 t = 0; t < high.TexCoord.Size(); t++) { - process_component(vtx_desc.high.TexCoord[t], vtx_attr.GetTexFormat(t), + process_component(high.TexCoord[t], vtx_attr.GetTexFormat(t), vtx_attr.GetTexElements(t) == TexComponentCount::ST ? 2 : 1); } } @@ -756,15 +755,15 @@ void FIFOAnalyzer::UpdateDescription() const u32 end_part_nr = items[0]->data(0, PART_END_ROLE).toUInt(); const u32 entry_nr = m_detail_list->currentRow(); - const AnalyzedFrameInfo& frame_info = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); + const auto& [parts, _part_type_counts] = m_fifo_player.GetAnalyzedFrameInfo(frame_nr); const FifoFrameInfo& fifo_frame = m_fifo_player.GetFile()->GetFrame(frame_nr); - const u32 object_start = frame_info.parts[start_part_nr].m_start; - const u32 object_end = frame_info.parts[end_part_nr].m_end; + const u32 object_start = parts[start_part_nr].m_start; + const u32 object_end = parts[end_part_nr].m_end; const u32 object_size = object_end - object_start; const u32 entry_start = m_object_data_offsets[entry_nr]; - auto callback = DescriptionCallback(frame_info.parts[end_part_nr].m_cpmem); + auto callback = DescriptionCallback(parts[end_part_nr].m_cpmem); OpcodeDecoder::RunCommand(&fifo_frame.fifoData[object_start + entry_start], object_size - entry_start, callback); m_entry_detail_browser->setText(callback.text); |
