mirror of
https://github.com/wolfpld/tracy.git
synced 2026-06-20 06:08:53 +00:00
Compare commits
5 Commits
mesh-debug
...
v0.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b6328f962 | ||
|
|
530f293c49 | ||
|
|
6fca188603 | ||
|
|
4d2c7899ab | ||
|
|
3a221dafde |
5
NEWS
5
NEWS
@@ -6,9 +6,12 @@ Note: Release numbers are nothing more than numbers. There are some
|
||||
"missing" versions due to trace file changes during development. This is not
|
||||
a mistake.
|
||||
|
||||
v0.5 (xxxx-xx-xx)
|
||||
v0.5 (2019-08-10)
|
||||
-----------------
|
||||
|
||||
This is the last release which will be able to load pre-v0.4 traces. Use the
|
||||
update utility to convert your old traces now!
|
||||
|
||||
- Major decrease of trace dump file size.
|
||||
- Major optimizations across the board.
|
||||
- Vcpkg is now used for library management on Windows.
|
||||
|
||||
@@ -24,7 +24,8 @@ The following platforms are confirmed to be working (this is not a complete list
|
||||
|
||||
[Introduction to Tracy Profiler v0.2](https://www.youtube.com/watch?v=fB5B46lbapc)
|
||||
[New features in Tracy Profiler v0.3](https://www.youtube.com/watch?v=3SXpDpDh2Uo)
|
||||
[New features in Tracy Profiler v0.4](https://www.youtube.com/watch?v=eAkgkaO8B9o)
|
||||
[New features in Tracy Profiler v0.4](https://www.youtube.com/watch?v=eAkgkaO8B9o)
|
||||
[New features in Tracy Profiler v0.5](https://www.youtube.com/watch?v=P6E7qLMmzTQ)
|
||||
|
||||
[A quick FAQ.](FAQ.md)
|
||||
[List of changes.](NEWS)
|
||||
|
||||
@@ -245,7 +245,35 @@ static inline void CpuId( uint32_t* regs, uint32_t leaf )
|
||||
static void InitFailure( const char* msg )
|
||||
{
|
||||
#if defined _WIN32 || defined __CYGWIN__
|
||||
MessageBoxA( nullptr, msg, "Tracy Profiler initialization failure", MB_ICONSTOP );
|
||||
bool hasConsole = false;
|
||||
bool reopen = false;
|
||||
const auto attached = AttachConsole( ATTACH_PARENT_PROCESS );
|
||||
if( attached )
|
||||
{
|
||||
hasConsole = true;
|
||||
reopen = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto err = GetLastError();
|
||||
if( err == ERROR_ACCESS_DENIED )
|
||||
{
|
||||
hasConsole = true;
|
||||
}
|
||||
}
|
||||
if( hasConsole )
|
||||
{
|
||||
fprintf( stderr, "Tracy Profiler initialization failure: %s\n", msg );
|
||||
if( reopen )
|
||||
{
|
||||
freopen( "CONOUT$", "w", stderr );
|
||||
fprintf( stderr, "Tracy Profiler initialization failure: %s\n", msg );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBoxA( nullptr, msg, "Tracy Profiler initialization failure", MB_ICONSTOP );
|
||||
}
|
||||
#else
|
||||
fprintf( stderr, "Tracy Profiler initialization failure: %s\n", msg );
|
||||
#endif
|
||||
@@ -258,7 +286,14 @@ static int64_t SetupHwTimer()
|
||||
CpuId( regs, 0x80000001 );
|
||||
if( !( regs[3] & ( 1 << 27 ) ) ) InitFailure( "CPU doesn't support RDTSCP instruction." );
|
||||
CpuId( regs, 0x80000007 );
|
||||
if( !( regs[3] & ( 1 << 8 ) ) ) InitFailure( "CPU doesn't support invariant TSC." );
|
||||
if( !( regs[3] & ( 1 << 8 ) ) )
|
||||
{
|
||||
const char* noCheck = getenv( "TRACY_NO_INVARIANT_CHECK" );
|
||||
if( !noCheck || noCheck[0] != '1' )
|
||||
{
|
||||
InitFailure( "CPU doesn't support invariant TSC.\nDefine TRACY_NO_INVARIANT_CHECK=1 to ignore this error, *if you know what you are doing*." );
|
||||
}
|
||||
}
|
||||
|
||||
return Profiler::GetTime();
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ The Microsoft compiler is very insistent on writing the CPU core identifier to t
|
||||
|
||||
\subsubsection{Misinformation about \texttt{rdtscp}}
|
||||
|
||||
In various internet sources you can find warnings that the \texttt{rdtscp} readings are not reliable, can vary between CPU cores, or can be affected by the CPU frequency adjustments. While this was a sound advice a long time ago, it is no longer valid since the Intel Sandy Bridge microarchitecture (released in 2011) introduced \emph{invariant TSC}. Tracy will check for this feature and refuse to run, if it is not found.
|
||||
In various internet sources you can find warnings that the \texttt{rdtscp} readings are not reliable, can vary between CPU cores, or can be affected by the CPU frequency adjustments. While this was a sound advice a long time ago, it is no longer valid since the Intel Sandy Bridge microarchitecture (released in 2011) introduced \emph{invariant TSC}. Tracy will check for this feature and refuse to run, if it is not found\footnote{Invariant TSC might be not available in specific scenarios, e.g. in some virtual environments. You may set the environment variable \texttt{TRACY\_NO\_INVARIANT\_CHECK=1} to skip this check, \emph{only if you know what you are doing}.}.
|
||||
|
||||
While there could be a timer dispatch function, similar to the one on ARM CPUs, it would incur additional cost, which would be paid by everyone, while benefiting (almost) no one. If need be, an optional macro should be added to enable such dispatch.
|
||||
|
||||
|
||||
@@ -404,6 +404,10 @@ int main( int argc, char** argv )
|
||||
{
|
||||
OpenWebpage( "https://www.youtube.com/watch?v=eAkgkaO8B9o" );
|
||||
}
|
||||
if( ImGui::Selectable( ICON_FA_VIDEO " New features in Tracy Profiler v0.5" ) )
|
||||
{
|
||||
OpenWebpage( "https://www.youtube.com/watch?v=P6E7qLMmzTQ" );
|
||||
}
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
ImGui::Separator();
|
||||
|
||||
@@ -6,8 +6,8 @@ namespace tracy
|
||||
namespace Version
|
||||
{
|
||||
enum { Major = 0 };
|
||||
enum { Minor = 4 };
|
||||
enum { Patch = 11 };
|
||||
enum { Minor = 5 };
|
||||
enum { Patch = 0 };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5964,24 +5964,10 @@ void View::DrawMessages()
|
||||
}
|
||||
m_visibleMessages = msgcnt;
|
||||
|
||||
if( !filterActive )
|
||||
if( ImGui::GetScrollY() >= ImGui::GetScrollMaxY() )
|
||||
{
|
||||
const auto maxScroll = ImGui::GetScrollMaxY();
|
||||
if( maxScroll != 0 )
|
||||
{
|
||||
const auto msgssize = msgs.size();
|
||||
if( m_prevMessages == msgssize && !m_messageFilterWasActive )
|
||||
{
|
||||
m_messagesScrollBottom = ImGui::GetScrollY() == maxScroll;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_prevMessages = msgssize;
|
||||
if( m_messagesScrollBottom ) ImGui::SetScrollHereY();
|
||||
}
|
||||
}
|
||||
ImGui::SetScrollHereY( 1.f );
|
||||
}
|
||||
m_messageFilterWasActive = filterActive;
|
||||
|
||||
ImGui::EndColumns();
|
||||
ImGui::EndChild();
|
||||
|
||||
@@ -267,9 +267,7 @@ private:
|
||||
ZoneEvent* m_zoneHover = nullptr;
|
||||
int m_frameHover = -1;
|
||||
bool m_messagesScrollBottom;
|
||||
size_t m_prevMessages = 0;
|
||||
ImGuiTextFilter m_messageFilter;
|
||||
bool m_messageFilterWasActive = false;
|
||||
int m_visibleMessages = 0;
|
||||
bool m_disconnectIssued = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user