Commit Graph

17 Commits

Author SHA1 Message Date
Jaroslaw Surowiec
bb53d3a273 Stats - Added macro GET_STATDESCRIPTION to get the stat's description
#codereview Robert.Manuszewski

[CL 2080578 by Jaroslaw Surowiec in Main branch]
2014-05-21 12:36:50 -04:00
Andrew Brown
fd3d2d3f9d Make sure GCycleStatsShouldEmitNamedEvents is enabled/disabled correctly.
#ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle)

#branch UE4

#change GCycleStatsShouldEmitNamedEvents is now an int, so that it's incremented whenever a viewport enables the stat and decremented whenever a viewport disables it. This is mainly so the stat continues reporting until the last viewport (which has enabled it) disables it.

#note It's worth noting that if the stat is enabled in a game viewport the counter will be incremented, but not decremented when the window closes (it's only decremented if the stat is toggled again in that viewport), this is because game viewport stats now persist between runs, so when the game viewport is next ran (during the editor session) named events will still be enabled from the last time.

reviewed by Marcus.Wassmer

[CL 2073972 by Andrew Brown in Main branch]
2014-05-15 04:41:11 -04:00
Dmitry Rekman
e3105eda19 Merging the bulk of Darkside changes.
- New target platforms (LinuxNoEditor for client+server, LinuxClient for client, Linux for editor, LinuxServer for dedicated server - mirroring other platforms).
- Preliminary support for gcc in the toolchain (and some safe fixes in code).
- No more lowercasing when accessing files on Linux, tread carefully.
- Changes needed for native compilation and other minor improvements.

#codereview Josh.Adams, Michael.Liebenow, Steve.Robbs

[CL 2067133 by Dmitry Rekman in Main branch]
2014-05-08 13:01:46 -04:00
Jaroslaw Surowiec
5da9559694 Profiler - Added first version of the thread view (to capture the data in the game use 'stat startfileraw')
#codereview Robert.Manuszewski

[CL 2066860 by Jaroslaw Surowiec in Main branch]
2014-05-08 08:00:35 -04:00
Jaroslaw Surowiec
15f13fc6d1 Stats - Fix for STATS=0
[CL 2063518 by Jaroslaw Surowiec in Main branch]
2014-05-05 11:20:07 -04:00
Jaroslaw Surowiec
fd225b6412 Stats - Restored indexed rendering thread, but now it's based on NAME_RenderThread, removed all references to "RenderingThread", leaving only these required for backward compatibility
Stats - Added missing GetGroupCategory to the thread node in the GetRawStackStats

#codereview Robert.Manuszewski

[CL 2063512 by Jaroslaw Surowiec in Main branch]
2014-05-05 11:15:08 -04:00
Andrew Brown
0b68fa6beb Allow engine stats to still be triggered when STAT is undefined
#ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle)

#branch UE4

#change Moved code which fires notification delegates into another function and modiified code to call this instead when the main stat handler is unavailable.

reviewed by Thomas.Sarkanen

[CL 2062088 by Andrew Brown in Main branch]
2014-05-02 09:44:11 -04:00
Andrew Brown
b145f1d79e Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly.
#ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle)

#branch UE4

#change
DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be.
Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future.
Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter...
GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these.
RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible).
Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them.
Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly.

Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to
ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set
IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not
SetSimpleStat û Sets the state of a specified Simple Stats
SetSimpleStats - Sets the state of the specified Simple Stats
RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned.
Each Exec function had the code it executes which itÆs toggled and rendered into functions

Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too.

FSceneViewport:
SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends.
SEditorViewport:
ToggleStatCommand û Called when a stat is enabled/disabled from the UI
IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI
SEditorViewportViewMenu:
GenerateViewMenuContent û Made protected and virtual so it could be called externally.
FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later
Destructor û Needed to reset delegates
HandleNewGroupStat û Creates the new group stat commands
HandleNewStat û Creates the new stat command
FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order
SLevelViewport:
Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS).
OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global
OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport.
ToggleStatCommand û Called when the user selects any other stat option from the viewport.
BindStatCommand û Used to bind the menu action to the command name (used by delegate)

Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize
Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call).

FViewportClient:
Moved global ESoundShowFlags enum list into this class.
FCommonViewportClient:
Destructor û Needed to reset GStatProcessingViewportClient
FLevelEditorViewportClient
SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func
SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func
UGameViewportClient:
Destructor û Needed to cleanup delegate usage.
FViewportClient & FLevelEditorViewportClient & UGameViewportClient*
GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec
GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec
GetEnabledStats û Gets a list of all the stats which are enabled for the viewport
SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport
IsStatEnabled û Checks to see if a specific stat is enabled for the viewport
SetStatEnabled û Sets a specifics stats state to enabled or disabled
GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec
SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec
HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport
HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport
HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport
HandleViewportStatDisableAll (delegate) û disables all stats for the viewport
*FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs.

FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS).
Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false).

Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur.
Added FillShowStatsSubMenus so that menus can be generated which have submenus
Added the Stats sub menu to the View menu

Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed
HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists.
SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame).

Stripped out all unneeded globals

[CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
Stephan Delmer
6c7c666a97 Merging using UE4-Fortnite-To-UE4 using CL #2054046
[CL 2055709 by Stephan Delmer in Main branch]
2014-04-24 15:04:22 -04:00
Jaroslaw Surowiec
0c14146e7f #UE4
- Fixed problem with æstat dumphitchesÆ not found game thread, switched to use the short name instead of looking at the beginning of the full name
 - Fixed problem with æstat dumphitchesÆ causes chain reaction of hitch reports (if a hitch is detected, the stack is logged, but the next hitch can be detected after 4 frames, when the stats thread gets synchronized with the game thread, assuming that this command is used in the long term testing, it shouldnÆt be a problem if it misses a hitch due to 4 frames freeze)

#codereview Robert.Manuszewski

[CL 2050809 by Jaroslaw Surowiec in Main branch]
2014-04-23 19:47:14 -04:00
Jaroslaw Surowiec
918aa93b10 #UE4
- Added missing file

[CL 2046808 by Jaroslaw Surowiec in Main branch]
2014-04-23 19:00:47 -04:00
Jaroslaw Surowiec
71b76220f8 #UE4
- Replaced magic value 'Thread_' with ThreadNameMarker, improved a bit versioning of stats files
- Added an option to inject the full stats metadata into stream, required by the profiler client manager to maintain the continuity of the stat messages
- Simplified thread metadata
- Added full thread name to the raw callstack

#codereview Robert.Manuszewski

[CL 2046772 by Jaroslaw Surowiec in Main branch]
2014-04-23 18:59:34 -04:00
Jaroslaw Surowiec
c332fc2a58 #UE4
- Added SCOPE_LOG_TIME_FUNC() and SCOPE_LOG_TIME_FUNC_WITH_GLOBAL(CumulativePtr) to log time spent in the specified scope, uses __FUNCTION__ as a display name

[CL 2039541 by Jaroslaw Surowiec in Main branch]
2014-04-23 17:26:37 -04:00
Jaroslaw Surowiec
f2b46005e1 #UE4
- Added FScopeLogTime to log time spent in the specified scope, can be used without stats, usage:

{
   SCOPE_LOG_TIME(TEXT("MyTimer"),[&GlobalTotalTimeAndCount]);
   .....
}

#codereview Robert.Manuszewski

[CL 2038529 by Jaroslaw Surowiec in Main branch]
2014-04-23 16:37:58 -04:00
Jaroslaw Surowiec
d9bbee4320 #UE4
- Platform memory
  - Added LogMemory to log all memory related things
  - Separated PlatformMemory stats from Allocator stats, added MemoryAllocator group for allocator stats, added MemoryPlatform for platform memory specific stats, stats for these groups are updated once per frame in FEngineLoop::Tick, stats are duplicated, so they can be accessed if STATS is not enabled
 - Removed outdated code, references to unsupported platforms like PS3 or Xbox360
 - Updated MallocProfiler to support these changed, increased malloc profiler file version to 4
 - From now FGenericPlatformMemory.GetStats contains FPlatformMemoryConstants so there is no need to call the second method
 - Improved memory reporting for Windows platform, other platforms need to be updated separately
 - Misc tweak and fixes

#codereview Robert.Manuszewski

[CL 2038526 by Jaroslaw Surowiec in Main branch]
2014-04-23 16:37:37 -04:00
UnrealBot
db494a6e69 Engine source (Main branch up to CL 2037954) 2014-04-02 18:09:23 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00