Files
UnrealEngineUWP/Engine/Source/Runtime/RenderCore/Private/RenderResource.cpp

805 lines
21 KiB
C++
Raw Normal View History

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
/*=============================================================================
RenderResource.cpp: Render resource implementation.
=============================================================================*/
#include "RenderResource.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 "Misc/ScopedEvent.h"
#include "Misc/App.h"
#include "RenderingThread.h"
/** Whether to enable mip-level fading or not: +1.0f if enabled, -1.0f if disabled. */
float GEnableMipLevelFading = 1.0f;
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// The maximum number of transient vertex buffer bytes to allocate before we start panic logging who is doing the allocations
int32 GMaxVertexBytesAllocatedPerFrame = 32 * 1024 * 1024;
FAutoConsoleVariableRef CVarMaxVertexBytesAllocatedPerFrame(
TEXT("r.MaxVertexBytesAllocatedPerFrame"),
GMaxVertexBytesAllocatedPerFrame,
TEXT("The maximum number of transient vertex buffer bytes to allocate before we start panic logging who is doing the allocations"));
TLinkedList<FRenderResource*>*& FRenderResource::GetResourceList()
{
static TLinkedList<FRenderResource*>* FirstResourceLink = NULL;
return FirstResourceLink;
}
/** Initialize all resources initialized before the RHI was initialized */
void FRenderResource::InitPreRHIResources()
{
// Notify all initialized FRenderResources that there's a valid RHI device to create their RHI resources for now.
for (TLinkedList<FRenderResource*>::TIterator ResourceIt(FRenderResource::GetResourceList()); ResourceIt; ResourceIt.Next())
{
ResourceIt->InitRHI();
}
// Dynamic resources can have dependencies on static resources (with uniform buffers) and must initialized last!
for (TLinkedList<FRenderResource*>::TIterator ResourceIt(FRenderResource::GetResourceList()); ResourceIt; ResourceIt.Next())
{
ResourceIt->InitDynamicRHI();
}
#if !PLATFORM_NEEDS_RHIRESOURCELIST
while (GetResourceList())
{
TLinkedList<FRenderResource*>* CurrentHead = GetResourceList();
CurrentHead->Unlink();
delete CurrentHead;
}
#endif
}
void FRenderResource::ChangeFeatureLevel(ERHIFeatureLevel::Type NewFeatureLevel)
{
ENQUEUE_RENDER_COMMAND(FRenderResourceChangeFeatureLevel)(
[NewFeatureLevel](FRHICommandList& RHICmdList)
{
for (TLinkedList<FRenderResource*>::TIterator It(FRenderResource::GetResourceList()); It; It.Next())
{
FRenderResource* Resource = *It;
// Only resources configured for a specific feature level need to be updated
if (Resource->HasValidFeatureLevel())
{
Resource->ReleaseRHI();
Resource->ReleaseDynamicRHI();
Resource->FeatureLevel = NewFeatureLevel;
Resource->InitDynamicRHI();
Resource->InitRHI();
}
}
});
}
void FRenderResource::InitResource()
{
check(IsInRenderingThread());
if(!bInitialized)
{
#if PLATFORM_NEEDS_RHIRESOURCELIST
ResourceLink = TLinkedList<FRenderResource*>(this);
ResourceLink.LinkHead(GetResourceList());
#endif
if(GIsRHIInitialized)
{
InitDynamicRHI();
InitRHI();
}
else
{
#if !PLATFORM_NEEDS_RHIRESOURCELIST
TLinkedList<FRenderResource*>* ListEntry = new TLinkedList<FRenderResource*>(this);
ListEntry->LinkHead(GetResourceList());
#endif
}
FPlatformMisc::MemoryBarrier(); // there are some multithreaded reads of bInitialized
bInitialized = true;
}
}
void FRenderResource::ReleaseResource()
{
if ( !GIsCriticalError )
{
check(IsInRenderingThread());
if(bInitialized)
{
if(GIsRHIInitialized)
{
ReleaseRHI();
ReleaseDynamicRHI();
}
#if PLATFORM_NEEDS_RHIRESOURCELIST
ResourceLink.Unlink();
#endif
bInitialized = false;
}
}
}
void FRenderResource::UpdateRHI()
{
check(IsInRenderingThread());
if(bInitialized && GIsRHIInitialized)
{
ReleaseRHI();
ReleaseDynamicRHI();
InitDynamicRHI();
InitRHI();
}
}
void FRenderResource::InitResourceFromPossiblyParallelRendering()
{
check(IsInParallelRenderingThread());
if (IsInRenderingThread())
{
InitResource();
}
else
{
class FInitResourceRenderThreadTask
{
FRenderResource& Resource;
FScopedEvent& Event;
public:
FInitResourceRenderThreadTask(FRenderResource& InResource, FScopedEvent& InEvent)
: Resource(InResource)
, Event(InEvent)
{
}
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2879377 on 2016/02/24 by Gil.Gribb UE4 - Added render thread start and stop delegates. GitHub 2006. #Jira UE-26184 Change 2879378 on 2016/02/24 by Gil.Gribb UE4 - Avoided using TG_PrePhysics as the first tickgroup so that licensees can add tickgropups. https://udn.unrealengine.com/questions/279126/code-assumes-that-tg-prephysics-is-the-first-tick.html #Jira UE-26971 Change 2879382 on 2016/02/24 by Gil.Gribb UE4 - Tweaked automation test framework by request from UDN post. Change 2879727 on 2016/02/24 by Martin.Mittring adding debug info for Optimus driver detection issue #rb:Benjamin.Hyder #Test:PC Change 2879728 on 2016/02/24 by Martin.Mittring fixed and improved VisualizeMotionBlur #rb:David.Hill #test:PC Change 2879729 on 2016/02/24 by Martin.Mittring added AngleBetweenVectors() and variants to the FastMath library #rb:David.Hill #code_review:Brian.Karis Change 2880133 on 2016/02/24 by David.Hill new r.DepthOfFieldQualitySetting for GDC squencer demo #rb:Martin.Mittring - OR-15875 Change 2880314 on 2016/02/24 by Daniel.Wright Fixed uses of FDepthDrawingPolicyFactory being affected by bUseAsOccluder * This fixes preshadows on HISMC and foliage Change 2880338 on 2016/02/24 by Martin.Mittring added SkinCache.Debug cvar #rb:Lina.Halper #test:PC Change 2880344 on 2016/02/24 by Daniel.Wright Added the ability to apply DFAO to static indirect lighting, controlled by r.AOApplyToStaticIndirect * Lightmaps, stationary skylight and reflection captures are all affected * Specular occlusion on reflection captures requires a fair amount of tweaking of r.SkySpecularOcclusionStrength, MinOcclusion and MaxOcclusionDistance for good quality * For now, a movable skylight with low intensity (.0001) must be placed to control MaxOcclusionDistance and MinOcclusion Change 2880346 on 2016/02/24 by Daniel.Wright Added several cvars to expose mesh distance field limits, which allows higher quality * r.DistanceFields.MaxPerMeshResolution * r.DistanceFields.DefaultVoxelDensity * r.DistanceFields.AtlasSizeXY * r.DistanceFields.AtlasSizeZ Change 2881304 on 2016/02/25 by Gil.Gribb UE4 - Increased the priority of cloth tasks because these are on the critical path. Change 2881306 on 2016/02/25 by Gil.Gribb UE4 - Added cvar to control background tick list cleanup. Change 2881790 on 2016/02/25 by Daniel.Wright Screen size fading is only applied to spot and point lights Change 2882077 on 2016/02/25 by Daniel.Wright DFAO indirect occlusion on static lighting is now correctly applied to IndirectIrradiance Change 2882391 on 2016/02/25 by Martin.Mittring fixed bad caching of SRV for vertexbuffers in SkinCache (caused rendering artifacts and wasteful memory allocations). Finding a SRV is now O(1), was O(n) #rb:Olaf.Piesche #code_review:Rolando.Caloca,Marcus.Wassmer Change 2883008 on 2016/02/26 by Gil.Gribb UE4 - Fixed recursive shader intialization crash on consoles. Change 2883253 on 2016/02/26 by Martin.Mittring Improved SkinTangent compression #rb:Olaf.Piesche Change 2883295 on 2016/02/26 by Martin.Mittring Added RecomputeSkinTangent feature for GPU SkinCache, not enabled by default (r.SkinCache.RecomputeTangents) #rb:Olaf.Piesche,Brian.Karis,Lina.Halper,Rolando.Caloca Change 2883363 on 2016/02/26 by Gil.Gribb UE4 - Fixed an issue with recurisve shader init on consoles...again. Change 2883912 on 2016/02/26 by Gil.Gribb UE4 - Fixed shadows updating static meshes while the prepass is in progress. Change 2884829 on 2016/02/27 by Martin.Mittring OR-16237 indirect lighting on skin is too dark #rb:Martin.Mittring #code_review:Brian.Karis Change 2885096 on 2016/02/28 by Martin.Mittring OR-13678 [CL 2890130 by Gil Gribb in Main branch]
2016-03-02 13:38:38 -05:00
static FORCEINLINE TStatId GetStatId()
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FInitResourceRenderThreadTask, STATGROUP_TaskGraphTasks);
}
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2879377 on 2016/02/24 by Gil.Gribb UE4 - Added render thread start and stop delegates. GitHub 2006. #Jira UE-26184 Change 2879378 on 2016/02/24 by Gil.Gribb UE4 - Avoided using TG_PrePhysics as the first tickgroup so that licensees can add tickgropups. https://udn.unrealengine.com/questions/279126/code-assumes-that-tg-prephysics-is-the-first-tick.html #Jira UE-26971 Change 2879382 on 2016/02/24 by Gil.Gribb UE4 - Tweaked automation test framework by request from UDN post. Change 2879727 on 2016/02/24 by Martin.Mittring adding debug info for Optimus driver detection issue #rb:Benjamin.Hyder #Test:PC Change 2879728 on 2016/02/24 by Martin.Mittring fixed and improved VisualizeMotionBlur #rb:David.Hill #test:PC Change 2879729 on 2016/02/24 by Martin.Mittring added AngleBetweenVectors() and variants to the FastMath library #rb:David.Hill #code_review:Brian.Karis Change 2880133 on 2016/02/24 by David.Hill new r.DepthOfFieldQualitySetting for GDC squencer demo #rb:Martin.Mittring - OR-15875 Change 2880314 on 2016/02/24 by Daniel.Wright Fixed uses of FDepthDrawingPolicyFactory being affected by bUseAsOccluder * This fixes preshadows on HISMC and foliage Change 2880338 on 2016/02/24 by Martin.Mittring added SkinCache.Debug cvar #rb:Lina.Halper #test:PC Change 2880344 on 2016/02/24 by Daniel.Wright Added the ability to apply DFAO to static indirect lighting, controlled by r.AOApplyToStaticIndirect * Lightmaps, stationary skylight and reflection captures are all affected * Specular occlusion on reflection captures requires a fair amount of tweaking of r.SkySpecularOcclusionStrength, MinOcclusion and MaxOcclusionDistance for good quality * For now, a movable skylight with low intensity (.0001) must be placed to control MaxOcclusionDistance and MinOcclusion Change 2880346 on 2016/02/24 by Daniel.Wright Added several cvars to expose mesh distance field limits, which allows higher quality * r.DistanceFields.MaxPerMeshResolution * r.DistanceFields.DefaultVoxelDensity * r.DistanceFields.AtlasSizeXY * r.DistanceFields.AtlasSizeZ Change 2881304 on 2016/02/25 by Gil.Gribb UE4 - Increased the priority of cloth tasks because these are on the critical path. Change 2881306 on 2016/02/25 by Gil.Gribb UE4 - Added cvar to control background tick list cleanup. Change 2881790 on 2016/02/25 by Daniel.Wright Screen size fading is only applied to spot and point lights Change 2882077 on 2016/02/25 by Daniel.Wright DFAO indirect occlusion on static lighting is now correctly applied to IndirectIrradiance Change 2882391 on 2016/02/25 by Martin.Mittring fixed bad caching of SRV for vertexbuffers in SkinCache (caused rendering artifacts and wasteful memory allocations). Finding a SRV is now O(1), was O(n) #rb:Olaf.Piesche #code_review:Rolando.Caloca,Marcus.Wassmer Change 2883008 on 2016/02/26 by Gil.Gribb UE4 - Fixed recursive shader intialization crash on consoles. Change 2883253 on 2016/02/26 by Martin.Mittring Improved SkinTangent compression #rb:Olaf.Piesche Change 2883295 on 2016/02/26 by Martin.Mittring Added RecomputeSkinTangent feature for GPU SkinCache, not enabled by default (r.SkinCache.RecomputeTangents) #rb:Olaf.Piesche,Brian.Karis,Lina.Halper,Rolando.Caloca Change 2883363 on 2016/02/26 by Gil.Gribb UE4 - Fixed an issue with recurisve shader init on consoles...again. Change 2883912 on 2016/02/26 by Gil.Gribb UE4 - Fixed shadows updating static meshes while the prepass is in progress. Change 2884829 on 2016/02/27 by Martin.Mittring OR-16237 indirect lighting on skin is too dark #rb:Martin.Mittring #code_review:Brian.Karis Change 2885096 on 2016/02/28 by Martin.Mittring OR-13678 [CL 2890130 by Gil Gribb in Main branch]
2016-03-02 13:38:38 -05:00
static FORCEINLINE ENamedThreads::Type GetDesiredThread()
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
return ENamedThreads::GetRenderThread_Local();
}
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2879377 on 2016/02/24 by Gil.Gribb UE4 - Added render thread start and stop delegates. GitHub 2006. #Jira UE-26184 Change 2879378 on 2016/02/24 by Gil.Gribb UE4 - Avoided using TG_PrePhysics as the first tickgroup so that licensees can add tickgropups. https://udn.unrealengine.com/questions/279126/code-assumes-that-tg-prephysics-is-the-first-tick.html #Jira UE-26971 Change 2879382 on 2016/02/24 by Gil.Gribb UE4 - Tweaked automation test framework by request from UDN post. Change 2879727 on 2016/02/24 by Martin.Mittring adding debug info for Optimus driver detection issue #rb:Benjamin.Hyder #Test:PC Change 2879728 on 2016/02/24 by Martin.Mittring fixed and improved VisualizeMotionBlur #rb:David.Hill #test:PC Change 2879729 on 2016/02/24 by Martin.Mittring added AngleBetweenVectors() and variants to the FastMath library #rb:David.Hill #code_review:Brian.Karis Change 2880133 on 2016/02/24 by David.Hill new r.DepthOfFieldQualitySetting for GDC squencer demo #rb:Martin.Mittring - OR-15875 Change 2880314 on 2016/02/24 by Daniel.Wright Fixed uses of FDepthDrawingPolicyFactory being affected by bUseAsOccluder * This fixes preshadows on HISMC and foliage Change 2880338 on 2016/02/24 by Martin.Mittring added SkinCache.Debug cvar #rb:Lina.Halper #test:PC Change 2880344 on 2016/02/24 by Daniel.Wright Added the ability to apply DFAO to static indirect lighting, controlled by r.AOApplyToStaticIndirect * Lightmaps, stationary skylight and reflection captures are all affected * Specular occlusion on reflection captures requires a fair amount of tweaking of r.SkySpecularOcclusionStrength, MinOcclusion and MaxOcclusionDistance for good quality * For now, a movable skylight with low intensity (.0001) must be placed to control MaxOcclusionDistance and MinOcclusion Change 2880346 on 2016/02/24 by Daniel.Wright Added several cvars to expose mesh distance field limits, which allows higher quality * r.DistanceFields.MaxPerMeshResolution * r.DistanceFields.DefaultVoxelDensity * r.DistanceFields.AtlasSizeXY * r.DistanceFields.AtlasSizeZ Change 2881304 on 2016/02/25 by Gil.Gribb UE4 - Increased the priority of cloth tasks because these are on the critical path. Change 2881306 on 2016/02/25 by Gil.Gribb UE4 - Added cvar to control background tick list cleanup. Change 2881790 on 2016/02/25 by Daniel.Wright Screen size fading is only applied to spot and point lights Change 2882077 on 2016/02/25 by Daniel.Wright DFAO indirect occlusion on static lighting is now correctly applied to IndirectIrradiance Change 2882391 on 2016/02/25 by Martin.Mittring fixed bad caching of SRV for vertexbuffers in SkinCache (caused rendering artifacts and wasteful memory allocations). Finding a SRV is now O(1), was O(n) #rb:Olaf.Piesche #code_review:Rolando.Caloca,Marcus.Wassmer Change 2883008 on 2016/02/26 by Gil.Gribb UE4 - Fixed recursive shader intialization crash on consoles. Change 2883253 on 2016/02/26 by Martin.Mittring Improved SkinTangent compression #rb:Olaf.Piesche Change 2883295 on 2016/02/26 by Martin.Mittring Added RecomputeSkinTangent feature for GPU SkinCache, not enabled by default (r.SkinCache.RecomputeTangents) #rb:Olaf.Piesche,Brian.Karis,Lina.Halper,Rolando.Caloca Change 2883363 on 2016/02/26 by Gil.Gribb UE4 - Fixed an issue with recurisve shader init on consoles...again. Change 2883912 on 2016/02/26 by Gil.Gribb UE4 - Fixed shadows updating static meshes while the prepass is in progress. Change 2884829 on 2016/02/27 by Martin.Mittring OR-16237 indirect lighting on skin is too dark #rb:Martin.Mittring #code_review:Brian.Karis Change 2885096 on 2016/02/28 by Martin.Mittring OR-13678 [CL 2890130 by Gil Gribb in Main branch]
2016-03-02 13:38:38 -05:00
static FORCEINLINE ESubsequentsMode::Type GetSubsequentsMode() { return ESubsequentsMode::FireAndForget; }
void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent)
{
Resource.InitResource();
Event.Trigger();
}
};
{
FScopedEvent Event;
TGraphTask<FInitResourceRenderThreadTask>::CreateTask().ConstructAndDispatchWhenReady(*this, Event);
}
}
}
FRenderResource::~FRenderResource()
{
if (bInitialized && !GIsCriticalError)
{
// Deleting an initialized FRenderResource will result in a crash later since it is still linked
UE_LOG(LogRendererCore, Fatal,TEXT("A FRenderResource was deleted without being released first!"));
}
}
void BeginInitResource(FRenderResource* Resource)
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3694557) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3495522 by Rolando.Caloca DR - Enable gpu skinning on Vulkan Change 3681208 by Jian.Ru Force bCastShadowAsMasked to false for opaque materials; Disable UI check box of bCastShadowAsMasked when blend mode is opaque or modulated Change 3682631 by Rolando.Caloca DR - Copy 3682626 Fix recompute tangents not being applied to different sections Change 3684812 by Arne.Schober DR - Fix a crash and a Masterfile issue Change 3684833 by Marcus.Wassmer Fix more non-unity issues Change 3685236 by Arne.Schober DR - Fix some issues with Particles e.g stride was meant to be set to repeat and also subUV needs to be taken care of Change 3685247 by Arne.Schober DR - accidentally removed bracket Change 3686764 by Daniel.Wright In uncooked Feature Level ES2, fixed reflection capture data getting tossed in PostLoad when it is needed for encoding in OnRegister. Change 3686775 by Marcus.Wassmer Fix bad merge Change 3687022 by Marcus.Wassmer Fix Win32 compiles Change 3687355 by Rolando.Caloca DR - Copy 3687334 Fix for odd Vulkan crash Change 3687537 by Arne.Schober DR - Making StaticArray faster as PSO descriptor uses them intensively (5ms in one infiltrator scene on PS4) Rewrote integer sequence to use fewer template instantiations for faster compile times and larger sequence support. Change 3687546 by Arne.Schober DR - Remove unnecessary virtuals and recounts Change 3688128 by Rolando.Caloca DR - Fix Linux compile error, rename Elements macro to GetNumArrayElements Change 3688140 by Rolando.Caloca DR - Linux warning fix Change 3688190 by Mark.Satterthwaite Use the correct #define for determining whether we are compiling for Metal in general, rather that only doing so for Metal + Mobile rendering. Should fix the skin-cache rendering. #jira UE-50912 Change 3688689 by Chris.Bunner Static analysis fixes. Change 3688948 by Chris.Bunner More static analysis fixes. Change 3689116 by Arne.Schober DR - [UE-51015] - moving alignment specifier Change 3690645 by Marcus.Wassmer Restore per-element align for TStaticArray Change 3690801 by Jian.Ru Marcus's fix FStaticMeshVertexFactories::ReleaseResources #jira UE-51093 Change 3690809 by Rolando.Caloca DR - Copy 3690806 Fix Anisotropic not working on Vulkan Change 3690874 by Benn.Gallagher Fix for index buffer overflow and clothing upgrade warnings. #jira UE-51026 Change 3691221 by Jian.Ru Fix log spam when -d3ddebug #jira UE-50977 Change 3691291 by Marcus.Wassmer Move global dynamic buffer commits to before GPU FX rendering. Fixes d3derror in ES2 preview. The more subtle issue I believe is that the d3d11statecache is leaving streams bound for too long, but that requires more investigation #jira UE-51058 Change 3691361 by Rolando.Caloca DR - Fix resources not getting destroyed at RHI destruction time #jira UE-51057 Change 3691607 by Arne.Schober DR - interface change requested by Steve Change 3691662 by Marcus.Wassmer Fix one bit of d3dwarning. Need a 16 byte minimum to make 0 stride vbuffer happy for colors. Change 3692268 by Rolando.Caloca DR - vk - Keep a reference to a buffer to avoid deletion - Fixes crash in Paragon Change 3692403 by Jian.Ru Marcus's fix on automation test failure Change 3692443 by Jian.Ru Back out changelist 3692403 Change 3692455 by Marcus.Wassmer Fix automation failure in tile rendering. Can't setdata for vertexfactories on the gamethread Change 3692566 by Marcus.Wassmer Fix clang compiles Change 3692664 by Chris.Bunner Updated default editor skeletal mesh. Change 3692675 by Marcus.Wassmer Make the behavior of FCanvasTileRendererItem::FRenderData actually match the comment. Fixes automation crash. Change 3692692 by Jian.Ru Fix a bug where only the first slice of 3d textures are cleared on XboxOne; Fix a rendering artifact when r.TranslucentLightingVolume is 0 #jira UE-50636 Change 3693043 by Arne.Schober DR - [UE-51173]- Fixing Instanced Rendering Vertexbuffer SRV Resources not getting initzialized and re-set onto the vertexfactory after the Buffer has been updated Change 3693284 by Marcus.Wassmer Duplicate 3682248. Fix for debug canvas draw randomly corrupting memory Change 3693360 by Rolando.Caloca DR - Fix material events not showing up in RenderDoc Change 3693549 by Marcus.Wassmer Fix incorrect flag check Change 3693575 by Arne.Schober DR - null size check on StaticMeshVertexData Change 3693677 by Marcus.Wassmer Make double plus sure the copy is a valid size Change 3694155 by Marcus.Wassmer Generate correct strides for vertexfactories depending on whether color will be overridden or not by the component. Fixes WEX and probably other similar bugs. ALSO fix horrible longstanding bug in OpenGL VertexDeclaration cache. Strides not part of the operator== of the key so collisions/map walks would sometimes return the wrong decl with the wrong set of streamstrides. D3D has the same problem, causing spurious D3D warnings but I haven't fixed it yet. Change 3694156 by Marcus.Wassmer This doesn't really matter because the decl is created dynamically but the stream elements might as well be right if we're gonna have them Change 3694470 by Benn.Gallagher Fixed crash fixing up clothing sections index buffers in specific Unreal Tournament asset with modified oversized index buffer. #jira UE-51207 Change 3694557 by Chris.Bunner Static analysis and potential memory leak fix. Change 3684284 by Arne.Schober Manual Vfetch for StaticMeshes Skelmeshes also use the new Layout Skelmeshes use DDC Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Change 3689555 by Arne.Schober DR - Fix performance regession cause by not sharing VertexFactory ptr in the static drawlist [CL 3694667 by Marcus Wassmer in Main branch]
2017-10-13 11:32:28 -04:00
ENQUEUE_RENDER_COMMAND(InitCommand)(
[Resource](FRHICommandListImmediate& RHICmdList)
{
Resource->InitResource();
});
}
void BeginUpdateResourceRHI(FRenderResource* Resource)
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3694557) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3495522 by Rolando.Caloca DR - Enable gpu skinning on Vulkan Change 3681208 by Jian.Ru Force bCastShadowAsMasked to false for opaque materials; Disable UI check box of bCastShadowAsMasked when blend mode is opaque or modulated Change 3682631 by Rolando.Caloca DR - Copy 3682626 Fix recompute tangents not being applied to different sections Change 3684812 by Arne.Schober DR - Fix a crash and a Masterfile issue Change 3684833 by Marcus.Wassmer Fix more non-unity issues Change 3685236 by Arne.Schober DR - Fix some issues with Particles e.g stride was meant to be set to repeat and also subUV needs to be taken care of Change 3685247 by Arne.Schober DR - accidentally removed bracket Change 3686764 by Daniel.Wright In uncooked Feature Level ES2, fixed reflection capture data getting tossed in PostLoad when it is needed for encoding in OnRegister. Change 3686775 by Marcus.Wassmer Fix bad merge Change 3687022 by Marcus.Wassmer Fix Win32 compiles Change 3687355 by Rolando.Caloca DR - Copy 3687334 Fix for odd Vulkan crash Change 3687537 by Arne.Schober DR - Making StaticArray faster as PSO descriptor uses them intensively (5ms in one infiltrator scene on PS4) Rewrote integer sequence to use fewer template instantiations for faster compile times and larger sequence support. Change 3687546 by Arne.Schober DR - Remove unnecessary virtuals and recounts Change 3688128 by Rolando.Caloca DR - Fix Linux compile error, rename Elements macro to GetNumArrayElements Change 3688140 by Rolando.Caloca DR - Linux warning fix Change 3688190 by Mark.Satterthwaite Use the correct #define for determining whether we are compiling for Metal in general, rather that only doing so for Metal + Mobile rendering. Should fix the skin-cache rendering. #jira UE-50912 Change 3688689 by Chris.Bunner Static analysis fixes. Change 3688948 by Chris.Bunner More static analysis fixes. Change 3689116 by Arne.Schober DR - [UE-51015] - moving alignment specifier Change 3690645 by Marcus.Wassmer Restore per-element align for TStaticArray Change 3690801 by Jian.Ru Marcus's fix FStaticMeshVertexFactories::ReleaseResources #jira UE-51093 Change 3690809 by Rolando.Caloca DR - Copy 3690806 Fix Anisotropic not working on Vulkan Change 3690874 by Benn.Gallagher Fix for index buffer overflow and clothing upgrade warnings. #jira UE-51026 Change 3691221 by Jian.Ru Fix log spam when -d3ddebug #jira UE-50977 Change 3691291 by Marcus.Wassmer Move global dynamic buffer commits to before GPU FX rendering. Fixes d3derror in ES2 preview. The more subtle issue I believe is that the d3d11statecache is leaving streams bound for too long, but that requires more investigation #jira UE-51058 Change 3691361 by Rolando.Caloca DR - Fix resources not getting destroyed at RHI destruction time #jira UE-51057 Change 3691607 by Arne.Schober DR - interface change requested by Steve Change 3691662 by Marcus.Wassmer Fix one bit of d3dwarning. Need a 16 byte minimum to make 0 stride vbuffer happy for colors. Change 3692268 by Rolando.Caloca DR - vk - Keep a reference to a buffer to avoid deletion - Fixes crash in Paragon Change 3692403 by Jian.Ru Marcus's fix on automation test failure Change 3692443 by Jian.Ru Back out changelist 3692403 Change 3692455 by Marcus.Wassmer Fix automation failure in tile rendering. Can't setdata for vertexfactories on the gamethread Change 3692566 by Marcus.Wassmer Fix clang compiles Change 3692664 by Chris.Bunner Updated default editor skeletal mesh. Change 3692675 by Marcus.Wassmer Make the behavior of FCanvasTileRendererItem::FRenderData actually match the comment. Fixes automation crash. Change 3692692 by Jian.Ru Fix a bug where only the first slice of 3d textures are cleared on XboxOne; Fix a rendering artifact when r.TranslucentLightingVolume is 0 #jira UE-50636 Change 3693043 by Arne.Schober DR - [UE-51173]- Fixing Instanced Rendering Vertexbuffer SRV Resources not getting initzialized and re-set onto the vertexfactory after the Buffer has been updated Change 3693284 by Marcus.Wassmer Duplicate 3682248. Fix for debug canvas draw randomly corrupting memory Change 3693360 by Rolando.Caloca DR - Fix material events not showing up in RenderDoc Change 3693549 by Marcus.Wassmer Fix incorrect flag check Change 3693575 by Arne.Schober DR - null size check on StaticMeshVertexData Change 3693677 by Marcus.Wassmer Make double plus sure the copy is a valid size Change 3694155 by Marcus.Wassmer Generate correct strides for vertexfactories depending on whether color will be overridden or not by the component. Fixes WEX and probably other similar bugs. ALSO fix horrible longstanding bug in OpenGL VertexDeclaration cache. Strides not part of the operator== of the key so collisions/map walks would sometimes return the wrong decl with the wrong set of streamstrides. D3D has the same problem, causing spurious D3D warnings but I haven't fixed it yet. Change 3694156 by Marcus.Wassmer This doesn't really matter because the decl is created dynamically but the stream elements might as well be right if we're gonna have them Change 3694470 by Benn.Gallagher Fixed crash fixing up clothing sections index buffers in specific Unreal Tournament asset with modified oversized index buffer. #jira UE-51207 Change 3694557 by Chris.Bunner Static analysis and potential memory leak fix. Change 3684284 by Arne.Schober Manual Vfetch for StaticMeshes Skelmeshes also use the new Layout Skelmeshes use DDC Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Change 3689555 by Arne.Schober DR - Fix performance regession cause by not sharing VertexFactory ptr in the static drawlist [CL 3694667 by Marcus Wassmer in Main branch]
2017-10-13 11:32:28 -04:00
ENQUEUE_RENDER_COMMAND(UpdateCommand)(
[Resource](FRHICommandListImmediate& RHICmdList)
{
Resource->UpdateRHI();
});
}
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3345728) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3315219 on 2017/02/21 by Steve.Robb Fix for FObjectAndNameAsStringProxyArchive when serializing a TWeakObjectPtr. Change 3315285 on 2017/02/21 by Steve.Robb Explicitly pass string builder into code generation functions. Change 3315341 on 2017/02/21 by Ben.Marsh UAT: Clean up some formatting in StreamCopyDescription output - remove #fyi lines, exclude merge commits, and remove some blank lines. Change 3315350 on 2017/02/21 by Ben.Marsh Fix shared resource files not being rebuilt if the version header changes. Change 3315823 on 2017/02/21 by Ben.Marsh UAT: Use a class derived from AutomationException to return information specific to commandlets failing, rather than putting it in the base class. Change 3315826 on 2017/02/21 by Ben.Marsh UAT: Move Distiller class from general use in UAT; FileFilter provides a much safer and fully featured implementation of the same concepts. Change 3315857 on 2017/02/21 by Ben.Marsh UBT: Remove the StripBaseDirectory() and MakeRerootedFilePath() utility functions from UBT. These operations can now be done more safely with FileReference objects. Change 3315942 on 2017/02/21 by Ben.Marsh UBT: Convert FileFilter to use FileReference and DirectoryReference arguments everywhere. Change 3316236 on 2017/02/22 by Maciej.Mroz #jira UE-42045 Nativization Fixed Warning: TEnumAsByte is not intended for use with enum Change 3316253 on 2017/02/22 by Robert.Manuszewski Fixes for the async log file writer hangs and crashes. - potential fix for the logging system hang when running out of disk space while flushing log - fix for unexpected concurrency assert when flushing the log buffer to disk Change 3316293 on 2017/02/22 by Steve.Robb GetTypeHash and lexicographical comparison operators (operator<() etc.) for TTuple. Change 3316342 on 2017/02/22 by Maciej.Mroz Nativization: Wrappers (stubs) required only by other wrappers are properly generated. #codereview: Mike.Beach Change 3316344 on 2017/02/22 by Maciej.Mroz Fixed crash in nativized Odin Async loading properly handles nativized structs. Change 3316359 on 2017/02/22 by Steve.Robb GitHub #3287 : Ignore #pragma in USTRUCTs #jira UE-42248 Change 3316389 on 2017/02/22 by Matthew.Griffin Switched Installed Engine Filters to multiline properties to make them more readable Added Oodle to list of excluded plugins #jira UE-42030 Change 3316392 on 2017/02/22 by Ben.Marsh UBT: Split out FileReference/DirectoryReference classes into their own file. Change 3316394 on 2017/02/22 by Ben.Marsh UBT: Move FileReference/DirectoryReference extension methods into the appropriate file. Change 3316411 on 2017/02/22 by Ben.Marsh UAT: Remove file functions that take multiple arguments. There's not really a compelling use case for these to exist over looping from the calling code. Change 3316446 on 2017/02/22 by Ben.Marsh UAT: Try disabling function name prefix to log output from UAT, to see if it improves readability. Function names are still included in the log file for debugging. Change 3316575 on 2017/02/22 by Ben.Marsh UAT: Remove unused functionality for dealing with labels, and output a more human readable list of P4 settings at startup. Change 3318481 on 2017/02/22 by Steve.Robb Use of FMath::IsPowerOfTwo in check. Static assert to ensure that an inline set allocator will have a hash size of a power of two. Change 3318496 on 2017/02/22 by Steve.Robb Fix for TSet visualizers. Change 3318919 on 2017/02/23 by Steve.Robb Fix for hot reloading UScriptStruct-derived objects in a module, where the CDOs of these objects haven't had PrepareCppStructOps() called on them. #jira UE-42178 Change 3318942 on 2017/02/23 by Steve.Robb Removal of a redundant insertion which can cause problems on reallocation of the map. Change 3319010 on 2017/02/23 by Ben.Marsh UBT: Fix exception when a file that was previously part of the working set is deleted. Change 3319134 on 2017/02/23 by Robert.Manuszewski Better fix for a deadlock when flushing log while it's already being flushed due to flush timer on the async log writer thread. Change 3319249 on 2017/02/23 by Matthew.Griffin Added a function to check if running with debug game libs instead of checking command line in multiple places Added -RunConfig parameter, which has equivalent result to -debug if value of parameter starts with 'debug' Added -RunConfig=$(Configuration) as a default commandline argument for Mac so that editor can use debug game libs Removed -Shipping argument from VCProject generation as it's not used anymore Change 3319253 on 2017/02/23 by Maciej.Mroz #jira UE-41846 New mechanism to gather modules necessary for Nativized Assets. The modules are listed based on included headers. Previously the dependencies was gathered only in FBlueprintNativeCodeGenManifest::GatherModuleDependencies. Change 3319591 on 2017/02/23 by Ben.Marsh Don't strip prefixes beginning with WARNING: or ERROR: using the Postp filter. Change 3320357 on 2017/02/23 by Steven.Hutton Slight changes to Add Crash method - Returning select fields instead of entity objects in queries for perf reasons. Change 3320361 on 2017/02/23 by Steven.Hutton Performance improvements subsequent to the recent database changes. Change 3320446 on 2017/02/23 by Steven.Hutton adding my temporary performance tracker class - reports to a private slack channel with add crash performance data. Change 3320479 on 2017/02/23 by Ben.Marsh Fix CIS errors. Change 3320576 on 2017/02/23 by Jin.Zhang Update CrashReporter to use AWS Change 3320742 on 2017/02/23 by Jin.Zhang Merging crash caching Change 3321119 on 2017/02/24 by Robert.Manuszewski DLL injection protection support for non-monolithic builds Change 3323308 on 2017/02/27 by Matthew.Griffin Moved compilation of SwarmInterface after its dependencies so that we will see a build failure immediately if they change version in future Change 3323423 on 2017/02/27 by Chad.Garyet Adding a script to check and warn about csproj targeted .net versions being mismatched #JIRA UE-39624 Change 3323442 on 2017/02/27 by Ben.Marsh UBT: Output an error if an engine module references a game module. Change 3323743 on 2017/02/27 by Ben.Marsh PR #3303: Resolved PVS scan issues (Contributed by projectgheist) Change 3323748 on 2017/02/27 by Ben.Marsh Convert whitespace to tabs. Change 3324851 on 2017/02/28 by Chris.Wood Add Odin symbol locations to engine config for MDD on CR server. NotForLicensees Change 3324979 on 2017/02/28 by Gil.Gribb Fixed bad merge of priority change in the EDL. Change 3326889 on 2017/03/01 by Steven.Hutton Update to buggs controller to generate faster queries. Change 3326910 on 2017/03/01 by Robert.Manuszewski Removing legacy #if from PackageFileSummary. Change 3327118 on 2017/03/01 by Gil.Gribb UE4 - Fixed race that resulted in a memory leak when reading compressed paks. Change 3327633 on 2017/03/01 by Gil.Gribb UE4 - Added a cvar to control the pak precacher thottle. Change 3327674 on 2017/03/01 by Steve.Robb Unified boilerplate between all generated code files. Change 3328544 on 2017/03/01 by Chris.Wood CrashReportProcess.config update (CRP v1.2.17) Tweaks to a few values. Update website URL to explicitly point to old, non-cloud site on devweb-02. Change 3328714 on 2017/03/01 by Chris.Wood Correct CRP config regression. Point website at new cloud site. Still v1.2.17 Change 3329192 on 2017/03/02 by Matthew.Griffin Added Shared Build Id file to the list of Precompiled Build Dependencies in a target receipt so that it's brought into an installed build Change 3329285 on 2017/03/02 by Ben.Marsh UGS: Allow a project to specify a filters for the streams that should be displayed for fast-switching to. The QuickSelectStreamList seting in the [Options] section of the project settings references a depot path containing a list of strings used to filter the stream list. An option is shown to switch back to showing all available streams, if desired. Change 3330636 on 2017/03/02 by Ben.Marsh UBT: Bump version number of C++ include cache to force it to be rebuilt with additional include information for the default RC files. Change 3331262 on 2017/03/03 by Robert.Manuszewski Merging Dev-LoadTimes to Dev-Core (Garbage Collection performance improvements) - Improved GC multithreading - Improved BeginDestroy performance - Introduced ULevelActorCluster for StaticMeshActor and ReflectionCapture actor clustering (can be toggled through project settings or console command gc.ActorClusterEnabled) - A few improvements to AddReferencedObjects functions - Misc improvements to GC code - Garbage Collector now properly handles clusters which had their objects marked as pending kill - Blueprints can now create clusters too (can be toggled through project settings or console command gc.BlueprintClusteringEnabled, defaults to disabled) Change 3331285 on 2017/03/03 by Robert.Manuszewski A few fixes for the previous check-in. Change 3332001 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN file containing the valid settings for BuildConfiguration.xml. Pass -configdoc=<filename> on the command line to generate such a file. Change 3332022 on 2017/03/03 by Ben.Marsh Update documentation for where to find the BuildConfiguration settings. Change 3332031 on 2017/03/03 by Ben.Marsh Remove documentation for Windows XP support; it has been removed in the 4.16 release. Change 3332256 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN page containing module and target settings. Change 3332458 on 2017/03/03 by Ben.Marsh UBT: Improvements to generated documentation. Change 3332459 on 2017/03/03 by Ben.Marsh Add generated documentation for .target.cs files, .build.cs files, and BuildConfiguration.xml files. Change 3332460 on 2017/03/03 by Ben.Marsh UBT: Make LinkTypePrivate actually private, so it doesn't show up in the docs. Change 3332899 on 2017/03/06 by Robert.Manuszewski Making sure actor clustering is not used in the editor (fix for actors being deleted when GC runs in the editor) #jira UE-42548 Change 3332955 on 2017/03/06 by Maciej.Mroz Nativization distinguishes client and server platform: - Separated lists on additional assets, additional modules, excluded assets, excluded modules, excluded paths (in config) - Context (compilation options, nativization options and platform) is deliveren to BPCOmpilerCppBackend in FCompilerNativizationOptions struct. - Wrappers (for unconverted BPs) are created only when they are directly called. - Fortnite dedicated server can be nativized Change 3332990 on 2017/03/06 by Ben.Marsh UBT: Add more comprehensive wrapper methods for System.IO.File and System.IO.Directory to FileReference and DirectoryReference. Change 3333032 on 2017/03/06 by Ben.Marsh Documentation for build tools Change 3333037 on 2017/03/06 by Ben.Marsh Add a build step to extract UAT and UBT documentation from XML comments. Change 3333089 on 2017/03/06 by Ben.Marsh UAT: Re-enable logging the calling function to the console in UAT. Needs a pass for readability first. Change 3333651 on 2017/03/06 by Gil.Gribb UE4 - Fix a werid recursive situation where StaticLoadObject could return an object that has not finished loading. Also produces a fatal error if this sometimes happens. EDL only. Change 3335236 on 2017/03/07 by Ben.Marsh UGS: Set the sync changelist separately to the compatibility changelist. Change 3335261 on 2017/03/07 by Gil.Gribb UE4 - Fixed batched render fences when BeginDestroy calls FlushRenderingCommands. Change 3335740 on 2017/03/07 by Gil.Gribb maybe fix static analysis warning Change 3335945 on 2017/03/07 by Steve.Robb Move FFindInstancedReferenceSubobjectHelper code out of header. Add map/set property support to allow instanced members of these container types to be handled during CPFUO. https://udn.unrealengine.com/questions/349232/tmap-with-instanced-object-as-value-gets-cleared-o.html Change 3336693 on 2017/03/07 by Ben.Marsh UBT: Use shared PCHs for game plugins by default, to reduce time spent generating individual PCHs. Change 3336694 on 2017/03/07 by Steve.Robb Static assert added to TMap to prevent the use of keys which don't implement a GetTypeHash. Fixes to types which relied on implicit conversions when calling GetTypeHash. Workaround in SAssetView.h and PropertyEditorModule.h for an apparent VC bug where the compiler wrongly instantiates TPointerIsConvertibleFromTo for certain forward-declared types, causing future TSharedPtr conversions to fail. #jira UE-42441 Change 3336698 on 2017/03/07 by Steve.Robb Hardcoded endpoint handling replaced with a generic string. Obsolete .proto and .java code generation removed. Change 3336811 on 2017/03/07 by Wes.Hunt Add a game blacklist to the crash report processor. Fixed a syntax error in Config.cs, added a XML comment to shut up a warning. Change 3336973 on 2017/03/08 by Steve.Robb Fix for missing GetTypeHash in a plugin. Change 3336996 on 2017/03/08 by Steve.Robb Significant refactor of code generation, to try and make data flow more apparent. Change 3337571 on 2017/03/08 by Steve.Robb CIS fixes for missing GetTypeHash functions. Non-unity fix. Change 3337588 on 2017/03/08 by Gil.Gribb UE4 - Fixed obscure check with flushing rhi resources. Change 3337620 on 2017/03/08 by Steve.Robb WITH_HOT_RELOAD_CTORS macros removed. UseVTableConstructors config option removed. Change 3339369 on 2017/03/09 by Steve.Robb GetTypeHash overload for nn::account::Uid. Change 3339464 on 2017/03/09 by Daniel.Lamb Fixed assert in 4.15 to do with trying to gather dependency info from invalid packages. #jira UE-42583 #test Editor + Cook + Run shootergame Change 3339465 on 2017/03/09 by Maciej.Mroz Fixed serialization issue, after UserDefinedEnum was used in EnumProperty. Change 3339469 on 2017/03/09 by Maciej.Mroz Fixed Nativization problem, when default value is passed as non-const reference. Change 3340178 on 2017/03/09 by Daniel.Lamb Added support for in memory only packages. The Cooker ignores these and added core functions to recognize these packages. Other systems will need to add support where nessisary. Change 3341002 on 2017/03/10 by Maciej.Mroz Nativization: Fixed FFindHeadersToInclude. Headers necessary for owners of subobjects are properly included. Change 3341076 on 2017/03/10 by Steve.Robb Fix for FBakedTextureSourceInfo move semantics. #jira UE-42658 Change 3341160 on 2017/03/10 by Gil.Gribb UE4 - Fix hazard with SetMaterialUsage from a thread. Change 3341409 on 2017/03/10 by Steve.Robb Reduction of the generated code size for StaticRegisterNatives functions. Change 3341523 on 2017/03/10 by Steve.Robb Code generation simplified. Change 3341800 on 2017/03/10 by Ben.Marsh UnrealVS: Fix UnrealVS compatibility with RTM version of Visual Studio 2017. 2017 toolchain for extensions is no longer able to build <= 2015 extensions due to validation of the VSIX manifest, so create a separate solution for it. Change 3342034 on 2017/03/10 by Ben.Marsh Fix compiler setting not being loaded correctly into the Windows target settings dialog. #jira UE-42746 Change 3342041 on 2017/03/10 by Ben.Marsh Fix -ErrorOnEngineContentUse not being set in the cooker options correctly. Change 3342094 on 2017/03/10 by Steve.Robb Fix to deteministic name order during code generation. Change 3342251 on 2017/03/10 by Daniel.Lamb Integrate fix for resave lightmaps commandlet when upgrading from no mapbuilddatapackages to mapbuilddatapackages. #thanks Tim.Hagberg #test None Change 3342961 on 2017/03/13 by Robert.Manuszewski Fixing memory leak when playing while running -nullrhi on the commandline in cooked games caused by shader resources not being destroyed. #jira FORT-38977 Change 3343022 on 2017/03/13 by Steve.Robb GetTypeHash fixes for FUniqueNetIdLive. #jira UE-42788 Change 3343448 on 2017/03/13 by Steve.Robb Compiled-in defer object order fixed. Debuggability of the deferred registration map improved. #jira UE-42828 [CL 3345747 by Ben Marsh in Main branch]
2017-03-14 15:48:33 -04:00
struct FBatchedReleaseResources
{
enum
{
NumPerBatch = 16
};
int32 NumBatch;
FRenderResource* Resources[NumPerBatch];
FBatchedReleaseResources()
{
Reset();
}
void Reset()
{
NumBatch = 0;
}
void Execute()
{
for (int32 Index = 0; Index < NumBatch; Index++)
{
Resources[Index]->ReleaseResource();
}
Reset();
}
void Flush()
{
if (NumBatch)
{
const FBatchedReleaseResources BatchedReleaseResources = *this;
ENQUEUE_RENDER_COMMAND(BatchReleaseCommand)(
[BatchedReleaseResources](FRHICommandList& RHICmdList)
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3345728) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3315219 on 2017/02/21 by Steve.Robb Fix for FObjectAndNameAsStringProxyArchive when serializing a TWeakObjectPtr. Change 3315285 on 2017/02/21 by Steve.Robb Explicitly pass string builder into code generation functions. Change 3315341 on 2017/02/21 by Ben.Marsh UAT: Clean up some formatting in StreamCopyDescription output - remove #fyi lines, exclude merge commits, and remove some blank lines. Change 3315350 on 2017/02/21 by Ben.Marsh Fix shared resource files not being rebuilt if the version header changes. Change 3315823 on 2017/02/21 by Ben.Marsh UAT: Use a class derived from AutomationException to return information specific to commandlets failing, rather than putting it in the base class. Change 3315826 on 2017/02/21 by Ben.Marsh UAT: Move Distiller class from general use in UAT; FileFilter provides a much safer and fully featured implementation of the same concepts. Change 3315857 on 2017/02/21 by Ben.Marsh UBT: Remove the StripBaseDirectory() and MakeRerootedFilePath() utility functions from UBT. These operations can now be done more safely with FileReference objects. Change 3315942 on 2017/02/21 by Ben.Marsh UBT: Convert FileFilter to use FileReference and DirectoryReference arguments everywhere. Change 3316236 on 2017/02/22 by Maciej.Mroz #jira UE-42045 Nativization Fixed Warning: TEnumAsByte is not intended for use with enum Change 3316253 on 2017/02/22 by Robert.Manuszewski Fixes for the async log file writer hangs and crashes. - potential fix for the logging system hang when running out of disk space while flushing log - fix for unexpected concurrency assert when flushing the log buffer to disk Change 3316293 on 2017/02/22 by Steve.Robb GetTypeHash and lexicographical comparison operators (operator<() etc.) for TTuple. Change 3316342 on 2017/02/22 by Maciej.Mroz Nativization: Wrappers (stubs) required only by other wrappers are properly generated. #codereview: Mike.Beach Change 3316344 on 2017/02/22 by Maciej.Mroz Fixed crash in nativized Odin Async loading properly handles nativized structs. Change 3316359 on 2017/02/22 by Steve.Robb GitHub #3287 : Ignore #pragma in USTRUCTs #jira UE-42248 Change 3316389 on 2017/02/22 by Matthew.Griffin Switched Installed Engine Filters to multiline properties to make them more readable Added Oodle to list of excluded plugins #jira UE-42030 Change 3316392 on 2017/02/22 by Ben.Marsh UBT: Split out FileReference/DirectoryReference classes into their own file. Change 3316394 on 2017/02/22 by Ben.Marsh UBT: Move FileReference/DirectoryReference extension methods into the appropriate file. Change 3316411 on 2017/02/22 by Ben.Marsh UAT: Remove file functions that take multiple arguments. There's not really a compelling use case for these to exist over looping from the calling code. Change 3316446 on 2017/02/22 by Ben.Marsh UAT: Try disabling function name prefix to log output from UAT, to see if it improves readability. Function names are still included in the log file for debugging. Change 3316575 on 2017/02/22 by Ben.Marsh UAT: Remove unused functionality for dealing with labels, and output a more human readable list of P4 settings at startup. Change 3318481 on 2017/02/22 by Steve.Robb Use of FMath::IsPowerOfTwo in check. Static assert to ensure that an inline set allocator will have a hash size of a power of two. Change 3318496 on 2017/02/22 by Steve.Robb Fix for TSet visualizers. Change 3318919 on 2017/02/23 by Steve.Robb Fix for hot reloading UScriptStruct-derived objects in a module, where the CDOs of these objects haven't had PrepareCppStructOps() called on them. #jira UE-42178 Change 3318942 on 2017/02/23 by Steve.Robb Removal of a redundant insertion which can cause problems on reallocation of the map. Change 3319010 on 2017/02/23 by Ben.Marsh UBT: Fix exception when a file that was previously part of the working set is deleted. Change 3319134 on 2017/02/23 by Robert.Manuszewski Better fix for a deadlock when flushing log while it's already being flushed due to flush timer on the async log writer thread. Change 3319249 on 2017/02/23 by Matthew.Griffin Added a function to check if running with debug game libs instead of checking command line in multiple places Added -RunConfig parameter, which has equivalent result to -debug if value of parameter starts with 'debug' Added -RunConfig=$(Configuration) as a default commandline argument for Mac so that editor can use debug game libs Removed -Shipping argument from VCProject generation as it's not used anymore Change 3319253 on 2017/02/23 by Maciej.Mroz #jira UE-41846 New mechanism to gather modules necessary for Nativized Assets. The modules are listed based on included headers. Previously the dependencies was gathered only in FBlueprintNativeCodeGenManifest::GatherModuleDependencies. Change 3319591 on 2017/02/23 by Ben.Marsh Don't strip prefixes beginning with WARNING: or ERROR: using the Postp filter. Change 3320357 on 2017/02/23 by Steven.Hutton Slight changes to Add Crash method - Returning select fields instead of entity objects in queries for perf reasons. Change 3320361 on 2017/02/23 by Steven.Hutton Performance improvements subsequent to the recent database changes. Change 3320446 on 2017/02/23 by Steven.Hutton adding my temporary performance tracker class - reports to a private slack channel with add crash performance data. Change 3320479 on 2017/02/23 by Ben.Marsh Fix CIS errors. Change 3320576 on 2017/02/23 by Jin.Zhang Update CrashReporter to use AWS Change 3320742 on 2017/02/23 by Jin.Zhang Merging crash caching Change 3321119 on 2017/02/24 by Robert.Manuszewski DLL injection protection support for non-monolithic builds Change 3323308 on 2017/02/27 by Matthew.Griffin Moved compilation of SwarmInterface after its dependencies so that we will see a build failure immediately if they change version in future Change 3323423 on 2017/02/27 by Chad.Garyet Adding a script to check and warn about csproj targeted .net versions being mismatched #JIRA UE-39624 Change 3323442 on 2017/02/27 by Ben.Marsh UBT: Output an error if an engine module references a game module. Change 3323743 on 2017/02/27 by Ben.Marsh PR #3303: Resolved PVS scan issues (Contributed by projectgheist) Change 3323748 on 2017/02/27 by Ben.Marsh Convert whitespace to tabs. Change 3324851 on 2017/02/28 by Chris.Wood Add Odin symbol locations to engine config for MDD on CR server. NotForLicensees Change 3324979 on 2017/02/28 by Gil.Gribb Fixed bad merge of priority change in the EDL. Change 3326889 on 2017/03/01 by Steven.Hutton Update to buggs controller to generate faster queries. Change 3326910 on 2017/03/01 by Robert.Manuszewski Removing legacy #if from PackageFileSummary. Change 3327118 on 2017/03/01 by Gil.Gribb UE4 - Fixed race that resulted in a memory leak when reading compressed paks. Change 3327633 on 2017/03/01 by Gil.Gribb UE4 - Added a cvar to control the pak precacher thottle. Change 3327674 on 2017/03/01 by Steve.Robb Unified boilerplate between all generated code files. Change 3328544 on 2017/03/01 by Chris.Wood CrashReportProcess.config update (CRP v1.2.17) Tweaks to a few values. Update website URL to explicitly point to old, non-cloud site on devweb-02. Change 3328714 on 2017/03/01 by Chris.Wood Correct CRP config regression. Point website at new cloud site. Still v1.2.17 Change 3329192 on 2017/03/02 by Matthew.Griffin Added Shared Build Id file to the list of Precompiled Build Dependencies in a target receipt so that it's brought into an installed build Change 3329285 on 2017/03/02 by Ben.Marsh UGS: Allow a project to specify a filters for the streams that should be displayed for fast-switching to. The QuickSelectStreamList seting in the [Options] section of the project settings references a depot path containing a list of strings used to filter the stream list. An option is shown to switch back to showing all available streams, if desired. Change 3330636 on 2017/03/02 by Ben.Marsh UBT: Bump version number of C++ include cache to force it to be rebuilt with additional include information for the default RC files. Change 3331262 on 2017/03/03 by Robert.Manuszewski Merging Dev-LoadTimes to Dev-Core (Garbage Collection performance improvements) - Improved GC multithreading - Improved BeginDestroy performance - Introduced ULevelActorCluster for StaticMeshActor and ReflectionCapture actor clustering (can be toggled through project settings or console command gc.ActorClusterEnabled) - A few improvements to AddReferencedObjects functions - Misc improvements to GC code - Garbage Collector now properly handles clusters which had their objects marked as pending kill - Blueprints can now create clusters too (can be toggled through project settings or console command gc.BlueprintClusteringEnabled, defaults to disabled) Change 3331285 on 2017/03/03 by Robert.Manuszewski A few fixes for the previous check-in. Change 3332001 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN file containing the valid settings for BuildConfiguration.xml. Pass -configdoc=<filename> on the command line to generate such a file. Change 3332022 on 2017/03/03 by Ben.Marsh Update documentation for where to find the BuildConfiguration settings. Change 3332031 on 2017/03/03 by Ben.Marsh Remove documentation for Windows XP support; it has been removed in the 4.16 release. Change 3332256 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN page containing module and target settings. Change 3332458 on 2017/03/03 by Ben.Marsh UBT: Improvements to generated documentation. Change 3332459 on 2017/03/03 by Ben.Marsh Add generated documentation for .target.cs files, .build.cs files, and BuildConfiguration.xml files. Change 3332460 on 2017/03/03 by Ben.Marsh UBT: Make LinkTypePrivate actually private, so it doesn't show up in the docs. Change 3332899 on 2017/03/06 by Robert.Manuszewski Making sure actor clustering is not used in the editor (fix for actors being deleted when GC runs in the editor) #jira UE-42548 Change 3332955 on 2017/03/06 by Maciej.Mroz Nativization distinguishes client and server platform: - Separated lists on additional assets, additional modules, excluded assets, excluded modules, excluded paths (in config) - Context (compilation options, nativization options and platform) is deliveren to BPCOmpilerCppBackend in FCompilerNativizationOptions struct. - Wrappers (for unconverted BPs) are created only when they are directly called. - Fortnite dedicated server can be nativized Change 3332990 on 2017/03/06 by Ben.Marsh UBT: Add more comprehensive wrapper methods for System.IO.File and System.IO.Directory to FileReference and DirectoryReference. Change 3333032 on 2017/03/06 by Ben.Marsh Documentation for build tools Change 3333037 on 2017/03/06 by Ben.Marsh Add a build step to extract UAT and UBT documentation from XML comments. Change 3333089 on 2017/03/06 by Ben.Marsh UAT: Re-enable logging the calling function to the console in UAT. Needs a pass for readability first. Change 3333651 on 2017/03/06 by Gil.Gribb UE4 - Fix a werid recursive situation where StaticLoadObject could return an object that has not finished loading. Also produces a fatal error if this sometimes happens. EDL only. Change 3335236 on 2017/03/07 by Ben.Marsh UGS: Set the sync changelist separately to the compatibility changelist. Change 3335261 on 2017/03/07 by Gil.Gribb UE4 - Fixed batched render fences when BeginDestroy calls FlushRenderingCommands. Change 3335740 on 2017/03/07 by Gil.Gribb maybe fix static analysis warning Change 3335945 on 2017/03/07 by Steve.Robb Move FFindInstancedReferenceSubobjectHelper code out of header. Add map/set property support to allow instanced members of these container types to be handled during CPFUO. https://udn.unrealengine.com/questions/349232/tmap-with-instanced-object-as-value-gets-cleared-o.html Change 3336693 on 2017/03/07 by Ben.Marsh UBT: Use shared PCHs for game plugins by default, to reduce time spent generating individual PCHs. Change 3336694 on 2017/03/07 by Steve.Robb Static assert added to TMap to prevent the use of keys which don't implement a GetTypeHash. Fixes to types which relied on implicit conversions when calling GetTypeHash. Workaround in SAssetView.h and PropertyEditorModule.h for an apparent VC bug where the compiler wrongly instantiates TPointerIsConvertibleFromTo for certain forward-declared types, causing future TSharedPtr conversions to fail. #jira UE-42441 Change 3336698 on 2017/03/07 by Steve.Robb Hardcoded endpoint handling replaced with a generic string. Obsolete .proto and .java code generation removed. Change 3336811 on 2017/03/07 by Wes.Hunt Add a game blacklist to the crash report processor. Fixed a syntax error in Config.cs, added a XML comment to shut up a warning. Change 3336973 on 2017/03/08 by Steve.Robb Fix for missing GetTypeHash in a plugin. Change 3336996 on 2017/03/08 by Steve.Robb Significant refactor of code generation, to try and make data flow more apparent. Change 3337571 on 2017/03/08 by Steve.Robb CIS fixes for missing GetTypeHash functions. Non-unity fix. Change 3337588 on 2017/03/08 by Gil.Gribb UE4 - Fixed obscure check with flushing rhi resources. Change 3337620 on 2017/03/08 by Steve.Robb WITH_HOT_RELOAD_CTORS macros removed. UseVTableConstructors config option removed. Change 3339369 on 2017/03/09 by Steve.Robb GetTypeHash overload for nn::account::Uid. Change 3339464 on 2017/03/09 by Daniel.Lamb Fixed assert in 4.15 to do with trying to gather dependency info from invalid packages. #jira UE-42583 #test Editor + Cook + Run shootergame Change 3339465 on 2017/03/09 by Maciej.Mroz Fixed serialization issue, after UserDefinedEnum was used in EnumProperty. Change 3339469 on 2017/03/09 by Maciej.Mroz Fixed Nativization problem, when default value is passed as non-const reference. Change 3340178 on 2017/03/09 by Daniel.Lamb Added support for in memory only packages. The Cooker ignores these and added core functions to recognize these packages. Other systems will need to add support where nessisary. Change 3341002 on 2017/03/10 by Maciej.Mroz Nativization: Fixed FFindHeadersToInclude. Headers necessary for owners of subobjects are properly included. Change 3341076 on 2017/03/10 by Steve.Robb Fix for FBakedTextureSourceInfo move semantics. #jira UE-42658 Change 3341160 on 2017/03/10 by Gil.Gribb UE4 - Fix hazard with SetMaterialUsage from a thread. Change 3341409 on 2017/03/10 by Steve.Robb Reduction of the generated code size for StaticRegisterNatives functions. Change 3341523 on 2017/03/10 by Steve.Robb Code generation simplified. Change 3341800 on 2017/03/10 by Ben.Marsh UnrealVS: Fix UnrealVS compatibility with RTM version of Visual Studio 2017. 2017 toolchain for extensions is no longer able to build <= 2015 extensions due to validation of the VSIX manifest, so create a separate solution for it. Change 3342034 on 2017/03/10 by Ben.Marsh Fix compiler setting not being loaded correctly into the Windows target settings dialog. #jira UE-42746 Change 3342041 on 2017/03/10 by Ben.Marsh Fix -ErrorOnEngineContentUse not being set in the cooker options correctly. Change 3342094 on 2017/03/10 by Steve.Robb Fix to deteministic name order during code generation. Change 3342251 on 2017/03/10 by Daniel.Lamb Integrate fix for resave lightmaps commandlet when upgrading from no mapbuilddatapackages to mapbuilddatapackages. #thanks Tim.Hagberg #test None Change 3342961 on 2017/03/13 by Robert.Manuszewski Fixing memory leak when playing while running -nullrhi on the commandline in cooked games caused by shader resources not being destroyed. #jira FORT-38977 Change 3343022 on 2017/03/13 by Steve.Robb GetTypeHash fixes for FUniqueNetIdLive. #jira UE-42788 Change 3343448 on 2017/03/13 by Steve.Robb Compiled-in defer object order fixed. Debuggability of the deferred registration map improved. #jira UE-42828 [CL 3345747 by Ben Marsh in Main branch]
2017-03-14 15:48:33 -04:00
{
((FBatchedReleaseResources&)BatchedReleaseResources).Execute();
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3345728) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3315219 on 2017/02/21 by Steve.Robb Fix for FObjectAndNameAsStringProxyArchive when serializing a TWeakObjectPtr. Change 3315285 on 2017/02/21 by Steve.Robb Explicitly pass string builder into code generation functions. Change 3315341 on 2017/02/21 by Ben.Marsh UAT: Clean up some formatting in StreamCopyDescription output - remove #fyi lines, exclude merge commits, and remove some blank lines. Change 3315350 on 2017/02/21 by Ben.Marsh Fix shared resource files not being rebuilt if the version header changes. Change 3315823 on 2017/02/21 by Ben.Marsh UAT: Use a class derived from AutomationException to return information specific to commandlets failing, rather than putting it in the base class. Change 3315826 on 2017/02/21 by Ben.Marsh UAT: Move Distiller class from general use in UAT; FileFilter provides a much safer and fully featured implementation of the same concepts. Change 3315857 on 2017/02/21 by Ben.Marsh UBT: Remove the StripBaseDirectory() and MakeRerootedFilePath() utility functions from UBT. These operations can now be done more safely with FileReference objects. Change 3315942 on 2017/02/21 by Ben.Marsh UBT: Convert FileFilter to use FileReference and DirectoryReference arguments everywhere. Change 3316236 on 2017/02/22 by Maciej.Mroz #jira UE-42045 Nativization Fixed Warning: TEnumAsByte is not intended for use with enum Change 3316253 on 2017/02/22 by Robert.Manuszewski Fixes for the async log file writer hangs and crashes. - potential fix for the logging system hang when running out of disk space while flushing log - fix for unexpected concurrency assert when flushing the log buffer to disk Change 3316293 on 2017/02/22 by Steve.Robb GetTypeHash and lexicographical comparison operators (operator<() etc.) for TTuple. Change 3316342 on 2017/02/22 by Maciej.Mroz Nativization: Wrappers (stubs) required only by other wrappers are properly generated. #codereview: Mike.Beach Change 3316344 on 2017/02/22 by Maciej.Mroz Fixed crash in nativized Odin Async loading properly handles nativized structs. Change 3316359 on 2017/02/22 by Steve.Robb GitHub #3287 : Ignore #pragma in USTRUCTs #jira UE-42248 Change 3316389 on 2017/02/22 by Matthew.Griffin Switched Installed Engine Filters to multiline properties to make them more readable Added Oodle to list of excluded plugins #jira UE-42030 Change 3316392 on 2017/02/22 by Ben.Marsh UBT: Split out FileReference/DirectoryReference classes into their own file. Change 3316394 on 2017/02/22 by Ben.Marsh UBT: Move FileReference/DirectoryReference extension methods into the appropriate file. Change 3316411 on 2017/02/22 by Ben.Marsh UAT: Remove file functions that take multiple arguments. There's not really a compelling use case for these to exist over looping from the calling code. Change 3316446 on 2017/02/22 by Ben.Marsh UAT: Try disabling function name prefix to log output from UAT, to see if it improves readability. Function names are still included in the log file for debugging. Change 3316575 on 2017/02/22 by Ben.Marsh UAT: Remove unused functionality for dealing with labels, and output a more human readable list of P4 settings at startup. Change 3318481 on 2017/02/22 by Steve.Robb Use of FMath::IsPowerOfTwo in check. Static assert to ensure that an inline set allocator will have a hash size of a power of two. Change 3318496 on 2017/02/22 by Steve.Robb Fix for TSet visualizers. Change 3318919 on 2017/02/23 by Steve.Robb Fix for hot reloading UScriptStruct-derived objects in a module, where the CDOs of these objects haven't had PrepareCppStructOps() called on them. #jira UE-42178 Change 3318942 on 2017/02/23 by Steve.Robb Removal of a redundant insertion which can cause problems on reallocation of the map. Change 3319010 on 2017/02/23 by Ben.Marsh UBT: Fix exception when a file that was previously part of the working set is deleted. Change 3319134 on 2017/02/23 by Robert.Manuszewski Better fix for a deadlock when flushing log while it's already being flushed due to flush timer on the async log writer thread. Change 3319249 on 2017/02/23 by Matthew.Griffin Added a function to check if running with debug game libs instead of checking command line in multiple places Added -RunConfig parameter, which has equivalent result to -debug if value of parameter starts with 'debug' Added -RunConfig=$(Configuration) as a default commandline argument for Mac so that editor can use debug game libs Removed -Shipping argument from VCProject generation as it's not used anymore Change 3319253 on 2017/02/23 by Maciej.Mroz #jira UE-41846 New mechanism to gather modules necessary for Nativized Assets. The modules are listed based on included headers. Previously the dependencies was gathered only in FBlueprintNativeCodeGenManifest::GatherModuleDependencies. Change 3319591 on 2017/02/23 by Ben.Marsh Don't strip prefixes beginning with WARNING: or ERROR: using the Postp filter. Change 3320357 on 2017/02/23 by Steven.Hutton Slight changes to Add Crash method - Returning select fields instead of entity objects in queries for perf reasons. Change 3320361 on 2017/02/23 by Steven.Hutton Performance improvements subsequent to the recent database changes. Change 3320446 on 2017/02/23 by Steven.Hutton adding my temporary performance tracker class - reports to a private slack channel with add crash performance data. Change 3320479 on 2017/02/23 by Ben.Marsh Fix CIS errors. Change 3320576 on 2017/02/23 by Jin.Zhang Update CrashReporter to use AWS Change 3320742 on 2017/02/23 by Jin.Zhang Merging crash caching Change 3321119 on 2017/02/24 by Robert.Manuszewski DLL injection protection support for non-monolithic builds Change 3323308 on 2017/02/27 by Matthew.Griffin Moved compilation of SwarmInterface after its dependencies so that we will see a build failure immediately if they change version in future Change 3323423 on 2017/02/27 by Chad.Garyet Adding a script to check and warn about csproj targeted .net versions being mismatched #JIRA UE-39624 Change 3323442 on 2017/02/27 by Ben.Marsh UBT: Output an error if an engine module references a game module. Change 3323743 on 2017/02/27 by Ben.Marsh PR #3303: Resolved PVS scan issues (Contributed by projectgheist) Change 3323748 on 2017/02/27 by Ben.Marsh Convert whitespace to tabs. Change 3324851 on 2017/02/28 by Chris.Wood Add Odin symbol locations to engine config for MDD on CR server. NotForLicensees Change 3324979 on 2017/02/28 by Gil.Gribb Fixed bad merge of priority change in the EDL. Change 3326889 on 2017/03/01 by Steven.Hutton Update to buggs controller to generate faster queries. Change 3326910 on 2017/03/01 by Robert.Manuszewski Removing legacy #if from PackageFileSummary. Change 3327118 on 2017/03/01 by Gil.Gribb UE4 - Fixed race that resulted in a memory leak when reading compressed paks. Change 3327633 on 2017/03/01 by Gil.Gribb UE4 - Added a cvar to control the pak precacher thottle. Change 3327674 on 2017/03/01 by Steve.Robb Unified boilerplate between all generated code files. Change 3328544 on 2017/03/01 by Chris.Wood CrashReportProcess.config update (CRP v1.2.17) Tweaks to a few values. Update website URL to explicitly point to old, non-cloud site on devweb-02. Change 3328714 on 2017/03/01 by Chris.Wood Correct CRP config regression. Point website at new cloud site. Still v1.2.17 Change 3329192 on 2017/03/02 by Matthew.Griffin Added Shared Build Id file to the list of Precompiled Build Dependencies in a target receipt so that it's brought into an installed build Change 3329285 on 2017/03/02 by Ben.Marsh UGS: Allow a project to specify a filters for the streams that should be displayed for fast-switching to. The QuickSelectStreamList seting in the [Options] section of the project settings references a depot path containing a list of strings used to filter the stream list. An option is shown to switch back to showing all available streams, if desired. Change 3330636 on 2017/03/02 by Ben.Marsh UBT: Bump version number of C++ include cache to force it to be rebuilt with additional include information for the default RC files. Change 3331262 on 2017/03/03 by Robert.Manuszewski Merging Dev-LoadTimes to Dev-Core (Garbage Collection performance improvements) - Improved GC multithreading - Improved BeginDestroy performance - Introduced ULevelActorCluster for StaticMeshActor and ReflectionCapture actor clustering (can be toggled through project settings or console command gc.ActorClusterEnabled) - A few improvements to AddReferencedObjects functions - Misc improvements to GC code - Garbage Collector now properly handles clusters which had their objects marked as pending kill - Blueprints can now create clusters too (can be toggled through project settings or console command gc.BlueprintClusteringEnabled, defaults to disabled) Change 3331285 on 2017/03/03 by Robert.Manuszewski A few fixes for the previous check-in. Change 3332001 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN file containing the valid settings for BuildConfiguration.xml. Pass -configdoc=<filename> on the command line to generate such a file. Change 3332022 on 2017/03/03 by Ben.Marsh Update documentation for where to find the BuildConfiguration settings. Change 3332031 on 2017/03/03 by Ben.Marsh Remove documentation for Windows XP support; it has been removed in the 4.16 release. Change 3332256 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN page containing module and target settings. Change 3332458 on 2017/03/03 by Ben.Marsh UBT: Improvements to generated documentation. Change 3332459 on 2017/03/03 by Ben.Marsh Add generated documentation for .target.cs files, .build.cs files, and BuildConfiguration.xml files. Change 3332460 on 2017/03/03 by Ben.Marsh UBT: Make LinkTypePrivate actually private, so it doesn't show up in the docs. Change 3332899 on 2017/03/06 by Robert.Manuszewski Making sure actor clustering is not used in the editor (fix for actors being deleted when GC runs in the editor) #jira UE-42548 Change 3332955 on 2017/03/06 by Maciej.Mroz Nativization distinguishes client and server platform: - Separated lists on additional assets, additional modules, excluded assets, excluded modules, excluded paths (in config) - Context (compilation options, nativization options and platform) is deliveren to BPCOmpilerCppBackend in FCompilerNativizationOptions struct. - Wrappers (for unconverted BPs) are created only when they are directly called. - Fortnite dedicated server can be nativized Change 3332990 on 2017/03/06 by Ben.Marsh UBT: Add more comprehensive wrapper methods for System.IO.File and System.IO.Directory to FileReference and DirectoryReference. Change 3333032 on 2017/03/06 by Ben.Marsh Documentation for build tools Change 3333037 on 2017/03/06 by Ben.Marsh Add a build step to extract UAT and UBT documentation from XML comments. Change 3333089 on 2017/03/06 by Ben.Marsh UAT: Re-enable logging the calling function to the console in UAT. Needs a pass for readability first. Change 3333651 on 2017/03/06 by Gil.Gribb UE4 - Fix a werid recursive situation where StaticLoadObject could return an object that has not finished loading. Also produces a fatal error if this sometimes happens. EDL only. Change 3335236 on 2017/03/07 by Ben.Marsh UGS: Set the sync changelist separately to the compatibility changelist. Change 3335261 on 2017/03/07 by Gil.Gribb UE4 - Fixed batched render fences when BeginDestroy calls FlushRenderingCommands. Change 3335740 on 2017/03/07 by Gil.Gribb maybe fix static analysis warning Change 3335945 on 2017/03/07 by Steve.Robb Move FFindInstancedReferenceSubobjectHelper code out of header. Add map/set property support to allow instanced members of these container types to be handled during CPFUO. https://udn.unrealengine.com/questions/349232/tmap-with-instanced-object-as-value-gets-cleared-o.html Change 3336693 on 2017/03/07 by Ben.Marsh UBT: Use shared PCHs for game plugins by default, to reduce time spent generating individual PCHs. Change 3336694 on 2017/03/07 by Steve.Robb Static assert added to TMap to prevent the use of keys which don't implement a GetTypeHash. Fixes to types which relied on implicit conversions when calling GetTypeHash. Workaround in SAssetView.h and PropertyEditorModule.h for an apparent VC bug where the compiler wrongly instantiates TPointerIsConvertibleFromTo for certain forward-declared types, causing future TSharedPtr conversions to fail. #jira UE-42441 Change 3336698 on 2017/03/07 by Steve.Robb Hardcoded endpoint handling replaced with a generic string. Obsolete .proto and .java code generation removed. Change 3336811 on 2017/03/07 by Wes.Hunt Add a game blacklist to the crash report processor. Fixed a syntax error in Config.cs, added a XML comment to shut up a warning. Change 3336973 on 2017/03/08 by Steve.Robb Fix for missing GetTypeHash in a plugin. Change 3336996 on 2017/03/08 by Steve.Robb Significant refactor of code generation, to try and make data flow more apparent. Change 3337571 on 2017/03/08 by Steve.Robb CIS fixes for missing GetTypeHash functions. Non-unity fix. Change 3337588 on 2017/03/08 by Gil.Gribb UE4 - Fixed obscure check with flushing rhi resources. Change 3337620 on 2017/03/08 by Steve.Robb WITH_HOT_RELOAD_CTORS macros removed. UseVTableConstructors config option removed. Change 3339369 on 2017/03/09 by Steve.Robb GetTypeHash overload for nn::account::Uid. Change 3339464 on 2017/03/09 by Daniel.Lamb Fixed assert in 4.15 to do with trying to gather dependency info from invalid packages. #jira UE-42583 #test Editor + Cook + Run shootergame Change 3339465 on 2017/03/09 by Maciej.Mroz Fixed serialization issue, after UserDefinedEnum was used in EnumProperty. Change 3339469 on 2017/03/09 by Maciej.Mroz Fixed Nativization problem, when default value is passed as non-const reference. Change 3340178 on 2017/03/09 by Daniel.Lamb Added support for in memory only packages. The Cooker ignores these and added core functions to recognize these packages. Other systems will need to add support where nessisary. Change 3341002 on 2017/03/10 by Maciej.Mroz Nativization: Fixed FFindHeadersToInclude. Headers necessary for owners of subobjects are properly included. Change 3341076 on 2017/03/10 by Steve.Robb Fix for FBakedTextureSourceInfo move semantics. #jira UE-42658 Change 3341160 on 2017/03/10 by Gil.Gribb UE4 - Fix hazard with SetMaterialUsage from a thread. Change 3341409 on 2017/03/10 by Steve.Robb Reduction of the generated code size for StaticRegisterNatives functions. Change 3341523 on 2017/03/10 by Steve.Robb Code generation simplified. Change 3341800 on 2017/03/10 by Ben.Marsh UnrealVS: Fix UnrealVS compatibility with RTM version of Visual Studio 2017. 2017 toolchain for extensions is no longer able to build <= 2015 extensions due to validation of the VSIX manifest, so create a separate solution for it. Change 3342034 on 2017/03/10 by Ben.Marsh Fix compiler setting not being loaded correctly into the Windows target settings dialog. #jira UE-42746 Change 3342041 on 2017/03/10 by Ben.Marsh Fix -ErrorOnEngineContentUse not being set in the cooker options correctly. Change 3342094 on 2017/03/10 by Steve.Robb Fix to deteministic name order during code generation. Change 3342251 on 2017/03/10 by Daniel.Lamb Integrate fix for resave lightmaps commandlet when upgrading from no mapbuilddatapackages to mapbuilddatapackages. #thanks Tim.Hagberg #test None Change 3342961 on 2017/03/13 by Robert.Manuszewski Fixing memory leak when playing while running -nullrhi on the commandline in cooked games caused by shader resources not being destroyed. #jira FORT-38977 Change 3343022 on 2017/03/13 by Steve.Robb GetTypeHash fixes for FUniqueNetIdLive. #jira UE-42788 Change 3343448 on 2017/03/13 by Steve.Robb Compiled-in defer object order fixed. Debuggability of the deferred registration map improved. #jira UE-42828 [CL 3345747 by Ben Marsh in Main branch]
2017-03-14 15:48:33 -04:00
});
Reset();
}
}
void Add(FRenderResource* Resource)
{
if (NumBatch >= NumPerBatch)
{
Flush();
}
check(NumBatch < NumPerBatch);
Resources[NumBatch] = Resource;
NumBatch++;
}
bool IsEmpty()
{
return !NumBatch;
}
};
static bool GBatchedReleaseIsActive = false;
static FBatchedReleaseResources GBatchedRelease;
void StartBatchedRelease()
{
check(IsInGameThread() && !GBatchedReleaseIsActive && GBatchedRelease.IsEmpty());
GBatchedReleaseIsActive = true;
}
void EndBatchedRelease()
{
check(IsInGameThread() && GBatchedReleaseIsActive);
GBatchedRelease.Flush();
GBatchedReleaseIsActive = false;
}
void BeginReleaseResource(FRenderResource* Resource)
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3345728) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3315219 on 2017/02/21 by Steve.Robb Fix for FObjectAndNameAsStringProxyArchive when serializing a TWeakObjectPtr. Change 3315285 on 2017/02/21 by Steve.Robb Explicitly pass string builder into code generation functions. Change 3315341 on 2017/02/21 by Ben.Marsh UAT: Clean up some formatting in StreamCopyDescription output - remove #fyi lines, exclude merge commits, and remove some blank lines. Change 3315350 on 2017/02/21 by Ben.Marsh Fix shared resource files not being rebuilt if the version header changes. Change 3315823 on 2017/02/21 by Ben.Marsh UAT: Use a class derived from AutomationException to return information specific to commandlets failing, rather than putting it in the base class. Change 3315826 on 2017/02/21 by Ben.Marsh UAT: Move Distiller class from general use in UAT; FileFilter provides a much safer and fully featured implementation of the same concepts. Change 3315857 on 2017/02/21 by Ben.Marsh UBT: Remove the StripBaseDirectory() and MakeRerootedFilePath() utility functions from UBT. These operations can now be done more safely with FileReference objects. Change 3315942 on 2017/02/21 by Ben.Marsh UBT: Convert FileFilter to use FileReference and DirectoryReference arguments everywhere. Change 3316236 on 2017/02/22 by Maciej.Mroz #jira UE-42045 Nativization Fixed Warning: TEnumAsByte is not intended for use with enum Change 3316253 on 2017/02/22 by Robert.Manuszewski Fixes for the async log file writer hangs and crashes. - potential fix for the logging system hang when running out of disk space while flushing log - fix for unexpected concurrency assert when flushing the log buffer to disk Change 3316293 on 2017/02/22 by Steve.Robb GetTypeHash and lexicographical comparison operators (operator<() etc.) for TTuple. Change 3316342 on 2017/02/22 by Maciej.Mroz Nativization: Wrappers (stubs) required only by other wrappers are properly generated. #codereview: Mike.Beach Change 3316344 on 2017/02/22 by Maciej.Mroz Fixed crash in nativized Odin Async loading properly handles nativized structs. Change 3316359 on 2017/02/22 by Steve.Robb GitHub #3287 : Ignore #pragma in USTRUCTs #jira UE-42248 Change 3316389 on 2017/02/22 by Matthew.Griffin Switched Installed Engine Filters to multiline properties to make them more readable Added Oodle to list of excluded plugins #jira UE-42030 Change 3316392 on 2017/02/22 by Ben.Marsh UBT: Split out FileReference/DirectoryReference classes into their own file. Change 3316394 on 2017/02/22 by Ben.Marsh UBT: Move FileReference/DirectoryReference extension methods into the appropriate file. Change 3316411 on 2017/02/22 by Ben.Marsh UAT: Remove file functions that take multiple arguments. There's not really a compelling use case for these to exist over looping from the calling code. Change 3316446 on 2017/02/22 by Ben.Marsh UAT: Try disabling function name prefix to log output from UAT, to see if it improves readability. Function names are still included in the log file for debugging. Change 3316575 on 2017/02/22 by Ben.Marsh UAT: Remove unused functionality for dealing with labels, and output a more human readable list of P4 settings at startup. Change 3318481 on 2017/02/22 by Steve.Robb Use of FMath::IsPowerOfTwo in check. Static assert to ensure that an inline set allocator will have a hash size of a power of two. Change 3318496 on 2017/02/22 by Steve.Robb Fix for TSet visualizers. Change 3318919 on 2017/02/23 by Steve.Robb Fix for hot reloading UScriptStruct-derived objects in a module, where the CDOs of these objects haven't had PrepareCppStructOps() called on them. #jira UE-42178 Change 3318942 on 2017/02/23 by Steve.Robb Removal of a redundant insertion which can cause problems on reallocation of the map. Change 3319010 on 2017/02/23 by Ben.Marsh UBT: Fix exception when a file that was previously part of the working set is deleted. Change 3319134 on 2017/02/23 by Robert.Manuszewski Better fix for a deadlock when flushing log while it's already being flushed due to flush timer on the async log writer thread. Change 3319249 on 2017/02/23 by Matthew.Griffin Added a function to check if running with debug game libs instead of checking command line in multiple places Added -RunConfig parameter, which has equivalent result to -debug if value of parameter starts with 'debug' Added -RunConfig=$(Configuration) as a default commandline argument for Mac so that editor can use debug game libs Removed -Shipping argument from VCProject generation as it's not used anymore Change 3319253 on 2017/02/23 by Maciej.Mroz #jira UE-41846 New mechanism to gather modules necessary for Nativized Assets. The modules are listed based on included headers. Previously the dependencies was gathered only in FBlueprintNativeCodeGenManifest::GatherModuleDependencies. Change 3319591 on 2017/02/23 by Ben.Marsh Don't strip prefixes beginning with WARNING: or ERROR: using the Postp filter. Change 3320357 on 2017/02/23 by Steven.Hutton Slight changes to Add Crash method - Returning select fields instead of entity objects in queries for perf reasons. Change 3320361 on 2017/02/23 by Steven.Hutton Performance improvements subsequent to the recent database changes. Change 3320446 on 2017/02/23 by Steven.Hutton adding my temporary performance tracker class - reports to a private slack channel with add crash performance data. Change 3320479 on 2017/02/23 by Ben.Marsh Fix CIS errors. Change 3320576 on 2017/02/23 by Jin.Zhang Update CrashReporter to use AWS Change 3320742 on 2017/02/23 by Jin.Zhang Merging crash caching Change 3321119 on 2017/02/24 by Robert.Manuszewski DLL injection protection support for non-monolithic builds Change 3323308 on 2017/02/27 by Matthew.Griffin Moved compilation of SwarmInterface after its dependencies so that we will see a build failure immediately if they change version in future Change 3323423 on 2017/02/27 by Chad.Garyet Adding a script to check and warn about csproj targeted .net versions being mismatched #JIRA UE-39624 Change 3323442 on 2017/02/27 by Ben.Marsh UBT: Output an error if an engine module references a game module. Change 3323743 on 2017/02/27 by Ben.Marsh PR #3303: Resolved PVS scan issues (Contributed by projectgheist) Change 3323748 on 2017/02/27 by Ben.Marsh Convert whitespace to tabs. Change 3324851 on 2017/02/28 by Chris.Wood Add Odin symbol locations to engine config for MDD on CR server. NotForLicensees Change 3324979 on 2017/02/28 by Gil.Gribb Fixed bad merge of priority change in the EDL. Change 3326889 on 2017/03/01 by Steven.Hutton Update to buggs controller to generate faster queries. Change 3326910 on 2017/03/01 by Robert.Manuszewski Removing legacy #if from PackageFileSummary. Change 3327118 on 2017/03/01 by Gil.Gribb UE4 - Fixed race that resulted in a memory leak when reading compressed paks. Change 3327633 on 2017/03/01 by Gil.Gribb UE4 - Added a cvar to control the pak precacher thottle. Change 3327674 on 2017/03/01 by Steve.Robb Unified boilerplate between all generated code files. Change 3328544 on 2017/03/01 by Chris.Wood CrashReportProcess.config update (CRP v1.2.17) Tweaks to a few values. Update website URL to explicitly point to old, non-cloud site on devweb-02. Change 3328714 on 2017/03/01 by Chris.Wood Correct CRP config regression. Point website at new cloud site. Still v1.2.17 Change 3329192 on 2017/03/02 by Matthew.Griffin Added Shared Build Id file to the list of Precompiled Build Dependencies in a target receipt so that it's brought into an installed build Change 3329285 on 2017/03/02 by Ben.Marsh UGS: Allow a project to specify a filters for the streams that should be displayed for fast-switching to. The QuickSelectStreamList seting in the [Options] section of the project settings references a depot path containing a list of strings used to filter the stream list. An option is shown to switch back to showing all available streams, if desired. Change 3330636 on 2017/03/02 by Ben.Marsh UBT: Bump version number of C++ include cache to force it to be rebuilt with additional include information for the default RC files. Change 3331262 on 2017/03/03 by Robert.Manuszewski Merging Dev-LoadTimes to Dev-Core (Garbage Collection performance improvements) - Improved GC multithreading - Improved BeginDestroy performance - Introduced ULevelActorCluster for StaticMeshActor and ReflectionCapture actor clustering (can be toggled through project settings or console command gc.ActorClusterEnabled) - A few improvements to AddReferencedObjects functions - Misc improvements to GC code - Garbage Collector now properly handles clusters which had their objects marked as pending kill - Blueprints can now create clusters too (can be toggled through project settings or console command gc.BlueprintClusteringEnabled, defaults to disabled) Change 3331285 on 2017/03/03 by Robert.Manuszewski A few fixes for the previous check-in. Change 3332001 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN file containing the valid settings for BuildConfiguration.xml. Pass -configdoc=<filename> on the command line to generate such a file. Change 3332022 on 2017/03/03 by Ben.Marsh Update documentation for where to find the BuildConfiguration settings. Change 3332031 on 2017/03/03 by Ben.Marsh Remove documentation for Windows XP support; it has been removed in the 4.16 release. Change 3332256 on 2017/03/03 by Ben.Marsh UBT: Add support for generating a UDN page containing module and target settings. Change 3332458 on 2017/03/03 by Ben.Marsh UBT: Improvements to generated documentation. Change 3332459 on 2017/03/03 by Ben.Marsh Add generated documentation for .target.cs files, .build.cs files, and BuildConfiguration.xml files. Change 3332460 on 2017/03/03 by Ben.Marsh UBT: Make LinkTypePrivate actually private, so it doesn't show up in the docs. Change 3332899 on 2017/03/06 by Robert.Manuszewski Making sure actor clustering is not used in the editor (fix for actors being deleted when GC runs in the editor) #jira UE-42548 Change 3332955 on 2017/03/06 by Maciej.Mroz Nativization distinguishes client and server platform: - Separated lists on additional assets, additional modules, excluded assets, excluded modules, excluded paths (in config) - Context (compilation options, nativization options and platform) is deliveren to BPCOmpilerCppBackend in FCompilerNativizationOptions struct. - Wrappers (for unconverted BPs) are created only when they are directly called. - Fortnite dedicated server can be nativized Change 3332990 on 2017/03/06 by Ben.Marsh UBT: Add more comprehensive wrapper methods for System.IO.File and System.IO.Directory to FileReference and DirectoryReference. Change 3333032 on 2017/03/06 by Ben.Marsh Documentation for build tools Change 3333037 on 2017/03/06 by Ben.Marsh Add a build step to extract UAT and UBT documentation from XML comments. Change 3333089 on 2017/03/06 by Ben.Marsh UAT: Re-enable logging the calling function to the console in UAT. Needs a pass for readability first. Change 3333651 on 2017/03/06 by Gil.Gribb UE4 - Fix a werid recursive situation where StaticLoadObject could return an object that has not finished loading. Also produces a fatal error if this sometimes happens. EDL only. Change 3335236 on 2017/03/07 by Ben.Marsh UGS: Set the sync changelist separately to the compatibility changelist. Change 3335261 on 2017/03/07 by Gil.Gribb UE4 - Fixed batched render fences when BeginDestroy calls FlushRenderingCommands. Change 3335740 on 2017/03/07 by Gil.Gribb maybe fix static analysis warning Change 3335945 on 2017/03/07 by Steve.Robb Move FFindInstancedReferenceSubobjectHelper code out of header. Add map/set property support to allow instanced members of these container types to be handled during CPFUO. https://udn.unrealengine.com/questions/349232/tmap-with-instanced-object-as-value-gets-cleared-o.html Change 3336693 on 2017/03/07 by Ben.Marsh UBT: Use shared PCHs for game plugins by default, to reduce time spent generating individual PCHs. Change 3336694 on 2017/03/07 by Steve.Robb Static assert added to TMap to prevent the use of keys which don't implement a GetTypeHash. Fixes to types which relied on implicit conversions when calling GetTypeHash. Workaround in SAssetView.h and PropertyEditorModule.h for an apparent VC bug where the compiler wrongly instantiates TPointerIsConvertibleFromTo for certain forward-declared types, causing future TSharedPtr conversions to fail. #jira UE-42441 Change 3336698 on 2017/03/07 by Steve.Robb Hardcoded endpoint handling replaced with a generic string. Obsolete .proto and .java code generation removed. Change 3336811 on 2017/03/07 by Wes.Hunt Add a game blacklist to the crash report processor. Fixed a syntax error in Config.cs, added a XML comment to shut up a warning. Change 3336973 on 2017/03/08 by Steve.Robb Fix for missing GetTypeHash in a plugin. Change 3336996 on 2017/03/08 by Steve.Robb Significant refactor of code generation, to try and make data flow more apparent. Change 3337571 on 2017/03/08 by Steve.Robb CIS fixes for missing GetTypeHash functions. Non-unity fix. Change 3337588 on 2017/03/08 by Gil.Gribb UE4 - Fixed obscure check with flushing rhi resources. Change 3337620 on 2017/03/08 by Steve.Robb WITH_HOT_RELOAD_CTORS macros removed. UseVTableConstructors config option removed. Change 3339369 on 2017/03/09 by Steve.Robb GetTypeHash overload for nn::account::Uid. Change 3339464 on 2017/03/09 by Daniel.Lamb Fixed assert in 4.15 to do with trying to gather dependency info from invalid packages. #jira UE-42583 #test Editor + Cook + Run shootergame Change 3339465 on 2017/03/09 by Maciej.Mroz Fixed serialization issue, after UserDefinedEnum was used in EnumProperty. Change 3339469 on 2017/03/09 by Maciej.Mroz Fixed Nativization problem, when default value is passed as non-const reference. Change 3340178 on 2017/03/09 by Daniel.Lamb Added support for in memory only packages. The Cooker ignores these and added core functions to recognize these packages. Other systems will need to add support where nessisary. Change 3341002 on 2017/03/10 by Maciej.Mroz Nativization: Fixed FFindHeadersToInclude. Headers necessary for owners of subobjects are properly included. Change 3341076 on 2017/03/10 by Steve.Robb Fix for FBakedTextureSourceInfo move semantics. #jira UE-42658 Change 3341160 on 2017/03/10 by Gil.Gribb UE4 - Fix hazard with SetMaterialUsage from a thread. Change 3341409 on 2017/03/10 by Steve.Robb Reduction of the generated code size for StaticRegisterNatives functions. Change 3341523 on 2017/03/10 by Steve.Robb Code generation simplified. Change 3341800 on 2017/03/10 by Ben.Marsh UnrealVS: Fix UnrealVS compatibility with RTM version of Visual Studio 2017. 2017 toolchain for extensions is no longer able to build <= 2015 extensions due to validation of the VSIX manifest, so create a separate solution for it. Change 3342034 on 2017/03/10 by Ben.Marsh Fix compiler setting not being loaded correctly into the Windows target settings dialog. #jira UE-42746 Change 3342041 on 2017/03/10 by Ben.Marsh Fix -ErrorOnEngineContentUse not being set in the cooker options correctly. Change 3342094 on 2017/03/10 by Steve.Robb Fix to deteministic name order during code generation. Change 3342251 on 2017/03/10 by Daniel.Lamb Integrate fix for resave lightmaps commandlet when upgrading from no mapbuilddatapackages to mapbuilddatapackages. #thanks Tim.Hagberg #test None Change 3342961 on 2017/03/13 by Robert.Manuszewski Fixing memory leak when playing while running -nullrhi on the commandline in cooked games caused by shader resources not being destroyed. #jira FORT-38977 Change 3343022 on 2017/03/13 by Steve.Robb GetTypeHash fixes for FUniqueNetIdLive. #jira UE-42788 Change 3343448 on 2017/03/13 by Steve.Robb Compiled-in defer object order fixed. Debuggability of the deferred registration map improved. #jira UE-42828 [CL 3345747 by Ben Marsh in Main branch]
2017-03-14 15:48:33 -04:00
if (GBatchedReleaseIsActive && IsInGameThread())
{
GBatchedRelease.Add(Resource);
return;
}
ENQUEUE_RENDER_COMMAND(ReleaseCommand)(
[Resource](FRHICommandList& RHICmdList)
{
Resource->ReleaseResource();
});
}
void ReleaseResourceAndFlush(FRenderResource* Resource)
{
// Send the release message.
ENQUEUE_RENDER_COMMAND(ReleaseCommand)(
[Resource](FRHICommandList& RHICmdList)
{
Resource->ReleaseResource();
});
FlushRenderingCommands();
}
FTextureReference::FTextureReference()
: TextureReferenceRHI(NULL)
{
}
FTextureReference::~FTextureReference()
{
}
void FTextureReference::BeginInit_GameThread()
{
bInitialized_GameThread = true;
BeginInitResource(this);
}
void FTextureReference::BeginRelease_GameThread()
{
BeginReleaseResource(this);
bInitialized_GameThread = false;
}
void FTextureReference::InvalidateLastRenderTime()
{
LastRenderTimeRHI.SetLastRenderTime(-FLT_MAX);
}
void FTextureReference::InitRHI()
{
TextureReferenceRHI = RHICreateTextureReference(&LastRenderTimeRHI);
}
void FTextureReference::ReleaseRHI()
{
TextureReferenceRHI.SafeRelease();
}
FString FTextureReference::GetFriendlyName() const
{
return TEXT("FTextureReference");
}
/** The global null color vertex buffer, which is set with a stride of 0 on meshes without a color component. */
TGlobalResource<FNullColorVertexBuffer> GNullColorVertexBuffer;
/*------------------------------------------------------------------------------
FGlobalDynamicVertexBuffer implementation.
------------------------------------------------------------------------------*/
/**
* An individual dynamic vertex buffer.
*/
class FDynamicVertexBuffer : public FVertexBuffer
{
public:
/** The aligned size of all dynamic vertex buffers. */
enum { ALIGNMENT = (1 << 16) }; // 64KB
/** Pointer to the vertex buffer mapped in main memory. */
uint8* MappedBuffer;
/** Size of the vertex buffer in bytes. */
uint32 BufferSize;
/** Number of bytes currently allocated from the buffer. */
uint32 AllocatedByteCount;
/** Default constructor. */
explicit FDynamicVertexBuffer(uint32 InMinBufferSize)
: MappedBuffer(NULL)
, BufferSize(FMath::Max<uint32>(Align(InMinBufferSize,ALIGNMENT),ALIGNMENT))
, AllocatedByteCount(0)
{
}
/**
* Locks the vertex buffer so it may be written to.
*/
void Lock()
{
check(MappedBuffer == NULL);
check(AllocatedByteCount == 0);
check(IsValidRef(VertexBufferRHI));
MappedBuffer = (uint8*)RHILockVertexBuffer(VertexBufferRHI, 0, BufferSize, RLM_WriteOnly);
}
/**
* Unocks the buffer so the GPU may read from it.
*/
void Unlock()
{
check(MappedBuffer != NULL);
check(IsValidRef(VertexBufferRHI));
RHIUnlockVertexBuffer(VertexBufferRHI);
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
// FRenderResource interface.
virtual void InitRHI() override
{
check(!IsValidRef(VertexBufferRHI));
FRHIResourceCreateInfo CreateInfo;
VertexBufferRHI = RHICreateVertexBuffer(BufferSize, BUF_Volatile, CreateInfo);
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
virtual void ReleaseRHI() override
{
FVertexBuffer::ReleaseRHI();
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
virtual FString GetFriendlyName() const override
{
return TEXT("FDynamicVertexBuffer");
}
};
/**
* A pool of dynamic vertex buffers.
*/
struct FDynamicVertexBufferPool
{
/** List of vertex buffers. */
TIndirectArray<FDynamicVertexBuffer> VertexBuffers;
/** The current buffer from which allocations are being made. */
FDynamicVertexBuffer* CurrentVertexBuffer;
/** Default constructor. */
FDynamicVertexBufferPool()
: CurrentVertexBuffer(NULL)
{
}
/** Destructor. */
~FDynamicVertexBufferPool()
{
int32 NumVertexBuffers = VertexBuffers.Num();
for (int32 BufferIndex = 0; BufferIndex < NumVertexBuffers; ++BufferIndex)
{
VertexBuffers[BufferIndex].ReleaseResource();
}
}
};
FGlobalDynamicVertexBuffer::FGlobalDynamicVertexBuffer()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
: TotalAllocatedSinceLastCommit(0)
{
Pool = new FDynamicVertexBufferPool();
}
FGlobalDynamicVertexBuffer::~FGlobalDynamicVertexBuffer()
{
delete Pool;
Pool = NULL;
}
FGlobalDynamicVertexBuffer::FAllocation FGlobalDynamicVertexBuffer::Allocate(uint32 SizeInBytes)
{
FAllocation Allocation;
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
TotalAllocatedSinceLastCommit += SizeInBytes;
if (IsRenderAlarmLoggingEnabled())
{
UE_LOG(LogRendererCore, Warning, TEXT("FGlobalDynamicVertexBuffer::Allocate(%u), will have allocated %u total this frame"), SizeInBytes, TotalAllocatedSinceLastCommit);
}
FDynamicVertexBuffer* VertexBuffer = Pool->CurrentVertexBuffer;
if (VertexBuffer == NULL || VertexBuffer->AllocatedByteCount + SizeInBytes > VertexBuffer->BufferSize)
{
// Find a buffer in the pool big enough to service the request.
VertexBuffer = NULL;
for (int32 BufferIndex = 0, NumBuffers = Pool->VertexBuffers.Num(); BufferIndex < NumBuffers; ++BufferIndex)
{
FDynamicVertexBuffer& VertexBufferToCheck = Pool->VertexBuffers[BufferIndex];
if (VertexBufferToCheck.AllocatedByteCount + SizeInBytes <= VertexBufferToCheck.BufferSize)
{
VertexBuffer = &VertexBufferToCheck;
break;
}
}
// Create a new vertex buffer if needed.
if (VertexBuffer == NULL)
{
VertexBuffer = new FDynamicVertexBuffer(SizeInBytes);
Pool->VertexBuffers.Add(VertexBuffer);
VertexBuffer->InitResource();
}
// Lock the buffer if needed.
if (VertexBuffer->MappedBuffer == NULL)
{
VertexBuffer->Lock();
}
// Remember this buffer, we'll try to allocate out of it in the future.
Pool->CurrentVertexBuffer = VertexBuffer;
}
check(VertexBuffer != NULL);
checkf(VertexBuffer->AllocatedByteCount + SizeInBytes <= VertexBuffer->BufferSize, TEXT("Global vertex buffer allocation failed: BufferSize=%d AllocatedByteCount=%d SizeInBytes=%d"), VertexBuffer->BufferSize, VertexBuffer->AllocatedByteCount, SizeInBytes);
Allocation.Buffer = VertexBuffer->MappedBuffer + VertexBuffer->AllocatedByteCount;
Allocation.VertexBuffer = VertexBuffer;
Allocation.VertexOffset = VertexBuffer->AllocatedByteCount;
VertexBuffer->AllocatedByteCount += SizeInBytes;
return Allocation;
}
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
bool FGlobalDynamicVertexBuffer::IsRenderAlarmLoggingEnabled() const
{
return GMaxVertexBytesAllocatedPerFrame > 0 && TotalAllocatedSinceLastCommit >= (size_t)GMaxVertexBytesAllocatedPerFrame;
}
void FGlobalDynamicVertexBuffer::Commit()
{
for (int32 BufferIndex = 0, NumBuffers = Pool->VertexBuffers.Num(); BufferIndex < NumBuffers; ++BufferIndex)
{
FDynamicVertexBuffer& VertexBuffer = Pool->VertexBuffers[BufferIndex];
if (VertexBuffer.MappedBuffer != NULL)
{
VertexBuffer.Unlock();
}
}
Pool->CurrentVertexBuffer = NULL;
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
TotalAllocatedSinceLastCommit = 0;
}
FGlobalDynamicVertexBuffer InitViewDynamicVertexBuffer;
FGlobalDynamicVertexBuffer InitShadowViewDynamicVertexBuffer;
/*------------------------------------------------------------------------------
FGlobalDynamicIndexBuffer implementation.
------------------------------------------------------------------------------*/
/**
* An individual dynamic index buffer.
*/
class FDynamicIndexBuffer : public FIndexBuffer
{
public:
/** The aligned size of all dynamic index buffers. */
enum { ALIGNMENT = (1 << 16) }; // 64KB
/** Pointer to the index buffer mapped in main memory. */
uint8* MappedBuffer;
/** Size of the index buffer in bytes. */
uint32 BufferSize;
/** Number of bytes currently allocated from the buffer. */
uint32 AllocatedByteCount;
/** Stride of the buffer in bytes. */
uint32 Stride;
/** Initialization constructor. */
explicit FDynamicIndexBuffer(uint32 InMinBufferSize, uint32 InStride)
: MappedBuffer(NULL)
, BufferSize(FMath::Max<uint32>(Align(InMinBufferSize,ALIGNMENT),ALIGNMENT))
, AllocatedByteCount(0)
, Stride(InStride)
{
}
/**
* Locks the vertex buffer so it may be written to.
*/
void Lock()
{
check(MappedBuffer == NULL);
check(AllocatedByteCount == 0);
check(IsValidRef(IndexBufferRHI));
MappedBuffer = (uint8*)RHILockIndexBuffer(IndexBufferRHI, 0, BufferSize, RLM_WriteOnly);
}
/**
* Unocks the buffer so the GPU may read from it.
*/
void Unlock()
{
check(MappedBuffer != NULL);
check(IsValidRef(IndexBufferRHI));
RHIUnlockIndexBuffer(IndexBufferRHI);
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
// FRenderResource interface.
virtual void InitRHI() override
{
check(!IsValidRef(IndexBufferRHI));
FRHIResourceCreateInfo CreateInfo;
IndexBufferRHI = RHICreateIndexBuffer(Stride, BufferSize, BUF_Volatile, CreateInfo);
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
virtual void ReleaseRHI() override
{
FIndexBuffer::ReleaseRHI();
MappedBuffer = NULL;
AllocatedByteCount = 0;
}
virtual FString GetFriendlyName() const override
{
return TEXT("FDynamicIndexBuffer");
}
};
/**
* A pool of dynamic index buffers.
*/
struct FDynamicIndexBufferPool
{
/** List of index buffers. */
TIndirectArray<FDynamicIndexBuffer> IndexBuffers;
/** The current buffer from which allocations are being made. */
FDynamicIndexBuffer* CurrentIndexBuffer;
/** Stride of buffers in this pool. */
uint32 BufferStride;
/** Initialization constructor. */
explicit FDynamicIndexBufferPool(uint32 InBufferStride)
: CurrentIndexBuffer(NULL)
, BufferStride(InBufferStride)
{
}
/** Destructor. */
~FDynamicIndexBufferPool()
{
int32 NumIndexBuffers = IndexBuffers.Num();
for (int32 BufferIndex = 0; BufferIndex < NumIndexBuffers; ++BufferIndex)
{
IndexBuffers[BufferIndex].ReleaseResource();
}
}
};
FGlobalDynamicIndexBuffer::FGlobalDynamicIndexBuffer()
{
Pools[0] = new FDynamicIndexBufferPool(sizeof(uint16));
Pools[1] = new FDynamicIndexBufferPool(sizeof(uint32));
}
FGlobalDynamicIndexBuffer::~FGlobalDynamicIndexBuffer()
{
for (int32 i = 0; i < 2; ++i)
{
delete Pools[i];
Pools[i] = NULL;
}
}
FGlobalDynamicIndexBuffer::FAllocation FGlobalDynamicIndexBuffer::Allocate(uint32 NumIndices, uint32 IndexStride)
{
FAllocation Allocation;
if (IndexStride != 2 && IndexStride != 4)
{
return Allocation;
}
FDynamicIndexBufferPool* Pool = Pools[IndexStride >> 2]; // 2 -> 0, 4 -> 1
uint32 SizeInBytes = NumIndices * IndexStride;
FDynamicIndexBuffer* IndexBuffer = Pool->CurrentIndexBuffer;
if (IndexBuffer == NULL || IndexBuffer->AllocatedByteCount + SizeInBytes > IndexBuffer->BufferSize)
{
// Find a buffer in the pool big enough to service the request.
IndexBuffer = NULL;
for (int32 BufferIndex = 0, NumBuffers = Pool->IndexBuffers.Num(); BufferIndex < NumBuffers; ++BufferIndex)
{
FDynamicIndexBuffer& IndexBufferToCheck = Pool->IndexBuffers[BufferIndex];
if (IndexBufferToCheck.AllocatedByteCount + SizeInBytes <= IndexBufferToCheck.BufferSize)
{
IndexBuffer = &IndexBufferToCheck;
break;
}
}
// Create a new index buffer if needed.
if (IndexBuffer == NULL)
{
IndexBuffer = new FDynamicIndexBuffer(SizeInBytes, Pool->BufferStride);
Pool->IndexBuffers.Add(IndexBuffer);
IndexBuffer->InitResource();
}
// Lock the buffer if needed.
if (IndexBuffer->MappedBuffer == NULL)
{
IndexBuffer->Lock();
}
Pool->CurrentIndexBuffer = IndexBuffer;
}
check(IndexBuffer != NULL);
checkf(IndexBuffer->AllocatedByteCount + SizeInBytes <= IndexBuffer->BufferSize, TEXT("Global index buffer allocation failed: BufferSize=%d AllocatedByteCount=%d SizeInBytes=%d"), IndexBuffer->BufferSize, IndexBuffer->AllocatedByteCount, SizeInBytes);
Allocation.Buffer = IndexBuffer->MappedBuffer + IndexBuffer->AllocatedByteCount;
Allocation.IndexBuffer = IndexBuffer;
Allocation.FirstIndex = IndexBuffer->AllocatedByteCount / IndexStride;
IndexBuffer->AllocatedByteCount += SizeInBytes;
return Allocation;
}
void FGlobalDynamicIndexBuffer::Commit()
{
for (int32 i = 0; i < 2; ++i)
{
FDynamicIndexBufferPool* Pool = Pools[i];
for (int32 BufferIndex = 0, NumBuffers = Pool->IndexBuffers.Num(); BufferIndex < NumBuffers; ++BufferIndex)
{
FDynamicIndexBuffer& IndexBuffer = Pool->IndexBuffers[BufferIndex];
if (IndexBuffer.MappedBuffer != NULL)
{
IndexBuffer.Unlock();
}
}
Pool->CurrentIndexBuffer = NULL;
}
}
/*=============================================================================
FMipBiasFade class
=============================================================================*/
/** Global mip fading settings, indexed by EMipFadeSettings. */
FMipFadeSettings GMipFadeSettings[MipFade_NumSettings] =
{
FMipFadeSettings(0.3f, 0.1f), // MipFade_Normal
FMipFadeSettings(2.0f, 1.0f) // MipFade_Slow
};
/** How "old" a texture must be to be considered a "new texture", in seconds. */
float GMipLevelFadingAgeThreshold = 0.5f;
/**
* Sets up a new interpolation target for the mip-bias.
* @param ActualMipCount Number of mip-levels currently in memory
* @param TargetMipCount Number of mip-levels we're changing to
* @param LastRenderTime Timestamp when it was last rendered (FApp::CurrentTime time space)
* @param FadeSetting Which fade speed settings to use
*/
void FMipBiasFade::SetNewMipCount( float ActualMipCount, float TargetMipCount, double LastRenderTime, EMipFadeSettings FadeSetting )
{
check( ActualMipCount >=0 && TargetMipCount <= ActualMipCount );
float TimeSinceLastRendered = float(FApp::GetCurrentTime() - LastRenderTime);
// Is this a new texture or is this not in-game?
if ( TotalMipCount == 0 || TimeSinceLastRendered >= GMipLevelFadingAgeThreshold || GEnableMipLevelFading < 0.0f )
{
// No fading.
TotalMipCount = ActualMipCount;
MipCountDelta = 0.0f;
MipCountFadingRate = 0.0f;
StartTime = GRenderingRealtimeClock.GetCurrentTime();
BiasOffset = 0.0f;
return;
}
// Calculate the mipcount we're interpolating towards.
float CurrentTargetMipCount = TotalMipCount - BiasOffset + MipCountDelta;
// Is there no change?
if ( FMath::IsNearlyEqual(TotalMipCount, ActualMipCount) && FMath::IsNearlyEqual(TargetMipCount, CurrentTargetMipCount) )
{
return;
}
// Calculate the mip-count at our current interpolation point.
float CurrentInterpolatedMipCount = TotalMipCount - CalcMipBias();
// Clamp it against the available mip-levels.
CurrentInterpolatedMipCount = FMath::Clamp<float>(CurrentInterpolatedMipCount, 0, ActualMipCount);
// Set up a new interpolation from CurrentInterpolatedMipCount to TargetMipCount.
StartTime = GRenderingRealtimeClock.GetCurrentTime();
TotalMipCount = ActualMipCount;
MipCountDelta = TargetMipCount - CurrentInterpolatedMipCount;
// Don't fade if we're already at the target mip-count.
if ( FMath::IsNearlyZero(MipCountDelta) )
{
MipCountDelta = 0.0f;
BiasOffset = 0.0f;
MipCountFadingRate = 0.0f;
}
else
{
BiasOffset = TotalMipCount - CurrentInterpolatedMipCount;
if ( MipCountDelta > 0.0f )
{
MipCountFadingRate = 1.0f / (GMipFadeSettings[FadeSetting].FadeInSpeed * MipCountDelta);
}
else
{
MipCountFadingRate = -1.0f / (GMipFadeSettings[FadeSetting].FadeOutSpeed * MipCountDelta);
}
}
}