1) to use "inline" priority publicly, which is often helpful for perf
2) to use Tasks System with named threads (only if "tasks integration" is enabled - `TASKGRAPH_NEW_FRONTEND`)
#preflight 6271491cfe09c0cfbc3c5b69
[CL 20027004 by Andriy Tylychko in ue5-main branch]
These compiler flags promise that NaN/Inf won't occur and allows the compiler to make transformations that break in the presence of these values. As long as we compile with this on, there's no expectation that these values behave in any particular way, and no sane way to test it.
#jira UE-149288
#rb sean.barrett, charles.bloom
#preflight 626c65e09e6bef179217b30e
#preflight 626c6a59320b21984490a080
[CL 19987806 by fabian giesen in ue5-main branch]
Given that the second argument is always 360, we can remove some tests for bad ranges of input and use simple truncation/multiplication to compute the result, while retaining good accuracy within reasonable FRotator input value ranges.
#jira UE-129730
#preflight 62699851f97c319beba69337
#rb Dmytro.Vovk
[CL 19947858 by Zak Middleton in ue5-main branch]
- FMath::Fmod() changed to use standard fmod() function, because old version could go out of range for combinations of very large and very small values. VectorMod() changed where possible to do the same.
- Fixed ambiguous naming conventions for many functions (inconsistency between InvSqrt, Reciprocal, etc and their estimate functions). Now the default for such functions is to be accurate, and the estimate functions are explicitly named with "Estimate".
- VectorReciprocalSqrt() implementation no longer refines an estimate, as this can diverge between Intel and AMD; this was an issue addressed earlier in UnrealPlatformMathSSE.h (CL 16466371) and we now match that implementation. VectorReciprocal() also no longer refines an estimate for the same reason. Attempted to use SVML InvSqrt however it suffered from measurable variations on AMD/Intel platforms.
- Added missing vectorized implementation for VectorPow() for doubles in SSE.
- Added missing VectorSqrt() implementations for doubles..
- Did a small pass at fixing up some missing functions in UnrealMathFPU so it can pass engine startup tests and HeadlessChaos tests when enabled, though there are a few more that need implementation updates for Niagara (to come soon).
#jira UE-129730
#rb Andrew.Davidson, Dmytro.Vovk
#preflight 62632206e70367fd1e0d29db
[CL 19906229 by Zak Middleton in ue5-main branch]
#fyi Zak.Middleton
Original CL Desc
-----------------------------------------------------------------
#ue5 - LWC: Improve precision of some math functions (FMod / VectorMod) on SSE by using SVML where possible. FMath::Fmod() changed to use standard fmod() function. Fixed ambiguous naming conventions for many functions (inconsistency between InvSqrt, Reciprocal, etc and their estimate functions). Now the default for such functions is to be accurate, and the estimate functions are explicitly named with "Estimate".
Added missing vectorized implementation for VectorPow() for doubles. Fixed some missing VectorSqrt() overrides.
Did a small pass at fixing up some missing functions in UnrealMathFPU so it can pass start tests and HeadlessChaos tests when enabled, though there are a few more that need updates for Niagara (to come soon).
#jira UE-129730
#rb Andrew.Davidson, Dmytro.Vovk
#preflight 6260739e080c6600634ca48b, 625f0f5d5f498a37c9263f29
[CL 19870070 by Zak Middleton in ue5-main branch]
Added missing vectorized implementation for VectorPow() for doubles. Fixed some missing VectorSqrt() overrides.
Did a small pass at fixing up some missing functions in UnrealMathFPU so it can pass start tests and HeadlessChaos tests when enabled, though there are a few more that need updates for Niagara (to come soon).
#jira UE-129730
#rb Andrew.Davidson, Dmytro.Vovk
#preflight 6260739e080c6600634ca48b, 625f0f5d5f498a37c9263f29
[CL 19868793 by Zak Middleton in ue5-main branch]
* tasks store task body by value in place
* pooled task allocation
* FTaskEvent doesn't have a body and is not executed
* basic waiting for a task (w/o timeout) allocates the waiting task on the stack
* optimised internal atomic state and task retraction
#rb francis.hurteau
#preflight https://horde.devtools.epicgames.com/job/625e84b0d412434587e1b740
[CL 19805905 by Andriy Tylychko in ue5-main branch]
Changes semantics of FGuid <-> Short string conversion, which might cause issues with persisted short GUIDs. The Short format is used sparingly and only to create unique strings via FGuid::NewGuid().ToString(EGuidFormats::Short), so I suspect we won't see any fallout from this.
FGuid::AppendString(FAnsiStringBuilderBase&) was totally broken and serialized stack pointers instead of GUID, but noone was using that path
#preflight 624e8b09683a7dd323ced612
[CL 19665698 by Johan Torp in ue5-main branch]