Doesn't produce bit identical preprocessed output, as it compacts whitespace from compound identifiers before testing them, whereas the original implementation compacts whitespace after matching. Compacting first makes testing more efficient and simpler, since it doesn't need to take into account whitespace. For A/B validation, I did add temporary debug code that stored and reverted un-matched identifiers, mimicking the old behavior, and it was identical across the board.
#rnx
#rb dan.elksnitis chris.waters jason.nadro
[CL 28313553 by jason hoerner in ue5-main branch]
- Removing system calls from UniformBuffer parsing and processing.
- When searching for uses of a UniformBuffer, start after the end of the UniformBuffer declaration.
- Simplifying the code around UniformBuffer reference cleanup
- Cuts time in CleanupUniformBufferCode by 50-75% based on how large the shader is.
#jira UE-195103
#rb dan.elksnitis, jason.hoerner
[CL 28172021 by christopher waters in ue5-main branch]
- When generating Uniform Buffer HLSL code, a 'static const struct {} Name' was created which has been causing compiler issues off and on for years.
- When RemoveUniformBuffersFromSource removed said struct, it parsed the struct's structure to figure out how to translate UniformBuffer.Member into UniformBuffer_Member in code that accessed Uniform Buffers.
- Now, instead of a struct, a "UniformBuffer <Name>" declaration is created and filled with mappings from "UniformBuffer.Member" into the correct code.
- This allows ConstantBuffer objects to be used differently from cbuffer where the former generates "UniformBuffer.Member" and the latter generates "UniformBuffer_Member"
- This also allows resources to always be translated to "UniformBuffer_Member"
- Shader define 'PLATFORM_SUPPORTS_UB_STRUCT' is now 'PLATFORM_SUPPORTS_CONSTANTBUFFER_OBJECT' and will be set on shader formats that support ConstantBuffer<> objects.
- Removed lots of unused code from BindlessResources.ush
#jira UE-195103
#rb dan.elksnitis, jeannoe.morissette
[CL 28058373 by christopher waters in ue5-main branch]
Dedupe info where multiple workers built same shader
#rb Ben.Woodhouse
#tests local runs, compare of farm built files attached in bug
[CL 27995633 by tom holmes in ue5-main branch]
- Avoid explicit FMA instructions in platform-specific GLSL to let backend-compiler decide when to use them.
- Fix code refelction when using SPIR-V directly with backend-compiler.
- Define preset of SPIR-V optimization passes to reduce nested expressions "preset(relax-nested-expr)".
#rb Serge.Bernier, Brian.White
[FYI] Graeme.Thornton, Jason.Nadro, Carl.Lloyd, Florin.Pascu, Michael.WAnderson
#jira UE-195236, UE-194869
[CL 27994871 by laura hermanns in ue5-main branch]
Protect WriteSymbolData if the Filename is empty
#jira UE-190842
[REVIEW] [at]matt.peters
#tests cooking CitySample
[CL 26528753 by tom holmes in ue5-main branch]