Updates the full report generation to optionally embed a url to the csvtosvg end point to create and display graphs on demand rather than generating them offline. This reduces the size of the reports by about 250x.
+ Updated GetCsvToSvgArgs to have different output formats (command line, url).
+ Added -useEmbeddedGraphUrl arg to specify inserting the url instead of fully inlining the graph. This is accompanied by -embeddedGraphUrlRoot to specify the base url to target.
+ Removed the concept and handling of external graphs as the code path wasn't used and didn't work.
+ Refactored GenerateReport to create a list of CsvSvgInfo objects to better handle the different formats (url, inline).
+ Updated command line handling to decoded − into '-' to fix an issue where negative numbers were treated as arguments.
+ Remove giant graphs from ReportTypes.xml as they're unused.
#rnx
#rb ben.woodhouse
#tests prt compare tests, manual testing
[CL 30677752 by tyler staples in ue5-main branch]
Make summaries and graphs collapsible. Summaries can start collapsed if specified in xml via the "collapsed" attribute.
Add a new HtmlSection helper class to assist with this.
We may later want to extend this functionality to add a top level hierarchy to the report, allowing us to have high level sections with multiple summaries in them.
[FYI] tyler.staples
[CL 30660748 by ben woodhouse in ue5-main branch]
This summary type sums up multiple CsvStat averages and emits the total as a SummaryTableMetric named metricName (if specified).
- Budget colors can optionally be applied to individual stats and/or the total via colourThresholds and colourThresholdsTotal nodes
- If emitStatMetrics is enabled, each stat will emit a SummaryTableMetric, named metricName/strippedStatName (with the same value as the existing CsvStatAverage element if it exists)
- Budget coloring is applied to existing CsvStatAverage elements.
- The budget for a given stat is assumed to be the first element of its colourThresholds. This value is displayed in the report
- A totalStatName attribute can be specified if a total stat already exists. If so, an "other" value will be output to the detailed summary table with the unaccounted value
- If the showTotal attribute is set to false (default: true), the total won't be shown in the detailed report
Other changes:
- Always read all CSV stat averages, regardless of whether -readAllStats is specified. -readAllStats is only now used to determine whether to show CSV stat averages in a summary table
Example:
<summary type="statBudgets" metricName="GTGameplay" title="Gamethread - Gameplay Budgets" hideStatPrefix="Exclusive/GameThread/" emitStatMetrics="1">
<colourThresholdsTotal>3,4,5,6</colourThresholdsTotal>
<colourThresholds stat="Exclusive/GameThread/Buildings">1,2,3,4</colourThresholds>
<stats>Exclusive/GameThread/Buildings,Exclusive/GameThread/Camera,Exclusive/GameThread/Curie,Exclusive/GameThread/Network*,Exclusive/GameThread/PlayerController*,Exclusive/GameThread/WorldTickMisc,Exclusive/GameThread/FlushLatentActions,Exclusive/GameThread/Tickables,Exclusive/GameThread/SyncBodies,Exclusive/GameThread/CharPhys*,Exclusive/GameThread/Character*,Exclusive/GameThread/FortPawnTickSubsystem,Exclusive/GameThread/SignificanceManager,exclusive/gamethread/vehicle*,Exclusive/GameThread/AbilityTasks,Exclusive/GameThread/Actor*,Exclusive/GameThread/HandleRPC,Exclusive/GameThread/RepNotifies,Exclusive/GameThread/TickActors,Exclusive/GameThread/Pickups,Exclusive/GameThread/ProjectileMovement,Exclusive/GameThread/TimelineComponent,Exclusive/GameThread/TimerManager,Exclusive/GameThread/FortTrainManager</stats>
</summary>
[FYI] andrew.ladenberger, michael.short
[CL 30329557 by ben woodhouse in ue5-main branch]
- Multiplier support for variables. Add multiplier="N" attribute to a variableset or variable
- FPSCharts : Compute frametime color thresholds automatically if MVP thresholds are specified and frametime is not
- Support empty color thresholds (useful if we want to clear via a variable)
- Add support for dumping the variables to the log for each CSV via -dumpVariables param
[CL 30060917 by ben woodhouse in ue5-main branch]
Metadata queries can also be blank if necessary if we want the values to always be set.
SourceName/DestName are still supported for back-compat if no query is provided
Note: There is no globalvariable support here. Solving this is not worth the complexity, performance hit and potential ordering and correctness implications
#tests Passes Test cases with identical results
[FYI] tyler.staples
[CL 29922595 by ben woodhouse in ue5-main branch]
- Add support for variable sets. This allows us to set blocks of variables based on metadata, which can be accessed via ${NAME} syntax. Variable sets support nesting and can be conditional using metadata queries
- We support a global variable set (declared under <globalVariableSet> in root), and local variable sets which apply to a given report type only (as <variableSet> children of the ReportType element)
example:
<globalVariableSet>
<variableSet>
<var mvpStatName="MVP${meta.targetframerate}"/>
<var targetFps="${meta.targetframerate}"/>
<var dynamicResBudget="100"/>
</variableSet>
<!-- Switch -->
<variableSet metadataQuery="platform=Switch">
<var frameTimeBudget="33.33"/>
<variableSet metadataQuery="deviceprofile=Switch_Console_Forward*">
<var dynamicResBudget="92"/>
</variableSet>
<variableSet metadataQuery="deviceprofile=Switch_Handheld_Forward*">
<var dynamicResBudget="88"/>
</variableSet>
</variableSet>
</globalVariableSet>
#tests Passes Test cases with identical results (if no changes to the XML)
[FYI] tyler.staples
[CL 29918333 by ben woodhouse in ue5-main branch]
- Equallity now uses numeric comparisons if appropriate
- Add a ~= operator for contains
- Fix a potential infinite loop if a bad term is evaluated
[CL 29918133 by ben woodhouse in ue5-main branch]
Support is provided for Summary classes via XElement extension helper methods, which now take an optional XmlVariableMappings param which handles the variable resolving. GetAttribute, GetSafeAttribute and GetValue support this.
Non metadata variables are also supported in theory e.g ${MyVariable}, but support for populating these does not exist yet
Various cleanup/refactoring and fixups of old code
#tests Passes Test cases with identical results (if no changes to the XML)
[FYI] tyler.staples
[CL 29912786 by ben woodhouse in ue5-main branch]
Also removed debug directory handling for launching CSVToSVG in debug mode.
#rnx
#tests prt test cases, prs unit tests, local report generation
#rb ben.woodhouse
[CL 29875869 by tyler staples in ue5-main branch]