Allow FShader::Finalize to be called multiple times, ensure index doesn't change
#rb none
#ROBOMERGE-SOURCE: CL 12958102 in //UE4/Release-4.25/... via CL 12958109 via CL 12959154
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12959964 by ben ingram in Main branch]
Fix issues causing material DDC values to be non-determinisic
- Shader code within resources sorted by hash
- Debug source code values sorted by type
Also add mechanism to serialize any MemoryLayout described type to string
- Makes it easier to inspect material data to find sources of non-determinism
#rb none
#ROBOMERGE-OWNER: ben.ingram
#ROBOMERGE-AUTHOR: ben.ingram
#ROBOMERGE-SOURCE: CL 12944988 in //UE4/Release-4.25/... via CL 12944998 via CL 12957822
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12957827 by ben ingram in Main branch]
#ROBOMERGE-SOURCE: CL 12945299 via CL 12945300 via CL 12945302
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12945306 by arne schober in Main branch]
- this was added to aid DXC bring up and is no longer needed
- there are no active references
#rb David.Harvey
#jira none
#rnx
#ushell-cherrypick of 12599316 by eric.mcdaniel
#ROBOMERGE-SOURCE: CL 12754507 in //UE4/Release-4.25Plus/... via CL 12783839
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)
[CL 12786352 by eric mcdaniel in Main branch]
- valid settings for r.DumpShaderDebugInfo are now 0-3
- 0 - don't dump (unchanged)
- 1 - always dump (unchanged)
- 2 - dump on error (ie compilation failure)
- 3 - dump on generated errors or warnings
- implementation details:
- mode 2 and 3 are achieved by reissuing shader compilation jobs
- jobs are issued as normal with no DumpInfoPath set so the platform specific shader compilers will not dump additional files
- jobs that fail to compile (mode 2) or generate any errors/warnings (mode 3) are reissued with a valid DumpInfoPath which will cause the platform specific shader compilers to dump the additional files
- the directory creation is deferred until the second pass on mode 2 or 3 as well so no empty directories are created
- limitations:
- shader compilation jobs which crash the shader compile worker will not produce debug dump info on modes 2 or 3 as we will not get an opportunity to reissue the jobs
#rb Rolando.Caloca, Lukas.Hermanns
#jira none
#ushell-cherrypick of 12649065 by eric.mcdaniel
#ROBOMERGE-SOURCE: CL 12729479 in //UE4/Release-4.25Plus/... via CL 12781786
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)
[CL 12782596 by eric mcdaniel in Main branch]
#ROBOMERGE-SOURCE: CL 12764102 via CL 12764127 via CL 12764136 via CL 12764147
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v678-12743200)
[CL 12764160 by jeremy moore in Main branch]
#rb none
#ROBOMERGE-SOURCE: CL 12759664 via CL 12759665 via CL 12759667
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v678-12743200)
[CL 12759668 by ben ingram in Main branch]
#rb mickael.gilabert
[FYI] mike.fricker
#rnx
#ROBOMERGE-SOURCE: CL 12692247 via CL 12692249 via CL 12692255 via CL 12692259
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v676-12543919)
[CL 12692267 by jordan cristiano in Main branch]
Improve behavior when global shades can't be loaded due to memory layout differences
(Trigger a fatal log mentioning missing global shaders, rather than simply crash on nullptr access)
#rb none
#ROBOMERGE-SOURCE: CL 12675920 in //UE4/Release-4.25/... via CL 12675925 via CL 12675937
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12675940 by ben ingram in Main branch]
#rb stefan.boberg
#jira none
#ROBOMERGE-SOURCE: CL 12670885 in //UE4/Release-4.25/... via CL 12670887 via CL 12670888
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12672054 by jonas meyer in Main branch]
Force 64bit alignment for some uint64s used with atomics, fixes crash on 32bit windows
#rb none
#ROBOMERGE-SOURCE: CL 12669971 in //UE4/Release-4.25/... via CL 12669974 via CL 12669981
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12671692 by ben ingram in Main branch]
- Shaders are searched by TypeName and PermutationId, so move those fields out of FShader and into separate arrays inside ShaderMap, to reduce cache misses while finding shaders
#rb none
#ROBOMERGE-OWNER: ben.ingram
#ROBOMERGE-AUTHOR: ben.ingram
#ROBOMERGE-SOURCE: CL 12646854 via CL 12646966 via CL 12646981
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12646995 by ben ingram in Main branch]
#rb none
#ROBOMERGE-SOURCE: CL 12579879 via CL 12579892 via CL 12579904
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12579927 by ben ingram in Main branch]
- If a game targets both Vulkan and D3D, when running with -vulkan D3D shaders will not be loaded.
#rb none
[CODEREVIEW] Ben.Ingram
#jira none
#ROBOMERGE-SOURCE: CL 12571714 in //UE4/Release-4.25/... via CL 12571775 via CL 12571793
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12571822 by arciel rekman in Main branch]
#rb Ben.Ingram
#jira UE-91432
#ROBOMERGE-SOURCE: CL 12513296 in //UE4/Release-4.25/... via CL 12513299 via CL 12513301
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12513305 by arciel rekman in Main branch]
#rb: Rolando.Caloca
#jira: none
#ROBOMERGE-SOURCE: CL 12491544 in //UE4/Release-4.25/... via CL 12491551 via CL 12491558
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12491562 by zabir hoque in Main branch]
- FileCache can dynamically allocate/release memory as needed
- Preloaded lines are locked in the cache. One the preloaded memory has been read, the line is unlocked. This prevents preloaded lines from being evicted before they're needed.
- Cache line size changed from 64k to 16k, reduce fragmentation due to locked preloaded lines
#rb none
#ROBOMERGE-SOURCE: CL 12491121 via CL 12491126 via CL 12491130
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12491133 by ben ingram in Main branch]
#rb none
#ROBOMERGE-SOURCE: CL 12488855 via CL 12488867 via CL 12488870
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12488877 by zach bethel in Main branch]