Thursday, June 7, 2012

RAD Telemetry 1.1i Released!


As promised, continuing our monthly releases with performance tweaks and more platform support.

IMPORTANT: This change requires a full upgrade and rebuild, and the tmPlot API will fail to compile.  We apologize for the minor inconvenience, but we needed to add a parameter to the tmPlot APIs and figured doubling the surface area of those APIs for one parameter was probably not a good long term direction.  The new parameter is a 'flags' parameter that you can just set to 0 and everything will work.

Run-Time

  • Change: Protocol change, so make sure server and run-time are both upgraded!
  • Change: tmPlotXXX APIs have been changed, an additional parameter is now required -- you must recompile and relink!
  • Bugfix/Change: TM_VA_LIST parameter is now expected to be a va_list* instead of a va_list
  • Change: Added TM_SLOW define that is set on platforms with very slow networking and timestamp querying (currently iOS)
  • Bugfix/Changes: additional support for unannounced platforms
  • Enhancement: TMCT_FILE support for iOS and PS3
  • Bugfix: GPU D3D crash bug fixed

Visualizer

  • Bugfix: certain object path names would crash plot display
  • Bugfix: fixed missing newline when printing callstack in tooltip
  • Enhancement: symbolization support enhanced for Linux and OS X

Server

  • Change: Protocol change, so make sure server and run-time are both upgraded!

Monday, May 7, 2012

RAD Telemetry 1.1h Released!

We're back on our monthly release schedule -- this month we have bug fixes, performance improvements and some new platform support!

BETA iOS SUPPORT IS NOW AVAILABLE!

Run-Time

  • Enhancement: we now have iOS support!
  • Enhancement: additional support for unannounced platforms, please contact sales3@radgametools.com for more information
  • Enhancement: additional enhancements for the WiiU platform
  • Enhancement: quad buffering of Telemetry write buffers enabled on all platforms (previously this was only on PS3 and 360)
  • Bugfix: RADEXPLINK definition mismatch if NTELEMETRY was defined and another RAD product was included
  • Bugfix: PS3 strings were sometimes not sent over properly in some edge cases
  • Bugfix: tmShutdown now compiles to TMERR_DISABLED instead of an empty statement when NTELEMETRY is defined
  • Bugfix: handshake timeout now honors the timeout parameter to tmOpen instead of being hardcoded to 1s
Visualizer
  • Change: removed confusing and vestigial tab 'Memory'
Server
  • Bugfix: server is more tolerant of unknown string references sent by the run-time
  • Bugfix: when -keeptmp was specified and the server connection crashed, the *.00 file was inadvertently deleted.  Fixed.

Thursday, April 12, 2012

RAD Telemetry 1.1g Released!

Hey everyone, new release for Telemetry!  This is a relatively small update but still lots of good stuff going on!

Run-time

  • Enhancement: TMOF_NO_PDB_LOOKUP added.  In some cases on Windows tmOpen can take a long time while doing PDB lookups of loaded modules.  This allows you to bypass that delay.
  • Enhancement: Significantly better performance in the Telemetry processing thread on PS3, 360 and Windows.
  • Change: default Telemetry thread priority increased to avoid starvation
Visualizer
  • Enhancement: "Lock to end" checkbox is now persistent between sessions
  • Enhancement: plotted zone times are now in the same plot group so you can compare scales
  • Enhancement: Build information passed to tmOpen is now displayed in the session view
  • Change: New license key system
  • Change: Removed deprecated thread balance pie chart
Server
  • Enhancement: a -maxsessions parameter has been added to tmserver so that it can be scriptable.  Now you can launch the server, tell it to capture N sessions, then have it exit when it's done capturing.

Wednesday, March 14, 2012

Telemetry 1.1f released!

Now that the holidays and GDC are behind us we're going to buckle down and get some pretty significant features and changes that our customers have asked for.  But before that we've released 1.1f with a lot of minor fixes and improvements.

Speaking of GDC, it was great meeting so many of our customers and getting positive feedback on Telemetry -- thanks for stopping by the booth!

Run-Time

  • Enhancement: new plot types TMPT_TIME_US and TMPT_TIME_CLOCKS
  • Bugfix: crash bug with Windows DX9 tmxgpu
  • Bugfix: crash bug with TMCT_FILE and OS X
  • Bugfix: tmSetLockStateMinTime wasn't checking some parameters in checked builds
  • Bugfix: if the memory arena passed to tmInitializeContext wasn't zeroed out bad things could happen.  Telemetry now automatically zeroes that memory first.
Visualizer
  • Enhancement: A very basic "search for zone" is implemented using Ctrl-F.  Does not support wildcards and only searches for zones that are currently loaded in memory.  A better implementation is in the works, but enough people asked for this that we've decided to provide this short term implementation.
  • Enhancement: You can now plot a zone's time by right-clicking on it and choosing "Plot zone time".  As with search, you have to make sure that all zones you care about are in memory.  And again, this is a short term solution until we get a global solution in place.
  • Enhancement: "lock to end" supported, so if watching live captures the last frame is visible at all times instead of scrolling off screen.
  • Bugfix: Slow performance when rendering really wide zones 
  • Bugfix: Right-click on some zones and zone types was sketchy
  • Bugfix: Intermittent crashes when viewing a session with a combination of very short and very long frames.
Server
  • Bugfix: rare race condition when accepting multiple profiling sessions from the same machine in less than one second
Misc
  • Bugfix: tmSetLockStateMinTime return values were improperly documented
  • Bugfix: tmSPUBindContextToListener function signature documentation was wrong

Tuesday, December 6, 2011

Telemetry 1.1e Released!

Even though it's been only a couple weeks since our last release we wanted to get another big one out before the holidays. We've made a lot of little enhancements, added support for a new platform, and, best of all, have implemented a very handy feature -- off-line performance capture!

As long time Telemetry users know, Telemetry's architecture is based on streaming data over the network to a server which acquires, processes, stores, and eventually serves up the data. Unfortunately this isn't practical in certain situations. For example, a testing lab may not have network access for security reasons; some consoles have notoriously poor networking performance (even while wired); or a test machine may not have access to a Telemetry server.

To address these concerns we've implemented off-line data capture. The only change you have to make is a parameter to tmOpen -- specify TMCT_FILE instead of TMCT_TCP. Now instead of writing to the network Telemetry will write to disk. When done you take the "tmdata" files and then import them into the Visualizer (or play them back to the server). It's that simple, and in some cases can make a dramatic (5-10x) performance difference.

Run-Time
  • Enhancement: Performance improvements for 360 and PS3
  • Enhancement: Added TMPI_START_TIME parameter to tmGetPlatformInformation
  • Enhancement: Win32: Changed context switch trace management code in an effort to be more robust across a wider range of systems
  • Enhancement: Duration of TCP send now has a plot automatically generated
  • Enhancement: Added more send buffers to increase performance and prevent stalls while writing to the network
  • Enhancement: TMCT_FILE for local mirror of network traffic (i.e. disconnected captures are now possible!)
  • Enhancement: BETA support for new platform
  • Change: PS3: Telemetry thread now defaults to hwthread 1
  • Change: 360: Telemetry thread now defaults to hwthread 5

Server

  • Enhancement: Greatly enhanced performance under certain conditions with lots of frames
  • Bugfix: Occasional server crashes when open zones spanned a very large number of frames
  • Change: removed TM_APP_STRING and TM_APP_TICK console spam

Visualizer

  • Enhancement: "Import Data Files" feature added (related to TMCT_FILE support)

Other

  • Bugfix: Some documentation was using tmDynamicString improperly
  • Enhancement: Cleaned up example files
  • Enhancement: Added 'tmimport' command to playback raw net files captured with TMCT_FILE sessions

Monday, November 21, 2011

Telemetry 1.1d Released!

This is another maintenance release for Telemetry. Thanks to everyone who submitted bug reports and feature requests!

Runtime
  • Bugfix: calling tmInitializeContext on an active context would result in random crashes. Now it returns an error with checked builds.
  • Enhancement: (Experimental) TMZF_PLOT_TIME_EXPERIMENTAL. Specifying this will generate a plot of times for the given zone.
  • Enhancement: (Experimental) You can now register your own debug display function for the run time using tmSetParameter with TMP_DEBUG_PRINTER
  • Bugfix: Win32 build was generating a benign warning/error with AppVerifier due to attempting to OpenThread a NULL handle
  • Bugfix: TMXGPU: passing a NULL context to tmxgpu would result in crashes
  • Bugfix: Linux and OS X 32-bit: dynamic strings would sometimes crash the run time

Visualizer

  • Bugfix: TMMF_ICON_* messages weren't showing up in the message window
  • Bugfix: Multiple different blob plugins were not handled correctly
  • Bugfix: Fixed weird UI issues where zone display would pick up incorrect mouse events
  • Bugfix: OS X: Ok/Cancel buttons in message box were reversed
  • Bugfix: D3D: Too many plot samples crashed Visualizer
  • Change: OS X: Defaults to 1280x800 window size

Server

  • Bugfix: Fixed a couple causes of the 'hanshake times out' issue
  • Bugfix: Fixed some server instability
  • Bugfix: Blobs were not served up properly
  • Enhancement: 32-bit Linux version available now

Other

  • Bugfix: Updated UE3 integration docs
  • Bugfix: Fixed missing documentation for tmsRegisterMessageHandler, tmPPURegisterSPUProgram and TmOpenFlag
  • Enhancement: Added embedded server tutorial code


Wednesday, November 9, 2011

Telemetry 1.1c Released!!

This is a maintenance fix for Telemetry 1.1. As always, update all components in tandem!

Runtime
  • Change: TMXERR_GPU_INVALID_CONTEXT is now returned by the tmxGpuInit functions if a NULL context is passed
  • Change: Fixed spurious warnings when trying to close a NULL socket (now silently ignored)
  • Bugfix: Unused parameter warning in tmxgpu
  • Bugfix: Dynamic strings were not working properly on 32-bit OS X run time
  • Bugfix: tmSendCallStack did not send proper data when given a callstack previously fetched via tmGetCallStack

Visualizer

  • Changes: Zones are no longer arbitrarily split across frame boundaries
  • Bugfix: Context switch rendering on 360 regression for 1.1
  • Bugfix: Newlines were not always handled correctly in license file leading to "Corrupt Visualizer license" messages
  • Bugfix: Minimize-then-maximize to black screen
  • Bugfix: Visualizer's spawned editor is now found in path instead of requiring a full path name
  • Bugfix: TMMF_ZONE_LABEL was inadvertently replacing labels even on aggregate zones (e.g. LOD zones)
  • Bugfix: thin zones were incorrectly colored as LOD zones
  • Bugfix: Visualizer plugins were occasionally not found at startup

Server

  • Bugfix: Unbalanced leaves with enters were causing intermittent server crashes

Other

  • Bugfix: Symbolizer bugs fixed
  • Enhancement: Symbolizer now works correctly on OS X
  • Enhancement: Additional platform support for symbolizer
  • Change: UE3 integration docs updated