diff --git a/server/TracySourceView.cpp b/server/TracySourceView.cpp index 98f7cc89..f2c53433 100644 --- a/server/TracySourceView.cpp +++ b/server/TracySourceView.cpp @@ -87,8 +87,6 @@ SourceView::SourceView( ImFont* font ) , m_cpuArch( CpuArchUnknown ) , m_showLatency( false ) { - SelectMicroArchitecture( "ZEN2" ); - m_microArchOpMap.reserve( OpsNum ); for( int i=0; i> 4 ); +} + +struct CpuIdMap +{ + uint32_t cpuInfo; + const char* moniker; +}; + +// .------ extended family id +// |.----- extended model id +// || .--- family id +// || |.-- model +// || ||.- stepping +// || ||| +static constexpr CpuIdMap s_cpuIdMap[] = { + { PackCpuInfo( 0x810F81 ), "ZEN+" }, + { PackCpuInfo( 0x800F82 ), "ZEN+" }, + { PackCpuInfo( 0x870F10 ), "ZEN2" }, + { PackCpuInfo( 0x830F10 ), "ZEN2" }, + { PackCpuInfo( 0x860F01 ), "ZEN2" }, + { PackCpuInfo( 0x0706E5 ), "ICL" }, + { PackCpuInfo( 0x060663 ), "CNL" }, + { PackCpuInfo( 0x0906EA ), "CFL" }, + { PackCpuInfo( 0x0906EB ), "CFL" }, + { PackCpuInfo( 0x0906EC ), "CFL" }, + { PackCpuInfo( 0x0906ED ), "CFL" }, + { PackCpuInfo( 0x0806E9 ), "KBL" }, + { PackCpuInfo( 0x0806EA ), "KBL" }, + { PackCpuInfo( 0x0906E9 ), "KBL" }, + { PackCpuInfo( 0x050654 ), "SKX" }, + { PackCpuInfo( 0x0406E3 ), "SKL" }, + { PackCpuInfo( 0x0506E0 ), "SKL" }, + { PackCpuInfo( 0x0506E3 ), "SKL" }, + { PackCpuInfo( 0x0306D4 ), "BDW" }, + { PackCpuInfo( 0x040671 ), "BDW" }, + { PackCpuInfo( 0x0406F1 ), "BDW" }, + { PackCpuInfo( 0x0306C3 ), "HSW" }, + { PackCpuInfo( 0x0306F2 ), "HSW" }, + { PackCpuInfo( 0x040651 ), "HSW" }, + { PackCpuInfo( 0x0306A9 ), "IVB" }, + { PackCpuInfo( 0x0306E3 ), "IVB" }, + { PackCpuInfo( 0x0306E4 ), "IVB" }, + { PackCpuInfo( 0x0206A2 ), "SNB" }, + { PackCpuInfo( 0x0206A7 ), "SNB" }, + { PackCpuInfo( 0x0206D5 ), "SNB" }, + { PackCpuInfo( 0x0206D6 ), "SNB" }, + { PackCpuInfo( 0x0206D7 ), "SNB" }, + { PackCpuInfo( 0x0206F2 ), "WSM" }, + { PackCpuInfo( 0x0206C0 ), "WSM" }, + { PackCpuInfo( 0x0206C1 ), "WSM" }, + { PackCpuInfo( 0x0206C2 ), "WSM" }, + { PackCpuInfo( 0x020652 ), "WSM" }, + { PackCpuInfo( 0x020655 ), "WSM" }, + { PackCpuInfo( 0x0206E6 ), "NHM" }, + { PackCpuInfo( 0x0106A1 ), "NHM" }, + { PackCpuInfo( 0x0106A2 ), "NHM" }, + { PackCpuInfo( 0x0106A4 ), "NHM" }, + { PackCpuInfo( 0x0106A5 ), "NHM" }, + { PackCpuInfo( 0x0106E4 ), "NHM" }, + { PackCpuInfo( 0x0106E5 ), "NHM" }, + { PackCpuInfo( 0x010676 ), "WOL" }, + { PackCpuInfo( 0x01067A ), "WOL" }, + { PackCpuInfo( 0x0006F2 ), "CON" }, + { PackCpuInfo( 0x0006F4 ), "CON" }, + { PackCpuInfo( 0x0006F6 ), "CON" }, + { PackCpuInfo( 0x0006FB ), "CON" }, + { PackCpuInfo( 0x0006FD ), "CON" }, + { 0, 0 } +}; + +void SourceView::SetCpuId( uint32_t cpuId ) +{ + auto ptr = s_cpuIdMap; + while( ptr->cpuInfo ) + { + if( cpuId == ptr->cpuInfo ) + { + SelectMicroArchitecture( ptr->moniker ); + return; + } + ptr++; + } + SelectMicroArchitecture( "ZEN2" ); +} + void SourceView::OpenSource( const char* fileName, int line, const View& view ) { m_targetLine = line; diff --git a/server/TracySourceView.hpp b/server/TracySourceView.hpp index 44cf931a..2ed0fa4e 100644 --- a/server/TracySourceView.hpp +++ b/server/TracySourceView.hpp @@ -129,6 +129,8 @@ public: SourceView( ImFont* font ); ~SourceView(); + void SetCpuId( uint32_t cpuid ); + void OpenSource( const char* fileName, int line, const View& view ); void OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, const Worker& worker, const View& view ); void Render( const Worker& worker, const View& view ); diff --git a/server/TracyView.cpp b/server/TracyView.cpp index a59f1e38..03fa44a7 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -429,6 +429,11 @@ bool View::DrawImpl() return !wasCancelled; } + if( !m_uarchSet ) + { + m_uarchSet = true; + m_sourceView->SetCpuId( m_worker.GetCpuId() ); + } if( !m_userData.Valid() ) m_userData.Init( m_worker.GetCaptureProgram().c_str(), m_worker.GetCaptureTime() ); if( m_saveThreadState.load( std::memory_order_acquire ) == SaveThreadState::NeedsJoin ) { diff --git a/server/TracyView.hpp b/server/TracyView.hpp index bcc04ff8..aa1874a1 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -389,6 +389,7 @@ private: std::unique_ptr m_sourceView; const char* m_sourceViewFile; + bool m_uarchSet = false; ImFont* m_smallFont; ImFont* m_bigFont;