* Breadcrumbs are processed into a common data structure used to dump the contents to the log and also used by the crash reporting routines to format breadcrumbs into the crash report file.
* The format used by the crash report is versioned so that parsers know what to expect if the format ever changes. The format is specifically written for automated parsing - the human-readable dump stays in the log.
* A (per-queue) hash of the full breadcrumbs stack and a separate hash for the active subset are computed and stored in the crash report.
* The existing string dumped to the log is unchanged.
Example of the new crash report section:
<GPUBreadcrumbs>
<FormatVersion>1.0</FormatVersion>
<Queue>
<Name>3D Queue 0</Name>
<FullHash>D02D1A942643A9C549606769037ED96B52104742</FullHash>
<ActiveHash>4DE9A4E81D71A1993E939D82A1C3ED063B6F6E7C</ActiveHash>
<Breadcrumbs>{{Frame 2540},A,{{{BufferPoolCopyOps},F},{{TexturePoolCopyOps},F},{{WorldTick},F},{{SendAllEndOfFrameUpdates},F},{{GPUDebugCrash_DirectQueue_Hang},A},{{ClearGPUMessageBuffer},A},{{VirtualTextureClear},N},{{ShaderPrint::UploadParameters},N},{{UpdateDistanceFieldAtlas},N},{{Scene},N},{{EnqueueCopy(GPUMessageManager.MessageBuffer)},N},{{AccessModePass[Graphics] (Textures: 7, Buffers: 6)},N},{{SlateUI Title = Test Application },N}}}</Breadcrumbs>
</Queue>
<Queue>
<Name>Compute Queue 0</Name>
<FullHash>1DC8AED3D68A1B4DC2719B9D94F3EFBE16E8E371</FullHash>
<ActiveHash>DA39A3EE5E6B4B0D3255BFEF95601890AFD80709</ActiveHash>
<Breadcrumbs>{{AccessModePass[AsyncCompute] (Textures: 4, Buffers: 2)},F}{{Scene},F}{{AccessModePass[AsyncCompute] (Textures: 4, Buffers: 2)},F}{{Scene},F}{{AccessModePass[AsyncCompute] (Textures: 4, Buffers: 2)},F}{{Scene},F}{{AccessModePass[AsyncCompute] (Textures: 4, Buffers: 2)},F}{{Scene},N}{{AccessModePass[AsyncCompute] (Textures: 4, Buffers: 2)},N}</Breadcrumbs>
</Queue>
</GPUBreadcrumbs>
[CL 27884877 by daniele vettorel in ue5-main branch]
Example config in Editor.ini:
[Names]
PreallocateNames=10485760
PreallocateNameMemoryMB=900
#rb ben.zeigler
[CL 27883674 by robert millar in ue5-main branch]
This can be controlled via "Localization.UseLocaleSpecificDigitCharacters" and defaults to True to preserve the current behavior
#jira
[FYI] Kevin.Shen
[CL 27852750 by jamie dale in ue5-main branch]
FResources::NumClusters now reflects the number of clusters after trim, not before.
#rb brian.karis
[FYI] graham.wihlidal, jamie.hayes
[CL 27830347 by rune stubbe in ue5-main branch]
Allocating and freeing slots can be contended, getting and setting a slot value is fast but has an additional indirection compared with OS TLS. Used only for windows editor for now, because it's a bit slower than OS TLS implementation.
#rb dmytro.vovk, francis.hurteau
[CL 27827939 by andriy tylychko in ue5-main branch]
* Add the Mac-only CVAR Slate.MacMainMenuInsideUnrealWindow (ignored on other platforms). When it's false (default) there should be no user-visible difference. When true, Slate will draw (most of) the main menu inside the Unreal windows instead of using the macOS system main menu bar at the top of the screen.
* Expose the value of the CVAR via a new function FPlatformMisc::CanShowMenusInWindows(). This always returns true on non-Mac platforms.
* Remove unused code in SDockingTabStack.cpp.
* Improve spacing between tabs and close/min/max buttons in the title bar of smaller windows on the Mac.
#jira UE-186873
[CL 27759699 by sebastian arleryd in ue5-main branch]
[FYI] Josh.Adams
Original CL Desc
-----------------------------------------------------------------
- Deprecated GetSectionPrivate and FindOrAddSection, and accessors in FConfigFile that could return a non-const FConfigSection (this is so we can track modifications to config values)
- Added AddToSection, RemoveKeyFromSection, etc to replace directly accessing a FConfigSection
- Fixed up Epic code for the deprecations (at least the majority, some projects that aren't built by Horde presubmit may have some that we will address going forward)
#jira UE-194955
#rb david.harvey and various others
[CL 27745141 by stan hormell in ue5-main branch]
- Added AddToSection, RemoveKeyFromSection, etc to replace directly accessing a FConfigSection
- Fixed up Epic code for the deprecations (at least the majority, some projects that aren't built by Horde presubmit may have some that we will address going forward)
#jira UE-194955
#rb david.harvey and various others
[CL 27731364 by josh adams in ue5-main branch]
Only load from boot hotfix file for CVars which has flag ECVF_SaveForNextBoot.
Reason: Engine has more restriction on loading .ini file.
[REVIEW] [at]michael.atchison [at]michael.kirzinger
#rb [at]michael.atchison
#test Tried in Shipping version on console
[CL 27724564 by lorry li in ue5-main branch]
- Removed extra page allocation for VMA pool header.
- Added VMA pool stats reporting.
- Removed extra lock per pool (was not used).
- Scale factor parameter is configurable via compile-time definition.
#rb [at]dmytro.vovk
[FYI] [at]mickael.gilabert, [at]dmytro.vovk, [at]johan.torp, [at]chris.babcock
#tests replays
[CL 27719144 by anton dunchev in ue5-main branch]
Enabled by default. When disabled UVs are not lerped in the simplifier. This is useful when data stored in UVs isn't valid to interpolate, for example indexes.
Fixed long standing bug where locked boundary verts still would get attributes recalculated when taking part in an edge collapse. This results in them not matching when later merged with their neighbor, causing attribute discontinuities where they previously weren't. That will degrade further simplification, bloat vertex work, bloat vertex storage, and generally look worse.
Can reduce rendered vertex count by 14% and disk size by 3%.
#rb rune.stubbe, graham.wihlidal
#lockdown marc.audy
[CL 27715715 by Brian Karis in ue5-main branch]