Files
UnrealEngineUWP/Engine/Source/Runtime/HardwareSurvey/Private/HardwareSurveyModule.cpp

386 lines
16 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "CoreMinimal.h"
#include "GenericPlatform/GenericPlatformSurvey.h"
#include "HAL/PlatformSurvey.h"
#include "Containers/Ticker.h"
#include "Modules/ModuleManager.h"
#include "IHardwareSurveyModule.h"
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2994668) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2967465 on 2016/05/05 by Marc.Audy Fix VS2015 shadow variables fixes Change 2970637 on 2016/05/09 by Martin.Wilson Fix incorrect conflict resolve in merge from main Change 2976393 on 2016/05/12 by Zak.Middleton #ue4 - Set AudioComponent bUseAttachParentBounds=true to reduce cost of transform updates (avoids virtual CalcBounds() when transform changes). #tests PIE w/ audio Change 2976770 on 2016/05/13 by Lina.Halper Improvement on mirroring fix branch #code review: Zak.Middleton Change 2976774 on 2016/05/13 by Lukasz.Furman fixed missing memory callbacks for instanced behavior tree nodes #jira UE-30305 Change 2976775 on 2016/05/13 by Lukasz.Furman fixed multiple calls to behavior tree's instance cleanup #jira UE-30593 Change 2976801 on 2016/05/13 by Jon.Nabozny Add an optional argument FSkeletalMeshMerge. When set to EMeshBufferAccess::ForceCPUAndGPU, keeps a reference to the vertex buffer on CPU (e.g. for spawning particle effects). #JIRA UE-30405 Change 2976985 on 2016/05/13 by Jon.Nabozny Fix initializer list ordering for FSkeletalMeshMerge. Change 2977532 on 2016/05/13 by Marc.Audy PR #2348: [Local Multiplayer] Gamepad player assignment improvements (Contributed by kukiric) #jira UE-30162 Change 2977637 on 2016/05/13 by Marc.Audy Add Get/Set controller ID for a player in gameplay statics #jira UE-28718 Change 2979387 on 2016/05/16 by Jon.Nabozny Initialize FBox used to store results for CalculateQuatACF96Bounds. #JIRA UE-30846 Change 2979968 on 2016/05/17 by bruce.nesbit Added comment in FCanvasLineItem to warn only SE_BLEND_Opaque will be used when rendering. Change 2979969 on 2016/05/17 by bruce.nesbit Added comment in AddLine/AddPoint to warn only SE_BLEND_Opaque will be used when rendering. Change 2980271 on 2016/05/17 by Lina.Halper Improved comment #code review: Benn.Gallagher Change 2980317 on 2016/05/17 by Lukasz.Furman removing NavCollision from static mesh on property change and PostLoad if static mesh is not supposed to have one #ue4 Change 2980717 on 2016/05/17 by Zak.Middleton #ue4 - Optimize UCapsuleComponent::CalcBounds() to remove sqrt and use tighter bounding sphere radius. Change 2981193 on 2016/05/17 by Lukasz.Furman fixed missing observers in behavior tree when dynamic subtree is changed while waiting for full restart (out of nodes) #ue4 Change 2981927 on 2016/05/18 by Lina.Halper - Remove vertex animation code - Removing UVertexAnimation - Fixed reinitialization issue that was triggered by SetVertexAnimation - todo: consolidate UMorphtarget and UVertexAnimBase #code review: James.Golding, Martin.Wilson Change 2981957 on 2016/05/18 by Lina.Halper Add recursive stack check on update animation #code review: Martin.Wilson Change 2982116 on 2016/05/18 by Benn.Gallagher Removed optimize macros accidentally left after bounds extension feature for skel meshes Change 2982255 on 2016/05/18 by Jon.Nabozny FSkeletalMeshMerge constructor "MeshBufferAccess" default should be EMeshBufferAccess:Default instead of EMeshBufferAccess::ForceCPUAndGPU. Change 2982607 on 2016/05/18 by Marc.Audy Cleanup places calling GetWorld() multiple times Change 2982621 on 2016/05/18 by Marc.Audy Make UActorComponent::GetWorld final and inlined to avoid unnecessary function calls Put uncached logic in to a separate function Change 2983424 on 2016/05/19 by Marc.Audy Minor tweaks to reduce GetWorld calls Change 2983465 on 2016/05/19 by Lina.Halper Combine VertexAnimBase and MorphTarget to just MorphTarget - VertexAnimBase is gone - Modified most of VertexAnim to MorphTarget - Removed state, time related data #code review: James.Golding, Rolando.Caloca Change 2983609 on 2016/05/19 by Marc.Audy Inline AActor::GetLevel Half GetWorld() calls from AActor::GetNetMode() Change 2983772 on 2016/05/19 by Marc.Audy Fix Mac compile Change 2983931 on 2016/05/19 by Marc.Audy Remove pointless AccelMouse function Change 2984061 on 2016/05/19 by Marc.Audy Reorg some headers to fix compilation issues Change 2984409 on 2016/05/19 by Aaron.McLeran #jira UE-31049 Updating the Oculus Audio SDK to vs 1.02 Implementing 2984316 from Releases/4.12 to Dev-Framework Change 2984574 on 2016/05/19 by Aaron.McLeran Fix for platform headroom scalar. Using correct dB to linear formula (not one for power) dB = 20 * log(Linear), not dB = 10 * log(Linear) Change 2985041 on 2016/05/20 by Jon.Nabozny ConvertQueryOverlap only returns the base actor if multiple actors have bSimulatePhysics enabled and are welded together. #JIRA UE-30484 Change 2985118 on 2016/05/20 by Marc.Audy Another attempt to convince Mac to build Change 2985192 on 2016/05/20 by Marc.Audy Properly forward declare ABrush Change 2985724 on 2016/05/20 by Zak.Middleton #ue4 - Optimize NaN and Infinite checks for FVector, FQuat, FRotator, FMatrix, FTransform. SIMD version VectorContainsNaNOrInfinite() also optimized on relevant platforms. Added startup tests for VectorContainsNaNOrInfinite(). - All our "ContainsNaN()" tests are in fact "IsNaN() || IsInfinite()", which is the same as "!IsFinite()", so exploited this to simplify the tests. Both NaN and +/-Inf are not finite (http://en.cppreference.com/w/cpp/numeric/math/isfinite). In the future we should rename ContainsNaN(). - Still need to audit some uses in shipping configs. #jira UE-30999 Change 2986016 on 2016/05/20 by Zak.Middleton #ue4 - Fix uint32 used for int32 values. Behavior was unaffected. Change 2986017 on 2016/05/20 by Zak.Middleton #ue4 - Fix overlaps being dropped from within a FScopedMoveUpdate when rotation occurs. Remove invalid assert. Change 2986833 on 2016/05/23 by Zak.Middleton #ue4 - Move ETeleportType from ActorComponent.h to EngineTypes.h. Add comment to FHitResult for ImpactPoint when it's penetrating. Change 2986916 on 2016/05/23 by Rolando.Caloca DF - GPU morph targets proof of concept - Disabled by default - Not compatible with gpu skin cache - No extra memory required yet until it's used; creates buffers per frame (very slow!) Change 2987539 on 2016/05/23 by Rolando.Caloca DF - Remove unused member and downgrade FActiveMorphTarget to not be a USTRUCT Change 2987981 on 2016/05/24 by James.Golding PR #2162 : Exported AAudioVolume so that projects can derive custom classes. https://github.com/EpicGames/UnrealEngine/pull/2162 #github 2162 #jira UE-28533 Change 2987982 on 2016/05/24 by James.Golding PR #2318 : Fix memory allocation in CustomMeshComponent.cpp https://github.com/EpicGames/UnrealEngine/pull/2318 #github 2318 #jira UE-29864 Change 2987983 on 2016/05/24 by James.Golding Merging engine changes back from GDC demo: - Export FFIRFilterTimeBased from Engine module - Add FFIRFilterTimeBased::SetWindowDuration - Add FBaseCompactPose::CopyBonesTo Change 2987984 on 2016/05/24 by James.Golding UE-30137 No longer include collision in StatiMeshComponent bounds (bounds no longer user for any collision calculation) Change 2987985 on 2016/05/24 by James.Golding UE-27801 Export ConvertToCollisionChannel, ConvertToObjectType, and ConvertToTraceType members of UCollisionProfile Change 2987987 on 2016/05/24 by James.Golding OR-17910 : Support 'show collision' in Test configuration Change 2988123 on 2016/05/24 by Jon.Nabozny Prevent FBodyInstance::Weld causing duplicate PhsyXShapes to be created / added to ShapeToBodiesMap when toggling SimulatePhysics on PrimitiveComponent. #JIRA UE-31189 Change 2988449 on 2016/05/24 by Rolando.Caloca DF - Split FActiveMorphTarget's weight into its own array in prep for GPU friendly data Change 2988485 on 2016/05/24 by Jon.Nabozny Swap order of setRigidBodyFlag and setRigidDynamicFlag inside UpdateInstanceSimulatePhysics to prevent PhysX error about Kinematic bodies not using CCD. #JIRA UE-30993 Change 2988969 on 2016/05/24 by Rolando.Caloca DF - GPU morph targets - Enable using r.MorphTarget.Mode 1 Change 2989645 on 2016/05/25 by Marc.Audy Apply CL# 2989481 to Dev-Framework #jira UE-31055 Change 2989987 on 2016/05/25 by Wes.Hunt Redo of CL#2982707 2982716 2982723 2983780 2983864 from //Orion/Dev-General in preparation for continuing Analytics refactor in a Dev branch. AnalyticsET support for arbitrary Json events. * AnalyticsET supports a new API, RecordEventJson. * API supports rvalue refs to avoid unnecessary copies of the attribute array. #AUTOMERGE using branch Orion-Dev-General-To-UE4-Dev-Framework of change#2982707 by Wes.Hunt on 2016/05/18 17:22:20. Remove Analytics code to divert legacy code to source data collector. #AUTOMERGE using branch Orion-Dev-General-To-UE4-Dev-Framework of change#2982716 by Wes.Hunt on 2016/05/18 17:27:25. Analytics no longer adds IsEditor attribute to all events. Wasn't actually used by anyone anymore. #AUTOMERGE using branch Orion-Dev-General-To-UE4-Dev-Framework of change#2982723 by Wes.Hunt on 2016/05/18 17:29:40. Modernize FAnalyticsEventAttribute usage. Replaced FAnalyticsEventAttribute various ctors with a perfect forwarding one that can convert them to strings. * The Name must be convertible to a string * The value must be convertible to a string via an AnalyticsConversion::ToString() overload. * Added/expanded the supported conversions to strings to analytics attribute values. See AnalyticsConversion.h which contains all the previously supported conversions and more. Added MakeAnalyticsEventAttributeArray(), which uses variadic templates to create an array of event attributes inline, which can be passed to RecordEvent[Json] and efficiently taken ownership of: RecordEvent("EventName", MakeAnalyticsEventAttributeArray( "Attr1", false, "Attr2", 42.0, "Attr3", SomeMap, "Attr4", SomeArray); #AUTOMERGE using branch Orion-Dev-General-To-UE4-Dev-Framework of change#2983780 by Wes.Hunt on 2016/05/19 13:51:48. Added missing assignment copy/move ops to FAnalyticsEventAttribute. Doh, should have looked at more usages of PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS... #AUTOMERGE using branch Orion-Dev-General-To-UE4-Dev-Framework of change#2983864 by Wes.Hunt on 2016/05/19 14:17:05. Change 2989988 on 2016/05/25 by Wes.Hunt Fix usage of FAnalyticsEventAttribute constructor using a bitfield that was invalidated by the change to make FAnalyticsEventAttribute use a perfect forwarding constructor. bitfields cannot be perfect-forwarded... :( Change 2990493 on 2016/05/25 by Joe.Graf Added tooltips to the collision analyzer's buttons #CodeReview: james.golding Change 2991064 on 2016/05/26 by James.Golding - Remove many Animation headers from Engine.h - Remove AnimationAsset.h from SkeletalMeshComponent.h, Character.h, CharacterMovementComponent.h Change 2991113 on 2016/05/26 by Benn.Gallagher Fixed edge case in random sequence player where we might trigger an extra loop when waiting on a blend to finish. And made it impossible for a shuffle list to start with the animation that is currently playing (seemingly duplicating the anim). Change 2991163 on 2016/05/26 by Rolando.Caloca DF - Rename and refactor some morph target compute shader in prep for interop with skin cache Change 2991167 on 2016/05/26 by Jon.Nabozny Add `#include "DataTable.h"` to GameplayTagsManager.h. FGameplayTagTableRow is derived from FTableRowBase which isn't necessarily included. This issue is hidden in most cases as "Engine.h" includes "DataTable.h". Change 2991183 on 2016/05/26 by Wes.Hunt Disable general forwarding constructor for AnalyticsEventAttribute for non arithmetic types, so they are free to choose other overloads more appropriately. Change 2991199 on 2016/05/26 by Wes.Hunt Drastically reducing the headers dependencies on analytics headers. Analytics headers no longer appear in PCH files, and rarely if ever appear in a header file. IAnalyticsProviderModule.h only touches 8 source files. Analytics.h only touches 8 source files. IAnalyticsProvider.h only touches 5 headers and 97 source files. AnalyticsET.h only touches 12 source files. Change 2991301 on 2016/05/26 by James.Golding Fix CIS for Fortnite Change 2991319 on 2016/05/26 by James.Golding Fix CIS for Orion Change 2991373 on 2016/05/26 by Joe.Graf Tweaked the tooltip text for the collision analyzer record button to be correct for both states Added a common button style so that the buttons have a consistent look #CodeReview: james.golding Change 2991401 on 2016/05/26 by James.Golding Fix UT CIS Change 2991406 on 2016/05/26 by James.Golding Fix Ocean CIS Change 2991491 on 2016/05/26 by Lina.Halper Moved MorphTarget.h - Checked in modified functions fo AnimationRuntime for other features coming up - Should not change any behavior of existing content #code review: James.Golding, Rolando.Caloca Change 2991494 on 2016/05/26 by Wes.Hunt Fix for Unity error in AnalyticsET module after hedaer dependency reduction Change 2991503 on 2016/05/26 by Jon.Nabozny Fix issue where FConstraintInstance (inside UPhysicsConstraintComponent) is not editable in InstanceEditor but is editable in BlueprintEditor. #JIRA UE-31267 Change 2991562 on 2016/05/26 by Zak.Middleton #ue4 - Reduce allocations during movement and overlap queries and when grabbing shapes from physx actors. Change 2991586 on 2016/05/26 by James.Golding More CIS fixes for Orion and Fortnite Change 2991673 on 2016/05/26 by Wes.Hunt Another non-unity fix for Analytics include dependency reduction. Change 2991733 on 2016/05/26 by Zak.Middleton #dev - Test map, 50 walking dudes. Change 2991781 on 2016/05/26 by Lina.Halper Back out revision 15 from //UE4/Dev-Framework/Engine/Source/Runtime/Engine/Private/Animation/AnimationRuntime.cpp - Back out a part of changes that I didn't mean to check in. Change 2991922 on 2016/05/26 by Zak.Middleton #ue4 - Maybe fix Mac build. Change 2991957 on 2016/05/26 by Joe.Graf Fixed the collision analyzer file open text (said project instead of collision) Change 2991991 on 2016/05/26 by Lina.Halper Fix compile error Change 2992089 on 2016/05/26 by Zak.Middleton #ue4 - Fix Mac/PS4 build. Change 2992108 on 2016/05/26 by Wes.Hunt Yet another non-unity fix for Analytics header inclusion reduction. Change 2992190 on 2016/05/26 by Zak.Middleton #ue4 - Mark FHitResult, FOverlapResult, FOverlapInfo as POD types. Avoids destructors etc when in TArrays. Change 2992593 on 2016/05/27 by Martin.Wilson Build fixes for non editor platforms Change 2992885 on 2016/05/27 by Rolando.Caloca DF - Fix crash on thumbnails #jira UE-31398 Change 2993058 on 2016/05/27 by Lukasz.Furman fixed behavior tree getting stuck on ResumeLogic call #jira OR-22498 Change 2993064 on 2016/05/27 by Zak.Middleton #ue4 - Fix root motion network corrections not clearing root motion data. udn: https://udn.unrealengine.com/questions/294985/jittering-in-character-movement-during-networked-m.html #jira UE-31316 Change 2993215 on 2016/05/27 by Lukasz.Furman gameplay debugger fixes: navmesh rendering is not hidden after disabling tool, player stuck in spectator mode after disabling tool, confusing version description for categories without data packs added replicated input bindings for debugger's categories #ue4 Change 2993521 on 2016/05/27 by Zak.Middleton #ue4 - Reduce allocations in UI Canvas items. Change 2993995 on 2016/05/30 by Mieszko.Zielinski Temporary fix for BBKeySelector not handling properly multiple UObject subtypes #UE4 #jira UE-31435 Change 2993998 on 2016/05/30 by Mieszko.Zielinski Improves handling of a special case in EQS score normalization, where all items have the same score #UE4 We used to set the normalized score of 1 for all items, which was counter intuitive if all items have scored 0 in an unnormalized test. The improve handling detects that and assigns score of 0 in that case. Change 2993999 on 2016/05/30 by Mieszko.Zielinski Fixed FEQSParametrizedQueryExecutionRequest converting non-BB values into EQS params wrong #UE4 Change 2994000 on 2016/05/30 by Mieszko.Zielinski Exposed UNavigationInvokerComponent as part of ENGINE_API so that it can be spawned procedurally in C++ in game specific code #UE4 Change 2994003 on 2016/05/30 by Mieszko.Zielinski Fixed naming of console variable controllin v-logging of FGameplayAttribute #UE4 The old name was copy-pasted from somewhere. Change 2994007 on 2016/05/30 by Mieszko.Zielinski Fixed unregistering listeners from perception system not clearing up all data #UE4 Also, introduced two precisely named functions, GetCurrentlyPerceivedActors and GetKnownPerceivedActors to replace ambiguous GetPerceivedActors Also, renamed UAIPerceptionComponent::TActorPerceptionContainer to UAIPerceptionComponent::FActorPerceptionContainer Change 2994475 on 2016/05/31 by Wes.Hunt Fix Unity build failure for analytics inclusion reduction for IOSFlurry. [CL 2994701 by Marc Audy in Main branch]
2016-05-31 13:51:34 -04:00
#include "AnalyticsEventAttribute.h"
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "Interfaces/IAnalyticsProvider.h"
#include "Stats/Stats.h"
/**
* Implements the HardwareSurvey module.
*/
class FHardwareSurveyModule
: public IHardwareSurveyModule
{
public:
// IModuleInterface interface
virtual void StartupModule() override
{
Analytics = nullptr;
bPendingHardwareSurveyResults = false;
}
virtual void ShutdownModule() override
{
if (bPendingHardwareSurveyResults)
{
FTSTicker::GetCoreTicker().RemoveTicker(TickerHandle);
bPendingHardwareSurveyResults = false;
}
}
public:
// IHardwareSurveyModule interface
virtual void StartHardwareSurvey(IAnalyticsProvider& AnalyticsProvider) override
{
// Bail if we already waiting on a hardware survey
if (bPendingHardwareSurveyResults)
{
return;
}
Analytics = &AnalyticsProvider;
if (IsHardwareSurveyRequired())
{
bPendingHardwareSurveyResults = true;
TickerHandle = FTSTicker::GetCoreTicker().AddTicker(FTickerDelegate::CreateRaw(this, &FHardwareSurveyModule::TickHardwareSurvey));
}
}
protected:
bool TickHardwareSurvey(float Delta)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_HardwareSurveyModule_TickHardwareSurvey);
bool bContinueTick = true;
if (bPendingHardwareSurveyResults)
{
FHardwareSurveyResults HardwareSurveyResults;
if (FPlatformSurvey::GetSurveyResults(HardwareSurveyResults))
{
OnHardwareSurveyComplete(HardwareSurveyResults);
bPendingHardwareSurveyResults = false;
bContinueTick = false;
}
}
else
{
bContinueTick = false;
}
return bContinueTick;
}
bool IsHardwareSurveyRequired()
{
// Analytics must have been initialized FIRST.
Copying //UE4/Release-Staging-4.19 to //UE4/Dev-Main (Source: //UE4/Release-4.19 @ 3944462) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3944462 by Jack.Porter Prevent TVOS packaging from PC from attempting to build an asset catalog #jira UE-56114 Change 3943602 by Leslie.Nivison Adding licenses for additional TPS #jira none Change 3943597 by Leslie.Nivison Adding Enterprise licenses; licenses for additional TPS. #jira none Change 3941962 by Leslie.Nivison Updating 4.19 credit list #jira none Change 3941865 by Mark.Satterthwaite Fix the incorrect landscape rendering and the incorrect render-to-texture from blueprint bugs with MetalRHI. - Track outstanding AsyncCopyBufferFromBufferToBuffer operations to identify attempts to modify overlapping ranges within the same prologue command-buffer. This doesn't work and requires that we break the current render-pass and issue on the current command-buffer. A log warning will be emitted when this occurs. - Don't attempt to alias private memory buffers the moment they are released from the RHI resource because that can lead to incorrect sharing of the memory when used by AsyncCopyBufferFromBufferToBuffer. #jira UE-56021 Change 3940993 by Marc.Audy Do not return the last column if the specified column does not exist. Allow display names to be used when looking for a property if the table is backed by a user defined struct. Do not crash if a property with the given name is not found. #jira UE-56017 Change 3939179 by Ben.Marsh Revert change to not poison memory in development configuration. Making a tradeoff that editor stability and consistency is more important than performance. #jira Change 3938566 by Aaron.McLeran #jira UE-55940 Fix for wavetable synth Missed a case. Change 3938533 by Dan.Oconnor Fix uninitialized variable exposed by recent MallocTBB change #jira UE-56013 Change 3938508 by Aaron.McLeran Fixing CIS error, init order issues. #jira UE-55940 Change 3938490 by Aaron.McLeran #jira UE-55940 Fix for wavetable synth Change 3938352 by josh.jensen Show an error message for Windows iOS builds when packaging/launching and icons are present but no remote Mac is specified #jira UE-55987 Change 3938345 by Peter.Sauerbrei fix to Icons not being built on Mac #jira UE-53492 Change 3938305 by Mark.Satterthwaite For whatever reason moving the buffer initialisation into the prologue command buffer doesn't work - this make absolutely no sense to me. I suspect that this is *merely* moving a render pass boundary around somewhere and forcing raster-state to be reapplied. #jira UE-56005 Change 3937968 by Ben.Marsh Disable the boot DDC if we're not in the editor. Fixes access violations when multiple SCW instances attempt to read/write to the same file. #jira UE-56003 Change 3937573 by Mitchell.Wilson Saving asset to resolve empty asset warning. #jira UE-56004 Change 3937561 by Max.Preussner ImgMedia: Added support for single-threaded platforms Copied from Dev-Sequencer CL# 3937516 #jira UE-55986 Change 3937305 by Mike.Beach Resaving google VR model content with UGS build to fix the empty file version error. #jira UE-55984 Change 3935595 by Arne.Schober Fix missing UV precission on BSP surfaces #jira UE-54014 Change 3935411 by josh.jensen Fixed Windows iOS remote Mac build issue where the user icons were considered remote Mac compilation targets coming solely from the Engine directory #jira UE-55899 Change 3934982 by Marc.Audy Fix shadow variable issue #jira UE-55957 Change 3934892 by Mark.Satterthwaite In MetalRHI treat BUF_Volatile buffers as Shared or Managed memory in all circumstances so that multiple updates within a render pass are respected even though this will hurt CPU performance. This fixes GPU particles on macOS. Also push initialisation upload into the async. command buffer to avoid it overwriting a later Lock/Unlock! Only read-back and copy-buffer operations should be on the 'current' command buffer as they need to be inline with all outstanding commands. #jira UE-55956 Change 3934421 by Arciel.Rekman Fix lockup/OOM when setting audio sources to 2 (UE-53968). #jira UE-53968 Change 3934156 by Peter.Sauerbrei fix for backgrounding problems on iOS and tvOS this will re-open UE-50979 as the fix for that was not correct and would have caused crashes when backgrounding during startup #jira UE4-55609 Change 3933547 by Aaron.McLeran #jira UE-55940 Fix for wavetable sample duration and seek Change 3933544 by Aaron.McLeran #jira UE-55939 Hiding channel format Submix channel format is an experimental feature and shouldn't be exposed to the submix editor for 4.19. Change 3933540 by Aaron.McLeran #jira UE-55718 Fix for playback progress. Change 3933280 by Ethan.Geller [Release-4.19] #jira UE-55810 Ensure AudioComponent is created before we start using it. #rb Aaron.McLeran Change 3933079 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3932319 by Ben.Zeigler #jira UE-55885 Fix corruption of packages when starting and then cancelling an async load of a package that already exists, or attempting to async load a script package It now keeps track of which packages were created by the async load system and will only throw those away on cancel Copy of CL #3932312 Change 3932287 by Matt.Kuhlenschmidt Updated substance texture #jira UE-55081 Change 3931729 by josh.jensen Ensure the tvOS and iOS Assets.car is always produced as part of a regular remote/local build #jira UE-55899 Change 3929723 by josh.jensen Removed packaging requirement on Windows of a remote Mac after setting an app icon to default #jira UE-53495 Change 3929722 by josh.jensen Fixed iOS asset catalog generation issues when swapping out/resetting to default app icons for both code- and BP-projects #jira UE-53492, UE-51879 #robomerge Change 3929350 by Mike.Erwin "Save As" support for #jira UE-55732 Change 3927829 by Steve.Robb Out-of-memory handler for MallocStomp. #jira UE-55550 Change 3926404 by Mike.Erwin #jira UE-55732 Change 3926394 by Dan.Oconnor Recompile bytecode dependencies when compiling an individual blueprint interface, this prevents crashes due to stale bytecode #jira UE-55813 Change 3926098 by Guillaume.Abadie Do not allow dynamic resolution to be enabled on unsupported platforms avoiding game breaker experience by security. #jira UE-55697 Change 3925927 by Guillaume.Abadie Enables TAA's AA_BORDER on all permutation for dynamic resolution. #jira UE-55353 Change 3925882 by Matt.Kuhlenschmidt Fix substance uri having one extra / Fix substance menu option showing up for github (incompatible with plugin) #jira UE-55766 Change 3925873 by Ben.Zeigler #jira UE-55783 Fix issue introduced in 4.18 where user structs did not handle converting AssetPtrs to SoftObjectPtrs properly Copy of CL #3925871 Change 3925163 by Guillaume.Abadie Fixes DFAO's temporal AA passes that was handling FViewInfo::ViewRect.Min wrongly. #jira UE-55788 Change 3924839 by Guillaume.Abadie Fixes a crash of LDR android preview with OS DPI scale != 0. #jira UE-43622 Change 3924542 by Cosmin.Sulea Merged fixes: UE-55299 - XGE Shader Compile Interferes with Remote Shader Compiling Causing Materials to Fail to Compile #7 UE-51086 - No clear editor activity during remote shader compiling #jira UE-55299 Change 3922398 by Mark.Satterthwaite Compile fix for 3922273. #jira UE-53993 Change 3922273 by Mark.Satterthwaite Fix validation error caused by the game updating its orientation before the drawable system catches up. We need to drop drawables that are incorrectly sized until we get one with the correct size. #jira UE-53993 Change 3921127 by Ethan.Geller [Release-4.19] #jira UE-55744: Add OnTick virtual to IAudioPluginListener, fix thread safety issue in Resonance Audio. #rb aaron.mcleran Change 3920632 by Lina.Halper Fix render thread crash when morphtarget is deleted or added #jira: UE-55521 Change 3920557 by Lauren.Ridge Fixing material editor resetting background to off #jira UE-55267 Change 3920519 by Phillip.Kavan Fix a regression in which elements would not be initialized when constructing the value assignment for UDS-typed container members in nativized Blueprint C++ code. Change summary: - Modified FEmitDefaultValueHelper::InnerGenerate() to remove UDS from the list of special cases that avoid calling InitializeStruct() as part of new element construction. Previously the conversion code assumed the compiler would perform value initialization of a nameless temporary, but that is no longer valid in 4.19, as UDS types have been changed to function more like native structs, and as such all converted UDS types will now emit an explicit default ctor which is now used to assign defaults that differ from the zero-initialized value. #jira UE-55628 Change 3920476 by Michael.Trepka Clean up Mac menu item cache at exit before SlateApplication is fully destroyed. #jira UE-55599 Change 3920336 by Ben.Marsh Ignore license warnings from PVS-Studio. #jira UE-55729 Change 3920134 by Jurre.deBaare Moving over: "HLOD: Building HLOD for P map with sublevels requires HLODSetupAsset when it should not #fix Ensure that we dynamically add HLOD level treeview items whenever they are required, rather than adding a static number of levels according to the worldsettings" #jira UE-55619 Change 3920126 by Max.Preussner MediaCompositing: Implemented media track for Sequencer Copied from Dev-Sequencer #jira UE-53974 Change 3920004 by Jack.Porter Disable Manual Vertex Fetch SRV creation when MVF is disabled. Made a single RHISupportsManualVertexFetch(EShaderPlatform) to control whether to use MVF. The Shader Platform (or alternatively, feature level) is the only thing that can decide whether or not to use MVF because we need to know when we compile the shaders if we're going to do MVF or not. Checking GSupportsResourceView at runtime is useless because the shaders can't change and so if GSupportsResourceView can ever be false for a platform, the shaders need to have been built without it. Creating SRVs without using them on mobile is not harmless because several devices don't support formats that are needed. #jira UE-54764 #jira UE-55622 Change 3919069 by Aaron.McLeran #jira UE-55718 Fix for playback progress. Change 3918942 by Graeme.Thornton Added "ProjectBuildMutatorFeature" modular feature, allowing plugins to register said feature and dictate whether the current project requires a code build. CryptoKeys plugin uses this feature to force a code build when encryption or signing is enabled. #jira UE-55686 Change 3918721 by Zak.Parrish Lighter version map for Gremlin + new Engine.ini - result is 60Hz #jira none Change 3918236 by Joe.Graf Added a bFlipTrackedRotation to give a better result when mirroring the rotation of a tracked face #jira: UE-55531 Change 3917970 by Martin.Wilson Expose curve data in remap assets to blueprints #jira UE-55585 Change 3917740 by Olaf.Piesche Properly checking for presence of buffer SRV capability via GSupportsResourceView so ES3.1 and Metal devices don't crash using GPU particles (and possibly in other circumstances); #jira UE-55591 Change 3917713 by Cody.Albert Build fixes for Match3 on iOS #jira UE-53742 Change 3917472 by zak.parrish added mouthPressLeft and MouthPressRight back into debug screen #jira none Change 3917244 by Michael.Dupuis #jira UE-35097: Fixed crash when creating a new landscape with 2x2 subsections and material containing grass spawning node Change 3916775 by Ben.Marsh Add missing files for packaging IOS on Windows. #jira UE-53873 Change 3916293 by Joe.Graf Removed the redundant GetTransform() from UARFaceGeometry since GetLocalToWorldTransform() is exposed on a base class #jira: UE-55531 Change 3916011 by Joe.Graf Added an accessor to get the transform of the face mesh or a face mesh component #jira: UE-55531 Change 3915967 by Mark.Satterthwaite Place buffer updates into the prologue command-buffer in MetalRHI to avoid breaking the current command-encoder. This improves performance, though the semantics of Metal now differ subtly to other RHI implementations as the buffer updates happen prior to the SetRenderTargets call in the GPU's view of the world. #jira UE-54858 Change 3915751 by Nick.Atamas Merging CL 3913931 from //UE/Partner-Google-VR/... to //UE4/Release-4.19/... #jira UE-55639 Change 3915421 by Martin.Wilson Fix crash from live link message bus heartbeat manager #jira UE-55644 Change 3915326 by Dan.Oconnor Make compilation manager's skeleton class layout better match the old compilation path's skeleton class layout, fixes a crash when renaming blueprint functions #jira UE-55592 Change 3915250 by JeanLuc.Corenthin Can't add C++ code to Enterprise projects (when enterprise is installed) Root cause: When compiling a C++ project, Datasmith modules are included in the build process (with the wrong path) Fix: - Added two more Enterprise directories, Plugins and Intermediate, to the Enterprise directories to check against - Build the correct path for the Datasmith modules and plugins in FindOrCreateModuleByName. Added check to see if module is under one of the Enterprise directories. - Added modules to list of precompiled modeules in UEBuildTargets.AddPrecompiledModules if Engine and Enterprise are 'installed and the module is under Enterprise. #jira UEENT-1032 Change 3915240 by Ben.Marsh Reduce editor startup times by ~15s on Windows. Platform loading code recursively scans every module for dependent DLL modules to load first. Change to make it early-out as soon as it encounters a module which is already in memory (via a call to GetModuleHandle() from ResolveMissingLibraryImportsRecursive). Also use a TSet<> to store set of visited modules rather than an Array. Now spends <0.1s total in this function on editor startup. (Change looks larger than it is due to moving functions out of WindowsPlatformProcess.h to avoid introducing TSet dependency into this header). #jira UE-55642 Change 3914803 by Gil.Gribb UE4 - Removed memory track from the lock free list links. This is not safe and will sometimes assert in debug. #jira UE-49600 Change 3914616 by zak.parrish Adding Calibrate button #jira none Change 3914599 by Andrew.Rodham Sequencer: Sequence template source signatures are now also compared to catch the case where a sub-sequence asset has been saved but not modified - The following sequence of events exposes this issue: - Create a master sequence with a single shot that spawns a cube - Add this sequence to a level and set it to auto-play - Save everything and restart - Resave just the inner shot asset without opening it - PIE - The inner shot never spawns its cube because its template was wiped on save, but its signature never changed. Since the master sequence previously didn't check the template source signature, it ends up trying to evaluate an empty template. #jira UE-55626 Change 3914479 by Krzysztof.Narkowicz Added encoded HDR reflection capture cooking if targeting ES 2.0/3.1 on Windows #jira UE-53875 Change 3914347 by Martin.Wilson Stop anim preview instance from ever running in parallel #Jira UE-55577 Change 3914179 by Benn.Gallagher Fixed clothing sections not displaying in LOD section list in skeletal mesh editor, due to no longer duplicating clothing sections in the model data. #jira UE-55528 Change 3914122 by Steven.Barnett Fix perf regression in BSP queries by changing suppression of PhysX mesh cleaning failure message. #jira UE-54081 Change 3913950 by zak.parrish Clamping my normalization math #jira none Change 3913926 by Zak.Parrish First pass at Gremlin Calibrate button. Also added shirt/backpack to boy so he's not a floating head. #jira none Change 3913668 by Matt.Kuhlenschmidt Adding missing substance styling info #jira UE-55081 Change 3913667 by Nick.Atamas Merging CL 3912976 from //UE4/Partner-Google-VR/... //UE4/Release-4.19/... Upgrading to support ARCore 1.0 runtime. #jira UE-55602 Change 3913645 by Aaron.McLeran #jira UE-55618 fix for mono audio devices Change 3913509 by Cody.Albert Removing PhsX build exclusion from Match3 #jira UE-53742 Change 3913380 by Dan.Oconnor Preload Sequence Bindings node at proper time #jira UE-55412 Change 3913300 by Mitchell.Wilson Updating iOS default startup movie to H.264, 1280x720, 30 fps. #jira UE-55382 Change 3913291 by Cody.Albert More iOS build fixes for Match3 #jira UE-53742 Change 3913169 by Cody.Albert Fixed iOS build issues for UnrealMatch3 #jira UE-53742 Change 3913131 by Krzysztof.Narkowicz Fixed remaining quad overdraw viewmode contents on screen after switching to certain other viewmodes (e.g. light overlap or complexity) #jira UE-54580 Change 3912851 by Lina.Halper Fixed issue with pose asset blending additively multiple poses suming up to 1 weight. #jira: UE-55603 Change 3912629 by Guillaume.Abadie Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3912170 by Martin.Wilson Add logging for UE-55511 (NaN crash) #jira UE-55511 Change 3912161 by Phillip.Kavan Fix editor-only default subobjects inherited from a native C++ parent class not being handled correctly during nativized Blueprint class ctor generation. Change summary: - Modified FEmitDefaultValueHelper::HandleSpecialTypes() to skip editor-only checks for instanced default subobjects. These will have already been created by a native parent class. - Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to assert before creating a "dummy" component in place of an editor-only instance if we're not supposed to be creating it. #jira UE-55474 Change 3912100 by Luke.Thatcher [RELEASE] [^] Merging (as edit) fix for building pak patches (CL 3911754) from //UE4/Dev-Core to //UE4/Release-4.19 #jira UE-55340 Change 3912072 by Mike.Beach Art cleanup pass on AR template icon. #jira UE-55587 Change 3912057 by Michael.Trepka Additional widget path validity check in FSlateUser::NotifyWindowDestroyed() #jira UE-55580 Change 3911592 by Jurre.deBaare Crash on merge actor when Use specific LOD Level #fix make sure we use the correct array to determine the number of components being merged #jira UE-55508 Change 3911466 by Cosmin.Sulea Mega change list for the following related issues: UEMOB-417 - Support Xcode automagical code signing UE-49829 - Remote build fails to use / sign distribution provisions coming from PC UE-39501 - Packaging for tvOS in Distribution fails to find valid provision UE-55334 - XCode managed provisions don╞t operate gracefully with manual provisions UE-55330 - Automatic signing doesn't work with tvOS UE-10969 - Remote build fails if there is no development provision provided #jira UEMOB-417 Change 3911454 by Luke.Thatcher [RELEASE] [!] Fix rendering thread memory leak in FLandscapeComponentSceneProxy::InitViewCustomData - FViewCustomDataLOD is allocated on a memstack, but contains a TArray, so is not trivially destructible. - The SubSections array is leaked when the memstack is popped. - Fix replaces the TArray with a TStaticArray of max size MAX_SUBSECTION_COUNT (which is 4). (Merging as edit CL 3911422 from //Fortnite/Release-3.1/... to //UE4/Release-4.19/...) #jira UE-54835 Change 3911370 by Dragan.Jerosimovic changed browOuterLeft -> browOuterUpLeft, browOuterRight->browOuterUpRight updated KiteBoyHead_JointsAndBlends.fbx #jira none Change 3910545 by Dan.Oconnor PR #4512: Fix FNetNameMapping::GetUniqueName regression (Contributed by dfb) #jira UE-55513 Change 3910449 by Michael.Trepka Fix for crash on exit on Mac when closing the root editor window with Cmd+W #jira UE-54973 Change 3909601 by Patrick.Boutot Expose to Blueprint GetProjectDirectory functions. #jira UE-55548, UEENT-999 Change 3909543 by Patrick.Boutot Rename ECollisionResponse to CollisionResponseType in script to prevent collision with FCollisionResponse. Python's help function now output the Python type instead of the cpp type. Do not export hidden enum entry from Python. #jira UE-55545, UEENT-961 Change 3909289 by Zak.Parrish Adding shirt/chest to faceAR sample #jira none Change 3908808 by Dragan.Jerosimovic added combination shapes network #jira none Change 3908788 by Mitchell.Wilson Updaing Match3Camera to resolve clipping issue on iPhone X #jira UE-54723 Change 3908374 by Jack.Porter Fix viewport offset problem for preview PIE window #jira UE-52583 Change 3907108 by Shane.Caudle #JIRA Added DefaultDeviceProfiles.ini to set the [IOS DeviceProfile] +CVars=r.ShadowQuality=4 Change 3907105 by Lauren.Ridge Fix for thumbnails not resetting when layers/blends reset and for them being incorrectly scaled when null #jira UETOOL-1303 Change 3907011 by Chris.Phillips UE-52667 Unable to package an Android DLC Using "Android APK" and "Android DLC" profiles in Project Launcher. #jira UE-52667 Change 3906792 by Lauren.Ridge When constructing the material editor viewport, use the direct method to set the environment visibility. #jira UE-55267 Change 3906734 by Chris.Babcock Fix issue with vertex fetch disable #jira UE-55475 Change 3906721 by Rolando.Caloca UE4.19 - Check if the results file from SCW is corrupt #jira UE-53124 Change 3906648 by Chris.Phillips UE-53184 Assertion when running mobile PIE in iPhone 5S mode. Updated the iPhone5s.json Metal settings. #jira UE-53184 Change 3906474 by David.Hibbitts Added default constructor for FLiveLinkWorldTime. #jira UEENT-879 #rb none Change 3906467 by Lauren.Ridge Swapping sibling materials now correctly swaps the overridden parameters out #jira nojira demobug Change 3906156 by Michael.Trepka Reverting CL 3728924 as it's causing problems with modal windows. A different, much more involved fix for UE-51711 will be needed. #jira UE-52492 Change 3906144 by Michael.Dupuis #jira UE-54547: Added guard to be sure that material is valid Change 3905882 by Matt.Kuhlenschmidt Enable substance buttons again #jira UE-55081 Change 3905513 by Sorin.Gradinaru UE-55394 iOS crash exiting app during startup movie: SPRINGBOARD, process-exit watchdog transgression #jira UE-55394 #jira UE-52328 #iOS #4.19 This is a particular case of UE-52328 iOS reporting crash on application exit: SPRINGBOARD, process-exit watchdog transgression Found several issues on iOS if the game is forced closed when the startup movie is playing and "Wait for movies to complete" is enabled in Project Settings - the game thread is waiting for the movie to complete on game shutdown - more that 5 sec - crash on FDefaultGameMoviePlayer::Shutdown if the above is fixed - HTTP module no longer has time to wait for the requests to complete. Change 3905506 by Michael.Dupuis Remove static mesh instancing async buffer filling, as with all the changes made, it's no longer necessary, the cost of loading very large buffer is negligable Rebuild the occlusion tree when using foliage.DensityScale with something other than 1.0 #jira 0 Change 3905498 by Lina.Halper Fix multiple pose asset issue - fallout from CL 3903509 - as for fullbody, went back to old mathod because in the fullbody, we want shortest path most of times and you don't blend more than 1 weight, so this is likely fine - as for additive, change to use blend from identity. #jira: UE-55439, UE-55448, UE-55250 Change 3905325 by Sorin.Gradinaru UE-54764 UnrealMatch3 spams Kindle device log with "Unsupported EPixelFormat" #jira UE-54764 #4.19 Also reproduced on Samsung Galaxy S5 Neo (SM-G903F, GPU Mali-T720). Check GMaxRHIFeatureLevel > ERHIFeatureLevel::ES3_1 (not mobile) before creating RSV params used with SupportsManualVertexFetch: (Positions, Tangents, TextureCoordinates, Color buffers) Change 3905307 by Jack.Porter Removed iPhone5 PIE json file as it's not a supported device #jira UE-53184 Change 3905132 by Shane.Caudle #JIRA Pushed it a little more out of the yellow. Change 3905117 by Shane.Caudle #JIRA Got SSS working and made some tweaks. Change 3904936 by Max.Chen Fix editor only #jira UE-55459 Change 3904269 by Chris.Babcock Disable manual vertex fetch on mobile #jira UE-55389 #ue4 #android #ios Change 3904186 by Lina.Halper Pose asset crash when skeleton not existing during serialization #jira: UE-55422 Change 3904063 by Max.Chen Sequencer: Fix copy/paste crash. Only process UMovieSceneCopyableBinding and objects that can be spawned by the movie scene spawn register. Copy from Dev-Sequencer #jira UE-55314 Change 3904060 by Lauren.Ridge Fix for saving a child out of a layer stack capturing the wrong parameters #jira UETOOL-1280 Change 3904050 by Luke.Thatcher [CONSOLE] [^] Added RHI Command List Enqueue Lambda method (merging as edit CL 3879722 from //Fortnite/Main to //UE4/Release-4.19) - Can be used to enqueue arbitrary tasks on the RHI thread from the render thread (similar to how EURC works for GT -> RT tasks), without having to write lots of bolierplate FRHICommand functor classes. - The first overload of EnqueueLambda method will check Bypass() to determine if it should run the lambda immediately or defer to the RHI thread. - This can be overriden via the 2nd overload if you need to check additional things such as IsRunningRHIInSeparateThread. - The function returns true if the lambda was enqueued and deferred to the RHI thread, otherwise false. This can be used to optionally add RHIThreadFences for unlock commands etc. #jira UE-55437 Change 3904004 by Lauren.Ridge Fix for material layer output nodes being able to be placed in other graphs #jira UE-54867 Change 3903931 by Aaron.McLeran #jira UE-55435 Crash in google resonance when toggling visualization fix for issue described here -- https://github.com/resonance-audio/resonance-audio-unreal-sdk/issues/1 Change 3903722 by David.Hill The ProxyLOD plugin is experimental: don't load it by default. #jira: ue-55402 Change 3903583 by Ben.Marsh Include .version and .modules files in manifest. Should fix missing version information in precompiled binaries. #jira Change 3903529 by Richard.Hinckley #jira UEDOC-7180 4.19 API Documentation manual update. Change 3903509 by Lina.Halper Merging using //UE4/Dev-AnimPhys/->//UE4/Release-4.19/ #DUPE MERGE: Fix issue with pose blending with shortest path - causing additive to blend linearly between pose if the rotation is same direction. #jira: UE-55250 Change 3903501 by Michael.Dupuis #jira UE-55122: Fixed bad neighbors updating for mobile Change 3903387 by Will.Fissler ; r.XGEShaderCompile is now enabled by default in source. Uncomment to disable XGE shader compilation. ;r.XGEShaderCompile = 0 #jira UE-55286 Change 3903251 by Sungjin.Hong #JIRA UE-55349 #loc added KO locallization for VR, Handheld AR templates Change 3903219 by Adrian.Siminciuc https://jira.it.epicgames.net/browse/UE-54738 removed redundant iOS warning when IOnlineIdentity::Login is called by FOnlineExternalUIIOS::ShowLoginUI #jira UE-54738 #iOS Change 3903130 by Cody.Albert Updated build configuration to resolve iOS build error on UnrealMatch3 #jira UE-53742 Change 3903056 by Shane.Caudle #JIRA Latest tweaks to lighitng and rendering for boy. Change 3903032 by Cody.Albert Added missing include that was preventing iOS builds from succeeding on TopDown template #jira UE-54341 Change 3902669 by Lauren.Ridge Fix for thumbnail crash after saving material instances that contain layers #jira crash Change 3902581 by Mitchell.Wilson Updating Samples and Template Min iOS Version to iOS 9. #jira UE-55148 Change 3902448 by Lauren.Ridge Fix for crash due to unparented material instance #jira crash Change 3902206 by Chris.Phillips UE-52612 External textures only work in pixel shaders. Sampling external textures are now only limited to pixel shaders when the shader model is < SM4. #jira UE-52612 Change 3902120 by Peter.Sauerbrei bvringing over the fix for backgrounding crash on iPhone X from Fortnite #jira UE-54883 Change 3902097 by Lina.Halper Merging using //UE4/Dev-AnimPhys/->//UE4/Release-4.19/ #DUPE MERGE: CL 3901939 #jira: UE-55401 Change 3902082 by Mike.Beach Fixing an issue with the fix from CL 3889470 - fully matching the old UEnum name check (checking both the value name and the typed name, for example: "Left" and "EControllerHand::Left"). #jira UE-55153 Change 3901963 by Peter.Sauerbrei bring over the fix from Fortnite for Remote Shader Compilation not respecting settings in the passed in shader #jira UE-52797 Change 3901959 by Ethan.Geller [Release-4.19] #jira UE-55225: Stop RtAudio stream on StopRecording in sequence recorder. #rb Aaron.McLaren Change 3901482 by Lauren.Ridge Fix for crash on opening materials due to array out of bounds #jira crash Change 3901181 by Michael.Dupuis #jira UE-55313: To enable tessellation we MUST have 2 materials in the list Change 3900935 by Nick.Bullard Updating Default_Startup.mp4 with more recent UE branding. This still requires another update for final version with audio #jira UE-55382 Change 3900660 by Aaron.McLeran #jira UE-55381 crash in sound submix Bringing fix from FN to 4.19 (CL 3890630) Change 3900643 by Aaron.McLeran #jira UE-55380 fixing synth envelopes Change 3900617 by Aaron.McLeran #jira UE-55151 Fixing crash w/ mic component Change 3900544 by tim.gautier QAGame: Submitting asset for AsNumber fix submitted with UE-10310 #jira UE-29618 Change 3900430 by Ryan.Brucks KismetRenderingLibrary: Applied a fix from FN to make it possible to create textures from BP created RTs. Without the fix the assets would be created but invisible to the user due to missing RF_Public and RF_Standalone. #JIRA none Change 3900399 by Lauren.Ridge Fixing global parameters not working #jira UE-55242 Change 3900297 by Ben.Marsh Speculative fix for hot reload causing version files to be updated with a locally made installed build. #jira UE-55072 Change 3900116 by Chris.Bunner Removing outdated tests and test assets. #jira UETOOL-1298 Change 3900042 by Chris.Bunner Deleted SharedInputCollection and associated material graph nodes. #jira UETOOL-1298 Change 3899887 by Lauren.Ridge Fix for background checkbox stomping profile info for material editor. Note that you may have to delete Saved/Config/Windows/Editor.ini to get this to work. #jira UE-55267 Change 3899824 by Chris.Phillips UE-52813 Editor's mobile preview doesn't serialize the landscape's cooked heightmap data. Now only regenerating landscape pixel data when needed when using Mobile Preview Rendering Levels. #jira UE-52813 Change 3899775 by Lauren.Ridge Fix for crash on opening material layer material #jira crash Change 3899673 by Jamie.Dale Fixed Functions sometimes being exposed to Python as if they were Structs #jira none Change 3899487 by Chris.Bunner Duplicate [CL 3852020, 3896571] - Disabling non-performant code only required by experimental material layers feature. Users can opt-in per-project through experimental renderer settings, replacing the previous editor experimental flag. #jira UETOOL-1298 Change 3899156 by Phillip.Kavan Include address of object reference in persistent frame debug info. #jira UE-51952 Change 3899146 by Rolando.Caloca UE4.19 - hlslcc - Workaround for intrinsics with two output arguments #jira UE-52477 Change 3899060 by Bart.Hawthorne Add a null check for the game mode pointer in UWorld::SpawnPlayActor #jira UE-54461 Change 3899015 by Krzysztof.Narkowicz Fixed initialization of instancing random vertex stream. #jira UE-53605 Change 3899008 by Michael.Dupuis Fix issue with landscape mobile vertex factory accessing unbound LodTessellationParams when r.ShaderDevelopmentMode=1 #jira 0 Change 3898994 by Phillip.Kavan More verbose debug logging if an invalid object reference is detected in the BP ubergraph frame during garbage collection. #jira UE-51952 Change 3898962 by Guillaume.Abadie Fixes wrong parameters about whether GPU timing may have CPU generated bubbles to the dynamic resolution heuristic. #jira UE-55352 Change 3898826 by Sorin.Gradinaru UE-54784 StrategyGame crashes entering game on KindleFire 7 - Assertion failed: ViewSize.GetMin #4.19 #Android #jira UE-54784 Wrong code to make an integer even + operator precedence Change 3898822 by Sorin.Gradinaru UE-52328 iOS reporting crash on application exit: SPRINGBOARD, process-exit watchdog transgression FORT-70783 FHttpManager::Flush is immediately canceling all HTTP requests #jira UE-52328 #jira FORT-70783 #iOS #PC #4.19 UE-52328 reopened because of FORT-70783 iOS only: Delay Request->CancelRequest() on Http module shutdown - wait for 2 sec on FHttpManager::Flush to allow pending requests to be sent to the server. Change 3898705 by Max.Chen Sequencer: Skip if the binding id's sequence can't be found. #jira UE-55337 Change 3898108 by Michael.Dupuis #jira UE-54547: Remove the FORCEINLINE so we get a proper callstack of what's happening Change 3898076 by Max.Chen Sequencer: Override the animation asset in the player state if it doesn't match the animation asset that's being evaluated. #jira UE-55328 Change 3897897 by Matt.Kuhlenschmidt Disable substance buttons for now #jira UE-55081 Change 3897742 by Aaron.McLeran Merging fix for UE-55223 to 4.19 #jira UE-55223 Change 3897538 by Michael.Dupuis #jira UE-53787: Added guard if for some reason the material is null we should not try to draw using this material Change 3897406 by Phillip.Kavan Back out local debug logs. #jira UE-51952 Change 3897400 by Phillip.Kavan Serializing object will now be passed to GC so that it can be logged in case the referenced objects is garbage. - Mirrored from //UE4/Dev-Core (3871863). #jira UE-51952 Change 3897391 by Max.Chen Sequencer: Don't update current time to be within the view range when stepping into a sequence. #jira UE-55322 Change 3897274 by Krzysztof.Narkowicz Fixed issues with loading shaders from DDC - hardcoded CustomAttributes initialization instead of filling them inside UObject costructors in order to properly initialize CustomAttributes before DDC key was created. Added an assert that CustomAttributes are initialized before the AttributeDDCString, so we won't run into this issue again in the future. #jira UE-54683 Change 3897148 by Adrian.Siminciuc https://jira.it.epicgames.net/browse/UE-55147 #4.19 #iOS #jira UE-55147 Change 3897138 by Max.Chen Sequencer: Fix crash when an actor factory is not found. Copy from Dev-Sequencer #jira UE-55309 Change 3897045 by Jack.Porter Fix for crash in ALandscapeProxy::UpdateGrass #jira UE-54362 Change 3897036 by Jack.Porter Fix InstancedStaticMesh crash with invalid lightmap coordinates #jira UE-54423 Change 3896801 by Dmitriy.Dyomin Fixed: Planar reflections does not handle origin rebasing #jira UE-52351 Change 3896743 by Dmitriy.Dyomin Discard CPU copy of vertex/index buffers in OpenGL RHI #jira UE-52133 Change 3896619 by Guillaume.Abadie Cherry-pick 3896598: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3895718 by Max.Chen Sequencer: Null checks to prevent crash when saving the default state of a spawnable #jira UE-55304 Change 3895426 by Rolando.Caloca UE4.19 - Add an increased timeout for SCW to avoid OOM situations #jira UE-55306 Change 3895245 by tim.gautier QAGame: Submitting updated test assets. Broke ML_Base out into individual components #jira UE-29618 Change 3895194 by Marc.Audy Prevent crash due to a null entry in the linked to graph of the destination pin #jira UE-54606 Change 3894913 by Arne.Schober REL - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3894625 by Arne.Schober REL - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894464 by Martin.Wilson Extra debugging info for UE-54705 plus remove check so it is no longer fatal #jira UE-54705 Change 3894450 by Martin.Wilson Remove pinnable ness of retarget asset. Paves the way for exposing retarget asset properties on the node #jira none Change 3893948 by Jostin.Bilyeu Adding default player start location to help with launch on testing within level TM-Materials_POM #jira UE-55063 Change 3893495 by Robert.Manuszewski Fixing a crash when running DDC commandlet #jira UE-54646 Change 3893451 by Jurre.deBaare Altered fix for actor merging with negative scaling to get correct normals #jira UE-54996 #misc updated automated test to include this test-case Change 3892913 by Ethan.Geller [Release-4.19] #jira UE-55151 Fix for Mic Component crashing on re-init. #rb aaron.mcleran Change 3892871 by Ryan.Vance Multi-view requires the day dream compositor. #jira UE-55253 Change 3892785 by Arciel.Rekman Linux: fix inability to create a C++ project (UE-55222). - NullSourceCodeAccessor will unconditionally allow C++ project creation in source builds. - Installed build will check for more compilers in commonly found locations. #jira UE-55222 Change 3892687 by Jostin.Bilyeu Checking in replacement Built Data for map TM-Materials_POM #jira UE-55063 Change 3892674 by Jostin.Bilyeu Adding an invisible plane to TM-Materials_POM to help testing on mobile devices #jira UE-55063 Change 3892622 by Aaron.McLeran #jira none Fixing scope lock in phonon probe volume Change 3892511 by Matt.Kuhlenschmidt Fix zero engine version warning #jira UE-55081 Change 3892211 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891732 by Brian.Zaugg Re-adding iPhoneX launch images with correct case. #JIRA UE-53541 Change 3891727 by Arne.Schober REL - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891716 by Ben.Marsh Fix buffer overrun when generating callstack. #jira Change 3891697 by Brian.Zaugg Deleting iPhoneX launch images that have incorrect case. #jira UE-53541 Change 3891678 by Brian.Zaugg IPP binaries for iPhoneX support. #jira UE-53541 Change 3891525 by Lauren.Ridge Thumbnails now update correctly w/parameters #jira UETOOL-1333 Change 3891520 by Lauren.Ridge Fixing SA error in material editor #jira UE-55206 Change 3891495 by Jurre.deBaare Normal are different after Merge Actor on scaled objects #fix Make sure we do not apply scale when transform Normals/Tangents #jira UE-54996 Change 3891352 by Guillaume.Abadie Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3891323 by Matt.Kuhlenschmidt Added substance buttons to content browser and material editor #jira UE-55081 Change 3891033 by David.Hibbitts #JIRA UE-55135 Moved Message Bus Source heartbeats to their own thread using a new FHeartbeatManager singleton. This prevents sources from incorrectly being removed during Slate UI operations. Change 3890642 by Arne.Schober REL - Better fix for Paper2d which honors batching #jira UE-55063 Change 3890593 by Arne.Schober REL - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890502 by Mike.Erwin Fix reported VRAM size on Metal We were getting correct value in MB from system but overflowing uint32 arithmetic when converting to bytes. This led 4GB and 8GB configs to report 0 total VRAM, 0 dedicated tex mem, and GTexturePoolSize = 0. Noticed the problem on my 6GB FirePro, which reported 2GB and set GTexturePoolSize to 70% of that. Also fixed log of texture pool size to show MB. Other platforms' RHIs already report this in MB. #jira none Change 3890404 by Jostin.Bilyeu Updating Demo Display names to remove redundant spaces #jira UE-29618 Change 3890401 by Dan.Oconnor Fix for property table performance regression #jira UE-54984 Change 3890194 by Dan.Oconnor Make sure a CDO's subobjects are preloaded when running in -game #jira UE-54242 Change 3890182 by Krzysztof.Narkowicz Moving CL3867594 from Dev-Rendering to fix missing shaders in cooked Binary Editor DCC. USE_EDITOR_ONLY_DEFAULT_MATERIAL_FALLBACK generated default material shaders had no cooking code path. #jira UE-54683 Change 3890140 by Rob.Cannaday Merging cacert.pem from //UE4/Dev-Online to //UE4/Release-4.19 Includes latest cacert.pem from https://curl.haxx.se/docs/caextract.html as of January 17, 2018 #jira none Change 3889850 by Shaun.Kime Now initializing Niagara scripts and emitters even if the config file isn't ready yet. #jira UE-54168 #jira UE-54169 #tests can create a blank emitter and all script sub-types Change 3889833 by Michael.Trepka Disabled Clang's unused-lambda-capture warning added in Xcode 9.3 #jira none Change 3889696 by Patrick.Boutot Allow rename from AssetTool when there is no source control enabled. Fix crash when you rename an asset without an enabled source control. #jira UEENT-803 Change 3889470 by Mike.Beach Switching the source-name to legacy hand enum lookup functions to use a static table instead of finding a UEnum object and iterating over reflection data (to prevent a GC lockup with the UObject query). #jira UE-55153 Change 3889319 by Matt.Kuhlenschmidt Disable hardware survey on build machines. They run windows server and lack the necessary win32 api functionality to execute it properly #jira UE-55166 Change 3889087 by Jostin.Bilyeu Minor adjustments TM-SceneTexture for better testing clarity. Minor adjustments to TM-MipLevels for test map clean up #jira UE-29618 Change 3889073 by Sorin.Gradinaru UE-55117 Android virtual keyboard can have text input hidden by software buttons #jira UE-55117 #Android #4.19 Adjusted x-coord and width for the native EditText Change 3888841 by Jurre.deBaare Make FSkeletalMeshRenderData::GetMaxBonesPerSection an ENGINE_API exported function #jira none Change 3888837 by Guillaume.Abadie Fixes a crash in dynamic resolution when doing UE4Editor -server #jira UE-55158 Change 3888831 by Dragan.Jerosimovic added fbx files #jira none Change 3888340 by Ethan.Geller [Release-4.19] #jira UE-54787 edit settings for Strategy Game to prevent stuttering in AudioMixer on low performance Android Devices #rb Aaron.McLeran #fyi Aaron.McLeran #lockdown Cristina.Riveron Change 3888133 by Michael.Karambelas QAGame: Adding a BP Actor to test the Mic component feature that AaronM implemented with UE-51471. #jira UE-29618 Change 3887957 by Krzysztof.Narkowicz "Fixed" Vulkan instancing in by doing Metal style set instance offset to 0 hack #jira UE-54367 Change 3887912 by Jostin.Bilyeu Adding content to TM-SceneTexture to verify Screen Positioning as well as Scene Color and Depth. Adding a new map (TM-MIPLevels) for testing custom mip levels #jira UE-29618 Change 3887571 by Zak.Parrish Adding FaceAR content and cleanup #jira none Change 3887458 by Dan.Oconnor Fix 'Step Out' functionality for macro and collapsed graphs #jira UE-55000, UE-55002, UE-55022 Change 3886883 by zachary.wilson Add testing content to QAGame: Texture and material for testing mip levels. Postprocess material for testing scene buffer sampling. #jira UE-29618 Change 3886848 by Max.Preussner Engine: Workaround for uninitialized external textures causing white flashes in media playback Copied from Fortnite-Main and Dev-Sequencer #jira UE-53357 Change 3886720 by Matt.Kuhlenschmidt Guard against mac menus updating during slow tasks. #jira UE-55068 Change 3886657 by Guillaume.Abadie Cherry-pick 3886626: Cherry-pick 3886560: Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. #jira FORT-69961 Change 3886653 by Matt.Kuhlenschmidt Perforce Plugin: Removed all calls to methods that would update the P4PASSWD environment variable. Perforce stores this as plain text so it is not safe and we do not want the editor to be responsible for this being set. All users should be using ticket based p4 servers for the best security but if they are unable to then they can call p4 passwd on their own to set a slightly better hashed password directly. They may also log in each time to the editor which prevents any password from being stored #jira UE-55111 Change 3886621 by Benn.Gallagher Fixed crash closing clothing tab if workflow centric application puts the tab spawners in a bad state due to incorrect handling of tab context menus. #JIRA UE-55067 Change 3886552 by Thomas.Sarkanen Fixed crash loading an anim instance with a re-instanced class Unable to repro, but in editor we dont need the optimization that this provides. Now we always re-initialize functions and properties in case the class has changed out from under us. #jira UE-55065 - [CrashReport] UE4Editor_Engine!FExposedValueHandler::Initialize() [animnodebase.cpp:521] Change 3886442 by Cosmin.Sulea UE-53033 - Editor Rapidly Spawns Multiple Empty Windows Throughout Remote Shader Compiling #jira UE-53033 Change 3886441 by Cosmin.Sulea UE-54598 - Using an Invalid iOS Mobile Provision does not give descriptive error in Project Launcher, IPhonePackager #jira UE-54598 Change 3886427 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled - from //Dev-Mobile@CL3843552 #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3886210 by Ethan.Geller [Release-4.19] #jira UE-53867 Ensure we don't read off into garbage memory for uncompressed PCM. Change 3886005 by Zak.Parrish Checking in faceAR work on behalf of 3Lateral #jira none Change 3885925 by Mike.Erwin Material preview label off-center on HiDPI screen #jira UE-52533 Change 3885778 by Dan.Oconnor Fix stepping over collapsed graph and macro nodes #jira UE-54950, UE-54955 Change 3885713 by Mike.Erwin glTF: fix material using wrong textures Imported material could plug the wrong textures into its inputs. The previous code tracked a material's textures based on image source index, corrected code uses texture (source + sampler) index. This is more general allowing an image to be referenced by multiple textures. Bug reported yesterday via email, demonstrated using the Khronos TextureSettingsTest sample model. #jira none Change 3885603 by Ben.Marsh Fixes for compiler errors in nightly builds of VS2017 in /permissive- mode. #jira Change 3885566 by Phillip.Kavan Fix a scoping issue related to inaccessible property reference caching in nativized Blueprint code. Change summary: - Modified FDefaultSubobjectData::EmitPropertyInitialization() to utilize the FScopeBlock utility to manage the inaccessible property cache during code generation for instanced subobject initialization. #jira UE-55061 Change 3885481 by Mark.Satterthwaite Attempt to workaround an Intel shader compiler bug without reopening a related AMD bug. This may cost performance unless function constants are available and the runtime compiler actually bothers to perform optimisation (AMD's did not in 10.12.6 and earlier). #jira UE-54333 Change 3885461 by Lauren.Ridge Fix for slot not being initialized to null #jira UE-55069 Change 3885455 by zak.parrish Adding initial files for FaceAR scene lookdev #jira none Change 3885446 by Zak.Parrish Adding test assets for Gremlin look dev. May get removed later prior to release. #jira none Change 3885424 by Krzysztof.Narkowicz Fixed skeletal mesh LODs inside editor. If skeletal mesh wasn't recently visible, code was incorrectly changing LOD settings without updating LOD data on render thread. #jira UE-53861 Change 3885406 by Zak.Parrish Rollback //UE4/Release-4.19/Samples/FaceARSample/Content/UI/FaceARDebugUI.uasset to revision 1 #jira UE-54639 Change 3885340 by Arne.Schober REL - Bitarray FindFromLast was masking incorrectly for the corner case where there is no slack #jira none Change 3885143 by Marc.Audy Merge memory corruption fix in CL# 3884991 from Fortnite-Staging to Release-4.19 #jira UE-54977 #jira UE-54976 #jira UE-54898 Change 3885093 by Mark.Satterthwaite Apple don't like testing for the validation layer in iOS App Store builds - it is unnecessary so we can disable this for shipping builds. #JIRA N/A Change 3884622 by Jurre.deBaare Moving over missing file from changelist for UE-54508 #jira UE-54508 Change 3883391 by Nick.Atamas Fix for UE-54622 : PIE in VR available when ARKit/ARCore plugins enabled. Only create ARKit/ARCore tracking systems on iOS/Android. #jira UE-54622 Change 3883257 by Phillip.Kavan Fix a Blueprint compile error for the GetClassDefaults node Map value outputs introduced by stronger type checking in 4.19 between Map pin types. #jira UE-55026 Change 3883024 by Lauren.Ridge Fixing static analysis warning #jira SA Change 3882510 by Michael.Dupuis #jira none : Fixed screen size calculation to take aspect ratio into account correctly Change 3882502 by Lauren.Ridge Fix for material layer parameters not rebuilding and adding save child button #jira UETOOL-1275 Change 3882458 by Krzysztof.Narkowicz Copying cached shadow map assert fix from Fortnite-Main (CL3802813) #jira UE-54747 Change 3882366 by Michael.Karambelas QAGame: made changes to QABP_Debugging, QABP_FunctionLib, and QA_TestHelper for Blueprint debugger tests. #jira UE-29618 Change 3881971 by andrew.porter QAGame: Removing actor from Shot_003 #jira UE-29618 Change 3881795 by Krzysztof.Narkowicz Added encoded HDR reflection capture cooking if targeting ES 2.0/3.1 on Windows #jira UE-53875 Change 3881550 by David.Hibbitts #JIRA UEENT-879 Subject frames now store world time explictly as a double with optional scene timecode as MetaData. This allows for use cases such as posing a single frame in Maya where the world time would be changing but the scene timecode associated with the animation remains fixed. THIS IS A BREAKING CHANGE: Sources from before this change will no longer compile. Change 3881339 by Jurre.deBaare Moving over: "Editor crashed when attempting to bake out all the material channels #jira UE-54508 #misc small UDN Merge actor / bake material fixes Change 3879557 by Dan.Oconnor Fix stepover behavior when no debug target is selected #jira UE-54978 Change 3879485 by Mike.Beach Limiting the number of stereo layers on Oculus android to 4 (otherwise, their lib crashes). #jira UE-54999 Change 3879438 by David.Hibbitts #JIRA UEENT-880 Added support for Subject level MetaData to LiveLink #rb martin.wilson #fyi james.golding, simon.tourangeau Change 3879343 by Lina.Halper Last min change that skiped compiling #jira: none Change 3879337 by Lina.Halper Fix issue where tick is skipped due to last ticked pose isn't cleared after AnimInstance changes. #jira: UE-54806 Change 3878968 by Phillip.Kavan Fix deprecation warnings in compiled stub class wrapper codegen for Blueprint class dependencies excluded from nativization. Change summary: - Modified FBlueprintCompilerCppBackendBase::GenerateWrapperForClass() to const-correct the assignment of cached weak pointers to referenced properties. #jira UE-54981 Change 3878962 by Adrian.Siminciuc https://jira.it.epicgames.net/browse/UE-54831 (No error occurs accepting if Android SDK license file cannot be written, but user cannot accept license) #4.19 #jira UE-54831 #android - shows an error message box informing that the license file could not be written. Change 3878821 by Andrew.Rodham Sequencer: Fixed overlapping ranges being inserted into the evaluation field during compilation - The issue was that track segments that had been combined with adjacent segments (due to them being identical) would potentially cause a subsequently compiled frame to overlap with a range that had already been inserted into the evaluation field. - The insertion code previously asserted that only minor overlaps were catered for (due to fp rounding errors) and assumed that a supplied range could not entirely contain any other range in the field. - The solution is to supply the insertion time along with the range to know exactly where the data should live in the field, and crop the range to the maximum allowable space between adjacent ranges. #jira UE-54922 Change 3878171 by Chris.Phillips Android: Fixed crash after splash screen when using Vulkan. #jira UE-54299 Change 3877950 by Ethan.Geller Fix copyright information from previous CL #jira none #rb none #lockdown Cristina.Riveron Change 3877859 by Nick.Shin rebuilt lighting for TM-ShaderModels and resaved the level #jira UE-53374 Client displays "lighting needs to be rebuilt (1 unbuilt object(s))" when launching TM-Shadermodels onto HTML5 Change 3877854 by tim.gautier Adding additional (temp) ML Test asset #jira UE-29318 Change 3877609 by Ethan.Geller [4.19] Change FWhiteNoise generate function to use SRand, due to weird distribution in FRandRange #jira UE-54965 #rb aaron.mcleran #lockdown cristina.riveron Change 3877474 by Lauren.Ridge Adding WITH_EDITOR wrappers to editor-only section of code #jira fixingcompiles Change 3877271 by Arne.Schober REL - Integrate 3872827 - The VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should not be neccessary #jira none Change 3877260 by Lina.Halper If revision is too far away, ignore the request and send current buffer - this is exactly how it used to do and it is still required, but this means motion vector will be ignored when this happens #jira: UE-54398 Change 3876950 by Lauren.Ridge Renaming layers in a material instance - from 4.19 preview feedback #jira UETOOL-1296 Change 3876932 by Arciel.Rekman Linux: updated the link to the cross-toolchain (UE-54597). #jira UE-54597 Change 3876918 by Phillip.Kavan Fix a regression that could cause packaging to fail and/or data loss with Blueprint nativization enabled. Change summary: - Removed logic that attempted to avoid redundant assignments of instanced default subobject references. This was not compatible with editinline characteristics that can allow certain object reference values to be overridden by the Blueprint class. - Explicitly defer to ExportTextItem() when generating C++ code for UObjectProperty/UInterfaceProperty reference values in which the underlying object reference is NULL. #jira UE-54870 Change 3876759 by tim.gautier Updated Material Layer test assets to include Opacity and Emissive. #jira UE-29318 Change 3876575 by Michael.Karambelas Updating the QABP_Debugging asset in QAGame with a couple of interfaces and additional logic for testing purposes. #jira UE-29618 Change 3876406 by Robert.Manuszewski Fixed a crash when reporting linker errors #jira UE-51037 Change 3875891 by Nick.Atamas Fixed scenario where geometries were being updated once per pin, instead of just being updated once. Also fixes a scenario where there are no pins and geometries fail to update. #jira UE-54914 Change 3875880 by Aaron.McLeran #jira UE-54916 Fixing up submix effect templates Change 3875673 by Brandon.Schaefer Fix Apex dependencies Depend on static Apex libraries in Apex.Build.cs versus Physx.Build.cs #jira UE-54861 Change 3875498 by Lauren.Ridge PR #4477: 4.19 Fixed a crash caused by the layered material property widget of the material instance editor. (Contributed by mlaveaux) #jira UE-54862 Change 3875322 by tim.gautier Recreating Material Layer test assets (asset version has changed) #jira UE-29318 Change 3875157 by Aaron.McLeran #jira UE-54901 Synth components do not allow sends to buses Change 3875103 by Brandon.Schaefer Need to use our bundled libc++.so not libstdc++.so when building Apex/PhysX/NvCloth libraries #jira UE-54815 Change 3875037 by Aaron.McLeran #jira UE-54896 Fixing up audio capture component to parameterize the delay Parameterize the jitter latency delay. Change 3875026 by Aaron.McLeran #jira UE-54895 Filter frequency values don't update live with EQ effects and 0-frequency cutoff causes pops Change 3874927 by Ryan.Vance #jira UE-54894 Ensure we don't delete aliased texture resources, they are managed externally. Change 3874925 by Martin.Wilson Remove XR post fix from live link code written during motion controller integration #jira none Change 3874354 by Ben.Marsh Use the compiler matching the user's preferred IDE if they don't have a specific compiler selected in the project settings. #jira UE-54272 Change 3877545 by Ben.Marsh Replace FPlatformMisc::DebugBreak() with the UE_DEBUG_BREAK() macro. VS2017 is able to show force-inlined calls on the callstack, which makes debugging asserts and ensures annoying. Use similar logic for expanding ensure() macros in place. #jira UE-54961 [CL 3963579 by Ben Marsh in Main branch]
2018-03-24 09:22:20 -04:00
if (Analytics == nullptr || IsRunningDedicatedServer() || GIsBuildMachine)
{
return false;
}
#if PLATFORM_IOS || PLATFORM_ANDROID || PLATFORM_DESKTOP
bool bSurveyDone = false;
bool bSurveyExpired = false;
// platform agnostic code to get the last time we did a survey
FString LastRecordedTimeString;
if (FPlatformMisc::GetStoredValue(TEXT("Epic Games"), TEXT("Unreal Engine/Hardware Survey"), TEXT("HardwareSurveyDateTime"), LastRecordedTimeString))
{
// attempt to convert to FDateTime
FDateTime LastRecordedTime;
if (FDateTime::Parse(LastRecordedTimeString, LastRecordedTime))
{
bSurveyDone = true;
// make sure it was a month ago
FTimespan Diff = FDateTime::UtcNow() - LastRecordedTime;
if (Diff.GetTotalDays() > 30)
{
bSurveyExpired = true;
}
}
}
return !bSurveyDone || bSurveyExpired;
#else
return false;
#endif
}
FString HardwareSurveyBucketRAM(uint32 MemoryMB)
{
const float GBToMB = 1024.0f;
FString BucketedRAM;
if (MemoryMB < 2.0f * GBToMB) BucketedRAM = TEXT("<2GB");
else if (MemoryMB < 4.0f * GBToMB) BucketedRAM = TEXT("2GB-4GB");
else if (MemoryMB < 6.0f * GBToMB) BucketedRAM = TEXT("4GB-6GB");
else if (MemoryMB < 8.0f * GBToMB) BucketedRAM = TEXT("6GB-8GB");
else if (MemoryMB < 12.0f * GBToMB) BucketedRAM = TEXT("8GB-12GB");
else if (MemoryMB < 16.0f * GBToMB) BucketedRAM = TEXT("12GB-16GB");
else if (MemoryMB < 20.0f * GBToMB) BucketedRAM = TEXT("16GB-20GB");
else if (MemoryMB < 24.0f * GBToMB) BucketedRAM = TEXT("20GB-24GB");
else if (MemoryMB < 28.0f * GBToMB) BucketedRAM = TEXT("24GB-28GB");
else if (MemoryMB < 32.0f * GBToMB) BucketedRAM = TEXT("28GB-32GB");
else if (MemoryMB < 36.0f * GBToMB) BucketedRAM = TEXT("32GB-36GB");
else BucketedRAM = TEXT(">36GB");
return MoveTemp(BucketedRAM);
}
FString HardwareSurveyBucketVRAM(uint32 VidMemoryMB)
{
const float GBToMB = 1024.0f;
FString BucketedVRAM;
if (VidMemoryMB < 0.25f * GBToMB) BucketedVRAM = TEXT("<256MB");
else if (VidMemoryMB < 0.5f * GBToMB) BucketedVRAM = TEXT("256MB-512MB");
else if (VidMemoryMB < 1.0f * GBToMB) BucketedVRAM = TEXT("512MB-1GB");
else if (VidMemoryMB < 1.5f * GBToMB) BucketedVRAM = TEXT("1GB-1.5GB");
else if (VidMemoryMB < 2.0f * GBToMB) BucketedVRAM = TEXT("1.5GB-2GB");
else if (VidMemoryMB < 2.5f * GBToMB) BucketedVRAM = TEXT("2GB-2.5GB");
else if (VidMemoryMB < 3.0f * GBToMB) BucketedVRAM = TEXT("2.5GB-3GB");
else if (VidMemoryMB < 4.0f * GBToMB) BucketedVRAM = TEXT("3GB-4GB");
else if (VidMemoryMB < 6.0f * GBToMB) BucketedVRAM = TEXT("4GB-6GB");
else if (VidMemoryMB < 8.0f * GBToMB) BucketedVRAM = TEXT("6GB-8GB");
else BucketedVRAM = TEXT(">8GB");
return MoveTemp(BucketedVRAM);
}
FString HardwareSurveyBucketResolution(uint32 DisplayWidth, uint32 DisplayHeight)
{
FString BucketedRes;
float AspectRatio = (float)DisplayWidth / DisplayHeight;
if (AspectRatio < 1.5f)
{
// approx 4:3
if (DisplayWidth < 1150)
{
BucketedRes = TEXT("1024x768");
}
else if (DisplayHeight < 912)
{
BucketedRes = TEXT("1280x800");
}
else
{
BucketedRes = TEXT("1280x1024");
}
}
else
{
// widescreen
if (DisplayWidth < 1400)
{
BucketedRes = TEXT("1366x768");
}
else if (DisplayWidth < 1520)
{
BucketedRes = TEXT("1440x900");
}
else if (DisplayWidth < 1640)
{
BucketedRes = TEXT("1600x900");
}
else if (DisplayWidth < 1800)
{
BucketedRes = TEXT("1680x1050");
}
else if (DisplayHeight < 1140)
{
BucketedRes = TEXT("1920x1080");
}
else
{
BucketedRes = TEXT("1920x1200");
}
}
return MoveTemp(BucketedRes);
}
FString HardwareSurveyGetResolutionClass(uint32 LargestDisplayHeight)
{
FString ResolutionClass = TEXT("720");
if (LargestDisplayHeight < 700)
{
ResolutionClass = TEXT("<720");
}
else if (LargestDisplayHeight > 1024)
{
ResolutionClass = TEXT("1080+");
}
return MoveTemp(ResolutionClass);
}
void OnHardwareSurveyComplete(const FHardwareSurveyResults& SurveyResults)
{
#if PLATFORM_IOS || PLATFORM_ANDROID || PLATFORM_DESKTOP
if (Analytics != nullptr)
{
// remember last time we did a survey
FPlatformMisc::SetStoredValue(TEXT("Epic Games"), TEXT("Unreal Engine/Hardware Survey"), TEXT("HardwareSurveyDateTime"), FDateTime::UtcNow().ToString());
#if PLATFORM_IOS || PLATFORM_ANDROID
TArray<FAnalyticsEventAttribute> HardwareStatsAttribs;
// copy from what IOSPlatformSurvey has filled out
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("Model"), SurveyResults.Platform));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Version"), SurveyResults.OSVersion));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Bits"), FString::Printf(TEXT("%d-bit"), SurveyResults.OSBits)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Language"), SurveyResults.OSLanguage));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("RenderingAPI"), SurveyResults.RenderingAPI));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Count"), FString::Printf(TEXT("%d"), SurveyResults.CPUCount)));
FString DisplayResolution = FString::Printf(TEXT("%dx%d"), SurveyResults.Displays[0].CurrentModeWidth, SurveyResults.Displays[0].CurrentModeHeight);
FString ViewResolution = FString::Printf(TEXT("%dx%d"), SurveyResults.Displays[0].CurrentModeWidth, SurveyResults.Displays[0].CurrentModeHeight);
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("DisplayResolution"), DisplayResolution));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("ViewResolution"), ViewResolution));
#if PLATFORM_ANDROID
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPUModel"), SurveyResults.RHIAdapter.AdapterName));
#endif
Analytics->RecordEvent(*FString::Printf(TEXT("%sHardwareStats"), FPlatformProperties::IniPlatformName()), HardwareStatsAttribs);
#elif PLATFORM_DESKTOP
TArray<FAnalyticsEventAttribute> HardwareWEIAttribs;
HardwareWEIAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.CPUPerformanceIndex)));
HardwareWEIAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.GPUPerformanceIndex)));
HardwareWEIAttribs.Add(FAnalyticsEventAttribute(TEXT("Memory.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.RAMPerformanceIndex)));
Analytics->RecordEvent(TEXT("Hardware.WEI.1"), HardwareWEIAttribs);
FString MainGPUName(TEXT("Unknown"));
float MainGPUVRAMMB = 0.0f;
FString MainGPUDriverVer(TEXT("UnknownVersion"));
if (SurveyResults.DisplayCount > 0)
{
MainGPUName = SurveyResults.RHIAdapter.AdapterName;
FString strAdapterDedicatedMemoryMB(SurveyResults.RHIAdapter.AdapterDedicatedMemoryMB);
MainGPUVRAMMB = FCString::Atof(*strAdapterDedicatedMemoryMB);
MainGPUDriverVer = SurveyResults.RHIAdapter.AdapterUserDriverVersion;
}
uint32 LargestDisplayHeight = 0;
FString DisplaySize[3];
if (SurveyResults.DisplayCount > 0)
{
DisplaySize[0] = HardwareSurveyBucketResolution(SurveyResults.Displays[0].CurrentModeWidth, SurveyResults.Displays[0].CurrentModeHeight);
LargestDisplayHeight = FMath::Max(LargestDisplayHeight, SurveyResults.Displays[0].CurrentModeHeight);
}
if (SurveyResults.DisplayCount > 1)
{
DisplaySize[1] = HardwareSurveyBucketResolution(SurveyResults.Displays[1].CurrentModeWidth, SurveyResults.Displays[1].CurrentModeHeight);
LargestDisplayHeight = FMath::Max(LargestDisplayHeight, SurveyResults.Displays[1].CurrentModeHeight);
}
if (SurveyResults.DisplayCount > 2)
{
DisplaySize[2] = HardwareSurveyBucketResolution(SurveyResults.Displays[2].CurrentModeWidth, SurveyResults.Displays[2].CurrentModeHeight);
LargestDisplayHeight = FMath::Max(LargestDisplayHeight, SurveyResults.Displays[2].CurrentModeHeight);
}
// Resolution Class
FString ResolutionClass;
if (LargestDisplayHeight < 700)
{
ResolutionClass = TEXT("<720");
}
else if (LargestDisplayHeight < 1024)
{
ResolutionClass = TEXT("720");
}
else
{
ResolutionClass = TEXT("1080+");
}
// Bucket RAM
FString BucketedRAM = HardwareSurveyBucketRAM(SurveyResults.MemoryMB);
// Bucket VRAM
FString BucketedVRAM = HardwareSurveyBucketVRAM(MainGPUVRAMMB);
TArray<FAnalyticsEventAttribute> HardwareStatsAttribs;
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("Platform"), SurveyResults.Platform));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.CPUPerformanceIndex)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Brand"), SurveyResults.CPUBrand));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Speed"), FString::Printf(TEXT("%.1fGHz"), SurveyResults.CPUClockGHz)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Count"), FString::Printf(TEXT("%d"), SurveyResults.CPUCount)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Name"), SurveyResults.CPUNameString));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("CPU.Info"), FString::Printf(TEXT("0x%08x"), SurveyResults.CPUInfo)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.GPUPerformanceIndex)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.Name"), MainGPUName));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.VRAM"), BucketedVRAM));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.DriverVersion"), MainGPUDriverVer));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.RHIAdapterName"), SurveyResults.RHIAdapter.AdapterName));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.RHIAdapterInternalDriverVersion"), SurveyResults.RHIAdapter.AdapterInternalDriverVersion));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.RHIAdapterUserDriverVersion"), SurveyResults.RHIAdapter.AdapterUserDriverVersion));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("GPU.RHIAdapterDriverDate"), SurveyResults.RHIAdapter.AdapterDriverDate));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("RAM"), BucketedRAM));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("RAM.WEI"), FString::Printf(TEXT("%.1f"), SurveyResults.RAMPerformanceIndex)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("NumberOfMonitors"), FString::Printf(TEXT("%d"), SurveyResults.DisplayCount)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("MonitorResolution.0"), DisplaySize[0]));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("MonitorResolution.1"), DisplaySize[1]));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("MonitorResolution.2"), DisplaySize[2]));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("ResolutionClass"), ResolutionClass));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Version"), SurveyResults.OSVersion));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.SubVersion"), SurveyResults.OSSubVersion));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Bits"), FString::Printf(TEXT("%d-bit"), SurveyResults.OSBits)));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("OS.Language"), SurveyResults.OSLanguage));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("IsLaptop"), SurveyResults.bIsLaptopComputer ? TEXT("true") : TEXT("false")));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("IsRemoteSession"), SurveyResults.bIsRemoteSession ? TEXT("true") : TEXT("false")));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.CPU0"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.CPUStats[0].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.CPU1"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.CPUStats[1].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.GPU0"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.GPUStats[0].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.GPU1"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.GPUStats[1].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.GPU2"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.GPUStats[2].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.GPU3"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.GPUStats[3].ComputePerfIndex())));
HardwareStatsAttribs.Add(FAnalyticsEventAttribute(TEXT("SynthIdx.GPU4"), FString::Printf(TEXT("%.1f"), SurveyResults.SynthBenchmark.GPUStats[4].ComputePerfIndex())));
Analytics->RecordEvent(TEXT("HardwareStats.1"), HardwareStatsAttribs);
TArray<FAnalyticsEventAttribute> HardwareStatErrorsAttribs;
HardwareStatErrorsAttribs.Add(FAnalyticsEventAttribute(TEXT("ErrorCount"), FString::Printf(TEXT("%d"), SurveyResults.ErrorCount)));
HardwareStatErrorsAttribs.Add(FAnalyticsEventAttribute(TEXT("LastError"), SurveyResults.LastSurveyError));
HardwareStatErrorsAttribs.Add(FAnalyticsEventAttribute(TEXT("LastError.Detail"), SurveyResults.LastSurveyErrorDetail));
HardwareStatErrorsAttribs.Add(FAnalyticsEventAttribute(TEXT("LastError.WEI"), SurveyResults.LastPerformanceIndexError));
HardwareStatErrorsAttribs.Add(FAnalyticsEventAttribute(TEXT("LastError.WEI.Detail"), SurveyResults.LastPerformanceIndexErrorDetail));
Analytics->RecordEvent(TEXT("HardwareStatErrors.1"), HardwareStatErrorsAttribs);
#endif // PLATFORM_DESKTOP
}
#endif
}
private:
// If true, the engine tick function will poll FPlatformSurvey for results
bool bPendingHardwareSurveyResults;
// Holds the analytics provider if available
IAnalyticsProvider* Analytics;
FTSTicker::FDelegateHandle TickerHandle;
};
IMPLEMENT_MODULE( FHardwareSurveyModule, HardwareSurvey );