- The function was not checking to see if the shader type in the pipeline was the same as the shader type we are asking for.
#rb Ben.Ingram
#jira none
#preflight 62156610840463c99a740f2f
[CL 19089930 by Jason Nadro in ue5-main branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
This should fully address UniformBufferLayout/UniformBuffer crashes that randomly happen during shader compiling in the Editor.
#jira none
#rb arciel.rekman, ben.ingram, mihnea.balta, stu.mckenna, will.damon
#preflight 611eb6c6008be90001f8b031
#ROBOMERGE-SOURCE: CL 17243608 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)
[CL 17243630 by christopher waters in ue5-release-engine-test branch]
- Splitting symbol generation and shader "debug info" generation into two different cvars. This should now allow us to generate symbols post-packaging without generating different shader variants. This should also enable us to always generate symbols and still have the final deduplicated shader sizes.
- r.Shaders.Symbols is now the primary way to enable shader symbols for debugging.
- r.Shaders.GenerateSymbols can be enabled to always generate symbols without writing them to disk.
- r.Shaders.WriteSymbols can be used to force write symbols if they were previously generated.
- r.Shaders.ExtraData can be used to generate shader names for engine runtime systems to use.
- NotifyShaderCooked replaced with NotifyShaderCompiled, prep for upcoming non-cook symbol writing.
- PC DXC shader compiles should only generate debug info when requested, not all the time.
- PC FXC shader compiles should generate debug info when requested, not just when r.Shaders.Optimize is 0.
#jira none
#rb arciel.rekman, lukas.hermanns
#preflight 611ad9035e737200015992db
#ROBOMERGE-SOURCE: CL 17186155 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)
[CL 17186162 by christopher waters in ue5-release-engine-test branch]
- Frozen memory images may have de-duplicated sections, where the same object is referenced multiple times; this means default destructors might be called multiple times, which is not supported in general
- Add a hook to allow custom behavior to destroy frozen objects that may hold references to external resources
- Within shader system, no need to run destructors, since all memory should be owned by the top-level memory image
#jira none
#rb arciel.rekman, charles.bloom
#ROBOMERGE-SOURCE: CL 16278300 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v799-16237190)
[CL 16278915 by ben ingram in ue5-release-engine-test branch]
- This is used to allow editor to load cooked materials/shader maps
- Remove UE_FORCE_64BIT_MEMORY_IMAGE_POINTERS, and instead always force memory image ptrs to be 64bits...this simplifies some code, and plan is to remove 32bit support at some point anyway
- Frozen memory image pointers only need 32bits for offset, which leaves another 32bits to stash a type identifier...this allows us to interpret that frozen data being referenced, even it's packed for a different platform
#jira UE-91444
#rb arciel.rekman
[CL 14592392 by Ben Ingram in ue5-main branch]
Add freezable hash table, use to accelerate lookup of shaders within ShaderMap
- 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 13053391 in //UE4/Release-4.25/... via CL 13053394 via CL 13053520
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v686-13045012)
[CL 13053522 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]
#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]
- 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]
- 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]
Don't crash when loading cooked shader maps (where frozen content most likely doesn't match runtime layout)
#rb none
#ROBOMERGE-SOURCE: CL 12158100 in //UE4/Release-4.25/... via CL 12158105
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v659-12123632)
[CL 12158115 by ben ingram in Main branch]
Fix recompileshaders running on target with COTF server
#rb none
[FYI] Yuriy.ODonnell
#ROBOMERGE-SOURCE: CL 11892983 in //UE4/Release-4.25/... via CL 11892985
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11892989 by ben ingram in Main branch]
Fix inconsistent operator new/FMemory:Free pair when deleting frozen shaders
- Also fix leaked memory when deleting frozen shaders
[FYI] brandon.schaefer
#rb none
#ROBOMERGE-SOURCE: CL 11850249 in //UE4/Release-4.25/... via CL 11850252
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11850702 by ben ingram in Main branch]
Fix generation of shader debug data
#rb none
#ROBOMERGE-SOURCE: CL 11850208 in //UE4/Release-4.25/... via CL 11850214
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11850701 by ben ingram in Main branch]