Files
UnrealEngineUWP/Engine/Source/Programs/TestPAL/Private/TestDirectoryWatcher.cpp

203 lines
6.7 KiB
C++
Raw Permalink Normal View History

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "TestDirectoryWatcher.h"
Copying //UE4/Dev-Console to //UE4/Dev-Main (Source: //UE4/Dev-Console @ 4362408) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 4125165 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4124306 to //UE4/Dev-Console/... Change 4136060 by Marcin.Undak Editor: fixed device unclaiming #jira UE-58464 Change 4190321 by Marcin.Undak Linux: fixes for automation and RecordPerformance #jira UE-61053 Change 4199010 by Marcin.Undak Linux: remove unnecessary -g option Change 4201876 by Marcin.Undak First implementation of WebM media player for Windows and Linux Change 4201922 by Marcin.Undak Whitelisted WebMem plugin only for Windows and Linux Change 4202203 by Marcin.Undak WebM build fixes Change 4223102 by Marcin.Undak Vulkan: console commands for testing device lost #jira UE-61789 Change 4225028 by Marcin.Undak WebMMedia: disabled on Linux until fixed compilation issues Change 4231444 by David.Harvey UI - Fixing where the virtual cursor renders. It doesn't correctly take into account DPI scale, which isn't apparent except on the Xbox One. Integrate as edit from CL 4166648. #jira UE-62115 Change 4233057 by Marcin.Undak TestPAL: added new test for string allocation size Change 4234649 by Marcin.Undak Linux: switched linux plaform to 16bit wide strings Change 4235253 by Marcin.Undak TestPAL: compilation fix for platforms that don't use DirectoryWatcher Change 4235477 by Marcin.Undak Linux: re-enabled WebMMedia plugin Change 4242242 by Marcin.Undak WebMMediaPlayer: implemented proper format retrieving. MediaFrameworkTest now works. Change 4243321 by Marcin.Undak WebMPlayer: static code analisys fix Change 4243505 by Marcin.Undak MediaFrameworkTest: added WebM video for testing Change 4244646 by Marcin.Undak WebMMedia: improved concurrency Change 4244735 by Arciel.Rekman Vulkan: skip unnecessary transitions properly (UE-62348, merge). (Edigrating CL 4244274 from Release-4.20) Change 4246685 by Arciel.Rekman PhysX: remove Cygwin from %PATH% on Windows as it confuses CMake (UE-62326). Change 4247808 by Marcin.Undak WebMMediaPlayer: added support for seeking Change 4254841 by Marcin.Undak WebM: module dependencies fix Change 4255124 by laz.matech Updated UMG_AllPaletterWidgets' combo box to include options so that when selected, the dropdown presents 2 options instead of it appearing like it is broken #jira none Change 4256415 by Marcin.Undak WebM: added missing editor module Change 4256716 by Arciel.Rekman Make SetReuseAddr() also set SO_REUSEPORT where available (UE-57076). - Pull request #4617 by malavon. #jira UE-57076 Change 4266049 by Marcin.Undak Linux: UnrealLightmass and CrashReportClient compilation fixes #jira UE-62521 #jira UE-62522 Change 4266678 by Arciel.Rekman Merge speculative commit to get aligned pointer on mmap(). (Edigrating CL 4225330) Change 4267998 by Anthony.Bills Fix DBufferC clear color due to bad merge. #jira UE-62649 Change 4269441 by Marcin.Undak GenericPlatformStrings::VarArgs() implemented %-*s, %lu, %z, %h formatting #jira UE-62582 Change 4269712 by Marcin.Undak WebMMediaPlayer: removed LibSimpleWebM Change 4272849 by Marcin.Undak WebMMediaPlayer: fixed re-initialisation Change 4277931 by Arciel.Rekman Linux: switch to Vulkan by default (UE-62807). - Default behavior: attempt Vulkan first, but in case of failure instead of quitting silently fall back to GL, unless -vulkan is passed. - Forcing GL is still possible. Change 4277965 by Arciel.Rekman Fix standalone applications after the Vulkan switch. Change 4277968 by Arciel.Rekman Linux: make CrashReportClient headful (UE-14089). - The -unattended flags keep even a headful CRC usable on the servers. - ldd did not change. Need to check Localization stuff to see if there are any deployment concerns. #jira UE-14089 Change 4279402 by Arciel.Rekman Merge from 4.20.1: Vulkan: log validation errors. Also fix handling of some message types (UE-62628). (Edigrating 4273516 from //UE4/Release-4.20/... to //UE4/Dev-Console/...) Change 4279992 by Marcin.Undak Linux: fix SlateViewer compilation #jira UE-62831 Change 4285613 by Arciel.Rekman Vulkan: fix mismatched layout. - I tested with RecordPerformance on InfiltratorDemo and haven't found any impact. Change 4285622 by Arciel.Rekman Merged from 4.20.2: Linux: do not refuse to start if system limits cannot be raised (UE-62515). - Too aggressive behavior, which can break cooking for no valid reason. - If a commandline argument is used, the engine will still treat inability to raise the limits as an error. (Edigrating 4273547 from //UE4/Release-4.20/... to //UE4/Dev-Console/...) Change 4293083 by Arciel.Rekman Merging //UE4/Main@4291654 to //UE4/Dev-Console Change 4295297 by Marcin.Undak Vulkan: temporary disable generic pipeline cache saving to prevent crashes #jira UE-62848 Change 4300191 by Arciel.Rekman Delete files added under lowercase directories. Change 4300211 by Arciel.Rekman Re-add files deleted in previous commit under camel-cased paths. Change 4300895 by Arciel.Rekman Linux: fix editor build Change 4303543 by Ben.Marsh Fix compile error for FortGPUTestBed. Change 4305659 by Marcin.Undak [Vulkan][Engine] Update the Vulkan RHI to obey r.VSync (and the vsync and novsync command-line arguments). Change 4222769 by Jason.Stewart@Jason.Stewart_AMD_Dev_Rendering_threadripper-win10 on 2018/07/19 10:55:48 The original implementation ran into a latent thread hazard between the RHI thread and the rendering thread, where the rendering thread would try to use the backbuffer of the swap chain while the swap chain was being recreated (specifically after the swap chain recreation code had released and nulled out the back buffer, but before swap chain creation had actually happened to get a new back buffer). This implementation addresses that issue. This is Tim's code. I'm just submitting it as Tim is currently out of office. Change 4305661 by Marcin.Undak Moved libwebm and libvpx inside WebMMediaPlayer directory Change 4308659 by Marcin.Undak Linux: fixed LLDB visualizers #jira UE-52619 Change 4313650 by Marcin.Undak WebMMediaPlayer: implemented looping Change 4321713 by David.Harvey removed hard-coded platform labels from device output log window in favour of ITargetPlatform::SupportsFeature + updated editor tooltip with correct platform list. https://ec-01.epicgames.net/commander/link/jobDetails/jobs/8641984? Change 4321942 by Brandon.Schaefer Linux: Use the Target RHI list as the default ordering for which RHI is prefered Also update the RHI list in the project settings for our default list #jira UE-59487 #review-4316134 @Arciel.Rekman Change 4322230 by Brandon.Schaefer Treat %lf as %f in GenericWidePlatformString #jira UE-62582 Change 4322392 by Brandon.Schaefer Make sure our fmt size is large enough to check indexes #jira none Change 4322895 by Brandon.Schaefer Actually get the current size of Src as it could have been moved down #jira none Change 4327866 by Brandon.Schaefer Linux: Tell the platform misc what RHI we are using #jira none Change 4328926 by Brandon.Schaefer Linux: Add haptic support for controllers Github PR #4167 (thanks maiself!) #jira UE-51681 Change 4328963 by Arciel.Rekman TestPAL: improve the test by randomizing allocation size. - The range will no longer be constrained to <=128KB at once, allocations can be as big as 16MB but they will unevenly distributed, with smaller sizes being more frequent. Change 4329208 by Arciel.Rekman hlslcc: suppressed benign compiler warning during the Linux build (UE-43988). Change 4329283 by Arciel.Rekman Linux: replace CachedOSPageAllocator with PooledVirtualMemoryAllocator for Linux. For the explanation of FPooledVirtualMemoryAllocator, see PooledVirtualMemoryAllocator.h For the details, test data and comparisons, message Arciel Rekman. Relevant command line args added: -vmapoolscale=<float> (defaults to 1.4) -vmapoolevict -novmapoolevict By default, freed memory will not be evicted from RAM (unless running on a server) Also changed: - Removed the fixed-size pool previously used by Linux (and supporting machinery like scaling it on start) - Replaced the way we manage free blocks from pointers to a bitmap to reduce memory footprint. Change 4331946 by Luke.Thatcher [CONSOLE] [^] (merging CL 4162064) Implement new thread heart beat clock to solve the suspend/resume problem across all platforms. - The hang and hitch detectors now maintain their own clocks which are ticked by their respective threads. - If the title is suspended, the ticking thread will stop and the clock will stop advancing. On resume, the maximum delta in the clock is clamped to a small value, so we ignore all the time the thread was not ticking for (i.e. the duration of the title being suspended). - As such, we don't need any logic for handling PLM suspend/resume in the hang and hitch detectors, so this change removes that too. #jira FORT-96886 Change 4331973 by Luke.Thatcher [CONSOLE] [^] (merging CL 4183499) Add frame-present-based hang detection. - RHIs call FThreadHeartBeat::PresentFrame() whenever they present a frame to the swap chain. - These calls form a separate heartbeat from the thread-based ones, allowing the hang detector to fire if, for example, the game thread is stuck in an async loading loop and is ticking the game thread heartbeat, but making no progress. - Also refactored ThreadHeartBeat.cpp to move hang detection logging into a FORCENOINLINE function. This will put OnHang and OnPresentHang at the top of the callstack in retail crash dumps, making the bucketing easier to recognise. Change 4332200 by Luke.Thatcher [CONSOLE] [+] (merging CL 4227517) Add PlatformDebugData to FShaderResource. - We can use this to store platform specific shader symbols etc. The data gets serialized to the DDC and can be retrieved during a cook. - Data is entirely discarded in cooked builds, and is a no-op on platforms which don't implement support for shader debug data. - Bumped shader version to invalidate DDC keys. Change 4332407 by Luke.Thatcher [CONSOLE] [CORE] [!] (merging CL 4279686) Fixed unaligned integer load macro inconsistencies. - Renamed PLATFORM_SUPPORTS_UNALIGNED_INT_LOADS to PLATFORM_SUPPORTS_UNALIGNED_LOADS - Merged it with REQUIRES_ALIGNED_ACCESS and REQUIRES_ALIGNED_INT_ACCESS - Fixed Linux platform which had both the old macros defined to 1, which is wrong because they are mutually exclusive. Change 4333386 by Luke.Thatcher [CONSOLE] [!] (merging CL 4317367) Fix compile error in AnimationCompression.h Change 4334395 by Arciel.Rekman Corrected PLATFORM_DESKTOP definition. Change 4336190 by Anthony.Bills (Original CL4314280) Use the debug file writer when using framepro. This buffers more data which should reduce stalls when writing out on certain platforms. #jira none Change 4336291 by Anthony.Bills Use a clamped local clock when timing out the renderthread. - This prevents suspend and resume issues on platforms where suspend events may not occur or the system clock is not set to the process time. #jira none Change 4336292 by Anthony.Bills (Orignal CL 4195778) Fix printing of the hang detector multiplier and other logging. "f" is the correct format specifier for a double. #jira none Change 4336307 by Anthony.Bills (Orignal CL 4257875) Use the correct clock when printing the scoped hitch stat. - Needs to be the internal FGameThreadHitchHeartBeat clock incase FPlatformTime::Seconds becomes out of sync with FrameStartTime. #jira none Change 4336321 by Anthony.Bills (Original CL 4258186) Add GetNoInit function to FGameThreadHitchHeartBeat. #jira none Change 4336397 by Anthony.Bills Fix redefinition of macro. #jira none Change 4336738 by Brandon.Schaefer Linux: Add options for ASan, TSan, and UBSan #jira UE-62784 UE-62803 UE-62804 Change 4336791 by Brandon.Schaefer Linux: Add missing xml comments #jira none Change 4336957 by Joe.Barnes Integrate as edit CL#4218145: Convert some of our Vector macros to inline functions as thier names class with 3rd party functions. #jira ue-61733 Change 4338228 by Arciel.Rekman Switch to v12 Linux cross-toolchain (UE-63589). #jira UE-63589 Change 4339195 by Ben.Woodhouse Integrate-as-edit latest CSV profiler changes up to CL 4292187 Change 4339237 by Ben.Woodhouse Integrate-as-edit CL 4226269 Add support for extern GPU stats, so we can use one stat across multiple CPPs Fix the Forward rendering GPUProjection stat Change 4339239 by Ben.Woodhouse Integrate-as-edit CL 4292520 Support different sized buffers for FArchiveFileWriterGeneric per-platform so we can tune per-platform as needed. No changes to existing defaults values of 1KB for read, 4KB for write: #define PLATFORM_FILE_READER_BUFFER_SIZE 1024 #define PLATFORM_FILE_WRITER_BUFFER_SIZE 4096 #define PLATFORM_DEBUG_FILE_WRITER_BUFFER_SIZE 4096 Change 4339241 by Ben.Woodhouse Integrate-as-edit CL 4210462 Comment out an assert while I investigate properly (doesn't appear to be fatal) Change 4339265 by Anthony.Bills [Linux] Fix ContainerBuildThirdParty.sh to pick the first default interface. #jira none Change 4339274 by Anthony.Bills [Linux] Cache the bundled toolchain when using git builds. - Also will not attempt to download the toolchain if AutoSDK or Multiarch root are specified. #jira UE-63394 Change 4339623 by Anthony.Bills [Linux] Update native toolchain buildscript to support clang 6.0.1 - Main issue was due to libxml2 as an extra dependency of some test libraries, so needs to be disabled via DLLVM_ENABLE_LIBXML2. #jira UE-63588 Change 4339685 by Anthony.Bills [Linux] Update toolchain setup script to download v12 when it is available. #jira UE-63588 Change 4339833 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4339548 to //UE4/Dev-Console/... Change 4339843 by Ben.Woodhouse Attempt to fix a weird possible bad merge issue Change 4339890 by Ben.Woodhouse Fix a build issue #jira nojira Change 4340314 by Anthony.Bills Fix mesh decal rendering when write mask is enabled and no deferred decals are in the scene. #jira UE-55159 Change 4341099 by Marcin.Undak Mediashader fix #jira UE-63650 Change 4341106 by Marcin.Undak QAGame: added MediaPlayer for Linux test #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341107 by Marcin.Undak WebMMediaPlayer: blacklist all not supported platforms #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341110 by Marcin.Undak WebMMediaPlayer: enable for Unix platforms #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341804 by Luke.Thatcher [CONSOLE] [!] Fix memory scribble in black depth texture cube on platforms with 16-bit depth. - Original code was writing a FColor into the locked texture data, which causes a 2 byte scribble if the PF_ShadowDepth format is 16-bits. [!] Also fixed GWhiteTextureCube being black. FColor::White is not a compile-time constant, so an initialization order problem meant the value of FColor::White is actually black when the GWhiteTextureCube constructor runs. #jira none Change 4342244 by Anthony.Bills [Linux] Allow restarting the crashed application from the crash report client #jira UE-62903 Change 4342636 by Brandon.Schaefer Linux: Update LLVM libc++.a libc++abi.a with version 6.0.1 #jira UE-63587 Change 4343420 by Marcin.Undak Fixed assert in console #jira UE-63643 Change 4345166 by Luke.Thatcher [CONSOLE] [!] (merging CL 4345072) Fix initialization order bug with FColor and FLinearColor constants. - The original constants were dynamically initialized during startup. Using these constants from other global constructors may result in getting the wrong value (transparent black) if a given constructor runs before FColor/FLinearColor's constructor. - Adding constexpr to the FColor/FLinearColor constructor makes these constants known at compile-time, and included in the readonly data section, so they don't require dynamic initialization. [~] Also restores the original constant color values in RenderUtils.cpp #jira none Change 4345860 by Arciel.Rekman Make StompMalloc return 16-byte aligned memory on 64 bit platforms (UE-63743). #jira UE-63743 (Edigrating 4345734 from Release-4.20) Change 4345950 by Brandon.Schaefer Linux: Remove libelf/libdwarf fallback for symbolicating symbols during a crash #jira UE-63103 Change 4350249 by David.Harvey helper function to retrieve an LLM tag's name, including platform tags. Change 4351184 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4348973 to //UE4/Dev-Console/... Change 4351593 by Ben.Woodhouse Clean up aggressive batching (remove xbox specific #if and //TODO) #jira UE-46780 Change 4351734 by James.Cobbett Setting TM-ShaderModels_Niagara to always load Change 4351984 by Marcin.Undak QAGame: restored platform media source in TM-ShaderModels map Change 4353508 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4353110 to //UE4/Dev-Console/... Change 4354237 by Anthony.Bills [Linux] Fix Linux compilation issues due to change over to TCHAR being char16_t. #jira UE-63544 Change 4354334 by Anthony.Bills [Linux] (Missing file from CL 4354237) Fix Linux compilation issues due to change over to TCHAR being char16_t. #jira UE-63544 Change 4355994 by Brandon.Schaefer Linux: Agree not Agreed #jira UE-63937 Change 4356068 by Joe.Barnes Replace a duplicate DEFINE_EXPRESSION_NODE_TYPE(bool,...) causing errors with iOS unity build compiles. Remove version in ExpressionParser.cpp and include TextFilterExpressionEvaluator.h. #jira ue-63877 Change 4357726 by David.Harvey [iOS] add clean support for device output log, after catchup. #jira none Change 4357724 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4357176 to //UE4/Dev-Console/... Change 4359634 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4359072 to //UE4/Dev-Console/... Change 4359958 by Ben.Woodhouse Fix FortGPUTestbed merge issues via p4 copy (content files didn't get moved before for some reason) Change 4361108 by Anthony.Bills Fix webm deprecation issues with DrawPrimitiveUp. #jira UE-64012 Change 4361896 by James.Cobbett Re-saving materials so that they render correctly outside of the editor. Change 4362262 by Anthony.Bills Fix for WebM video decoder crash. #jira UE-64025 [CL 4362700 by Joe Barnes in Main branch]
2018-09-12 15:59:49 -04:00
#if USE_DIRECTORY_WATCHER
#include "IDirectoryWatcher.h"
#include "DirectoryWatcherModule.h"
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
#include "LaunchEngineLoop.h" // GEngineLoop
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3847469) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3805828 by Gil.Gribb UE4 - Fixed a bug in the lock free stalling task queue and adjusted a comment. The code is not current used, so this is not actually change the way the code works. Change 3806784 by Ben.Marsh UAT: Remove code to compile UBT when using UE4Build. It should already be compiled as a dependency of UAT. Change 3807549 by Graeme.Thornton Add a cook timer around VerifyCanCookPackage. A licensee reports this taking a lot of time so it'll be good to account for it. Change 3807727 by Graeme.Thornton Unhide the text asset format experimental editor option Change 3807746 by Josh.Engebretson Remove WER from iOS platform Change 3807928 by Robert.Manuszewski When async loading, GC Clusters will be created after packages have been processed to avoid situations where some of the objects that are being added to a cluster haven't been fully loaded yet Change 3808221 by Steve.Robb GitHub #4307 - Made GetModulePtr() thread safe by not using GetModule() ^ I'm not convinced by how much thread-safer this is really, but it's tidier anyway. Change 3809233 by Graeme.Thornton TBA: Misc changes to text asset commandlet - Rename mode to "loadsave" - Add -outputFormat option which can be assigned "text" or "binary" - When saving binary, use a differentiated filename so that source assets aren't overwritten Change 3809518 by Ben.Marsh Remove the outdated UnrealSync automation script. Change 3809643 by Steve.Robb GitHub #4277 : fix bug; FMath::FormatIntToHumanReadable 3rd comma and negative value #jira UE-53037 Change 3809862 by Steve.Robb GitHub #3342 : [FRotator.h] Fix to DecompressAxisFromByte to be more efficient and reflect its intent accurately #jira UE-42593 Change 3811190 by Graeme.Thornton Add support for writing specific log channels to their own files Change 3811197 by Graeme.Thornton Minor updates to output formatting and timing for the text asset commandlet Change 3811257 by Robert.Manuszewski Cluster creation will now be time-sliced Change 3811565 by Steve.Robb Define out non-monolithic module functions. Change 3812561 by Steve.Robb GitHub #3886 : Enable Brace-Initialization for Declaring Variables Incorrect semi-colon search removed after discussion with author. Test added. #jira UE-48242 Change 3812864 by Steve.Robb Removal of some unproven code which was supposed to fix hot reloading BP class functions in plugins. See: https://udn.unrealengine.com/questions/376978/aitask-blueprint-nodes-disappear-when-their-module.html #jira UE-53089 Change 3820358 by Ben.Marsh PR #4358: Incredibuild use ShowAgent by default (Contributed by projectgheist) Change 3822594 by Ben.Marsh UAT: Improvements to log file handling. - Always create log files in the final location, rather than writing to a temp directory and copying in later. - Now supports -Verbose and -VeryVerbose for increasing log verbosity, rather than -Verbose=XXX. - Keep a backlog of log output before the log system is initialized, and flush it to the log file once it is. - Allow buildmachines to specify the uebp_FinalLogFolder environment variable, which is used to form paths for display. When build machines copy log files elsewhere after UAT finishes (eg. a network share), this allows error messages to display the right location. Change 3823695 by Ben.Marsh UGS: Fix issue where precompiled binaries would not be shown as available for a change until scrolling the last submitted code change into the buffer (other symptoms, like de-focussing the main window would cause it to go back to an unavailable state, since the changes buffer was shrunk). Now always queries changes up to the last change for which zipped binaries are available. Change 3823845 by Ben.Marsh UBT: Exclude C# projects for unsupported platforms when generating project files. Change 3824180 by Ben.Marsh UGS: Add an option to show changes by build machines, and move the "only show reviewed" option in there too (Options > Show Changes). #jira Change 3825777 by Steve.Robb Fix to return value of StringToBytes. Change 3825810 by Ben.Marsh UBT: Reduce length of include paths for MSVC toolchain. Change 3825822 by Robert.Manuszewski Optimized PIE lazy pointer fixup. Should be up to 8x faster now. Change 3826734 by Ben.Marsh Remove code to disable TextureFormatAndroid on Linux. It seems to be an editor dependency. Change 3827730 by Steve.Robb Try to avoid decltype(auto) if it's not supported. See: https://udn.unrealengine.com/questions/395644/build-417-with-c11-on-linux-ttuple-errors.html Change 3827745 by Steve.Robb Initializer list support for TMap. Change 3827770 by Steve.Robb GitHub #4399 : Added a CONSTEXPR qualifiers to FVariant::GetType() #jira UE-53813 Change 3829189 by Ben.Marsh UBT: Now always writes a minimal log file. By default, just contains the regular console output and any reasons why actions are outdated and needed to be executed. UAT directs child UBT instances to output logs into its own log folder, so that build machines can save them off. Change 3830444 by Steve.Robb BuildVersion and ModuleManifest moved to Core, and parsing of these files reimplemented to avoid a JSON library. This should be revisited when Core has its own JSON library. Change 3830718 by Ben.Marsh Fix incorrect group name being returned by FStatNameAndInfo::GetGroupName() for stat groups. The editor populates the viewport stats list by calling this for every registered stat and stat group (via FLevelViewportCommands::HandleNewStatGroup). The menu entry attempts to show the stat name with STAT_XXX stripped from the start as the menu item label, with the free-form text description as a tooltip. For stat groups, the it would previously just return the stat group name as "Groups" (due to the raw naming convention of "//Groups//STATGROUP_Foo//..."). Since this didn't match the expected naming convention in FLevelViewportCommands::HandleNewStat (ie. STAT_XXX or STATGROUP_XXX), it would fail to add it. When the first actual stat belonging to that group is added, it would add a menu entry for the group based on that, but the stat description no longer makes sense as a tooltip for the group. As a result, all the editor tooltips were junk. #jira UE-53845 Change 3831064 by Ben.Marsh Fix log file contention when spawning UBT recursively. Change 3832654 by Ben.Marsh UGS: Fix error panel not being selected when opened, and weird alignment/color issues on it. Change 3832680 by Ben.Marsh UGS: Fix failing to detect workspace if synced to a different stream. Seems to be a regression caused by recent P4D upgrade. Change 3832695 by Ben.Marsh UGS: Invert the options in the 'Show Changes' submenu for simplicity. Change 3833528 by Ben.Marsh UAT: Script to rewrite source files with public include paths relative to the 'Public' folder. Usage is: RebasePublicIncludePaths -UpdateDir=<Dir> [-Project=<Dir>] [-Write]. Change 3833543 by Ben.Marsh UBT: Allow targets to opt-out of having public include paths added for every dependent module. This reduces the command line length when building a target, which has recently become a problem with larger games (due to Microsoft's compiler embedding the command line into each object file, with a maximum length of 64kb). All engine modules are compiled with this enabled; games may opt into it by setting bLegacyPublicIncludePaths = false; from their .target.cs, as may individual modules. Change 3834354 by Robert.Manuszewski Archetype pointer will now be cached to avoid locking the object tables when acquiring its info. It should also be faster this way regardless of any locks. #jira UE-52035 Change 3834400 by Robert.Manuszewski Fixing crash on exit caused by cached archetypes not being cleaned up before static exit cleanup. #jira UE-52035 Change 3834947 by Steve.Robb USE_FORMAT_STRING_TYPE_CHECKING removed from FMsg::Logf and FMsg::Logf_Internal. Change 3835004 by Ben.Marsh Fix code that relies on dubious behavior of requiring referenced "include path only" modules having their _API macros set to be empty, even if the module is actually implemented in a separate DLL. Change 3835340 by Ben.Marsh Fix errors making installed build from directories with spaces in the name. Change 3835972 by Ben.Marsh UBT: Improved diagnostic message for targets which don't need a version file. Change 3836019 by Ben.Marsh UBT: Fix warnings caused by defining linkage macros for third party libraries. Change 3836269 by Ben.Marsh Fix message box larger than the screen height being created when a large number of modules are incompatible on startup. Change 3836543 by Ben.Marsh Enable SoundMod plugin on Linux, since it's already supported through the editor. Change 3836546 by Ben.Marsh PR #4412: fix type mismatch (Contributed by nakapon) Change 3836805 by Ben.Marsh Fix commandlet to compile marketplace plugins. Change 3836829 by Ben.Marsh UBT: Fix ability to precompile plugins from installed engine builds. Change 3837036 by Ben.Marsh UBT: Write the previous and new contents of intermediate files to the log if they change. Makes it easier to debug unexpected rebuilds. Change 3837037 by Ben.Marsh UBT: Fix engine modules having inconsistent definitions depending on whether modules are only referenced for their include paths vs being linked into a binary (due to different _API macro). Change 3837040 by Ben.Marsh UBT: Remove code that initializes members in ModuleRules and TargetRules objects before the constructor is run. This is no longer necessary, now that the backwards-compatible default constructors have been removed. Change 3837247 by Ben.Marsh UBT: Remove UELinkerFixups module, now that plugins and precompiled modules do not require hacks to force initialization (since they're linked in as object files). Encryption and signing keys are now set via macros expanded from the IMPLEMENT_PRIMARY_GAME_MODULE macro, via project-specific macros added in the TargetRules constructor. Change 3837262 by Ben.Marsh UBT: Set whether a module is an engine module or not via a default value for the rules assembly. All non-program engine and enterprise modules are created with this flag set to true; program targets and modules are now created from a different assembly that sets it to false. This removes hacks from UEBuildModule needed to adjust behavior for different module types based on the directory containing the module. Also add a bUseBackwardsCompatibleDefaults flag to the TargetRules class, also initialized to a default value from a setting passed to the RulesAssembly constructor. This controls whether modules created for the target should be configured to allow breaking changes to default settings, and is set to false for all engine targets, and true for all project targets. Change 3837343 by Ben.Marsh UBT: Remove the OverrideExecutableFileExtension target property. Change the only current use for this (the MayaLiveLinkPlugin target) to use a post build step to copy the file instead. Change 3837356 by Ben.Marsh Fix invalid character encodings. Change 3837727 by Graeme.Thornton UnrealPak: KeyGenerator: Only generate prime table when required, not all the time Change 3837823 by Ben.Marsh UBT: Output warnings and errors when compiling module rules assembly in a way that allows them to be double-clicked in the Visual Studio output window. Change 3837831 by Graeme.Thornton UBT: When parsing crypto settings, always load legacy data first, then allow the new system to override it. Provides the same key backwards compatibility that the editor settings class gives Change 3837857 by Robert.Manuszewski PR #4404: Make FGCArrayPool singleton global instead of per-CU (Contributed by mhutch) Change 3837943 by Robert.Manuszewski PR #4405: Fix FGarbageCollectionTracer (Contributed by mhutch) Change 3838451 by Ben.Marsh UBT: Fix exceptions thrown on a background thread while caching C++ includes not being caught and logged correctly. Now captures exceptions and re-throws on the main thread. #jira UE-53996 Change 3839519 by Ben.Marsh UBT: Simplify configuring bPrecompile and bUsePrecompile settings for modules. Each rules assembly can now be configured as installed, which defaults the module rules it creates to use precompiled data. Change 3843790 by Graeme.Thornton UnrealPak: Log the size of all encrypted data Change 3844258 by Ben.Marsh Fix plugin compile failure when created via new plugin wizard. Passing -plugin on the command line is unnecessary, and is now reserved for packaging external plugins for the marketplace. Also extend the length of time that the error toast stays visible, and don't delete the plugin on failure. #jira UE-54157 Change 3845796 by Ben.Marsh Workaround for slow performance of String.EndsWith() on Mono. Change 3845823 by Ben.Marsh Fix case sensitive matching of platform names in -TargetPlatform=X argument to BuildCookRun. #jira UE-54123 Change 3845901 by Arciel.Rekman Linux: fix crash due to lambda lifetime issues (UE-54040). - The lambda goes out of scope in FBufferVisualizationMenuCommands::CreateVisualizationCommands, crashing the editor if compiled with a recent clang (5.0+). (Edigrating 3819174 to Dev-Core) Change 3846439 by Ben.Marsh Revert CL 3822742 to always call Process.WaitForExit(). The Android target platform module in the editor spawns ADB.EXE, which inherits the editor's stdout/stderr handles and forks itself. Process.WaitForExit() waits for EOF on those pipes, which never occurs because the forked process never terminates. Proper fix is probably to have the engine explicitly duplicate stdout/stderr handles for new pipes to output process, but too risky before copying up to Main. Change 3816608 by Ben.Marsh UBT: Use DirectoryReference objects for all include paths. Change 3816954 by Ben.Marsh UBT: Remove bIncludeDependentLibrariesInLibrary option. This is not widely supported by platform toolchains, and is not used anywhere. Change 3816986 by Ben.Marsh UBT: Remove UEBuildBinaryConfig; UEBuildBinary objects are now just created directly. Change 3816991 by Ben.Marsh UBT: Deprecate PlatformSpecificDynamicallyLoadedModules. We no longer have any special behavior for these modules. Change 3823090 by Ben.Marsh UAT: Improve logging for child UAT instances. - Calling RunUAT now requires an identifier for prefixing into the parent log, which is also used to determine the name of the log folder. - Stdout is no longer written to its own output file, since it's written to the parent stdout, the parent log file, and the child log file anyway. - Log folders for child UAT instances are left intact, rather than being copied to the parent folder. The derived names for the copied names were confusing and hard to read. - Output from UAT is no longer returned as a string. It should not be parsed anyway (but may be huge!). ProcessResult now supports running without capturing output. Change 3826082 by Ben.Marsh UBT: Add a check to make sure that all modules that are precompiled are correctly marked to enable it, even if they are part of the build target. Change 3827025 by Ben.Marsh UBT: Move the compile output directory into a property on the module, and explicitly pass it to the toolchain when compiling. Change 3829927 by James.Hopkin Made HTTP interface const correct Change 3833533 by Ben.Marsh Rewrite engine source files to base include paths relative to the "Public" directory. This allows reducing the number of public include paths that have to be added for engine modules. Change 3835826 by Ben.Marsh UBT: Precompiled targets now generate a separate manifest for each precompiled module, rather than adding object files to a library. This fixes issues where object files from static libraries would not be linked into a target if a symbol in them was not referenced. Change 3835969 by Ben.Marsh UBT: Fix cases where text is being written directly to the console rather than via logging functions. Change 3837777 by Steve.Robb Format string type checking added to FOutputDevice::Logf. Fixes for those. Change 3838569 by Steve.Robb Algo moved up a folder. [CL 3847482 by Ben Marsh in Main branch]
2018-01-20 11:19:29 -05:00
#include "Modules/ModuleManager.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 "TestPALLog.h"
#include "HAL/PlatformFile.h"
#include "HAL/PlatformFilemanager.h"
#include "HAL/PlatformProcess.h"
struct FChangeDetector
{
void OnDirectoryChanged(const TArray<FFileChangeData>& FileChanges)
{
UE_LOG(LogTestPAL, Display, TEXT(" -- %d change(s) detected"), static_cast<int32>(FileChanges.Num()));
int ChangeIdx = 0;
for (const auto& ThisEntry : FileChanges)
{
UE_LOG(LogTestPAL, Display, TEXT(" Change %d: %s was %s"),
++ChangeIdx,
*ThisEntry.Filename,
ThisEntry.Action == FFileChangeData::FCA_Added ? TEXT("added") :
(ThisEntry.Action == FFileChangeData::FCA_Removed ? TEXT("removed") :
(ThisEntry.Action == FFileChangeData::FCA_Modified ? TEXT("modified") : TEXT("??? (unknown)")
)
)
);
}
}
};
/**
* Kicks directory watcher test/
*/
int32 DirectoryWatcherTest(const TCHAR* CommandLine)
{
FPlatformMisc::SetCrashHandler(NULL);
FPlatformMisc::SetGracefulTerminationHandler();
GEngineLoop.PreInit(CommandLine);
UE_LOG(LogTestPAL, Display, TEXT("Running directory watcher test."));
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
FString TestDir = FString::Printf(TEXT("%sDirectoryWatcherTest%d"), FPlatformProcess::UserTempDir(), FPlatformProcess::GetCurrentProcessId());
if (PlatformFile.CreateDirectory(*TestDir) && PlatformFile.CreateDirectory(*(TestDir + TEXT("/subtest"))))
{
FChangeDetector Detector;
FDelegateHandle DirectoryChangedHandle;
IDirectoryWatcher* DirectoryWatcher = FModuleManager::Get().LoadModuleChecked<FDirectoryWatcherModule>(TEXT("DirectoryWatcher")).Get();
if (DirectoryWatcher)
{
auto Callback = IDirectoryWatcher::FDirectoryChanged::CreateRaw(&Detector, &FChangeDetector::OnDirectoryChanged);
DirectoryWatcher->RegisterDirectoryChangedCallback_Handle(TestDir, Callback, DirectoryChangedHandle);
UE_LOG(LogTestPAL, Display, TEXT("Registered callback for changes in '%s'"), *TestDir);
}
else
{
UE_LOG(LogTestPAL, Fatal, TEXT("Could not get DirectoryWatcher module"));
}
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// create and remove directory
UE_LOG(LogTestPAL, Display, TEXT("Creating DIRECTORY '%s'"), *(TestDir + TEXT("/test")));
verify(PlatformFile.CreateDirectory(*(TestDir + TEXT("/test"))));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
UE_LOG(LogTestPAL, Display, TEXT("Deleting DIRECTORY '%s'"), *(TestDir + TEXT("/test")));
verify(PlatformFile.DeleteDirectory(*(TestDir + TEXT("/test"))));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// create and remove in a sub directory
UE_LOG(LogTestPAL, Display, TEXT("Creating DIRECTORY '%s'"), *(TestDir + TEXT("/subtest/blah")));
verify(PlatformFile.CreateDirectory(*(TestDir + TEXT("/subtest/blah"))));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
UE_LOG(LogTestPAL, Display, TEXT("Deleting DIRECTORY '%s'"), *(TestDir + TEXT("/subtest/blah")));
verify(PlatformFile.DeleteDirectory(*(TestDir + TEXT("/subtest/blah"))));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
{
// create file
FString DummyFileName = TestDir + TEXT("/test file.bin");
UE_LOG(LogTestPAL, Display, TEXT("Creating FILE '%s'"), *DummyFileName);
IFileHandle* DummyFile = PlatformFile.OpenWrite(*DummyFileName);
check(DummyFile);
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// modify file
UE_LOG(LogTestPAL, Display, TEXT("Modifying FILE '%s'"), *DummyFileName);
uint8 Contents = 0;
DummyFile->Write(&Contents, sizeof(Contents));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// close the file
UE_LOG(LogTestPAL, Display, TEXT("Closing FILE '%s'"), *DummyFileName);
delete DummyFile;
DummyFile = nullptr;
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// delete file
UE_LOG(LogTestPAL, Display, TEXT("Deleting FILE '%s'"), *DummyFileName);
verify(PlatformFile.DeleteFile(*DummyFileName));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
}
// now the same in a grandchild directory
{
FString GrandChildDir = TestDir + TEXT("/subtest/grandchild");
UE_LOG(LogTestPAL, Display, TEXT("Creating DIRECTORY '%s'"), *GrandChildDir);
verify(PlatformFile.CreateDirectory(*GrandChildDir));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
{
// create file
FString DummyFileName = GrandChildDir + TEXT("/test file.bin");
UE_LOG(LogTestPAL, Display, TEXT("Creating FILE '%s'"), *DummyFileName);
IFileHandle* DummyFile = PlatformFile.OpenWrite(*DummyFileName);
check(DummyFile);
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// modify file
UE_LOG(LogTestPAL, Display, TEXT("Modifying FILE '%s'"), *DummyFileName);
uint8 Contents = 0;
DummyFile->Write(&Contents, sizeof(Contents));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// close the file
UE_LOG(LogTestPAL, Display, TEXT("Closing FILE '%s'"), *DummyFileName);
delete DummyFile;
DummyFile = nullptr;
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
// delete file
UE_LOG(LogTestPAL, Display, TEXT("Deleting FILE '%s'"), *DummyFileName);
PlatformFile.DeleteFile(*DummyFileName);
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
}
UE_LOG(LogTestPAL, Display, TEXT("Deleting DIRECTORY '%s'"), *GrandChildDir);
verify(PlatformFile.DeleteDirectory(*GrandChildDir));
DirectoryWatcher->Tick(1.0f);
FPlatformProcess::Sleep(1.0f);
DirectoryWatcher->Tick(1.0f);
}
// clean up
verify(DirectoryWatcher->UnregisterDirectoryChangedCallback_Handle(TestDir, DirectoryChangedHandle));
// remove dirs as well
verify(PlatformFile.DeleteDirectory(*(TestDir + TEXT("/subtest"))));
verify(PlatformFile.DeleteDirectory(*TestDir));
UE_LOG(LogTestPAL, Display, TEXT("End of test"));
}
else
{
UE_LOG(LogTestPAL, Fatal, TEXT("Could not create test directory %s."), *TestDir);
}
FEngineLoop::AppPreExit();
FEngineLoop::AppExit();
return 0;
}
Copying //UE4/Dev-Console to //UE4/Dev-Main (Source: //UE4/Dev-Console @ 4362408) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 4125165 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4124306 to //UE4/Dev-Console/... Change 4136060 by Marcin.Undak Editor: fixed device unclaiming #jira UE-58464 Change 4190321 by Marcin.Undak Linux: fixes for automation and RecordPerformance #jira UE-61053 Change 4199010 by Marcin.Undak Linux: remove unnecessary -g option Change 4201876 by Marcin.Undak First implementation of WebM media player for Windows and Linux Change 4201922 by Marcin.Undak Whitelisted WebMem plugin only for Windows and Linux Change 4202203 by Marcin.Undak WebM build fixes Change 4223102 by Marcin.Undak Vulkan: console commands for testing device lost #jira UE-61789 Change 4225028 by Marcin.Undak WebMMedia: disabled on Linux until fixed compilation issues Change 4231444 by David.Harvey UI - Fixing where the virtual cursor renders. It doesn't correctly take into account DPI scale, which isn't apparent except on the Xbox One. Integrate as edit from CL 4166648. #jira UE-62115 Change 4233057 by Marcin.Undak TestPAL: added new test for string allocation size Change 4234649 by Marcin.Undak Linux: switched linux plaform to 16bit wide strings Change 4235253 by Marcin.Undak TestPAL: compilation fix for platforms that don't use DirectoryWatcher Change 4235477 by Marcin.Undak Linux: re-enabled WebMMedia plugin Change 4242242 by Marcin.Undak WebMMediaPlayer: implemented proper format retrieving. MediaFrameworkTest now works. Change 4243321 by Marcin.Undak WebMPlayer: static code analisys fix Change 4243505 by Marcin.Undak MediaFrameworkTest: added WebM video for testing Change 4244646 by Marcin.Undak WebMMedia: improved concurrency Change 4244735 by Arciel.Rekman Vulkan: skip unnecessary transitions properly (UE-62348, merge). (Edigrating CL 4244274 from Release-4.20) Change 4246685 by Arciel.Rekman PhysX: remove Cygwin from %PATH% on Windows as it confuses CMake (UE-62326). Change 4247808 by Marcin.Undak WebMMediaPlayer: added support for seeking Change 4254841 by Marcin.Undak WebM: module dependencies fix Change 4255124 by laz.matech Updated UMG_AllPaletterWidgets' combo box to include options so that when selected, the dropdown presents 2 options instead of it appearing like it is broken #jira none Change 4256415 by Marcin.Undak WebM: added missing editor module Change 4256716 by Arciel.Rekman Make SetReuseAddr() also set SO_REUSEPORT where available (UE-57076). - Pull request #4617 by malavon. #jira UE-57076 Change 4266049 by Marcin.Undak Linux: UnrealLightmass and CrashReportClient compilation fixes #jira UE-62521 #jira UE-62522 Change 4266678 by Arciel.Rekman Merge speculative commit to get aligned pointer on mmap(). (Edigrating CL 4225330) Change 4267998 by Anthony.Bills Fix DBufferC clear color due to bad merge. #jira UE-62649 Change 4269441 by Marcin.Undak GenericPlatformStrings::VarArgs() implemented %-*s, %lu, %z, %h formatting #jira UE-62582 Change 4269712 by Marcin.Undak WebMMediaPlayer: removed LibSimpleWebM Change 4272849 by Marcin.Undak WebMMediaPlayer: fixed re-initialisation Change 4277931 by Arciel.Rekman Linux: switch to Vulkan by default (UE-62807). - Default behavior: attempt Vulkan first, but in case of failure instead of quitting silently fall back to GL, unless -vulkan is passed. - Forcing GL is still possible. Change 4277965 by Arciel.Rekman Fix standalone applications after the Vulkan switch. Change 4277968 by Arciel.Rekman Linux: make CrashReportClient headful (UE-14089). - The -unattended flags keep even a headful CRC usable on the servers. - ldd did not change. Need to check Localization stuff to see if there are any deployment concerns. #jira UE-14089 Change 4279402 by Arciel.Rekman Merge from 4.20.1: Vulkan: log validation errors. Also fix handling of some message types (UE-62628). (Edigrating 4273516 from //UE4/Release-4.20/... to //UE4/Dev-Console/...) Change 4279992 by Marcin.Undak Linux: fix SlateViewer compilation #jira UE-62831 Change 4285613 by Arciel.Rekman Vulkan: fix mismatched layout. - I tested with RecordPerformance on InfiltratorDemo and haven't found any impact. Change 4285622 by Arciel.Rekman Merged from 4.20.2: Linux: do not refuse to start if system limits cannot be raised (UE-62515). - Too aggressive behavior, which can break cooking for no valid reason. - If a commandline argument is used, the engine will still treat inability to raise the limits as an error. (Edigrating 4273547 from //UE4/Release-4.20/... to //UE4/Dev-Console/...) Change 4293083 by Arciel.Rekman Merging //UE4/Main@4291654 to //UE4/Dev-Console Change 4295297 by Marcin.Undak Vulkan: temporary disable generic pipeline cache saving to prevent crashes #jira UE-62848 Change 4300191 by Arciel.Rekman Delete files added under lowercase directories. Change 4300211 by Arciel.Rekman Re-add files deleted in previous commit under camel-cased paths. Change 4300895 by Arciel.Rekman Linux: fix editor build Change 4303543 by Ben.Marsh Fix compile error for FortGPUTestBed. Change 4305659 by Marcin.Undak [Vulkan][Engine] Update the Vulkan RHI to obey r.VSync (and the vsync and novsync command-line arguments). Change 4222769 by Jason.Stewart@Jason.Stewart_AMD_Dev_Rendering_threadripper-win10 on 2018/07/19 10:55:48 The original implementation ran into a latent thread hazard between the RHI thread and the rendering thread, where the rendering thread would try to use the backbuffer of the swap chain while the swap chain was being recreated (specifically after the swap chain recreation code had released and nulled out the back buffer, but before swap chain creation had actually happened to get a new back buffer). This implementation addresses that issue. This is Tim's code. I'm just submitting it as Tim is currently out of office. Change 4305661 by Marcin.Undak Moved libwebm and libvpx inside WebMMediaPlayer directory Change 4308659 by Marcin.Undak Linux: fixed LLDB visualizers #jira UE-52619 Change 4313650 by Marcin.Undak WebMMediaPlayer: implemented looping Change 4321713 by David.Harvey removed hard-coded platform labels from device output log window in favour of ITargetPlatform::SupportsFeature + updated editor tooltip with correct platform list. https://ec-01.epicgames.net/commander/link/jobDetails/jobs/8641984? Change 4321942 by Brandon.Schaefer Linux: Use the Target RHI list as the default ordering for which RHI is prefered Also update the RHI list in the project settings for our default list #jira UE-59487 #review-4316134 @Arciel.Rekman Change 4322230 by Brandon.Schaefer Treat %lf as %f in GenericWidePlatformString #jira UE-62582 Change 4322392 by Brandon.Schaefer Make sure our fmt size is large enough to check indexes #jira none Change 4322895 by Brandon.Schaefer Actually get the current size of Src as it could have been moved down #jira none Change 4327866 by Brandon.Schaefer Linux: Tell the platform misc what RHI we are using #jira none Change 4328926 by Brandon.Schaefer Linux: Add haptic support for controllers Github PR #4167 (thanks maiself!) #jira UE-51681 Change 4328963 by Arciel.Rekman TestPAL: improve the test by randomizing allocation size. - The range will no longer be constrained to <=128KB at once, allocations can be as big as 16MB but they will unevenly distributed, with smaller sizes being more frequent. Change 4329208 by Arciel.Rekman hlslcc: suppressed benign compiler warning during the Linux build (UE-43988). Change 4329283 by Arciel.Rekman Linux: replace CachedOSPageAllocator with PooledVirtualMemoryAllocator for Linux. For the explanation of FPooledVirtualMemoryAllocator, see PooledVirtualMemoryAllocator.h For the details, test data and comparisons, message Arciel Rekman. Relevant command line args added: -vmapoolscale=<float> (defaults to 1.4) -vmapoolevict -novmapoolevict By default, freed memory will not be evicted from RAM (unless running on a server) Also changed: - Removed the fixed-size pool previously used by Linux (and supporting machinery like scaling it on start) - Replaced the way we manage free blocks from pointers to a bitmap to reduce memory footprint. Change 4331946 by Luke.Thatcher [CONSOLE] [^] (merging CL 4162064) Implement new thread heart beat clock to solve the suspend/resume problem across all platforms. - The hang and hitch detectors now maintain their own clocks which are ticked by their respective threads. - If the title is suspended, the ticking thread will stop and the clock will stop advancing. On resume, the maximum delta in the clock is clamped to a small value, so we ignore all the time the thread was not ticking for (i.e. the duration of the title being suspended). - As such, we don't need any logic for handling PLM suspend/resume in the hang and hitch detectors, so this change removes that too. #jira FORT-96886 Change 4331973 by Luke.Thatcher [CONSOLE] [^] (merging CL 4183499) Add frame-present-based hang detection. - RHIs call FThreadHeartBeat::PresentFrame() whenever they present a frame to the swap chain. - These calls form a separate heartbeat from the thread-based ones, allowing the hang detector to fire if, for example, the game thread is stuck in an async loading loop and is ticking the game thread heartbeat, but making no progress. - Also refactored ThreadHeartBeat.cpp to move hang detection logging into a FORCENOINLINE function. This will put OnHang and OnPresentHang at the top of the callstack in retail crash dumps, making the bucketing easier to recognise. Change 4332200 by Luke.Thatcher [CONSOLE] [+] (merging CL 4227517) Add PlatformDebugData to FShaderResource. - We can use this to store platform specific shader symbols etc. The data gets serialized to the DDC and can be retrieved during a cook. - Data is entirely discarded in cooked builds, and is a no-op on platforms which don't implement support for shader debug data. - Bumped shader version to invalidate DDC keys. Change 4332407 by Luke.Thatcher [CONSOLE] [CORE] [!] (merging CL 4279686) Fixed unaligned integer load macro inconsistencies. - Renamed PLATFORM_SUPPORTS_UNALIGNED_INT_LOADS to PLATFORM_SUPPORTS_UNALIGNED_LOADS - Merged it with REQUIRES_ALIGNED_ACCESS and REQUIRES_ALIGNED_INT_ACCESS - Fixed Linux platform which had both the old macros defined to 1, which is wrong because they are mutually exclusive. Change 4333386 by Luke.Thatcher [CONSOLE] [!] (merging CL 4317367) Fix compile error in AnimationCompression.h Change 4334395 by Arciel.Rekman Corrected PLATFORM_DESKTOP definition. Change 4336190 by Anthony.Bills (Original CL4314280) Use the debug file writer when using framepro. This buffers more data which should reduce stalls when writing out on certain platforms. #jira none Change 4336291 by Anthony.Bills Use a clamped local clock when timing out the renderthread. - This prevents suspend and resume issues on platforms where suspend events may not occur or the system clock is not set to the process time. #jira none Change 4336292 by Anthony.Bills (Orignal CL 4195778) Fix printing of the hang detector multiplier and other logging. "f" is the correct format specifier for a double. #jira none Change 4336307 by Anthony.Bills (Orignal CL 4257875) Use the correct clock when printing the scoped hitch stat. - Needs to be the internal FGameThreadHitchHeartBeat clock incase FPlatformTime::Seconds becomes out of sync with FrameStartTime. #jira none Change 4336321 by Anthony.Bills (Original CL 4258186) Add GetNoInit function to FGameThreadHitchHeartBeat. #jira none Change 4336397 by Anthony.Bills Fix redefinition of macro. #jira none Change 4336738 by Brandon.Schaefer Linux: Add options for ASan, TSan, and UBSan #jira UE-62784 UE-62803 UE-62804 Change 4336791 by Brandon.Schaefer Linux: Add missing xml comments #jira none Change 4336957 by Joe.Barnes Integrate as edit CL#4218145: Convert some of our Vector macros to inline functions as thier names class with 3rd party functions. #jira ue-61733 Change 4338228 by Arciel.Rekman Switch to v12 Linux cross-toolchain (UE-63589). #jira UE-63589 Change 4339195 by Ben.Woodhouse Integrate-as-edit latest CSV profiler changes up to CL 4292187 Change 4339237 by Ben.Woodhouse Integrate-as-edit CL 4226269 Add support for extern GPU stats, so we can use one stat across multiple CPPs Fix the Forward rendering GPUProjection stat Change 4339239 by Ben.Woodhouse Integrate-as-edit CL 4292520 Support different sized buffers for FArchiveFileWriterGeneric per-platform so we can tune per-platform as needed. No changes to existing defaults values of 1KB for read, 4KB for write: #define PLATFORM_FILE_READER_BUFFER_SIZE 1024 #define PLATFORM_FILE_WRITER_BUFFER_SIZE 4096 #define PLATFORM_DEBUG_FILE_WRITER_BUFFER_SIZE 4096 Change 4339241 by Ben.Woodhouse Integrate-as-edit CL 4210462 Comment out an assert while I investigate properly (doesn't appear to be fatal) Change 4339265 by Anthony.Bills [Linux] Fix ContainerBuildThirdParty.sh to pick the first default interface. #jira none Change 4339274 by Anthony.Bills [Linux] Cache the bundled toolchain when using git builds. - Also will not attempt to download the toolchain if AutoSDK or Multiarch root are specified. #jira UE-63394 Change 4339623 by Anthony.Bills [Linux] Update native toolchain buildscript to support clang 6.0.1 - Main issue was due to libxml2 as an extra dependency of some test libraries, so needs to be disabled via DLLVM_ENABLE_LIBXML2. #jira UE-63588 Change 4339685 by Anthony.Bills [Linux] Update toolchain setup script to download v12 when it is available. #jira UE-63588 Change 4339833 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4339548 to //UE4/Dev-Console/... Change 4339843 by Ben.Woodhouse Attempt to fix a weird possible bad merge issue Change 4339890 by Ben.Woodhouse Fix a build issue #jira nojira Change 4340314 by Anthony.Bills Fix mesh decal rendering when write mask is enabled and no deferred decals are in the scene. #jira UE-55159 Change 4341099 by Marcin.Undak Mediashader fix #jira UE-63650 Change 4341106 by Marcin.Undak QAGame: added MediaPlayer for Linux test #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341107 by Marcin.Undak WebMMediaPlayer: blacklist all not supported platforms #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341110 by Marcin.Undak WebMMediaPlayer: enable for Unix platforms #jira UE-59667 #jira UE-62775 #jira UE-62780 Change 4341804 by Luke.Thatcher [CONSOLE] [!] Fix memory scribble in black depth texture cube on platforms with 16-bit depth. - Original code was writing a FColor into the locked texture data, which causes a 2 byte scribble if the PF_ShadowDepth format is 16-bits. [!] Also fixed GWhiteTextureCube being black. FColor::White is not a compile-time constant, so an initialization order problem meant the value of FColor::White is actually black when the GWhiteTextureCube constructor runs. #jira none Change 4342244 by Anthony.Bills [Linux] Allow restarting the crashed application from the crash report client #jira UE-62903 Change 4342636 by Brandon.Schaefer Linux: Update LLVM libc++.a libc++abi.a with version 6.0.1 #jira UE-63587 Change 4343420 by Marcin.Undak Fixed assert in console #jira UE-63643 Change 4345166 by Luke.Thatcher [CONSOLE] [!] (merging CL 4345072) Fix initialization order bug with FColor and FLinearColor constants. - The original constants were dynamically initialized during startup. Using these constants from other global constructors may result in getting the wrong value (transparent black) if a given constructor runs before FColor/FLinearColor's constructor. - Adding constexpr to the FColor/FLinearColor constructor makes these constants known at compile-time, and included in the readonly data section, so they don't require dynamic initialization. [~] Also restores the original constant color values in RenderUtils.cpp #jira none Change 4345860 by Arciel.Rekman Make StompMalloc return 16-byte aligned memory on 64 bit platforms (UE-63743). #jira UE-63743 (Edigrating 4345734 from Release-4.20) Change 4345950 by Brandon.Schaefer Linux: Remove libelf/libdwarf fallback for symbolicating symbols during a crash #jira UE-63103 Change 4350249 by David.Harvey helper function to retrieve an LLM tag's name, including platform tags. Change 4351184 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4348973 to //UE4/Dev-Console/... Change 4351593 by Ben.Woodhouse Clean up aggressive batching (remove xbox specific #if and //TODO) #jira UE-46780 Change 4351734 by James.Cobbett Setting TM-ShaderModels_Niagara to always load Change 4351984 by Marcin.Undak QAGame: restored platform media source in TM-ShaderModels map Change 4353508 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4353110 to //UE4/Dev-Console/... Change 4354237 by Anthony.Bills [Linux] Fix Linux compilation issues due to change over to TCHAR being char16_t. #jira UE-63544 Change 4354334 by Anthony.Bills [Linux] (Missing file from CL 4354237) Fix Linux compilation issues due to change over to TCHAR being char16_t. #jira UE-63544 Change 4355994 by Brandon.Schaefer Linux: Agree not Agreed #jira UE-63937 Change 4356068 by Joe.Barnes Replace a duplicate DEFINE_EXPRESSION_NODE_TYPE(bool,...) causing errors with iOS unity build compiles. Remove version in ExpressionParser.cpp and include TextFilterExpressionEvaluator.h. #jira ue-63877 Change 4357726 by David.Harvey [iOS] add clean support for device output log, after catchup. #jira none Change 4357724 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4357176 to //UE4/Dev-Console/... Change 4359634 by Ben.Woodhouse [INTEGRATE] Integrate from //UE4/Main/...@4359072 to //UE4/Dev-Console/... Change 4359958 by Ben.Woodhouse Fix FortGPUTestbed merge issues via p4 copy (content files didn't get moved before for some reason) Change 4361108 by Anthony.Bills Fix webm deprecation issues with DrawPrimitiveUp. #jira UE-64012 Change 4361896 by James.Cobbett Re-saving materials so that they render correctly outside of the editor. Change 4362262 by Anthony.Bills Fix for WebM video decoder crash. #jira UE-64025 [CL 4362700 by Joe Barnes in Main branch]
2018-09-12 15:59:49 -04:00
#endif /* USE_DIRECTORY_WATCHER */