mirror of
https://github.com/wolfpld/tracy
synced 2025-04-29 04:23:51 +00:00
Select microarchitecture basing on cpuid.
This commit is contained in:
parent
eab3adfa1d
commit
15454d2253
@ -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<OpsNum; i++ )
|
||||
{
|
||||
@ -293,6 +291,94 @@ SourceView::~SourceView()
|
||||
delete[] m_data;
|
||||
}
|
||||
|
||||
static constexpr uint32_t PackCpuInfo( uint32_t cpuid )
|
||||
{
|
||||
return ( cpuid & 0xFFF ) | ( ( cpuid & 0xFFF0000 ) >> 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;
|
||||
|
@ -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 );
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -389,6 +389,7 @@ private:
|
||||
|
||||
std::unique_ptr<SourceView> m_sourceView;
|
||||
const char* m_sourceViewFile;
|
||||
bool m_uarchSet = false;
|
||||
|
||||
ImFont* m_smallFont;
|
||||
ImFont* m_bigFont;
|
||||
|
Loading…
x
Reference in New Issue
Block a user