Fixes for all the macro use in Core.
#rb robert.manuszewski
#jira UE-140139
#preflight 623c54628900c14eecdea9c6
[CL 19493359 by Steve Robb in ue5-main branch]
The implementation returns -1 if the version tag is not found, not 0.
#rb danny.couture
#preflight 623bf802437e1bac26c112a2
[CL 19492200 by fabian giesen in ue5-main branch]
- Fixed changelist validation on DataLayers using new WorldDataLayersActorDesc
#rb philippe.deseve, jeanfrancois.dube
#preflight 623b33e7db0f61c7926e7df8
#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 19480678 via CL 19481445 via CL 19481573
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v936-19480137)
[CL 19484037 by richard malo in ue5-main branch]
We want to return false for EAGAIN and EDEADLK because these are cases that the caller can reasonably handle. Other errors (EINVAL and EFAULT) are now ignored and return false as well, because they are unlikely when FRWLock is used correctly.
#preflight 623b416eec68595f3b95303f
#rb Martin.Sevigny, Zousar.Shaker
#rnx
[CL 19481208 by Devin Doucette in ue5-main branch]
#rb PJ.Kack
#rnx
#preflight 623ae40e7b69b01ec15da75c
#robomerge FNNC
- We need to expose the code that checks a set of packages for non virtualized payloads and virtualizes them so that the stand alone submission tool can access it.
- Currently I am adding this to the IVirtualizationSystem interface to avoid adding additional interface, but we might want to consider moving this some day as it is not a great fit with the rest of the interface.
[CL 19479757 by paul chipchase in ue5-main branch]
Because of assumptions in the DDC system about cooking being deterministic, we could under various circumstances end up in a situations where StaticMesh and the associated Nanite streaming data was coming from two different cooks.
This could easily cause a crash as the StaticMesh chunk contains explicit page and offset references into the streaming data.
Determinism fixes:
-Added sorting step during initial clustering in the case where an edge is shared by more than 2 triangles.
-Added sorting step to sort parent clusters after they have been generated.
-Changed cluster GUID from 32bit to 64bit. When cooking CitySample there was one case where two clusters that were compared ended up with the same GUID, resulting in undefined order.
-Initialized GUID in the cluster constructor that takes a list of clusters to merge. Before it would just be 0.
-Added missing initialization of vertex color on fallback meshes that don't use vertex color.
#jira UE-146347
#rb brian.karis, michal.valient
#preflight 6238817789625f06129f616f
#ushell-cherrypick of 19458684 by Rune.Stubbe
#lockdown Marc.Audy
#ROBOMERGE-AUTHOR: rune.stubbe
#ROBOMERGE-SOURCE: CL 19467008 in //UE5/Release-Engine-Staging/...
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v935-19464907)
[CL 19468567 by rune stubbe in ue5-main branch]
* SupportsMultithreadingPostFork() will not assert if the cmdline hasn't been set when called.
* Instead it will be return true/false based on the DEFAULT define and hope the cmdline override won't break anything later.
#jira none
#rb Brandon.Schaeffer
#preflight 6239e17c1302f69e9a80458d
[CL 19466646 by LouisPhilippe Seguin in ue5-main branch]
1. On custom types, they require overloads for operator <= and >= respectively; it's more idiomatic in C++ code for ordering predicates to rely solely on <
2. The current definition results in highly suboptimal code generation for floating-point types on x86 when compiling in IEEE compliant mode: https://godbolt.org/z/3zsYKaasc
In short, x86 min/max instructions are equivalent to "(a < b) ? a : b" and "(a > b) ? a : b", respectively. In the specific case where a=+0, b=-0 (IEEE signed zeros), then in comparisons +0 == -0, so we have both (a >= b) and (a <= b), but neither (a > b) nor (b < a). As a result, the original expressions for FMath::{Min,Max} return a (+0), while the changed expressions returns b (-0) in this particular case. (The a=-0, b=+0 case is analogous.)
Most code in UE currently compiles with /fp:fast or -ffast-math, which makes the compiler not respect signed zero behavior; see behavior with -fno-signed-zeros in the Compiler Explorer link. Because so much gets compiled with fast math semantics, behavior in this case was not reliable anyway. We might as well pick the definition that is efficient on x86 even without fast math.
#rb devin.doucette
#preflight 6239248304769ab4934cd0ea
[CL 19462511 by fabian giesen in ue5-main branch]