Files
UnrealEngineUWP/Engine/Source/Runtime/OpenGLDrv/Private/OpenGLQuery.cpp

1274 lines
33 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
OpenGLQuery.cpp: OpenGL query RHI implementation.
=============================================================================*/
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "CoreMinimal.h"
#include "Stats/Stats.h"
#include "OpenGLDrv.h"
#include "OpenGLDrvPrivate.h"
static int32 GOpenGLPollRenderQueryResult = 1;
static FAutoConsoleVariableRef CVarOpenGLPollRenderQueryResult(
TEXT("r.OpenGL.PollRenderQueryResult"),
GOpenGLPollRenderQueryResult,
TEXT("Whether to poll render query for result until it's ready, otherwise do a blocking call to get result.")
TEXT("0: Block, 1: Poll (default)"),
ECVF_Default
);
struct FQueryItem
{
FRHIRenderQuery* Query;
int32 BeginSequence;
FQueryItem(FRHIRenderQuery* InQueryRHI)
: Query(InQueryRHI)
{
FOpenGLRenderQuery* InQuery = FOpenGLDynamicRHI::ResourceCast(InQueryRHI);
BeginSequence = InQuery->TotalBegins.GetValue();
}
};
struct FGLQueryBatch
{
TArray<FQueryItem> BatchContents;
uint32 FrameNumberRenderThread;
bool bHasFlushedSinceLastWait;
FGLQueryBatch()
: FrameNumberRenderThread(0)
, bHasFlushedSinceLastWait(false)
{
}
};
struct FGLQueryBatcher
{
FGLQueryBatch* NewBatch;
TArray<FGLQueryBatch*> Batches;
uint32 NextFrameNumberRenderThread;
FGLQueryBatcher()
: NewBatch(nullptr)
, NextFrameNumberRenderThread(1)
{
}
void Add(FRHIRenderQuery* Query)
{
if (NewBatch && NewBatch->FrameNumberRenderThread)
{
NewBatch->BatchContents.Add(FQueryItem(Query));
}
}
void AddSingle(FRHIRenderQuery* Query)
{
FGLQueryBatch* SingleBatch = new FGLQueryBatch();
SingleBatch->FrameNumberRenderThread = NextFrameNumberRenderThread;
SingleBatch->BatchContents.Add(FQueryItem(Query));
Batches.Add(SingleBatch);
}
void Waited()
{
for (int32 Index = 0; Index < Batches.Num(); Index++)
{
FGLQueryBatch* Batch = Batches[Index];
Batch->bHasFlushedSinceLastWait = false;
}
}
void Flush(FOpenGLDynamicRHI& RHI, FRHIRenderQuery* TargetQueryRHI)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FGLQueryBatcher_FlushScan);
bool bFoundQuery = false;
for (int32 Index = 0; Index < Batches.Num() && !bFoundQuery; Index++)
{
FGLQueryBatch* Batch = Batches[Index];
if (Batch->bHasFlushedSinceLastWait)
{
break;
}
bool bAnyUnfinished = false;
for (int32 IndexInner = 0; IndexInner < Batch->BatchContents.Num(); IndexInner++)
{
FQueryItem& Item = Batch->BatchContents[IndexInner];
FRHIRenderQuery* QueryRHI = Item.Query;
FOpenGLRenderQuery* Query = FOpenGLDynamicRHI::ResourceCast(QueryRHI);
if (TargetQueryRHI == QueryRHI)
{
bFoundQuery = true;
}
if (Item.BeginSequence < Query->TotalBegins.GetValue())
{
// stale entry, was never checked, but was reused
Batch->BatchContents.RemoveAtSwap(IndexInner--, 1, false);
continue;
}
RHI.GetRenderQueryResult_OnThisThread(Query, false);
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue())
{
Batch->BatchContents.RemoveAtSwap(IndexInner--, 1, false);
}
else
{
bAnyUnfinished = true;
}
}
if (!bAnyUnfinished || Batch->BatchContents.Num() == 0)
{
delete Batch;
Batches.RemoveAt(Index--);
}
else
{
Batch->bHasFlushedSinceLastWait = true;
break;
}
}
}
// this just tries to readback queries until it finds one that is not ready
void SoftFlush(FOpenGLDynamicRHI& RHI, bool bResetHasFlushedSinceLastWait = false)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FGLQueryBatcher_SoftFlushScan);
for (int32 Index = 0; Index < Batches.Num(); Index++)
{
FGLQueryBatch* Batch = Batches[Index];
if (bResetHasFlushedSinceLastWait)
{
Batch->bHasFlushedSinceLastWait = false; // we will try a full scan if we get around to initviews
}
if (Batch->FrameNumberRenderThread == NextFrameNumberRenderThread)
{
// do not scan queries issued this frame,
// on some Android devices this causes stalls in the driver (eg. S7 Adreno with Android 7)
break;
}
for (int32 IndexInner = 0; IndexInner < Batch->BatchContents.Num(); IndexInner++)
{
FQueryItem& Item = Batch->BatchContents[IndexInner];
FRHIRenderQuery* QueryRHI = Item.Query;
FOpenGLRenderQuery* Query = FOpenGLDynamicRHI::ResourceCast(QueryRHI);
int32 Begins = Query->TotalBegins.GetValue();
if (Item.BeginSequence < Query->TotalBegins.GetValue())
{
// stale entry, was never checked, but was reused
Batch->BatchContents.RemoveAtSwap(IndexInner--, 1, false);
continue;
}
RHI.GetRenderQueryResult_OnThisThread(Query, false);
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue())
{
Batch->BatchContents.RemoveAtSwap(IndexInner--, 1, false);
}
}
if (Batch->BatchContents.Num() == 0)
{
delete Batch;
Batches.RemoveAt(Index--);
}
else
{
break;
}
}
}
void PerFrameFlush()
{
NextFrameNumberRenderThread++;
for (int32 Index = 0; Index < Batches.Num(); Index++)
{
FGLQueryBatch* Batch = Batches[Index];
if (Batch->FrameNumberRenderThread <= NextFrameNumberRenderThread - 5)
{
delete Batch;
Batches.RemoveAt(Index--);
}
}
}
void StartNewBatch(FOpenGLDynamicRHI& RHI)
{
check(!NewBatch);
NewBatch = new FGLQueryBatch();
NewBatch->FrameNumberRenderThread = NextFrameNumberRenderThread;
}
void EndBatch(FOpenGLDynamicRHI& RHI)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FGLQueryBatcher_EndBatch);
SoftFlush(RHI, true);
if (NewBatch)
{
Batches.Add(NewBatch);
NewBatch = nullptr;
}
}
} GBatcher;
void BeginFrame_QueryBatchCleanup()
{
GBatcher.PerFrameFlush();
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
void BeginOcclusionQueryBatch(uint32 NumOcclusionQueries)
{
if (IsRunningRHIInSeparateThread())
{
GBatcher.StartNewBatch(*GetDynamicRHI<FOpenGLDynamicRHI>());
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
void EndOcclusionQueryBatch()
{
if (IsRunningRHIInSeparateThread())
{
GBatcher.EndBatch(*GetDynamicRHI<FOpenGLDynamicRHI>());
}
}
void FOpenGLDynamicRHI::RHIPollOcclusionQueries()
{
if (IsRunningRHIInSeparateThread())
{
GBatcher.SoftFlush(*GetDynamicRHI<FOpenGLDynamicRHI>());
}
}
FRenderQueryRHIRef FOpenGLDynamicRHI::RHICreateRenderQuery(ERenderQueryType QueryType)
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
check(QueryType == RQT_Occlusion || QueryType == RQT_AbsoluteTime);
if(QueryType == RQT_AbsoluteTime && FOpenGL::SupportsTimestampQueries() == false)
{
return NULL;
}
return new FOpenGLRenderQuery(QueryType);
}
void FOpenGLDynamicRHI::RHIBeginRenderQuery(FRHIRenderQuery* QueryRHI)
{
VERIFY_GL_SCOPE();
FOpenGLRenderQuery* Query = ResourceCast(QueryRHI);
if (Query)
{
BeginRenderQuery_OnThisThread(Query);
GBatcher.Add(QueryRHI);
}
}
void FOpenGLDynamicRHI::RHIEndRenderQuery(FRHIRenderQuery* QueryRHI)
{
VERIFY_GL_SCOPE();
FOpenGLRenderQuery* Query = ResourceCast(QueryRHI);
if (Query)
{
EndRenderQuery_OnThisThread(Query);
if (Query->QueryType == RQT_AbsoluteTime)
{
GBatcher.AddSingle(Query);
}
}
}
void FOpenGLDynamicRHI::BeginRenderQuery_OnThisThread(FOpenGLRenderQuery* Query)
{
VERIFY_GL_SCOPE();
int32 NewVal = Query->TotalBegins.Increment();
Query->TotalResults.Set(NewVal - 1);
Query->Result = 0;
Query->bResultWasSuccess = false;
if (Query->QueryType == RQT_Occlusion)
{
check(PendingState.RunningOcclusionQuery == 0);
if (!Query->bInvalidResource && !PlatformContextIsCurrent(Query->ResourceContext))
{
PlatformReleaseRenderQuery(Query->Resource, Query->ResourceContext);
Query->bInvalidResource = true;
}
if (Query->bInvalidResource)
{
PlatformGetNewRenderQuery(&Query->Resource, &Query->ResourceContext);
Query->bInvalidResource = false;
}
GLenum QueryType = FOpenGL::SupportsExactOcclusionQueries() ? UGL_SAMPLES_PASSED : UGL_ANY_SAMPLES_PASSED;
FOpenGL::BeginQuery(QueryType, Query->Resource);
PendingState.RunningOcclusionQuery = Query->Resource;
}
else
{
// not supported/needed for RQT_AbsoluteTime
check(0);
}
}
void FOpenGLDynamicRHI::EndRenderQuery_OnThisThread(FOpenGLRenderQuery* Query)
{
VERIFY_GL_SCOPE();
if (Query)
{
if (Query->QueryType == RQT_Occlusion)
{
if (!Query->bInvalidResource && !PlatformContextIsCurrent(Query->ResourceContext))
{
PlatformReleaseRenderQuery(Query->Resource, Query->ResourceContext);
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3621452) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3567301 by Arciel.Rekman Linux: fix for importing failure when clicking shortcuts (UE-47932). - Slate dialog would return incorrect relative paths (not matching CWD) if Engine or Project shortcuts were used. #jira UE-47932 Change 3567687 by Arciel.Rekman Minor fixes to gdb pretty printers by icculus. Change 3568024 by Arciel.Rekman Made SDL_SetWindowInputFocus() wait until window is viewable (UE-33369). - Pull request #2608 contributed by Ereski. - Updated x86_64 lib only (anticipating more changes to SDL). #coderview Cengiz.Terzibas, Ryan.Gordon Change 3568173 by Max.Chen Movie Scene Capture: Delay on shot boundaries by setting the sequencer play rate to 0. This allows particles, TAA, and other effects to settle on the shot cuts. #jira UE-44598 Change 3568174 by Max.Chen Sequencer: Added option to rerun construction scripts on bound actors in the sequence every frame. #jira UE-31193 Change 3568331 by Matt.Kuhlenschmidt PR #3850: Add extensible source navigation service (Contributed by mhutch) Change 3568350 by Matt.Kuhlenschmidt PR #3851: Add argument to pass params to standalone play session (Contributed by mhutch) Change 3568387 by Matt.Kuhlenschmidt PR #3852: Add FEditorDelegates::BeginLocalPlay event (Contributed by mhutch) Change 3568541 by Arciel.Rekman Merged Icculus' patch for copy-paste (UE-40071). - Alas does not seem to fix inability to copy/paste between Output log and kate. - Updated x86_64 lib only (anticipating more changes). Change 3568547 by Arciel.Rekman Fix OpenGL queries reused after deletion. Change 3568790 by Matt.Kuhlenschmidt PR #3857: Loading screen widgets not scaled correctly (Contributed by projectgheist) Change 3568900 by Alexis.Matte Fix the fbx re-import factory handler to say failed in case there was no geometry to import. #jira UE-47506 Change 3568902 by Alexis.Matte Reduce memory footprint when importing large FBX scene PR #3834 #jira UE-47833 Change 3569061 by Arciel.Rekman Linux: remove unnecessary symbols for MSVC visualizers. - Reported by ASan as collision because they exist in each DSO. Change 3569782 by Cody.Albert Updated ImportAssets Commandlet help text to properly reflect supported features. Change 3569843 by Arciel.Rekman SDL: add logic to select headless EGL device. - SDL will try to guess which device is GPU using CUDA device id (can also be hinted explicitly). - Also fixes the problem of engine not starting on some drivers that don't support the necessary EGL extensions. Change 3570234 by Max.Chen Sequencer: Import FBX settings. Added settings to toggle force front x axis and whether to create cameras that don't already exist in the level. #jira UE-46754 Change 3570578 by Arciel.Rekman Linux: make FAnsiMalloc compatible with malloc()/free(). - Prerequisite for ASan. Also helps fringe cases when we have to use FAnsiMalloc. Change 3571015 by Alexis.Matte Issue warning when we found zero normal, tangent or binormal #jira UE-46419 Change 3571376 by Jamie.Dale Force a unique package localization ID when loading packages for diffing Change 3571412 by Jamie.Dale Removed unused setting Change 3571487 by Alexis.Matte fix speed tree import cancel workflow #jira UE-47482 Change 3571614 by Jamie.Dale Games now use the native culture of any of the game targets as the fallback (rather than always using English) This replaces the previously removed redundant setting from CL# 3571412 Change 3572649 by Jamie.Dale SavePackageHelper now always honors KeepObjectFlags Change 3572730 by Matt.Kuhlenschmidt Guard against crash in the details panel when there is a message in the queue and something scrolls into view when the list has been invalidated #jira UE-48037 Change 3572773 by Matt.Kuhlenschmidt Guard against high res screenshot crashing if the requested image size doesnt match the image data size #jira UE-47765 Change 3572813 by Michael.Trepka Workaround for a mysterious issue in Xcode 9 beta 3 and 4 which makes it generate -Wnullability-inferred-on-nested-type warnings/errors in MetalDebugCommandEncoder.h even though we tell Clang to ignore them in MacPlatformCompilerPreSetup.h Change 3573043 by Arciel.Rekman FAnsiMalloc: fix compile issue (UE-48066). #jira UE-48066 Change 3573236 by Arciel.Rekman Linux: add UnrealLightmass to the installed build. - Was also requested by a licensee on UDN. Change 3573705 by Arciel.Rekman SDL: update UE4 fork to the latest trunk (UETOOL-1242). - Revision 11184 form 2017-08-04: http://hg.libsdl.org/SDL/rev/04063928c4a8 - Change by icculus (Ryan Gordon). - Rebuilt x86_64 library only for now. Change 3573741 by Arciel.Rekman Fix crash when capturing a movie (UE-48093). #jira UE-48093 Change 3574389 by Max.Chen Sequencer: Array bounds check. #jira UE-48095 Change 3574399 by Max.Chen Sequencer: Fix crash in removing delegate #jira UE-47461 Change 3574415 by Max.Chen Sequencer: Put level visibility tracks in the SpawnObjects evaluation group to ensure levels are streamed before any possessable bindings are resolved Change 3574416 by Max.Chen Prevent slow task feedback from performing slow operations (flushing rendering commands, checking if shaders are initialized) when there are no modal dialogs open Change 3574726 by Matt.Kuhlenschmidt Focus the details view when actor selection changes if it is not focused Change 3574922 by Michael.Trepka Copy of CL 3574653 by Richard.Wallis XCode Beta 4 Compile fixes. "Inferring '_Nonnull' for pointer type within array is deprecated " Change 3576525 by Nick.Darnell Editor - Data table rows names sort correctly in the property customization. Blueprint - Fixing some crashes due to holding onto raw pointers instead of TWeakObjectPtrs. UMG - SetWidgetClass now reinstances the widget if you change it at runtime. Editor - Deleting actors that are still referenced now at least logs to the console what still references it. Change 3576714 by Nick.Darnell Editor - Build fix. Change 3576770 by Jamie.Dale Removed some dead code It seems to be left over from the first attempt at stable localization keys Change 3578433 by Matt.Kuhlenschmidt Fix content browser settings being per project and having created a "Global" category for one setting Change 3578556 by Max.Chen Editor: Fix toolbar shared ref which was keeping the viewport toolbar around when switching between default and cinematic viewports. #jira UE-48125 Change 3578561 by Matt.Kuhlenschmidt Fix USD importing not respecting DestinationPath for automated import Change 3580124 by Matt.Kuhlenschmidt Fix bogus warning message when a property has an editcondition that is not marked edit aynwhere. This has always been supported and is the correct way to make an editcondition Change 3581936 by Jamie.Dale Restoring defaults for UContentBrowserSettings Change 3582039 by Matt.Kuhlenschmidt High DPI mode changes - Editor viewport screen percentage is now adjusted automatically to account for DPI scaling. By default the scene will be rendered at a lower resolution based on screen percentage calculated based on 100/DPIScale. Users can override this automatic calcuation in the performance options if desired. - DPI awareness is only set on windows in the editor now (still disabled by default) - Fixed hit proxy calculation not working properly with screen percentage - Developers can now register a delegate with SlateApplication to tell when a window's DPI changes Change 3582049 by Matt.Kuhlenschmidt Fix color picker not properly converting FColor properties back to gamma space Change 3582054 by Matt.Kuhlenschmidt Fix mac menus updating during unsafe times such as modal windows and slow tasks #jira UE-47874 Change 3582084 by Jamie.Dale Make sure to update the rendering resources for the active world if reloading its map build data This prevents a crash in the renderer due to it holding onto stale data Change 3582257 by Matt.Kuhlenschmidt Fix widget component spawning widgets on cook #jira UE-48201 Change 3582655 by Matt.Kuhlenschmidt Fix DPI scale not being accounted for when entering immersive. Change 3582706 by Matt.Kuhlenschmidt Fix automation tests Change 3582728 by Matt.Kuhlenschmidt Turn on high dpi by default for windows editor Change 3582732 by Matt.Kuhlenschmidt Turn on high DPI by default for mac editor Change 3583112 by Max.Chen Sequencer: Add OnPlayReverse() event for when playback is in reverse Change 3584130 by Matt.Kuhlenschmidt PR #3897: Git plugin: fix action icon in history window (Contributed by SRombauts) Change 3584237 by Matt.Kuhlenschmidt Added the beginnings of a way to extend the usd importer with a custom resolver class that optionally handles prim identification and mesh and actor spawning. Added a test resolver that handles prims based on usd "kind" metadata. Change 3584535 by Matt.Kuhlenschmidt Fix LOD identification in USD files Change 3587703 by Matt.Kuhlenschmidt Fix tooltip Change 3587901 by Matt.Kuhlenschmidt Fixed USD importing not finding and importing LODs properly Change 3588380 by Matt.Kuhlenschmidt Fix ctrl+w not duplicating on mac #jira UE-46573 Change 3590435 by Jamie.Dale Added support for in-editor previews of localized game text This is configured by the "Preview Game Culture" setting, and will automatically be active when PIE is running (the preview language is also passed to any standalone games that are launched via the editor). This preview can also be used in the UMG editor to preview widgets in different languages. While a preview is running, all editable FText fields are locked-down (read-only) to prevent accidentally clobbering source data with translation data. You can also use this new lock-down feature to prevent any localization changes in your project (set "LockLocalization" to "True" under the "Internationalization" section of either your DefaultGame or DefaultEngine INI). In order to allow the game translations to be used in the editor, we now map the translation to any package localization ID variants when the LocRes data is loaded (or when looking up a specific piece of text). This is needed as the LocRes files only ever contain the "clean" versions of the IDs (without the package localization ID the editor uses), and also means that we no longer need to gather the "editor-only" variants of the text within assets. Change 3592131 by Matt.Kuhlenschmidt Log for newly converted actors being pending kill #jira UE-47464 Change 3592200 by Matt.Kuhlenschmidt Made the class viewer menu function properly on mac. Since it as a nomad tab it wasnt properly inserting itself into the top level menu on mac nor should it since it could be docked anywhere. The filters menu is now consistent with other filters menus Change 3592227 by Matt.Kuhlenschmidt Fix drag drop of actors being offset with high dpi monitors. Change 3592719 by Bradut.Palas #jira UE-45632 - dual key bindings feature My approach was transforming the ActiveChord and DefaultChord into arrays and accessing them through an enum class called EMultipleKeyBindingIndex. A lot of connecting code, function prototypes, and data structures had to be changed to accomodate this. Most menus and tooltip texts are generated using the first valid active shortcut. Change 3592793 by Bradut.Palas Fix compile warnings for InputBindingManager (there were actually hidden bugs among them) Change 3593128 by Matt.Kuhlenschmidt Force low quality mode for background blurs by default on android Change 3593579 by Michael.Dupuis #jira UE-47223 : If we have no world simply return null when GetLandscapeInfo is called Handle the cases in PostEditChange to handle null returned from GetLandscapeInfo Change 3593580 by Michael.Dupuis Added missing shaders while generating thumbnails Change 3593582 by Michael.Dupuis #jira UE-47492 : Make sure LayerInfo is valid before accessing data Change 3593584 by Michael.Dupuis #jira UE-47253: Do not recreate the scene info in simulation mode Change 3593585 by Michael.Dupuis #jira UE-48484: no longer mark the package dirty while generating the GrassMap if they were not existing Change 3593586 by Michael.Dupuis #jira UE-48483 : hide the Rendering property group so user can't by mistake change the actor visibility Change 3593593 by Michael.Dupuis #jira UE-48327: Added guard to prevent crash when using CVarFoliageDiscardDataOnLoad and having invalid foliage in your map Change 3593597 by Michael.Dupuis #jira UE-48309: Do not build the tree if the static mesh is not even loaded yet #jira UE-48340: Properly support the Random stream and partial buffer update #jira UE-48228: Instance from blueprint are now visible in standalone game #jira UE-45854: Crash probably linked to post load called on not loaded static mesh #jira UE-48035: Properly init the per instance render data when creating a new component Only update instance in non archetype or CDO. Change 3594060 by Matt.Kuhlenschmidt Fix high DPI mode being set for non-editor. Also prevent possible crashes due to dll handle for high DPI method being freed before called Change 3594355 by Matt.Kuhlenschmidt Change API help link to point to a website since offline CHM based docs are no longer used #jira UE-48230 Change 3595358 by Matt.Kuhlenschmidt Fixed bad initial window position and sizes for editor windows By default SWindow.ClientSize will assume unscaled window size and will scale it based on DPI as needed. AdjustInitialSizeAndPositionForDPIScale argument can be used to disable this if needed Fixed a dock tabs and the main frame not taking into account dpi scale when saving their layout. Now we always save window size at 1.0 scale and auto scale it based on DPI of the monitor it opens on. #jira UE-48446 Change 3595590 by Matt.Kuhlenschmidt Fix missing includes Change 3595792 by Matt.Kuhlenschmidt Fix style warnings Change 3596418 by Bradut.Palas fixing initial issue with dual keybinds (removed ensure macro to speedup first use of alternate key) Change 3598679 by Max.Chen PR #3872: Fix small typo in ImagePlate Plugin (Contributed by TheCodez) #jira UE-48141 Change 3598720 by Max.Chen Cine Camera: Add toggle to disable constraining the roll when look at tracking is enabled. This allows the user to animate the roll while tracking an object. #jira UE-48316 Change 3600236 by Alexis.Matte Create a LOD Custom Mode in the meshes editor UI. This allow user to compare details values between LODs #jira UE-46822 Change 3600260 by Alexis.Matte Make sure temporary rename do not create redirector #jira UE-48364 Change 3600671 by Lauren.Ridge PR #3913: Fixed 3D preview issue in the material editor (Contributed by YuchenMei) #jira UE-48539 #jira UE-48180 #jira UE-48182 Change 3600812 by Jamie.Dale We now defer the registration of IME contexts until an editable text first gains focus Certain IMEs can have very high per-context costs, so this avoids that cost until we know that we definitely need to use the context #jira UE-48100 Change 3601839 by Matt.Kuhlenschmidt Fix USD import crash with "facevarying" normals Change 3602434 by Jamie.Dale Removing dead code These flags were never being tested or used in any meaningul way Change 3602611 by Jamie.Dale Ensure PackageToReload is non-null #jira UE-46655 Change 3602648 by Jamie.Dale Fixed custom columns with the same name as fixed columns causing infinite duplications in the content browser #jira UE-47392 Change 3602651 by Lauren.Ridge Fix for parameter tooltips not being found #jira UE-47417 Change 3604172 by Bradut.Palas #jira UE-48449 #jira UE-48380 #jira UE-48381 #jira UE-48423 I moved the IsFilenameValidForSaving() function from FEditorFileUtils to FFileHelper so that it is accessible from CollectionManager.cpp in order to validate collection names as file names and no longer trigger any of the bugs. Change 3604210 by Bradut.Palas #jira UE-48718 Regression issue appeared from fixing a crash when using console command "open" Reworked by only refusing to open local URLs in case of client mode and multiprocess being active simultaneously. Change 3604258 by Jamie.Dale IME contexts can now flag themselves as dead to avoid latent IME callbacks trying to access a deleted widget #jira UE-46815 #jira UE-47295 Change 3604312 by Matt.Kuhlenschmidt PR #3931: Fixing a few obvious copy & paste errors. (Contributed by DaveC79) Change 3604352 by Matt.Kuhlenschmidt Fix crash accessing potentially invalid parent layout from a detail category #jira UE-48729 Change 3604402 by Lauren.Ridge Epic Friday - array drag and drop Change 3605228 by Cody.Albert TSets and TMaps should now properly rehash if a key is modified in the details panel. Change 3605275 by Alexis.Matte Merge actor do not keep the material slot name #jira UE-43246 Change 3605715 by Max.Chen Sequencer: Fix cinematic mode getting activated on BeginPlay() instead of OnStartedPlaying(). #jira UE-48770 Change 3606411 by Max.Chen Sequencer: Fix a few player state issues. When paused, calling stop now tears down properly (spawnables are removed, etc). When a level sequence is deleted, tears down properly as well. #jira UE-42008 Change 3606440 by Max.Chen Sequencer: Update spawanble name when the spawnable actor name is changed. #jira UE-47815 Change 3606899 by Lauren.Ridge Disabling enum-based arrays from reordering Change 3606958 by Lauren.Ridge Visual polish on array handles Change 3607733 by Max.Chen Sequencer: Check null in camera cut Change 3607849 by Max.Chen Sequencer: Clip transport controls. #jira UE-48812 Change 3608181 by Max.Chen #jira UE-48813 Correctly set GPlayInEditorID when initializing the PIE gameinstance, which does the initial tick. This fixes autoplay sequences Copy from Dev-Framework Change 3608361 by christopher.biancard QAGame: Submitting test content for Array Element Reorder testing Change 3608512 by Alexis.Matte Add fbx exporter option dialog, support export all and cancel all functionality when doing bulk export. #jira UE-48058 Change 3608629 by Max.Chen Camera Rig: Fix crane and rail not being packaged properly. #jira UE-48829 Change 3609217 by Matt.Kuhlenschmidt Added a lock around access to slate active timers to protect it against race conditions when accessed on the slate movie thread and the game thread Change 3609722 by Alexis.Matte Make sure a warning is log when we cannot export an animation sequence. #jira UE-48390 Change 3609774 by Alexis.Matte Fix the merge actor build LOD scale again, a previous merge erase the fix #jira UE-48156 Change 3609891 by christopher.biancard QAGame: Minor additions for test coverage on Array Element Reorder Change 3610171 by Lauren.Ridge Fixes for reordering metadata, creating actual swap function out of three element functions #jira UE-48823 Change 3610407 by Lauren.Ridge Fixing highlighting and behavior to place dragged row in the spot you release (not below) Change 3610472 by Lauren.Ridge Moving final location logic Change 3610797 by Lauren.Ridge Disabling dragging handles during PIE Change 3611089 by Lauren.Ridge Disabling handles when overall tree is disabled Change 3612479 by Lauren.Ridge Fix for asset contex menu warning #jira UE-46667 Change 3612791 by Michael.Dupuis #jira UE-48914 : Add the possibility to specify if we need CPU access to the instance buffer depending on the usage. Grass should always have CPU access. Change 3612802 by Michael.Dupuis missing file from checkin 3612791 Change 3612805 by Max.Chen Sequencer: Fix crash with null GEditor Copy from Release-4.17 #jira UE-48443 Change 3612806 by Max.Chen Sequencer: Fix crash when capturing a movie with options enabling separate process and close editor. Copy from Release-4.17 #jira UE-48487 Change 3612807 by Max.Chen Sequencer: Fix crash upgrading the time range of a null track. Copy from Release-4.17 #jira UE-48490 Change 3612808 by Max.Chen Sequencer: Fixed dragging skeletal animations causing them to revert back to t-pose Copy from Release-4.17 #jira UE-48367 Change 3612849 by Arciel.Rekman Fix tesselation in packaged Linux projects (UE-24301). - Change by Cengiz.Terzibas. #jira UE-24301 Change 3613022 by Nick.Darnell Editor - Fixing a crash on load with a null CoordIndex json node. Change 3613030 by Matt.Kuhlenschmidt PR #3932: UE-48693: if instead of while statement (Contributed by projectgheist) #jira UE-48747 Change 3613047 by Matt.Kuhlenschmidt PR #3933: Git plugin: add "branch source" in history window (Contributed by SRombauts) Change 3613050 by Matt.Kuhlenschmidt PR #3942: Sort Data Table Structures Alphabetically (Contributed by Nick-Pearson) Change 3613062 by Matt.Kuhlenschmidt PR #3939: Fix a typo in RecordQualityLevelsAnalytics(). (Contributed by samhocevar) Change 3613241 by Nick.Darnell Editor - Fixing the content browser's view settings to be project agnostic, and they will start saving again. Change 3613329 by Lauren.Ridge Moving favorite levels to a standard submenu so they also work on Mac Change 3613344 by Nick.Darnell Editor - Fixing the achorgrid show up as white in HDPI mode, seems because we were upsampling the image, the blend was between dark and a transparent white, so that caused everything to turn white in HDPI mode. #jira UE-48921 Change 3613380 by Matt.Kuhlenschmidt Fix FBX window being off the screen in high DPI #jira UE-48872 Change 3614598 by Matt.Kuhlenschmidt Fixed Sequencer Keyframes appearing out of place on High DPI Monitors #jira UE-48915 Change 3614625 by Matt.Kuhlenschmidt Fixed not being able to click on BSP correctly in high dpi #jira UE-48947 Change 3614672 by Matt.Kuhlenschmidt Fix combo box windows being larger than necessary on high dpi monitors #jira UE-48908 Change 3614699 by Matt.Kuhlenschmidt Fix typo #jira UE-48941 Change 3615011 by Matt.Kuhlenschmidt Fix color picker calculation appearing offscreen for high dpi Change 3615013 by Michael.Dupuis #jira UE-48897: Properly rebuild the tree when reapplying instance to the component Change 3615014 by Colin.Benoit Sequencer Recorder test content Change 3615048 by Colin.Benoit Sequencer Recorder: more test content Change 3615118 by Lauren.Ridge Updating realtime state of viewports to also change when settings toggled #jira UE-48884 Change 3615127 by Lauren.Ridge Remove delegate binding on viewport destruction Change 3615180 by Bradut.Palas #jira UE-48167 profiler crash Don't duplicate the graph data when rebuilding because that completely voids the OneToOneMapping mechanism, resulting in the crash. Looking up objects in the mapping would always return null because the mapping contains the old addresses, before the rebuild. One option would have been to completely rebuild the mapping according to the duplicate graph, which would be dubious because the duplicate method isn't specifically designed so that the result would replace the source. But it looks like duplicating the data is not needed, it's safe to rebuild in-place, RebuildForFilter() doesn't do anything illegal with the objects. This is also the only purpose and the only reference of the function. Change 3615232 by Lauren.Ridge Adding input handling to the material editor viewport client #jira UE-48909 Change 3615703 by Jamie.Dale Fixed crash when fixing up references after a package rename failed #jira UE-48856 Change 3615752 by Matt.Kuhlenschmidt More generic fix for color picker and other windows that use CalculatePopupWindowPostion not accounting for DPI scale Change 3615907 by Jamie.Dale Fixed some crashes caused by CL# 3600812 Change 3616031 by Matt.Kuhlenschmidt Added guard against invalid blueprints (ones without a generated class) being trying to be opened in the property matrix and failing #jira UE-48986 Change 3616151 by Arciel.Rekman Fixing adding array elements in config. - "+Blah=Foo" will do Blah.AddUnique(Foo) - ".Blah=Foo" will do Blah.Add(Foo) - See JoshA re: why (also see: https://udn.unrealengine.com/questions/388157/incorrect-behavior-in-configcacheinicpp.html?childToView=389307) Change 3616439 by Andrew.Porter QAGame: Updating level visibility content in sequencer smoke map Change 3616441 by Matt.Kuhlenschmidt Fix more sequencer track offsetting with DPI scale #jira UE-48981 Change 3617263 by Max.Chen Sequencer: Fix crash in level visibility teardown. Null playback context. #jira UE-49012 Change 3617316 by Max.Chen Sequencer: Fixed a regression where the frame rate isn't getting initialized for a movie scene. Change 3617648 by Matt.Kuhlenschmidt Adding some windows specific logging around setting or failing to set process dpi awareness Change 3617665 by Matt.Kuhlenschmidt Guard against layers module not being loaded in keybinding automation test Change 3617731 by Arciel.Rekman Fix crashes on AMD Mesa drivers (UE-48374). - Do not expose unnecessary symbols from libelf.a to avoid symbol collision with system library used by drivers. Change 3617923 by Bradut.Palas #jira UE-47072 Editor was crashing because deleted actor was not cleaned properly from asset editors. Changed IAssetEditorInstance to offer a function for deleting an object from the editor. Change 3618088 by Matt.Kuhlenschmidt Guard against crash with potentially invalid worlds in preview scenes #jira UE-48997 Change 3618373 by Matt.Kuhlenschmidt Force worldsettings to be hidden in editor so that it is not considered for selection #jira UE-48996 Change 3618464 by Max.Chen Sequencer: Fix regression where spawnables don't play because they're defined as temporary editor actors. #jira UE-48923 Change 3619789 by Matt.Kuhlenschmidt Fix DPI scale warnings in any kind of headless editor mode Change 3619802 by Jamie.Dale Fixed deprecation warning in malloc profiler Change 3619841 by Matt.Kuhlenschmidt Fix missing icons in the package project menu #jira UE-48674 Change 3619991 by Lauren.Ridge Fix typo in transaction message #jira UE-48993 Change 3620086 by Lauren.Ridge Moving realtime viewport logic to refresh instead of construct so it is always triggered upon opening a new material editor #jira UE-48884 Change 3620616 by Matt.Kuhlenschmidt Fix up file Change 3621002 by Matt.Kuhlenschmidt Back out change to apply scaling rules in loading screens since blueprint based DPI scaling rule classes will not have been created yet #jira UE-49125 Change 3621049 by Arciel.Rekman Fix a build error. - Also make sure that we don't print confusing message when no messagebox can be shown (this code changed during the merge). Change 3621064 by Arciel.Rekman Deleted too much in the previous changelist. Change 3621369 by Matt.Kuhlenschmidt Fix keybindings automation test failing due to multiple entries in the active choords array pointing to the same thing #jira UE-49131 [CL 3621569 by Matt Kuhlenschmidt in Main branch]
2017-08-31 21:51:42 -04:00
Query->Resource = 0;
Query->bInvalidResource = true;
}
if (!Query->bInvalidResource)
{
check(PendingState.RunningOcclusionQuery == Query->Resource);
PendingState.RunningOcclusionQuery = 0;
GLenum QueryType = FOpenGL::SupportsExactOcclusionQueries() ? UGL_SAMPLES_PASSED : UGL_ANY_SAMPLES_PASSED;
FOpenGL::EndQuery(QueryType);
}
}
else if (Query->QueryType == RQT_AbsoluteTime)
{
int32 NewVal = Query->TotalBegins.Increment();
Query->TotalResults.Set(NewVal - 1);
Query->Result = 0;
Query->bResultWasSuccess = false;
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3807299) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3528776 by Yannick.Lange Allow thumbnails to be captured from a viewport always. #jira UE-45392 Change 3564359 by Yannick.Lange Back out part of changelist 3528776: Revert allowing thumbnails to be captured from a viewport to fix UE-47827 & UE-47785. #jira UE-47785, UE-47827 Change 3740671 by Matt.Kuhlenschmidt Make the font editor canvas respect dpi scale Change 3740810 by Josh.Engebretson PR #4138: Log GenerateProjectFiles to file when using UVS (Contributed by projectgheist) #jira UE-51358 Change 3740939 by Cody.Albert Fixing some #ifdefs that should be #ifs Change 3741089 by Alexis.Matte Make sure bImportBoneTracks is set to true when importing into level #jira UE-51999 Change 3741101 by Alexis.Matte Fix the import material search #jira UE-51857 Change 3741690 by Jamie.Dale Guard against an invalid index in SLocalizationCommandletExecutor::Tick #jira UE-52067 Change 3741710 by Jamie.Dale Made a static variable also const Change 3741724 by Michael.Dupuis Added missing shader cache Change 3742037 by Lauren.Ridge Details panels can now "own" a color picker so a different details panel refreshing doesn't close it. Also fixed refreshing state of the graph after changing texture or color parameter values Change 3742250 by Matt.Kuhlenschmidt PR #4185: Output Log Filter tooltip shows %s instead of category. (Contributed by LordNed) Change 3742308 by Lauren.Ridge Adding axis input to the material editor's viewport client Change 3742380 by Matt.Kuhlenschmidt USD importer improvements - USD now stores source file information for reimports - Fixed bug where no geometry would be imported if an exporter had set a time code even without animated data - Prevent a crash if a mesh doesnt have enough valid data to be imported Change 3742536 by Matt.Kuhlenschmidt Remove usd wrapper test project Change 3743564 by Alexis.Matte Fix skeletal mesh screen size auto set value when importing a LOD #test none #jira UE-52100 Change 3743582 by Lauren.Ridge Fixing non-desktop compiles Change 3743598 by Lauren.Ridge Fixing shadowed variable by renaming the global color picker weak ptr variable. Change 3743636 by Lauren.Ridge Creating a new parameter immediately allows naming Change 3743855 by Michael.Dupuis Added missing shader from cache Change 3744277 by Lauren.Ridge Don't show empty Global group if it only contained the material layer param. Change 3744330 by Lauren.Ridge Clarifying "no parameter" text Change 3744529 by Lauren.Ridge Making Save to Child and Save To Sibling buttons work for material layer params, show on material layer param panel Change 3744668 by Chris.Bunner Added shared layer input collection asset, a list of float/texture redirectors that allow setting globally in a material graph then retrieving within layer/blend graphs. Added output for number of unique shaders generated by a particular material instance. Show instruction counts when working on a material layer. Relaxed restrictions on material layers, base MA input is now optional. #jira UETOOL-1271, UETOOL-1278, UETOOL-1279 Change 3744669 by Chris.Bunner Added automated test for material layers, layer/blend instances and shared inputs. Change 3744754 by Laz.Matech Adding localization data to QAGame for the Realtime Preview localization test. #jira none Change 3744860 by Michael.Dupuis #jira UE-52049 : Do not update random stream in most case, only when adding new instances, or filling from built data Change 3744965 by Chris.Bunner Rebuilt lighting in automated test map and updated reflection capture screenshot. Change 3746015 by Michael.Dupuis #jira UE-52090: Added missing shader for forward rendering Change 3746038 by Michael.Dupuis #jira UE-51494: Make sure index is valid for this instance as instances from template and instance could mismatch due to in level changes Change 3746076 by Michael.Dupuis Removed unused code Change 3746998 by Tim.Gautier QAGame: - Renamed UMG_RealtimePreview > UMG_InEditorPreview - Moved UMG_InEditorPreview into UMG > Localization, setting up for future Localization tests Change 3747206 by Arciel.Rekman Linux: make UI scale more coarse to prevent unnecessary scaling (UE-52086). - Monitors whose physical dimensions fall in range of 80-110 DPI should still have scale=1.0. (Edigrating CL 3740942 from Release-4.18 to Dev-Editor) Change 3747211 by Arciel.Rekman Make failure to launch SCW more apparent to the user (UE-47263). - Fixes frequent crash on Linux. (Merging 3747070 from Release-4.18 to Dev-Editor) Change 3747726 by Tim.Gautier QAGame: Resubmitting updated Loc files Change 3747872 by Tim.Gautier QAGame: Resubmitting compiled Loc assets Change 3748118 by Lauren.Ridge Adding help text to the material layers preview tab Change 3748398 by Lauren.Ridge Fixing tooltips for the material layer read-only preview Change 3748565 by Arciel.Rekman Linux: fix RHIs settings being wrong when removed via project properties (UE-51203). - This was a deeper issue with config system than just Linux RHIs. - This is a better fix than one submitted to 4.18 branch in CL 3747086. Change 3749441 by Matt.Kuhlenschmidt PR #4201: Fix a typo in a comment. (Contributed by dneelyep) Change 3749442 by Matt.Kuhlenschmidt PR #4195: Incorrect specifier used for FText::Format (Contributed by projectgheist) Change 3749496 by Matt.Kuhlenschmidt Fix static analysis Change 3749805 by Lauren.Ridge Fixing reset to default on MaterialLayerParam in base material Change 3749838 by Lauren.Ridge Also correctly resetting names and layer states Change 3750442 by Mieszko.Zielinski Added a safety check which addresses the crash #UE4 Note that this is a temp fix. A proper fix is making sure ConvexShapeIndices doesn't contain any duplicates and will be inplemented in Dev-Framework. #jira UE-52123 Change 3752266 by Arciel.Rekman OpenGL: remove PLATFORM_WINDOWS exceptions. - Discrepancy in behavior between Windows and Linux OpenGL is unhelpful for bug reproducibility. - VAB bug should have been fixed long ago (on both platforms). Change 3752929 by Arciel.Rekman Linux: avoid crashing on unknown drivers. - See https://answers.unrealengine.com/questions/724100/crashes-on-startup-after-first-run.html - Checks in IsDeviceIntel() and such fail if the drivers were not detected. Change 3753254 by Michael.Dupuis Added missing shader for shader cache Change 3753426 by Michael.Dupuis #jira UE-5751: Added the possibility to change material instance exposed params at runtime using a MID for texture, vector and scalar for 1 component or all components Change 3753440 by Alexis.Matte Fix fbx scene importer morph target import crash #jira UE-52255 Change 3753457 by Michael.Dupuis build fix Change 3753700 by Chris.Bunner Make GetSharedInput preview fallback always available in editor as this should handle previews, thumbnails and other editor-only cases. Refactor to remove duplicate code in material translator. Material layer expressions are required for client load, fixes cooked builds using layer instances in the base material layer stack. Change 3754760 by Chris.Bunner Tidying up EngineTest/ShaderModels map. Change 3754765 by Arciel.Rekman Avoid placing tooltip windows under the cursor (UE-12288). - Fixes inability to use some corners of the screen on Linux (the tooltips there aren't click-through). Change 3754788 by Matt.Kuhlenschmidt Fix details panel crash after compiling blueprints that have edit conditon properties Change 3754933 by Christina.TempelaarL Fixed typo in heightLerp (transistion->transition). #jira UE-46736 Change 3754946 by Cody.Albert Update loading movie code to properly calculate delta time when throttled at 60fps Change 3755059 by Jamie.Dale Fixed game preview language not updating in realtime while PIE was enabled #jira UE-52209 Change 3755130 by Jamie.Dale Fixed game preview language not updating from native when switching between preview languages #jira UE-52348 Change 3755664 by Michael.Dupuis Fixed compile warning Change 3755714 by Yannick.Lange Always allow capturing thumbnails from viewport. This also hides the thumbnail editing UI when a thumbnail was captured from a viewport. Change 3755944 by Alexis.Matte Fix crash when importing morph target with "built in" tangent option #jira UE-52319 Change 3756109 by Christina.TempelaarL fixed FBX importer Import Textures tooltip, UMaterial -> Material in tooltip text #jira UE-48389 Change 3756169 by Jamie.Dale Added plural form pattern to SContentBrowser::GetPathText Change 3756493 by Laz.Matech Updating Localization content to further test InEditor Preview Language in UMG #jira none Change 3758336 by Alexis.Matte Fix a crash when importing morph target there was a unsync between some buffer depending on the import options #jira UE-52319 Change 3758947 by Jamie.Dale Fixed cursor position regression in search boxes This was caused by a call to SetText that was added in CL# 3627864 This caused the text to update as it was changed, which made the cursor jump to the end of the text and made it impossible to type in the middle of a search term. This was done as a bound FText value had been passed to the InitalText of SSearchBox, which made the text resolution behave strangely. InitalText should always be a value, and SSearchBox now resolves any bindings during its constructor. #jira UE-48874 Change 3759000 by Laz.Matech Submitting the .PO file for CL 3756493 #jira none Change 3759480 by Matt.Kuhlenschmidt Safe guard against brush details crash #jira UE-52278 Change 3759665 by Matt.Kuhlenschmidt PR #4214: UE-52249: Use valid PreviewShadowsIndicatorMaterialName (Contributed by projectgheist) Change 3761211 by Matt.Kuhlenschmidt Remove the restriction that a level must be writable to be locked/unlocked. Fixed duplicate icons being used by the level browser Change 3761304 by Chris.Bunner MaterialAttributeLayers graph node BaseMA input is no longer required. Note: Requires "Use Preview Value" set to true on inputs. Change 3761307 by Chris.Bunner New material layers and blends will have "Use Preview Value" set to true by default to avoid the need for connected inputs - Missed file on previous commit. Change 3761357 by Chris.Bunner Renamed material shared input enum. Change 3761419 by Chris.Bunner Updating material layers automated test assets after recent changes. Reverted some naming changes so existing screenshot tests can be reused. Change 3762058 by tim.gautier QAGame: Adding Material Layer assets for testing (Content/Materials/LayerFunction) Change 3763328 by Matt.Kuhlenschmidt Fix Slate warning at editor startup Change 3763354 by Alexis.Matte Fix skeletal mesh material assign when reducing a LOD that was import from a file using simplygon reduction #jira UE-52505 Change 3763501 by Matt.Kuhlenschmidt Prevent shared asset thumbnail pools from having their resources forcefully released when they are in use. ReleaseResources is now private and only called on destruction of the pool Change 3763574 by Matt.Kuhlenschmidt Fix slate material box brushes not being keyed off image size #jira UE-40219 Change 3763678 by Jamie.Dale Disable realtime level editor viewport if running under remote desktop This makes the main editor window much more responsive by default under remote desktop Change 3763679 by Jamie.Dale Added asset caching metrics for the loc gather Change 3763693 by Matt.Kuhlenschmidt Changed the code that activates the actor details tab when selection changes to a flash. There are simply too many things that change the selection and steal focus away from a tab being used #jira UE-51754 Change 3763826 by Michael.Dupuis Fixed Fortnite cooking crash Change 3763864 by Harrison.Moore Adding New Default 'LayerBlend' assets Change 3764028 by Christina.TempelaarL #jira UE-47695 Auto LOD bug Moved the sections dropdown to the LOD Picker category and modified Custom cb behavior, based on suggestions from charlie. Change 3764031 by Christina.TempelaarL #jira UE-47695 Auto LOD in StaticMeshViewer moved LOD combo widget to LOD picker category and hide custom checkboxes until custom checked. Change 3764076 by tim.gautier QAGame: Submitting UMG_Multitouch_test for initial Multitouch testing Change 3764263 by Matt.Kuhlenschmidt Fix the floor mesh thumbnail Change 3764284 by Chris.Bunner Removing some asserts for cases that can validly fail and are already handled. Change 3764372 by Matt.Kuhlenschmidt PR #4196: Show edit icons in editor (Contributed by projectgheist) Change 3764388 by Chris.Bunner Fixing logic for material, function and instance updating active materials and instances and their editors. Change 3764674 by Harrison.Moore test materials added, Blend updates Change 3764681 by Harrison.Moore Adding HMtest map Change 3766238 by Chris.Bunner Material layer callers need to let their internal material function calls update their inputs/outputs. Change 3766556 by Jamie.Dale Fixed crashes that could happen if some of the data table panels were closed We now always create the underlying widgets, even if they're currently hidden from view #jira UE-52552 Change 3767753 by Chris.Bunner When rebuilding a material function instance editor we must re-create and re-apply the proxies as the expressions have likely changed. Take care to maintain local parameter changes as these have not been saved yet. Change 3768719 by Michael.Dupuis #jira UE-52521: Prevent possible crash if a segment have no point or invalid point Change 3769157 by Jamie.Dale Fixed incorrect text selection if selecting via double click beyond the bounds of the line It would previously select the second to last word, rather than the last word #jira UE-51609 Change 3769159 by Harrison.Moore Belica Test update, New layer blends updated with texture type fix. Change 3769205 by Jamie.Dale Fixed Windows file save dialog not appending the correct extension when there were multiple options available #jira UE-52180 Change 3769220 by Harrison.Moore Layer blend tweaks Change 3769292 by Jamie.Dale Removing redundant code Applying the correct package ID, only to then strip it off again is rather pointless Change 3769479 by Arciel.Rekman UBT: Use response files for compiler when compiling for Linux. - Some command lines are too long when cross-compiling on Windows. Change 3769920 by Arciel.Rekman Linux: convert yet another initialization crash to a user-friendly message (UE-52457). #jira UE-52457 Change 3771055 by Alexis.Matte Make sure we set the Used by morph target material flag to material use by the morphtarget instead of all skinned mesh component Use the morph vertex factory only for section that has active morph target #jira UE-51483 Change 3771135 by Michael.Dupuis Fixed fortnite cooking Change 3773054 by Yannick.Lange Avoid loading viewport interaction assets when starting the editor. Change 3774184 by Arciel.Rekman Linux: disabled some gdb visualizers until the issue is fixed. - CL 3773942 by CengizT. Change 3774303 by Matt.Kuhlenschmidt Pull requests to fix various typos Change 3774305 by Matt.Kuhlenschmidt PR #4237: Visual Studio Repeatedly Opens (UE-51608) (Contributed by LordNed) #jira UE-51608 Change 3774701 by Arciel.Rekman OpenGL: fix ARB callback errors when hitting Build Lighting. - Merged from 4.18 shelf. Change 3775812 by Matt.Kuhlenschmidt Fix One-off crash undo-ing while working with Material Params / Material Functions #jira UE-52680 Change 3775849 by Matt.Kuhlenschmidt More info for UE-52610 Change 3775850 by Matt.Kuhlenschmidt Guard against mesh paint crashes #jira UE-52618 Change 3775904 by Matt.Kuhlenschmidt Added logging to track down window shutdown issues Change 3775913 by Matt.Kuhlenschmidt Pull requests for typos #jira UE-52751, UE-52748 Change 3776676 by Jamie.Dale Fixed being able to insert tabs into spin boxes with units #jira UE-52776 Change 3777006 by Michael.Trepka Process Mac windowDidBecomeMain and windowDidResignMain notifications immediately instead of deferring them. This solves issues with Slate code that closes and immediately opens new menu windows. Previously closing a window would schedule menu parent's activation event that could be processed after another menu's creation, making it immediately disappear. #jira UE-52145 Change 3777170 by Arciel.Rekman Linux: use Xft.dpi (most desktop environments expose their scale through that) as a DPI value (UE-52086, UE-52766). - Change by Brandon.Schaefer. - Limitation: no per-monitor DPI. (Edigrating CL 3776509 //UE4/Release-4.18/... to //UE4/Dev-Editor/...) Change 3777292 by Arciel.Rekman Linux: fix symbol collision causing problems with AMD drivers (UE-51843). - We cannot have elf_end() hidden, because libcuda.so calls elf_end from libnvidia-fatbinaryloader.so and this breaks linking monolithic binaries ("hidden symbol referenced in DSO"). - We cannot have elf_end() visible, because of a name collision with a different libelf used by AMD drivers. - The only possible workaround is to have elf_end() renamed. (Edigrating CL 3777242 from //UE4/Release-4.18/... to //UE4/Dev-Editor/...) Change 3777686 by Joe.Conley Blueprint editor variable type tooltips: fix case mismatch that was preventing type name to be displayed properly in soft object/class reference tooltips. Change 3778180 by Jamie.Dale Avoid a crash if a regex pattern or matcher outlive ICU during shutdown #jira UE-52770 Change 3778182 by Jamie.Dale Avoid a crash if a break iterator outlives ICU during shutdown Change 3778368 by Jamie.Dale Added missing pragma once Change 3778560 by Matt.Kuhlenschmidt Prevent non-shared DDC notification from triggering for epic internal builds Change 3778709 by Lauren.Ridge Copying 4.18.2 array reordering propagating to children fix (originally 3778547) Change 3779205 by Lauren.Ridge Duplicating 3776649 to fix a crash on compile due to partial GC of a widget. #jira UE-52260 Change 3779217 by Brandon.Schaefer GitHub #3678 Fix Setup.sh handling of special characters in PNG path #jira UE-46103 Change 3779341 by Brandon.Schaefer GitHub #3012 Use elemtry OS versions to set the ubuntu versions for depencies #jira UE-39364 Change 3780274 by Joe.Conley DataTables: Add documentation tooltips showing type information to header columns Change 3780840 by Alexis.Matte Do a re-import when user re-import LOD 0 Prevent importing more then MAX_SKELETAL_MESH_LODS #jira UE-52373 Change 3781067 by Arciel.Rekman Linux: fix OSSSteam cross-compilation (and CIS). - Broken by previous change that put compile-time arguments into response file and bulk-replaced \ with /, which affected things like Definitions.Add("STEAM_SDK_VER_PATH=TEXT(\"Steam" + SteamVersion + "\")"); Change 3781110 by Christina.TempelaarL #jira UE-47695 moved Static Mesh Editor LOD menu from tools to viewport tool bar Change 3781531 by Christina.TempelaarL #jira UE-47695 added LOD menu to Static Mesh Editor viewport Change 3781663 by Alexis.Matte Fix for cancel export fbx when previewing animation sequence export #jira UE-49743 Change 3782007 by Jamie.Dale Improved the ability to lockdown available game languages In addition to the previous "DisabledCultures" array, you can now add an array of "EnabledCultures" (using the same per-build config filters) to explicitly list the cultures that are allowed to be used in your build (if the list is empty, then everything is allowed unless otherwise disabled). This also stops the game from attempting to fallback to the native language if the native language has been disabled (we will fallback to the first available language instead). Change 3782122 by Jordan.Walker test assets for material layers Change 3782131 by Joe.Graf Added support for IOS and TVOS targets when generating CMake files on Mac Change 3782218 by Christina.TempelaarL fixing include paths and capitalization causing build errors. Change 3783171 by Michael.Dupuis Added the possibility to override default LOD rules for visible primitive and whole scene shadow casting primitive Added the possibility to store Custom data per view for the frame duration Change 3783172 by Michael.Dupuis #jira UE-35097 : Refactored landscape rendering logic to improve general performance while using new custom data and custom lod feature Exposed many new settings to control component using sub sections rendering, tessellated component, shadow should be include into tessellation, tessellation falloff based on camera location Changed how LOD distribution is done to be in screen size instead of distance. Give the possibility to have a different distribution for LOD0 vs the other one. Change 3783174 by Michael.Dupuis missing file to landscape refactor Change 3783315 by Lauren.Ridge Changing a parameter in the Material Parameter Panel now dirties the material correctly. Changing a layer parameter in the Material Instance Editor now refreshes the details panel as well. Change 3783374 by Chris.Bunner Adding MaterialSharedInputCollection to hidden list when MaterialLayers disabled. Change 3783617 by Chris.Bunner Added a Channel Mask material expression parameter. Wraps up a vector parameter and dot product with a single channel selection interface, internally a regular vector parameter. Fixed GetSharedInput failing to return the preview texture in the Function Instance editor. Change 3783676 by Lauren.Ridge Adding access to a material function instance's parent in the Material Instance Editor Change 3783751 by Michael.Trepka PR #4248: Fixed C++ std in generated Xcode project to match rest of engine (C++14) (Contributed by Bo98) Change 3783971 by Brandon.Schaefer Rename/Move all deploy/Deploy folder/files into AlembicDeploy. Due to case sensitivity on linux, need to maintain the correct case. #jira UE-37631 Change 3783992 by Michael.Dupuis #jira UE-35097: Remove tessellation on editor tools Fixed a case where tessellation multiplier at 0 would cause the component to not be visible Fixed minor tessellation falloff calculation error Change 3784502 by Chris.Bunner Restored missing bool setter. Coding standards fix. Change 3784614 by Arciel.Rekman Linux: better error message when running out of inotify watches (UE-50459). #jira UE-50459 Change 3784620 by Chris.Bunner Updated LayerBlend_TextureMask to use new ChannelMask parameter. Change 3784725 by Lauren.Ridge Fixing groups not sorting correctly Change 3785645 by Chris.Bunner Non-editor compile fix. Change 3785666 by Arciel.Rekman Linux: restore ability to use Wayland instead of X11. - SDL libs recompiled and Wayland version is set to lower one to be compatible with the compositor shipped on Ubuntu 16.04 LTS - Change by Anthony.Bills. Change 3785708 by Arciel.Rekman Linux: implement voice capture using SDL (non-server only) (UE-51298). - Based on pull request #4131 by mkirzinger. Change 3785878 by Arciel.Rekman UBT: add VSCode to default generators on Linux. Change 3786058 by Arciel.Rekman Do not add dependencies on other RHIs for servers (UE-48894). - Pull request #3944 contributed by pfoote. #jira UE-48894 Change 3786845 by Arciel.Rekman Code changes to make gcc support easier (UE-51978). - Contributed by a licensee (pull request #4181 by tomwardio "Collection of fixes to allow UE4 to be compiled by GCC on Linux"). Change 3786871 by Matt.Kuhlenschmidt Fix static analysis Change 3786883 by Matt.Kuhlenschmidt Fix HTML5 Change 3786923 by Matt.Kuhlenschmidt Fix engine layer blend asset referencing game content. This is not allowed #jira UE-52888 Change 3786927 by Brandon.Schaefer Linux: Alembic support #jira: UE-37631 Change 3786994 by Arciel.Rekman Remove support for /-prefixed switches (UE-47429). - They collide with absolute file paths on Mac/Linux and a source of inconsistencies between platforms. #jira UE-47429 Change 3787032 by Michael.Trepka Initial support for building and running Niagara on Mac Change 3787035 by Brandon.Schaefer GitHub #4166 Undef GL entrypoint macros after use #jira UE-51663 Change 3787144 by Lauren.Ridge Fixing material parameter group association resetting after undo #jira UE-52514 Change 3787839 by Jordan.Walker updated engine level layer blends to not include game content switched them to use Chris B's new mask selection node Change 3787967 by Lauren.Ridge Fix for broken layer groups, related crash Change 3787991 by Lauren.Ridge Fixing thumbnails for material function instances, resolving not being able to delete new function instances #jira UE-52967 Change 3788226 by Michael.Trepka Fixed a deadlock when closing Mac CrashReportClient which resulted from changes in CL 3777006 #jira UE-53002 Change 3788557 by Brandon.Schaefer Fix shadow compiler warnings around our includes Change 3789700 by Lauren.Ridge Experimental setting for turning on Material Layers - off by default. Change 3789703 by Jamie.Dale Harden the LocMeta and LocRes loading to prevent loading files that are too new Change 3789706 by Jamie.Dale Added localization ID to the package summary This will allow the localization gatherer to query it without having to load the entire package Change 3789708 by Jamie.Dale Added a way to display and reset the package localization ID via the Content Browser Change 3789709 by Jamie.Dale Added warning for duplicate package localization IDs when gathering asset localization Change 3789713 by Jamie.Dale Special case zero-width space in the text shaper to avoid fonts rendering the fallback glyph Change 3789736 by Christina.TempelaarL Fixed recently-introduced StaticMeshEditor bug - changing LOD dropdown menu selection was not changing LOD sections category. Change 3789853 by Chris.Bunner Material instances should return overridden values when the caller is requesting the default, not leaving the request to fall through to the base material. #jira UE-52796 Change 3790185 by Brandon.Schaefer Add better error handling when using new SDK for linux on windows. #jira UE-50527 Change 3790195 by Jamie.Dale Fixed line-ending inconsistency when retrieving rich-text We were using LINE_TERMINATOR when getting the offsets, but \n when getting the text Change 3790473 by Chris.Bunner When finding expression by GUID, only return FunctionCall result if expression was found. Fixes cases where searched-for expression is after a FunctionCall in the expressions list. #jira UE-52729 Change 3790650 by Arciel.Rekman UBT: Linux: print build details first before refusing to build. - Tweak to the previous feature that we forgot. Change 3790681 by Arciel.Rekman UBT: Linux: tweaks to wording (SDK -> toolchain). Change 3791459 by Brandon.Schaefer Linux: libcurl rebuild for version 7.57 #jira OGS-870 Change 3791533 by Arciel.Rekman Better error messaging when UMB is unusable (UE-50658). - Should be replaced by a better fix, but merging this workaround in case the better fix will not be done in time for 4.19. (Edigrating CL 3789387, 3789787 from Release-4.18 to Dev-Editor) Change 3791885 by Matt.Kuhlenschmidt Fix static analysis #jira UE-53097 Change 3791910 by Brandon.Schaefer Fix for not using proper libraries on x86_64 for libcurl #jira OGS-870 Change 3792017 by Jamie.Dale Fixed a conflict between the path settings and favorite settings Change 3792022 by Jamie.Dale Fixed a crash that could happen when performing ARO on the property chains of a struct #jira UE-52999 Change 3792025 by Jamie.Dale Changed package summary localization ID to be versioned by the object version to avoid changing data in unversioned cooked assets Change 3792066 by Michael.Dupuis #jira UE-5751: Fixed possible crash when using dynamic matrial instance Added missing shaders for landscape when using tessellation Change 3792718 by Arciel.Rekman OpenGL: bringing back Windows workarounds to unblock copy-up (UE-52534). #jira UE-52534 Change 3793018 by Mike.Erwin new glTF importer plugin Import StaticMesh, Material, and Texture assets from the Khronos glTF 2.0 format. Text (.gltf) and binary (.glb) files are supported. Limitations: - There is no options UI. All assets from the file are imported. - The glTF format can describe animation and whole scenes, but the initial version of this plugin does not attempt either. - Data encoded as Base64 data URI is not supported. This is uncommon but is part of the glTF spec. #jira: UE-50695 Change 3793626 by Matt.Kuhlenschmidt Logging for HTML5 issue Change 3794034 by Matt.Kuhlenschmidt Fix CIS Change 3794271 by Michael.Dupuis #jira UE-53133: Fxed shadow calculation when using non whole scene shadow Change 3794273 by Chris.Bunner Function call material nodes should be created with no outputs by default. #jira UE-53127, UE-53128, UE-52616 Change 3794334 by Lina.Halper - Fix animation reinitializing when just setting new animation with single node - Deprecated GetScalarParameterDefault and replace that with GetScalarParameterDefaultValue #jira: UE-52796 Change 3794338 by Michael.Dupuis Fixed lod visual popping when texture mip used for landscape is not ready Change 3794350 by Mike.Erwin Fix glTF importer header includes. Build was failing on Linux. Change 3794357 by Michael.Dupuis #jira UE-53166: buildfix: removed phase 2 landscape optim leftover... Change 3794549 by Michael.Dupuis #jira UE-53166 : fixed compile error Change 3794755 by Matt.Kuhlenschmidt Fix automation warning Change 3794910 by Lina.Halper Change material default value to be red to keep the behavior same. - Previous code was getting default value of parent, which was wrong, but now since we're grabbing correct value, it's not doing what it meant to do. Changed content to keep same value as parent as default. Change 3795296 by Mike.Erwin glTF: fix Linux build errors A variable was being shadowed. The other errors are due to an obscure corner of the C++ spec which clang enforces. https://stackoverflow.com/questions/21900237/do-i-really-need-to-implement-user-provided-constructor-for-const-objects #jira UE-53204 Change 3797313 by Chris.Bunner Re-built lighting in Rendering/ShaderModels automated test map and updated failing screenshots. #jira UE-53198 Change 3803962 by Jamie.Dale Fixed struct instances not comparing against the correct default values when gathering for localization Change 3804771 by Michael.Dupuis Back out changelist 3783171 Change 3804772 by Michael.Dupuis Back out changelist 3783172 Change 3805258 by Michael.Dupuis Added missing shader cache for landscape Change 3806105 by Matt.Kuhlenschmidt Disable harware benchmarking during automation tests, commandlets, and on the build machine Change 3806438 by Michael.Dupuis #jira UE-53228: Fixed rendering path of new landscape optim when using GDoInitViewsLightingAfterPrepass(used in Orion) Change 3806577 by Matt.Kuhlenschmidt Change plugin uploading to crash reporter to only do so in editor builds Change 3806588 by Michael.Dupuis Remove temp test version in landscape version Change 3806900 by Jamie.Dale Fixed 'inconsistent DLL linkage' error when using older versions of Python 2.7 #jira UE-53353 Change 3807125 by Jamie.Dale Fixed UBT warning after Dev-Core merge Change 3807299 by tim.gautier QAGame: Checking in test asset M_LandscapeMaterial_Foliage, quicker repro for UE-53442 [CL 3807911 by Matt Kuhlenschmidt in Main branch]
2017-12-14 10:07:13 -05:00
if (!Query->bInvalidResource && !PlatformContextIsCurrent(Query->ResourceContext))
{
PlatformReleaseRenderQuery(Query->Resource, Query->ResourceContext);
Query->Resource = 0;
Query->bInvalidResource = true;
}
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3621452) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3567301 by Arciel.Rekman Linux: fix for importing failure when clicking shortcuts (UE-47932). - Slate dialog would return incorrect relative paths (not matching CWD) if Engine or Project shortcuts were used. #jira UE-47932 Change 3567687 by Arciel.Rekman Minor fixes to gdb pretty printers by icculus. Change 3568024 by Arciel.Rekman Made SDL_SetWindowInputFocus() wait until window is viewable (UE-33369). - Pull request #2608 contributed by Ereski. - Updated x86_64 lib only (anticipating more changes to SDL). #coderview Cengiz.Terzibas, Ryan.Gordon Change 3568173 by Max.Chen Movie Scene Capture: Delay on shot boundaries by setting the sequencer play rate to 0. This allows particles, TAA, and other effects to settle on the shot cuts. #jira UE-44598 Change 3568174 by Max.Chen Sequencer: Added option to rerun construction scripts on bound actors in the sequence every frame. #jira UE-31193 Change 3568331 by Matt.Kuhlenschmidt PR #3850: Add extensible source navigation service (Contributed by mhutch) Change 3568350 by Matt.Kuhlenschmidt PR #3851: Add argument to pass params to standalone play session (Contributed by mhutch) Change 3568387 by Matt.Kuhlenschmidt PR #3852: Add FEditorDelegates::BeginLocalPlay event (Contributed by mhutch) Change 3568541 by Arciel.Rekman Merged Icculus' patch for copy-paste (UE-40071). - Alas does not seem to fix inability to copy/paste between Output log and kate. - Updated x86_64 lib only (anticipating more changes). Change 3568547 by Arciel.Rekman Fix OpenGL queries reused after deletion. Change 3568790 by Matt.Kuhlenschmidt PR #3857: Loading screen widgets not scaled correctly (Contributed by projectgheist) Change 3568900 by Alexis.Matte Fix the fbx re-import factory handler to say failed in case there was no geometry to import. #jira UE-47506 Change 3568902 by Alexis.Matte Reduce memory footprint when importing large FBX scene PR #3834 #jira UE-47833 Change 3569061 by Arciel.Rekman Linux: remove unnecessary symbols for MSVC visualizers. - Reported by ASan as collision because they exist in each DSO. Change 3569782 by Cody.Albert Updated ImportAssets Commandlet help text to properly reflect supported features. Change 3569843 by Arciel.Rekman SDL: add logic to select headless EGL device. - SDL will try to guess which device is GPU using CUDA device id (can also be hinted explicitly). - Also fixes the problem of engine not starting on some drivers that don't support the necessary EGL extensions. Change 3570234 by Max.Chen Sequencer: Import FBX settings. Added settings to toggle force front x axis and whether to create cameras that don't already exist in the level. #jira UE-46754 Change 3570578 by Arciel.Rekman Linux: make FAnsiMalloc compatible with malloc()/free(). - Prerequisite for ASan. Also helps fringe cases when we have to use FAnsiMalloc. Change 3571015 by Alexis.Matte Issue warning when we found zero normal, tangent or binormal #jira UE-46419 Change 3571376 by Jamie.Dale Force a unique package localization ID when loading packages for diffing Change 3571412 by Jamie.Dale Removed unused setting Change 3571487 by Alexis.Matte fix speed tree import cancel workflow #jira UE-47482 Change 3571614 by Jamie.Dale Games now use the native culture of any of the game targets as the fallback (rather than always using English) This replaces the previously removed redundant setting from CL# 3571412 Change 3572649 by Jamie.Dale SavePackageHelper now always honors KeepObjectFlags Change 3572730 by Matt.Kuhlenschmidt Guard against crash in the details panel when there is a message in the queue and something scrolls into view when the list has been invalidated #jira UE-48037 Change 3572773 by Matt.Kuhlenschmidt Guard against high res screenshot crashing if the requested image size doesnt match the image data size #jira UE-47765 Change 3572813 by Michael.Trepka Workaround for a mysterious issue in Xcode 9 beta 3 and 4 which makes it generate -Wnullability-inferred-on-nested-type warnings/errors in MetalDebugCommandEncoder.h even though we tell Clang to ignore them in MacPlatformCompilerPreSetup.h Change 3573043 by Arciel.Rekman FAnsiMalloc: fix compile issue (UE-48066). #jira UE-48066 Change 3573236 by Arciel.Rekman Linux: add UnrealLightmass to the installed build. - Was also requested by a licensee on UDN. Change 3573705 by Arciel.Rekman SDL: update UE4 fork to the latest trunk (UETOOL-1242). - Revision 11184 form 2017-08-04: http://hg.libsdl.org/SDL/rev/04063928c4a8 - Change by icculus (Ryan Gordon). - Rebuilt x86_64 library only for now. Change 3573741 by Arciel.Rekman Fix crash when capturing a movie (UE-48093). #jira UE-48093 Change 3574389 by Max.Chen Sequencer: Array bounds check. #jira UE-48095 Change 3574399 by Max.Chen Sequencer: Fix crash in removing delegate #jira UE-47461 Change 3574415 by Max.Chen Sequencer: Put level visibility tracks in the SpawnObjects evaluation group to ensure levels are streamed before any possessable bindings are resolved Change 3574416 by Max.Chen Prevent slow task feedback from performing slow operations (flushing rendering commands, checking if shaders are initialized) when there are no modal dialogs open Change 3574726 by Matt.Kuhlenschmidt Focus the details view when actor selection changes if it is not focused Change 3574922 by Michael.Trepka Copy of CL 3574653 by Richard.Wallis XCode Beta 4 Compile fixes. "Inferring '_Nonnull' for pointer type within array is deprecated " Change 3576525 by Nick.Darnell Editor - Data table rows names sort correctly in the property customization. Blueprint - Fixing some crashes due to holding onto raw pointers instead of TWeakObjectPtrs. UMG - SetWidgetClass now reinstances the widget if you change it at runtime. Editor - Deleting actors that are still referenced now at least logs to the console what still references it. Change 3576714 by Nick.Darnell Editor - Build fix. Change 3576770 by Jamie.Dale Removed some dead code It seems to be left over from the first attempt at stable localization keys Change 3578433 by Matt.Kuhlenschmidt Fix content browser settings being per project and having created a "Global" category for one setting Change 3578556 by Max.Chen Editor: Fix toolbar shared ref which was keeping the viewport toolbar around when switching between default and cinematic viewports. #jira UE-48125 Change 3578561 by Matt.Kuhlenschmidt Fix USD importing not respecting DestinationPath for automated import Change 3580124 by Matt.Kuhlenschmidt Fix bogus warning message when a property has an editcondition that is not marked edit aynwhere. This has always been supported and is the correct way to make an editcondition Change 3581936 by Jamie.Dale Restoring defaults for UContentBrowserSettings Change 3582039 by Matt.Kuhlenschmidt High DPI mode changes - Editor viewport screen percentage is now adjusted automatically to account for DPI scaling. By default the scene will be rendered at a lower resolution based on screen percentage calculated based on 100/DPIScale. Users can override this automatic calcuation in the performance options if desired. - DPI awareness is only set on windows in the editor now (still disabled by default) - Fixed hit proxy calculation not working properly with screen percentage - Developers can now register a delegate with SlateApplication to tell when a window's DPI changes Change 3582049 by Matt.Kuhlenschmidt Fix color picker not properly converting FColor properties back to gamma space Change 3582054 by Matt.Kuhlenschmidt Fix mac menus updating during unsafe times such as modal windows and slow tasks #jira UE-47874 Change 3582084 by Jamie.Dale Make sure to update the rendering resources for the active world if reloading its map build data This prevents a crash in the renderer due to it holding onto stale data Change 3582257 by Matt.Kuhlenschmidt Fix widget component spawning widgets on cook #jira UE-48201 Change 3582655 by Matt.Kuhlenschmidt Fix DPI scale not being accounted for when entering immersive. Change 3582706 by Matt.Kuhlenschmidt Fix automation tests Change 3582728 by Matt.Kuhlenschmidt Turn on high dpi by default for windows editor Change 3582732 by Matt.Kuhlenschmidt Turn on high DPI by default for mac editor Change 3583112 by Max.Chen Sequencer: Add OnPlayReverse() event for when playback is in reverse Change 3584130 by Matt.Kuhlenschmidt PR #3897: Git plugin: fix action icon in history window (Contributed by SRombauts) Change 3584237 by Matt.Kuhlenschmidt Added the beginnings of a way to extend the usd importer with a custom resolver class that optionally handles prim identification and mesh and actor spawning. Added a test resolver that handles prims based on usd "kind" metadata. Change 3584535 by Matt.Kuhlenschmidt Fix LOD identification in USD files Change 3587703 by Matt.Kuhlenschmidt Fix tooltip Change 3587901 by Matt.Kuhlenschmidt Fixed USD importing not finding and importing LODs properly Change 3588380 by Matt.Kuhlenschmidt Fix ctrl+w not duplicating on mac #jira UE-46573 Change 3590435 by Jamie.Dale Added support for in-editor previews of localized game text This is configured by the "Preview Game Culture" setting, and will automatically be active when PIE is running (the preview language is also passed to any standalone games that are launched via the editor). This preview can also be used in the UMG editor to preview widgets in different languages. While a preview is running, all editable FText fields are locked-down (read-only) to prevent accidentally clobbering source data with translation data. You can also use this new lock-down feature to prevent any localization changes in your project (set "LockLocalization" to "True" under the "Internationalization" section of either your DefaultGame or DefaultEngine INI). In order to allow the game translations to be used in the editor, we now map the translation to any package localization ID variants when the LocRes data is loaded (or when looking up a specific piece of text). This is needed as the LocRes files only ever contain the "clean" versions of the IDs (without the package localization ID the editor uses), and also means that we no longer need to gather the "editor-only" variants of the text within assets. Change 3592131 by Matt.Kuhlenschmidt Log for newly converted actors being pending kill #jira UE-47464 Change 3592200 by Matt.Kuhlenschmidt Made the class viewer menu function properly on mac. Since it as a nomad tab it wasnt properly inserting itself into the top level menu on mac nor should it since it could be docked anywhere. The filters menu is now consistent with other filters menus Change 3592227 by Matt.Kuhlenschmidt Fix drag drop of actors being offset with high dpi monitors. Change 3592719 by Bradut.Palas #jira UE-45632 - dual key bindings feature My approach was transforming the ActiveChord and DefaultChord into arrays and accessing them through an enum class called EMultipleKeyBindingIndex. A lot of connecting code, function prototypes, and data structures had to be changed to accomodate this. Most menus and tooltip texts are generated using the first valid active shortcut. Change 3592793 by Bradut.Palas Fix compile warnings for InputBindingManager (there were actually hidden bugs among them) Change 3593128 by Matt.Kuhlenschmidt Force low quality mode for background blurs by default on android Change 3593579 by Michael.Dupuis #jira UE-47223 : If we have no world simply return null when GetLandscapeInfo is called Handle the cases in PostEditChange to handle null returned from GetLandscapeInfo Change 3593580 by Michael.Dupuis Added missing shaders while generating thumbnails Change 3593582 by Michael.Dupuis #jira UE-47492 : Make sure LayerInfo is valid before accessing data Change 3593584 by Michael.Dupuis #jira UE-47253: Do not recreate the scene info in simulation mode Change 3593585 by Michael.Dupuis #jira UE-48484: no longer mark the package dirty while generating the GrassMap if they were not existing Change 3593586 by Michael.Dupuis #jira UE-48483 : hide the Rendering property group so user can't by mistake change the actor visibility Change 3593593 by Michael.Dupuis #jira UE-48327: Added guard to prevent crash when using CVarFoliageDiscardDataOnLoad and having invalid foliage in your map Change 3593597 by Michael.Dupuis #jira UE-48309: Do not build the tree if the static mesh is not even loaded yet #jira UE-48340: Properly support the Random stream and partial buffer update #jira UE-48228: Instance from blueprint are now visible in standalone game #jira UE-45854: Crash probably linked to post load called on not loaded static mesh #jira UE-48035: Properly init the per instance render data when creating a new component Only update instance in non archetype or CDO. Change 3594060 by Matt.Kuhlenschmidt Fix high DPI mode being set for non-editor. Also prevent possible crashes due to dll handle for high DPI method being freed before called Change 3594355 by Matt.Kuhlenschmidt Change API help link to point to a website since offline CHM based docs are no longer used #jira UE-48230 Change 3595358 by Matt.Kuhlenschmidt Fixed bad initial window position and sizes for editor windows By default SWindow.ClientSize will assume unscaled window size and will scale it based on DPI as needed. AdjustInitialSizeAndPositionForDPIScale argument can be used to disable this if needed Fixed a dock tabs and the main frame not taking into account dpi scale when saving their layout. Now we always save window size at 1.0 scale and auto scale it based on DPI of the monitor it opens on. #jira UE-48446 Change 3595590 by Matt.Kuhlenschmidt Fix missing includes Change 3595792 by Matt.Kuhlenschmidt Fix style warnings Change 3596418 by Bradut.Palas fixing initial issue with dual keybinds (removed ensure macro to speedup first use of alternate key) Change 3598679 by Max.Chen PR #3872: Fix small typo in ImagePlate Plugin (Contributed by TheCodez) #jira UE-48141 Change 3598720 by Max.Chen Cine Camera: Add toggle to disable constraining the roll when look at tracking is enabled. This allows the user to animate the roll while tracking an object. #jira UE-48316 Change 3600236 by Alexis.Matte Create a LOD Custom Mode in the meshes editor UI. This allow user to compare details values between LODs #jira UE-46822 Change 3600260 by Alexis.Matte Make sure temporary rename do not create redirector #jira UE-48364 Change 3600671 by Lauren.Ridge PR #3913: Fixed 3D preview issue in the material editor (Contributed by YuchenMei) #jira UE-48539 #jira UE-48180 #jira UE-48182 Change 3600812 by Jamie.Dale We now defer the registration of IME contexts until an editable text first gains focus Certain IMEs can have very high per-context costs, so this avoids that cost until we know that we definitely need to use the context #jira UE-48100 Change 3601839 by Matt.Kuhlenschmidt Fix USD import crash with "facevarying" normals Change 3602434 by Jamie.Dale Removing dead code These flags were never being tested or used in any meaningul way Change 3602611 by Jamie.Dale Ensure PackageToReload is non-null #jira UE-46655 Change 3602648 by Jamie.Dale Fixed custom columns with the same name as fixed columns causing infinite duplications in the content browser #jira UE-47392 Change 3602651 by Lauren.Ridge Fix for parameter tooltips not being found #jira UE-47417 Change 3604172 by Bradut.Palas #jira UE-48449 #jira UE-48380 #jira UE-48381 #jira UE-48423 I moved the IsFilenameValidForSaving() function from FEditorFileUtils to FFileHelper so that it is accessible from CollectionManager.cpp in order to validate collection names as file names and no longer trigger any of the bugs. Change 3604210 by Bradut.Palas #jira UE-48718 Regression issue appeared from fixing a crash when using console command "open" Reworked by only refusing to open local URLs in case of client mode and multiprocess being active simultaneously. Change 3604258 by Jamie.Dale IME contexts can now flag themselves as dead to avoid latent IME callbacks trying to access a deleted widget #jira UE-46815 #jira UE-47295 Change 3604312 by Matt.Kuhlenschmidt PR #3931: Fixing a few obvious copy & paste errors. (Contributed by DaveC79) Change 3604352 by Matt.Kuhlenschmidt Fix crash accessing potentially invalid parent layout from a detail category #jira UE-48729 Change 3604402 by Lauren.Ridge Epic Friday - array drag and drop Change 3605228 by Cody.Albert TSets and TMaps should now properly rehash if a key is modified in the details panel. Change 3605275 by Alexis.Matte Merge actor do not keep the material slot name #jira UE-43246 Change 3605715 by Max.Chen Sequencer: Fix cinematic mode getting activated on BeginPlay() instead of OnStartedPlaying(). #jira UE-48770 Change 3606411 by Max.Chen Sequencer: Fix a few player state issues. When paused, calling stop now tears down properly (spawnables are removed, etc). When a level sequence is deleted, tears down properly as well. #jira UE-42008 Change 3606440 by Max.Chen Sequencer: Update spawanble name when the spawnable actor name is changed. #jira UE-47815 Change 3606899 by Lauren.Ridge Disabling enum-based arrays from reordering Change 3606958 by Lauren.Ridge Visual polish on array handles Change 3607733 by Max.Chen Sequencer: Check null in camera cut Change 3607849 by Max.Chen Sequencer: Clip transport controls. #jira UE-48812 Change 3608181 by Max.Chen #jira UE-48813 Correctly set GPlayInEditorID when initializing the PIE gameinstance, which does the initial tick. This fixes autoplay sequences Copy from Dev-Framework Change 3608361 by christopher.biancard QAGame: Submitting test content for Array Element Reorder testing Change 3608512 by Alexis.Matte Add fbx exporter option dialog, support export all and cancel all functionality when doing bulk export. #jira UE-48058 Change 3608629 by Max.Chen Camera Rig: Fix crane and rail not being packaged properly. #jira UE-48829 Change 3609217 by Matt.Kuhlenschmidt Added a lock around access to slate active timers to protect it against race conditions when accessed on the slate movie thread and the game thread Change 3609722 by Alexis.Matte Make sure a warning is log when we cannot export an animation sequence. #jira UE-48390 Change 3609774 by Alexis.Matte Fix the merge actor build LOD scale again, a previous merge erase the fix #jira UE-48156 Change 3609891 by christopher.biancard QAGame: Minor additions for test coverage on Array Element Reorder Change 3610171 by Lauren.Ridge Fixes for reordering metadata, creating actual swap function out of three element functions #jira UE-48823 Change 3610407 by Lauren.Ridge Fixing highlighting and behavior to place dragged row in the spot you release (not below) Change 3610472 by Lauren.Ridge Moving final location logic Change 3610797 by Lauren.Ridge Disabling dragging handles during PIE Change 3611089 by Lauren.Ridge Disabling handles when overall tree is disabled Change 3612479 by Lauren.Ridge Fix for asset contex menu warning #jira UE-46667 Change 3612791 by Michael.Dupuis #jira UE-48914 : Add the possibility to specify if we need CPU access to the instance buffer depending on the usage. Grass should always have CPU access. Change 3612802 by Michael.Dupuis missing file from checkin 3612791 Change 3612805 by Max.Chen Sequencer: Fix crash with null GEditor Copy from Release-4.17 #jira UE-48443 Change 3612806 by Max.Chen Sequencer: Fix crash when capturing a movie with options enabling separate process and close editor. Copy from Release-4.17 #jira UE-48487 Change 3612807 by Max.Chen Sequencer: Fix crash upgrading the time range of a null track. Copy from Release-4.17 #jira UE-48490 Change 3612808 by Max.Chen Sequencer: Fixed dragging skeletal animations causing them to revert back to t-pose Copy from Release-4.17 #jira UE-48367 Change 3612849 by Arciel.Rekman Fix tesselation in packaged Linux projects (UE-24301). - Change by Cengiz.Terzibas. #jira UE-24301 Change 3613022 by Nick.Darnell Editor - Fixing a crash on load with a null CoordIndex json node. Change 3613030 by Matt.Kuhlenschmidt PR #3932: UE-48693: if instead of while statement (Contributed by projectgheist) #jira UE-48747 Change 3613047 by Matt.Kuhlenschmidt PR #3933: Git plugin: add "branch source" in history window (Contributed by SRombauts) Change 3613050 by Matt.Kuhlenschmidt PR #3942: Sort Data Table Structures Alphabetically (Contributed by Nick-Pearson) Change 3613062 by Matt.Kuhlenschmidt PR #3939: Fix a typo in RecordQualityLevelsAnalytics(). (Contributed by samhocevar) Change 3613241 by Nick.Darnell Editor - Fixing the content browser's view settings to be project agnostic, and they will start saving again. Change 3613329 by Lauren.Ridge Moving favorite levels to a standard submenu so they also work on Mac Change 3613344 by Nick.Darnell Editor - Fixing the achorgrid show up as white in HDPI mode, seems because we were upsampling the image, the blend was between dark and a transparent white, so that caused everything to turn white in HDPI mode. #jira UE-48921 Change 3613380 by Matt.Kuhlenschmidt Fix FBX window being off the screen in high DPI #jira UE-48872 Change 3614598 by Matt.Kuhlenschmidt Fixed Sequencer Keyframes appearing out of place on High DPI Monitors #jira UE-48915 Change 3614625 by Matt.Kuhlenschmidt Fixed not being able to click on BSP correctly in high dpi #jira UE-48947 Change 3614672 by Matt.Kuhlenschmidt Fix combo box windows being larger than necessary on high dpi monitors #jira UE-48908 Change 3614699 by Matt.Kuhlenschmidt Fix typo #jira UE-48941 Change 3615011 by Matt.Kuhlenschmidt Fix color picker calculation appearing offscreen for high dpi Change 3615013 by Michael.Dupuis #jira UE-48897: Properly rebuild the tree when reapplying instance to the component Change 3615014 by Colin.Benoit Sequencer Recorder test content Change 3615048 by Colin.Benoit Sequencer Recorder: more test content Change 3615118 by Lauren.Ridge Updating realtime state of viewports to also change when settings toggled #jira UE-48884 Change 3615127 by Lauren.Ridge Remove delegate binding on viewport destruction Change 3615180 by Bradut.Palas #jira UE-48167 profiler crash Don't duplicate the graph data when rebuilding because that completely voids the OneToOneMapping mechanism, resulting in the crash. Looking up objects in the mapping would always return null because the mapping contains the old addresses, before the rebuild. One option would have been to completely rebuild the mapping according to the duplicate graph, which would be dubious because the duplicate method isn't specifically designed so that the result would replace the source. But it looks like duplicating the data is not needed, it's safe to rebuild in-place, RebuildForFilter() doesn't do anything illegal with the objects. This is also the only purpose and the only reference of the function. Change 3615232 by Lauren.Ridge Adding input handling to the material editor viewport client #jira UE-48909 Change 3615703 by Jamie.Dale Fixed crash when fixing up references after a package rename failed #jira UE-48856 Change 3615752 by Matt.Kuhlenschmidt More generic fix for color picker and other windows that use CalculatePopupWindowPostion not accounting for DPI scale Change 3615907 by Jamie.Dale Fixed some crashes caused by CL# 3600812 Change 3616031 by Matt.Kuhlenschmidt Added guard against invalid blueprints (ones without a generated class) being trying to be opened in the property matrix and failing #jira UE-48986 Change 3616151 by Arciel.Rekman Fixing adding array elements in config. - "+Blah=Foo" will do Blah.AddUnique(Foo) - ".Blah=Foo" will do Blah.Add(Foo) - See JoshA re: why (also see: https://udn.unrealengine.com/questions/388157/incorrect-behavior-in-configcacheinicpp.html?childToView=389307) Change 3616439 by Andrew.Porter QAGame: Updating level visibility content in sequencer smoke map Change 3616441 by Matt.Kuhlenschmidt Fix more sequencer track offsetting with DPI scale #jira UE-48981 Change 3617263 by Max.Chen Sequencer: Fix crash in level visibility teardown. Null playback context. #jira UE-49012 Change 3617316 by Max.Chen Sequencer: Fixed a regression where the frame rate isn't getting initialized for a movie scene. Change 3617648 by Matt.Kuhlenschmidt Adding some windows specific logging around setting or failing to set process dpi awareness Change 3617665 by Matt.Kuhlenschmidt Guard against layers module not being loaded in keybinding automation test Change 3617731 by Arciel.Rekman Fix crashes on AMD Mesa drivers (UE-48374). - Do not expose unnecessary symbols from libelf.a to avoid symbol collision with system library used by drivers. Change 3617923 by Bradut.Palas #jira UE-47072 Editor was crashing because deleted actor was not cleaned properly from asset editors. Changed IAssetEditorInstance to offer a function for deleting an object from the editor. Change 3618088 by Matt.Kuhlenschmidt Guard against crash with potentially invalid worlds in preview scenes #jira UE-48997 Change 3618373 by Matt.Kuhlenschmidt Force worldsettings to be hidden in editor so that it is not considered for selection #jira UE-48996 Change 3618464 by Max.Chen Sequencer: Fix regression where spawnables don't play because they're defined as temporary editor actors. #jira UE-48923 Change 3619789 by Matt.Kuhlenschmidt Fix DPI scale warnings in any kind of headless editor mode Change 3619802 by Jamie.Dale Fixed deprecation warning in malloc profiler Change 3619841 by Matt.Kuhlenschmidt Fix missing icons in the package project menu #jira UE-48674 Change 3619991 by Lauren.Ridge Fix typo in transaction message #jira UE-48993 Change 3620086 by Lauren.Ridge Moving realtime viewport logic to refresh instead of construct so it is always triggered upon opening a new material editor #jira UE-48884 Change 3620616 by Matt.Kuhlenschmidt Fix up file Change 3621002 by Matt.Kuhlenschmidt Back out change to apply scaling rules in loading screens since blueprint based DPI scaling rule classes will not have been created yet #jira UE-49125 Change 3621049 by Arciel.Rekman Fix a build error. - Also make sure that we don't print confusing message when no messagebox can be shown (this code changed during the merge). Change 3621064 by Arciel.Rekman Deleted too much in the previous changelist. Change 3621369 by Matt.Kuhlenschmidt Fix keybindings automation test failing due to multiple entries in the active choords array pointing to the same thing #jira UE-49131 [CL 3621569 by Matt Kuhlenschmidt in Main branch]
2017-08-31 21:51:42 -04:00
// query can be silently invalidated in GetRenderQueryResult
if (Query->bInvalidResource)
{
PlatformGetNewRenderQuery(&Query->Resource, &Query->ResourceContext);
Query->bInvalidResource = false;
}
FOpenGL::QueryTimestampCounter(Query->Resource);
}
}
}
static void GetRenderQueryResult(FOpenGLRenderQuery* Query)
{
VERIFY_GL_SCOPE();
if (Query->QueryType == RQT_AbsoluteTime)
{
FOpenGL::GetQueryObject(Query->Resource, FOpenGL::QM_Result, &Query->Result);
}
else
{
GLuint Result32 = 0;
FOpenGL::GetQueryObject(Query->Resource, FOpenGL::QM_Result, &Result32);
Query->Result = Result32 * (FOpenGL::SupportsExactOcclusionQueries() ? 1 : 500000); // half a mega pixel display
}
Query->bResultWasSuccess = true;
Query->TotalResults.Increment();
}
void FOpenGLDynamicRHI::GetRenderQueryResult_OnThisThread(FOpenGLRenderQuery* Query, bool bWait)
{
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue())
{
return;
}
check(Query->TotalResults.GetValue() + 1 == Query->TotalBegins.GetValue());
VERIFY_GL_SCOPE();
if (!Query->bInvalidResource && !PlatformContextIsCurrent(Query->ResourceContext))
{
PlatformReleaseRenderQuery(Query->Resource, Query->ResourceContext);
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3621452) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3567301 by Arciel.Rekman Linux: fix for importing failure when clicking shortcuts (UE-47932). - Slate dialog would return incorrect relative paths (not matching CWD) if Engine or Project shortcuts were used. #jira UE-47932 Change 3567687 by Arciel.Rekman Minor fixes to gdb pretty printers by icculus. Change 3568024 by Arciel.Rekman Made SDL_SetWindowInputFocus() wait until window is viewable (UE-33369). - Pull request #2608 contributed by Ereski. - Updated x86_64 lib only (anticipating more changes to SDL). #coderview Cengiz.Terzibas, Ryan.Gordon Change 3568173 by Max.Chen Movie Scene Capture: Delay on shot boundaries by setting the sequencer play rate to 0. This allows particles, TAA, and other effects to settle on the shot cuts. #jira UE-44598 Change 3568174 by Max.Chen Sequencer: Added option to rerun construction scripts on bound actors in the sequence every frame. #jira UE-31193 Change 3568331 by Matt.Kuhlenschmidt PR #3850: Add extensible source navigation service (Contributed by mhutch) Change 3568350 by Matt.Kuhlenschmidt PR #3851: Add argument to pass params to standalone play session (Contributed by mhutch) Change 3568387 by Matt.Kuhlenschmidt PR #3852: Add FEditorDelegates::BeginLocalPlay event (Contributed by mhutch) Change 3568541 by Arciel.Rekman Merged Icculus' patch for copy-paste (UE-40071). - Alas does not seem to fix inability to copy/paste between Output log and kate. - Updated x86_64 lib only (anticipating more changes). Change 3568547 by Arciel.Rekman Fix OpenGL queries reused after deletion. Change 3568790 by Matt.Kuhlenschmidt PR #3857: Loading screen widgets not scaled correctly (Contributed by projectgheist) Change 3568900 by Alexis.Matte Fix the fbx re-import factory handler to say failed in case there was no geometry to import. #jira UE-47506 Change 3568902 by Alexis.Matte Reduce memory footprint when importing large FBX scene PR #3834 #jira UE-47833 Change 3569061 by Arciel.Rekman Linux: remove unnecessary symbols for MSVC visualizers. - Reported by ASan as collision because they exist in each DSO. Change 3569782 by Cody.Albert Updated ImportAssets Commandlet help text to properly reflect supported features. Change 3569843 by Arciel.Rekman SDL: add logic to select headless EGL device. - SDL will try to guess which device is GPU using CUDA device id (can also be hinted explicitly). - Also fixes the problem of engine not starting on some drivers that don't support the necessary EGL extensions. Change 3570234 by Max.Chen Sequencer: Import FBX settings. Added settings to toggle force front x axis and whether to create cameras that don't already exist in the level. #jira UE-46754 Change 3570578 by Arciel.Rekman Linux: make FAnsiMalloc compatible with malloc()/free(). - Prerequisite for ASan. Also helps fringe cases when we have to use FAnsiMalloc. Change 3571015 by Alexis.Matte Issue warning when we found zero normal, tangent or binormal #jira UE-46419 Change 3571376 by Jamie.Dale Force a unique package localization ID when loading packages for diffing Change 3571412 by Jamie.Dale Removed unused setting Change 3571487 by Alexis.Matte fix speed tree import cancel workflow #jira UE-47482 Change 3571614 by Jamie.Dale Games now use the native culture of any of the game targets as the fallback (rather than always using English) This replaces the previously removed redundant setting from CL# 3571412 Change 3572649 by Jamie.Dale SavePackageHelper now always honors KeepObjectFlags Change 3572730 by Matt.Kuhlenschmidt Guard against crash in the details panel when there is a message in the queue and something scrolls into view when the list has been invalidated #jira UE-48037 Change 3572773 by Matt.Kuhlenschmidt Guard against high res screenshot crashing if the requested image size doesnt match the image data size #jira UE-47765 Change 3572813 by Michael.Trepka Workaround for a mysterious issue in Xcode 9 beta 3 and 4 which makes it generate -Wnullability-inferred-on-nested-type warnings/errors in MetalDebugCommandEncoder.h even though we tell Clang to ignore them in MacPlatformCompilerPreSetup.h Change 3573043 by Arciel.Rekman FAnsiMalloc: fix compile issue (UE-48066). #jira UE-48066 Change 3573236 by Arciel.Rekman Linux: add UnrealLightmass to the installed build. - Was also requested by a licensee on UDN. Change 3573705 by Arciel.Rekman SDL: update UE4 fork to the latest trunk (UETOOL-1242). - Revision 11184 form 2017-08-04: http://hg.libsdl.org/SDL/rev/04063928c4a8 - Change by icculus (Ryan Gordon). - Rebuilt x86_64 library only for now. Change 3573741 by Arciel.Rekman Fix crash when capturing a movie (UE-48093). #jira UE-48093 Change 3574389 by Max.Chen Sequencer: Array bounds check. #jira UE-48095 Change 3574399 by Max.Chen Sequencer: Fix crash in removing delegate #jira UE-47461 Change 3574415 by Max.Chen Sequencer: Put level visibility tracks in the SpawnObjects evaluation group to ensure levels are streamed before any possessable bindings are resolved Change 3574416 by Max.Chen Prevent slow task feedback from performing slow operations (flushing rendering commands, checking if shaders are initialized) when there are no modal dialogs open Change 3574726 by Matt.Kuhlenschmidt Focus the details view when actor selection changes if it is not focused Change 3574922 by Michael.Trepka Copy of CL 3574653 by Richard.Wallis XCode Beta 4 Compile fixes. "Inferring '_Nonnull' for pointer type within array is deprecated " Change 3576525 by Nick.Darnell Editor - Data table rows names sort correctly in the property customization. Blueprint - Fixing some crashes due to holding onto raw pointers instead of TWeakObjectPtrs. UMG - SetWidgetClass now reinstances the widget if you change it at runtime. Editor - Deleting actors that are still referenced now at least logs to the console what still references it. Change 3576714 by Nick.Darnell Editor - Build fix. Change 3576770 by Jamie.Dale Removed some dead code It seems to be left over from the first attempt at stable localization keys Change 3578433 by Matt.Kuhlenschmidt Fix content browser settings being per project and having created a "Global" category for one setting Change 3578556 by Max.Chen Editor: Fix toolbar shared ref which was keeping the viewport toolbar around when switching between default and cinematic viewports. #jira UE-48125 Change 3578561 by Matt.Kuhlenschmidt Fix USD importing not respecting DestinationPath for automated import Change 3580124 by Matt.Kuhlenschmidt Fix bogus warning message when a property has an editcondition that is not marked edit aynwhere. This has always been supported and is the correct way to make an editcondition Change 3581936 by Jamie.Dale Restoring defaults for UContentBrowserSettings Change 3582039 by Matt.Kuhlenschmidt High DPI mode changes - Editor viewport screen percentage is now adjusted automatically to account for DPI scaling. By default the scene will be rendered at a lower resolution based on screen percentage calculated based on 100/DPIScale. Users can override this automatic calcuation in the performance options if desired. - DPI awareness is only set on windows in the editor now (still disabled by default) - Fixed hit proxy calculation not working properly with screen percentage - Developers can now register a delegate with SlateApplication to tell when a window's DPI changes Change 3582049 by Matt.Kuhlenschmidt Fix color picker not properly converting FColor properties back to gamma space Change 3582054 by Matt.Kuhlenschmidt Fix mac menus updating during unsafe times such as modal windows and slow tasks #jira UE-47874 Change 3582084 by Jamie.Dale Make sure to update the rendering resources for the active world if reloading its map build data This prevents a crash in the renderer due to it holding onto stale data Change 3582257 by Matt.Kuhlenschmidt Fix widget component spawning widgets on cook #jira UE-48201 Change 3582655 by Matt.Kuhlenschmidt Fix DPI scale not being accounted for when entering immersive. Change 3582706 by Matt.Kuhlenschmidt Fix automation tests Change 3582728 by Matt.Kuhlenschmidt Turn on high dpi by default for windows editor Change 3582732 by Matt.Kuhlenschmidt Turn on high DPI by default for mac editor Change 3583112 by Max.Chen Sequencer: Add OnPlayReverse() event for when playback is in reverse Change 3584130 by Matt.Kuhlenschmidt PR #3897: Git plugin: fix action icon in history window (Contributed by SRombauts) Change 3584237 by Matt.Kuhlenschmidt Added the beginnings of a way to extend the usd importer with a custom resolver class that optionally handles prim identification and mesh and actor spawning. Added a test resolver that handles prims based on usd "kind" metadata. Change 3584535 by Matt.Kuhlenschmidt Fix LOD identification in USD files Change 3587703 by Matt.Kuhlenschmidt Fix tooltip Change 3587901 by Matt.Kuhlenschmidt Fixed USD importing not finding and importing LODs properly Change 3588380 by Matt.Kuhlenschmidt Fix ctrl+w not duplicating on mac #jira UE-46573 Change 3590435 by Jamie.Dale Added support for in-editor previews of localized game text This is configured by the "Preview Game Culture" setting, and will automatically be active when PIE is running (the preview language is also passed to any standalone games that are launched via the editor). This preview can also be used in the UMG editor to preview widgets in different languages. While a preview is running, all editable FText fields are locked-down (read-only) to prevent accidentally clobbering source data with translation data. You can also use this new lock-down feature to prevent any localization changes in your project (set "LockLocalization" to "True" under the "Internationalization" section of either your DefaultGame or DefaultEngine INI). In order to allow the game translations to be used in the editor, we now map the translation to any package localization ID variants when the LocRes data is loaded (or when looking up a specific piece of text). This is needed as the LocRes files only ever contain the "clean" versions of the IDs (without the package localization ID the editor uses), and also means that we no longer need to gather the "editor-only" variants of the text within assets. Change 3592131 by Matt.Kuhlenschmidt Log for newly converted actors being pending kill #jira UE-47464 Change 3592200 by Matt.Kuhlenschmidt Made the class viewer menu function properly on mac. Since it as a nomad tab it wasnt properly inserting itself into the top level menu on mac nor should it since it could be docked anywhere. The filters menu is now consistent with other filters menus Change 3592227 by Matt.Kuhlenschmidt Fix drag drop of actors being offset with high dpi monitors. Change 3592719 by Bradut.Palas #jira UE-45632 - dual key bindings feature My approach was transforming the ActiveChord and DefaultChord into arrays and accessing them through an enum class called EMultipleKeyBindingIndex. A lot of connecting code, function prototypes, and data structures had to be changed to accomodate this. Most menus and tooltip texts are generated using the first valid active shortcut. Change 3592793 by Bradut.Palas Fix compile warnings for InputBindingManager (there were actually hidden bugs among them) Change 3593128 by Matt.Kuhlenschmidt Force low quality mode for background blurs by default on android Change 3593579 by Michael.Dupuis #jira UE-47223 : If we have no world simply return null when GetLandscapeInfo is called Handle the cases in PostEditChange to handle null returned from GetLandscapeInfo Change 3593580 by Michael.Dupuis Added missing shaders while generating thumbnails Change 3593582 by Michael.Dupuis #jira UE-47492 : Make sure LayerInfo is valid before accessing data Change 3593584 by Michael.Dupuis #jira UE-47253: Do not recreate the scene info in simulation mode Change 3593585 by Michael.Dupuis #jira UE-48484: no longer mark the package dirty while generating the GrassMap if they were not existing Change 3593586 by Michael.Dupuis #jira UE-48483 : hide the Rendering property group so user can't by mistake change the actor visibility Change 3593593 by Michael.Dupuis #jira UE-48327: Added guard to prevent crash when using CVarFoliageDiscardDataOnLoad and having invalid foliage in your map Change 3593597 by Michael.Dupuis #jira UE-48309: Do not build the tree if the static mesh is not even loaded yet #jira UE-48340: Properly support the Random stream and partial buffer update #jira UE-48228: Instance from blueprint are now visible in standalone game #jira UE-45854: Crash probably linked to post load called on not loaded static mesh #jira UE-48035: Properly init the per instance render data when creating a new component Only update instance in non archetype or CDO. Change 3594060 by Matt.Kuhlenschmidt Fix high DPI mode being set for non-editor. Also prevent possible crashes due to dll handle for high DPI method being freed before called Change 3594355 by Matt.Kuhlenschmidt Change API help link to point to a website since offline CHM based docs are no longer used #jira UE-48230 Change 3595358 by Matt.Kuhlenschmidt Fixed bad initial window position and sizes for editor windows By default SWindow.ClientSize will assume unscaled window size and will scale it based on DPI as needed. AdjustInitialSizeAndPositionForDPIScale argument can be used to disable this if needed Fixed a dock tabs and the main frame not taking into account dpi scale when saving their layout. Now we always save window size at 1.0 scale and auto scale it based on DPI of the monitor it opens on. #jira UE-48446 Change 3595590 by Matt.Kuhlenschmidt Fix missing includes Change 3595792 by Matt.Kuhlenschmidt Fix style warnings Change 3596418 by Bradut.Palas fixing initial issue with dual keybinds (removed ensure macro to speedup first use of alternate key) Change 3598679 by Max.Chen PR #3872: Fix small typo in ImagePlate Plugin (Contributed by TheCodez) #jira UE-48141 Change 3598720 by Max.Chen Cine Camera: Add toggle to disable constraining the roll when look at tracking is enabled. This allows the user to animate the roll while tracking an object. #jira UE-48316 Change 3600236 by Alexis.Matte Create a LOD Custom Mode in the meshes editor UI. This allow user to compare details values between LODs #jira UE-46822 Change 3600260 by Alexis.Matte Make sure temporary rename do not create redirector #jira UE-48364 Change 3600671 by Lauren.Ridge PR #3913: Fixed 3D preview issue in the material editor (Contributed by YuchenMei) #jira UE-48539 #jira UE-48180 #jira UE-48182 Change 3600812 by Jamie.Dale We now defer the registration of IME contexts until an editable text first gains focus Certain IMEs can have very high per-context costs, so this avoids that cost until we know that we definitely need to use the context #jira UE-48100 Change 3601839 by Matt.Kuhlenschmidt Fix USD import crash with "facevarying" normals Change 3602434 by Jamie.Dale Removing dead code These flags were never being tested or used in any meaningul way Change 3602611 by Jamie.Dale Ensure PackageToReload is non-null #jira UE-46655 Change 3602648 by Jamie.Dale Fixed custom columns with the same name as fixed columns causing infinite duplications in the content browser #jira UE-47392 Change 3602651 by Lauren.Ridge Fix for parameter tooltips not being found #jira UE-47417 Change 3604172 by Bradut.Palas #jira UE-48449 #jira UE-48380 #jira UE-48381 #jira UE-48423 I moved the IsFilenameValidForSaving() function from FEditorFileUtils to FFileHelper so that it is accessible from CollectionManager.cpp in order to validate collection names as file names and no longer trigger any of the bugs. Change 3604210 by Bradut.Palas #jira UE-48718 Regression issue appeared from fixing a crash when using console command "open" Reworked by only refusing to open local URLs in case of client mode and multiprocess being active simultaneously. Change 3604258 by Jamie.Dale IME contexts can now flag themselves as dead to avoid latent IME callbacks trying to access a deleted widget #jira UE-46815 #jira UE-47295 Change 3604312 by Matt.Kuhlenschmidt PR #3931: Fixing a few obvious copy & paste errors. (Contributed by DaveC79) Change 3604352 by Matt.Kuhlenschmidt Fix crash accessing potentially invalid parent layout from a detail category #jira UE-48729 Change 3604402 by Lauren.Ridge Epic Friday - array drag and drop Change 3605228 by Cody.Albert TSets and TMaps should now properly rehash if a key is modified in the details panel. Change 3605275 by Alexis.Matte Merge actor do not keep the material slot name #jira UE-43246 Change 3605715 by Max.Chen Sequencer: Fix cinematic mode getting activated on BeginPlay() instead of OnStartedPlaying(). #jira UE-48770 Change 3606411 by Max.Chen Sequencer: Fix a few player state issues. When paused, calling stop now tears down properly (spawnables are removed, etc). When a level sequence is deleted, tears down properly as well. #jira UE-42008 Change 3606440 by Max.Chen Sequencer: Update spawanble name when the spawnable actor name is changed. #jira UE-47815 Change 3606899 by Lauren.Ridge Disabling enum-based arrays from reordering Change 3606958 by Lauren.Ridge Visual polish on array handles Change 3607733 by Max.Chen Sequencer: Check null in camera cut Change 3607849 by Max.Chen Sequencer: Clip transport controls. #jira UE-48812 Change 3608181 by Max.Chen #jira UE-48813 Correctly set GPlayInEditorID when initializing the PIE gameinstance, which does the initial tick. This fixes autoplay sequences Copy from Dev-Framework Change 3608361 by christopher.biancard QAGame: Submitting test content for Array Element Reorder testing Change 3608512 by Alexis.Matte Add fbx exporter option dialog, support export all and cancel all functionality when doing bulk export. #jira UE-48058 Change 3608629 by Max.Chen Camera Rig: Fix crane and rail not being packaged properly. #jira UE-48829 Change 3609217 by Matt.Kuhlenschmidt Added a lock around access to slate active timers to protect it against race conditions when accessed on the slate movie thread and the game thread Change 3609722 by Alexis.Matte Make sure a warning is log when we cannot export an animation sequence. #jira UE-48390 Change 3609774 by Alexis.Matte Fix the merge actor build LOD scale again, a previous merge erase the fix #jira UE-48156 Change 3609891 by christopher.biancard QAGame: Minor additions for test coverage on Array Element Reorder Change 3610171 by Lauren.Ridge Fixes for reordering metadata, creating actual swap function out of three element functions #jira UE-48823 Change 3610407 by Lauren.Ridge Fixing highlighting and behavior to place dragged row in the spot you release (not below) Change 3610472 by Lauren.Ridge Moving final location logic Change 3610797 by Lauren.Ridge Disabling dragging handles during PIE Change 3611089 by Lauren.Ridge Disabling handles when overall tree is disabled Change 3612479 by Lauren.Ridge Fix for asset contex menu warning #jira UE-46667 Change 3612791 by Michael.Dupuis #jira UE-48914 : Add the possibility to specify if we need CPU access to the instance buffer depending on the usage. Grass should always have CPU access. Change 3612802 by Michael.Dupuis missing file from checkin 3612791 Change 3612805 by Max.Chen Sequencer: Fix crash with null GEditor Copy from Release-4.17 #jira UE-48443 Change 3612806 by Max.Chen Sequencer: Fix crash when capturing a movie with options enabling separate process and close editor. Copy from Release-4.17 #jira UE-48487 Change 3612807 by Max.Chen Sequencer: Fix crash upgrading the time range of a null track. Copy from Release-4.17 #jira UE-48490 Change 3612808 by Max.Chen Sequencer: Fixed dragging skeletal animations causing them to revert back to t-pose Copy from Release-4.17 #jira UE-48367 Change 3612849 by Arciel.Rekman Fix tesselation in packaged Linux projects (UE-24301). - Change by Cengiz.Terzibas. #jira UE-24301 Change 3613022 by Nick.Darnell Editor - Fixing a crash on load with a null CoordIndex json node. Change 3613030 by Matt.Kuhlenschmidt PR #3932: UE-48693: if instead of while statement (Contributed by projectgheist) #jira UE-48747 Change 3613047 by Matt.Kuhlenschmidt PR #3933: Git plugin: add "branch source" in history window (Contributed by SRombauts) Change 3613050 by Matt.Kuhlenschmidt PR #3942: Sort Data Table Structures Alphabetically (Contributed by Nick-Pearson) Change 3613062 by Matt.Kuhlenschmidt PR #3939: Fix a typo in RecordQualityLevelsAnalytics(). (Contributed by samhocevar) Change 3613241 by Nick.Darnell Editor - Fixing the content browser's view settings to be project agnostic, and they will start saving again. Change 3613329 by Lauren.Ridge Moving favorite levels to a standard submenu so they also work on Mac Change 3613344 by Nick.Darnell Editor - Fixing the achorgrid show up as white in HDPI mode, seems because we were upsampling the image, the blend was between dark and a transparent white, so that caused everything to turn white in HDPI mode. #jira UE-48921 Change 3613380 by Matt.Kuhlenschmidt Fix FBX window being off the screen in high DPI #jira UE-48872 Change 3614598 by Matt.Kuhlenschmidt Fixed Sequencer Keyframes appearing out of place on High DPI Monitors #jira UE-48915 Change 3614625 by Matt.Kuhlenschmidt Fixed not being able to click on BSP correctly in high dpi #jira UE-48947 Change 3614672 by Matt.Kuhlenschmidt Fix combo box windows being larger than necessary on high dpi monitors #jira UE-48908 Change 3614699 by Matt.Kuhlenschmidt Fix typo #jira UE-48941 Change 3615011 by Matt.Kuhlenschmidt Fix color picker calculation appearing offscreen for high dpi Change 3615013 by Michael.Dupuis #jira UE-48897: Properly rebuild the tree when reapplying instance to the component Change 3615014 by Colin.Benoit Sequencer Recorder test content Change 3615048 by Colin.Benoit Sequencer Recorder: more test content Change 3615118 by Lauren.Ridge Updating realtime state of viewports to also change when settings toggled #jira UE-48884 Change 3615127 by Lauren.Ridge Remove delegate binding on viewport destruction Change 3615180 by Bradut.Palas #jira UE-48167 profiler crash Don't duplicate the graph data when rebuilding because that completely voids the OneToOneMapping mechanism, resulting in the crash. Looking up objects in the mapping would always return null because the mapping contains the old addresses, before the rebuild. One option would have been to completely rebuild the mapping according to the duplicate graph, which would be dubious because the duplicate method isn't specifically designed so that the result would replace the source. But it looks like duplicating the data is not needed, it's safe to rebuild in-place, RebuildForFilter() doesn't do anything illegal with the objects. This is also the only purpose and the only reference of the function. Change 3615232 by Lauren.Ridge Adding input handling to the material editor viewport client #jira UE-48909 Change 3615703 by Jamie.Dale Fixed crash when fixing up references after a package rename failed #jira UE-48856 Change 3615752 by Matt.Kuhlenschmidt More generic fix for color picker and other windows that use CalculatePopupWindowPostion not accounting for DPI scale Change 3615907 by Jamie.Dale Fixed some crashes caused by CL# 3600812 Change 3616031 by Matt.Kuhlenschmidt Added guard against invalid blueprints (ones without a generated class) being trying to be opened in the property matrix and failing #jira UE-48986 Change 3616151 by Arciel.Rekman Fixing adding array elements in config. - "+Blah=Foo" will do Blah.AddUnique(Foo) - ".Blah=Foo" will do Blah.Add(Foo) - See JoshA re: why (also see: https://udn.unrealengine.com/questions/388157/incorrect-behavior-in-configcacheinicpp.html?childToView=389307) Change 3616439 by Andrew.Porter QAGame: Updating level visibility content in sequencer smoke map Change 3616441 by Matt.Kuhlenschmidt Fix more sequencer track offsetting with DPI scale #jira UE-48981 Change 3617263 by Max.Chen Sequencer: Fix crash in level visibility teardown. Null playback context. #jira UE-49012 Change 3617316 by Max.Chen Sequencer: Fixed a regression where the frame rate isn't getting initialized for a movie scene. Change 3617648 by Matt.Kuhlenschmidt Adding some windows specific logging around setting or failing to set process dpi awareness Change 3617665 by Matt.Kuhlenschmidt Guard against layers module not being loaded in keybinding automation test Change 3617731 by Arciel.Rekman Fix crashes on AMD Mesa drivers (UE-48374). - Do not expose unnecessary symbols from libelf.a to avoid symbol collision with system library used by drivers. Change 3617923 by Bradut.Palas #jira UE-47072 Editor was crashing because deleted actor was not cleaned properly from asset editors. Changed IAssetEditorInstance to offer a function for deleting an object from the editor. Change 3618088 by Matt.Kuhlenschmidt Guard against crash with potentially invalid worlds in preview scenes #jira UE-48997 Change 3618373 by Matt.Kuhlenschmidt Force worldsettings to be hidden in editor so that it is not considered for selection #jira UE-48996 Change 3618464 by Max.Chen Sequencer: Fix regression where spawnables don't play because they're defined as temporary editor actors. #jira UE-48923 Change 3619789 by Matt.Kuhlenschmidt Fix DPI scale warnings in any kind of headless editor mode Change 3619802 by Jamie.Dale Fixed deprecation warning in malloc profiler Change 3619841 by Matt.Kuhlenschmidt Fix missing icons in the package project menu #jira UE-48674 Change 3619991 by Lauren.Ridge Fix typo in transaction message #jira UE-48993 Change 3620086 by Lauren.Ridge Moving realtime viewport logic to refresh instead of construct so it is always triggered upon opening a new material editor #jira UE-48884 Change 3620616 by Matt.Kuhlenschmidt Fix up file Change 3621002 by Matt.Kuhlenschmidt Back out change to apply scaling rules in loading screens since blueprint based DPI scaling rule classes will not have been created yet #jira UE-49125 Change 3621049 by Arciel.Rekman Fix a build error. - Also make sure that we don't print confusing message when no messagebox can be shown (this code changed during the merge). Change 3621064 by Arciel.Rekman Deleted too much in the previous changelist. Change 3621369 by Matt.Kuhlenschmidt Fix keybindings automation test failing due to multiple entries in the active choords array pointing to the same thing #jira UE-49131 [CL 3621569 by Matt Kuhlenschmidt in Main branch]
2017-08-31 21:51:42 -04:00
Query->Resource = 0;
Query->bInvalidResource = true;
}
// Check if the query is valid first
if (Query->bInvalidResource)
{
Query->Result = 0;
Query->TotalResults.Increment();
}
else
{
// Check if the query is finished
GLuint Result = 0;
FOpenGL::GetQueryObject(Query->Resource, FOpenGL::QM_ResultAvailable, &Result);
if (Result == GL_TRUE)
{
GetRenderQueryResult(Query);
}
else if (bWait) // Isn't the query finished yet, and can we wait for it?
{
SCOPE_CYCLE_COUNTER(STAT_RenderQueryResultTime);
uint32 IdleStart = FPlatformTime::Cycles();
GBatcher.Waited();
if (GOpenGLPollRenderQueryResult == 0)
{
// block in the driver waiting for result
GetRenderQueryResult(Query);
}
else
{
// poll result until it's ready
double StartTime = FPlatformTime::Seconds();
do
{
FPlatformProcess::Sleep(0); // yield to other threads - some of them may be OpenGL driver's and we'd be starving them
if (Query->bInvalidResource)
{
// Query got invalidated while we were sleeping.
// Bail out, no sense to wait and generate OpenGL errors,
// we're in a new OpenGL context that knows nothing about us.
Query->Result = 1000; // safe value
Result = GL_FALSE;
bWait = false;
Query->bResultWasSuccess = true;
break;
}
FOpenGL::GetQueryObject(Query->Resource, FOpenGL::QM_ResultAvailable, &Result);
// timer queries are used for Benchmarks which can stall a bit more
double TimeoutValue = (Query->QueryType == RQT_AbsoluteTime) ? 2.0 : 0.5;
if ((FPlatformTime::Seconds() - StartTime) > TimeoutValue)
{
UE_LOG(LogRHI, Log, TEXT("Timed out while waiting for GPU to catch up. (%.1f s)"), TimeoutValue);
break;
}
} while (Result == GL_FALSE);
if (Result == GL_TRUE)
{
GetRenderQueryResult(Query);
}
else
{
Query->Result = 0;
Query->TotalResults.Increment();
}
}
uint32 ThisCycles = FPlatformTime::Cycles() - IdleStart;
if (IsInRHIThread())
{
GWorkingRHIThreadStallTime += ThisCycles;
}
else
{
GRenderThreadIdle[ERenderThreadIdleTypes::WaitingForGPUQuery] += ThisCycles;
GRenderThreadNumIdle[ERenderThreadIdleTypes::WaitingForGPUQuery]++;
}
}
}
}
class FPollQueriesRHIThreadTask
{
FOpenGLRenderQuery* Query;
FOpenGLDynamicRHI* RHI;
bool bWait;
public:
FPollQueriesRHIThreadTask(FOpenGLRenderQuery* InQuery, FOpenGLDynamicRHI* InRHI, bool bInWait)
: Query(InQuery)
, RHI(InRHI)
, bWait(bInWait)
{
}
FORCEINLINE TStatId GetStatId() const
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FPollQueriesRHIThreadTask, STATGROUP_TaskGraphTasks);
}
ENamedThreads::Type GetDesiredThread()
{
return ENamedThreads::SetTaskPriority(ENamedThreads::RHIThread, ENamedThreads::HighTaskPriority);
}
static ESubsequentsMode::Type GetSubsequentsMode() { return ESubsequentsMode::TrackSubsequents; }
void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent)
{
FTaskTagScope TagScope(ETaskTag::ERhiThread);
check(IsRunningRHIInDedicatedThread() && IsInRHIThread()); // this should never be used on a platform that doesn't support the RHI thread, and it can't quite work when running the RHI stuff on task threads
if (bWait)
{
RHI->GetRenderQueryResult_OnThisThread(Query, true); // we must get this one if bWait is true;
RHI->RHIPollOcclusionQueries(); // finish any other ones, but don't wait
}
else
{
RHI->GetRenderQueryResult_OnThisThread(Query, false);
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue())
{
RHI->RHIPollOcclusionQueries(); // If the target query was ready, then go ahead and scan to see what else is ready.
}
}
}
};
bool FOpenGLDynamicRHI::RHIGetRenderQueryResult(FRHIRenderQuery* QueryRHI, uint64& OutResult, bool bWait, uint32 GPUIndex)
{
check(IsInRenderingThread() || IsInRHIThread());
FOpenGLRenderQuery* Query = ResourceCast(QueryRHI);
if (!Query)
{
// If timer queries are unsupported, just make sure that OutResult does not contain any random values.
OutResult = 0;
return false;
}
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
const bool bCanRunOnThisThread = RHICmdList.Bypass() || (!IsRunningRHIInSeparateThread() && IsInRenderingThread()) || IsInRHIThread();
if (Query->TotalResults.GetValue() != Query->TotalBegins.GetValue())
{
if (bCanRunOnThisThread)
{
GetRenderQueryResult_OnThisThread(Query, bWait);
}
else
{
if (bWait)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_WaitForRHIThreadOcclusionReadback);
if (IsRunningRHIInDedicatedThread())
{
// send a command that will wait, so if the RHIT runs out of work, it just blocks and waits for the GPU
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {GetRenderQueryResult_OnThisThread(ResourceCast(QueryRHI), true); });
FGraphEventRef Done = RHICmdList.RHIThreadFence(false);
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {GBatcher.Flush(*this, QueryRHI); });
RHICmdList.ImmediateFlush(EImmediateFlushType::DispatchToRHIThread);
while (!Done->IsComplete())
{
FGraphEventRef RHITask = TGraphTask<FPollQueriesRHIThreadTask>::CreateTask().ConstructAndDispatchWhenReady(ResourceCast(QueryRHI), this, false);
FTaskGraphInterface::Get().WaitUntilTaskCompletes(RHITask);
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue())
{
break;
}
// We want to keep the RHIT working, but we want keep checking between command lists so that we can get the results as soon as the GPU has them
// this isn't really a spin, the ping-pong between threads will not consume CPU (usually a bad thing, not here).
}
}
else
{
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {GetRenderQueryResult_OnThisThread(ResourceCast(QueryRHI), true); });
FGraphEventRef Done = RHICmdList.RHIThreadFence(false);
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {GBatcher.Flush(*this, QueryRHI); });
RHICmdList.ImmediateFlush(EImmediateFlushType::DispatchToRHIThread);
FRHICommandListExecutor::WaitOnRHIThreadFence(Done);
}
check(Query->TotalResults.GetValue() == Query->TotalBegins.GetValue());
}
else
{
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {GetRenderQueryResult_OnThisThread(ResourceCast(QueryRHI), false); GBatcher.Flush(*this, QueryRHI); });
}
}
}
if (Query->TotalResults.GetValue() == Query->TotalBegins.GetValue() && Query->bResultWasSuccess)
{
if (Query->QueryType == RQT_AbsoluteTime)
{
// GetTimingFrequency is the number of ticks per second
uint64 Div = FMath::Max(1llu, FOpenGLBufferedGPUTiming::GetTimingFrequency() / (1000 * 1000));
// convert from GPU specific timestamp to micro sec (1 / 1 000 000 s) which seems a reasonable resolution
OutResult = Query->Result / Div;
}
else
{
OutResult = Query->Result;
}
return true;
}
OutResult = 0;
return false;
}
FRenderQueryPoolRHIRef FOpenGLDynamicRHI::RHICreateRenderQueryPool(ERenderQueryType QueryType, uint32 /*NumQueries*/)
{
// Workaround to fix UE-77873: pass <QueryType> to primary implementation and ignore <NumQueries> for pre-allocated queries
return FDynamicRHI::RHICreateRenderQueryPool(QueryType);
}
extern void OnQueryCreation( FOpenGLRenderQuery* Query );
extern void OnQueryDeletion( FOpenGLRenderQuery* Query );
FOpenGLRenderQuery::FOpenGLRenderQuery(ERenderQueryType InQueryType)
: Result(0)
, bInvalidResource(true)
, QueryType(InQueryType)
{
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
const bool bCanRunOnThisThread = RHICmdList.Bypass() || (!IsRunningRHIInSeparateThread() && IsInRenderingThread()) || IsInRHIThread();
if (bCanRunOnThisThread)
{
AcquireResource();
}
else
{
CreationFence.Reset();
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([=]() {AcquireResource(); CreationFence.WriteAssertFence(); });
CreationFence.SetRHIThreadFence();
}
}
FOpenGLRenderQuery::~FOpenGLRenderQuery()
{
OnQueryDeletion( this );
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
const bool bCanRunOnThisThread = RHICmdList.Bypass() || (!IsRunningRHIInSeparateThread() && IsInRenderingThread()) || IsInRHIThread();
if (Resource && !bInvalidResource)
{
bInvalidResource = true;
if (bCanRunOnThisThread)
{
ReleaseResource(Resource, ResourceContext);
}
else
{
CreationFence.WaitFenceRenderThreadOnly();
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)([Resource = Resource, ResourceContext = ResourceContext]() {VERIFY_GL_SCOPE(); ReleaseResource(Resource, ResourceContext); });
}
}
}
void FOpenGLRenderQuery::AcquireResource()
{
VERIFY_GL_SCOPE();
bInvalidResource = false;
PlatformGetNewRenderQuery(&Resource, &ResourceContext);
OnQueryCreation(this);
}
void FOpenGLRenderQuery::ReleaseResource(GLuint Resource, uint64 ResourceContext)
{
VERIFY_GL_SCOPE();
check(Resource);
PlatformReleaseRenderQuery(Resource, ResourceContext);
}
void FOpenGLEventQuery::IssueEvent()
{
VERIFY_GL_SCOPE();
if(Sync)
{
FOpenGL::DeleteSync(Sync);
Sync = UGLsync();
}
Sync = FOpenGL::FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
FOpenGL::Flush();
checkSlow(FOpenGL::IsSync(Sync));
}
void FOpenGLEventQuery::WaitForCompletion()
{
VERIFY_GL_SCOPE();
QUICK_SCOPE_CYCLE_COUNTER(STAT_FOpenGLEventQuery_WaitForCompletion);
checkSlow(FOpenGL::IsSync(Sync));
// Wait up to 1/2 second for sync execution
FOpenGL::EFenceResult Status = FOpenGL::ClientWaitSync( Sync, 0, 500*1000*1000);
switch (Status)
{
case FOpenGL::FR_AlreadySignaled:
case FOpenGL::FR_ConditionSatisfied:
break;
case FOpenGL::FR_TimeoutExpired:
UE_LOG(LogRHI, Log, TEXT("Timed out while waiting for GPU to catch up. (500 ms)"));
break;
case FOpenGL::FR_WaitFailed:
UE_LOG(LogRHI, Log, TEXT("Wait on GPU failed in driver"));
break;
default:
UE_LOG(LogRHI, Log, TEXT("Unknown error while waiting on GPU"));
check(0);
break;
}
}
FOpenGLEventQuery::FOpenGLEventQuery()
{
VERIFY_GL_SCOPE();
// Initialize the query by issuing an initial event.
IssueEvent();
check(FOpenGL::IsSync(Sync));
}
FOpenGLEventQuery::~FOpenGLEventQuery()
{
VERIFY_GL_SCOPE();
FOpenGL::DeleteSync(Sync);
}
/*=============================================================================
* class FOpenGLBufferedGPUTiming
*=============================================================================*/
/**
* Constructor.
*
* @param InOpenGLRHI RHI interface
* @param InBufferSize Number of buffered measurements
*/
FOpenGLBufferedGPUTiming::FOpenGLBufferedGPUTiming( FOpenGLDynamicRHI* InOpenGLRHI, int32 InBufferSize )
: OpenGLRHI( InOpenGLRHI )
, BufferSize( InBufferSize )
, CurrentTimestamp( -1 )
, NumIssuedTimestamps( 0 )
, bIsTiming( false )
{
}
/**
* Initializes the static variables, if necessary.
*/
void FOpenGLBufferedGPUTiming::PlatformStaticInitialize(void* UserData)
{
// Are the static variables initialized?
if ( !GAreGlobalsInitialized )
{
GIsSupported = FOpenGL::SupportsTimestampQueries();
SetTimingFrequency(1000 * 1000 * 1000);
GAreGlobalsInitialized = true;
}
}
/**
* Initializes all OpenGL resources and if necessary, the static variables.
*/
static TArray<FOpenGLRenderQuery*> TimerQueryPool;
static FOpenGLRenderQuery* GetTimeQuery()
{
if (TimerQueryPool.Num())
{
return TimerQueryPool.Pop();
}
return new FOpenGLRenderQuery(RQT_AbsoluteTime);
}
void FOpenGLBufferedGPUTiming::InitResources()
{
VERIFY_GL_SCOPE();
StaticInitialize(OpenGLRHI, PlatformStaticInitialize);
CurrentTimestamp = 0;
NumIssuedTimestamps = 0;
bIsTiming = false;
GIsSupported = FOpenGL::SupportsTimestampQueries();
if ( GIsSupported )
{
StartTimestamps.Reserve(BufferSize);
EndTimestamps.Reserve(BufferSize);
for(int32 BufferIndex = 0; BufferIndex < BufferSize; ++BufferIndex)
{
StartTimestamps.Add(GetTimeQuery());
EndTimestamps.Add(GetTimeQuery());
}
}
}
/**
* Releases all OpenGL resources.
*/
void FOpenGLBufferedGPUTiming::ReleaseResources()
{
VERIFY_GL_SCOPE();
for(FOpenGLRenderQuery* Query : StartTimestamps)
{
TimerQueryPool.Add(Query);
}
for(FOpenGLRenderQuery* Query : EndTimestamps)
{
TimerQueryPool.Add(Query);
}
StartTimestamps.Reset();
EndTimestamps.Reset();
}
/**
* Start a GPU timing measurement.
*/
void FOpenGLBufferedGPUTiming::StartTiming()
{
VERIFY_GL_SCOPE();
// Issue a timestamp query for the 'start' time.
if ( GIsSupported && !bIsTiming )
{
int32 NewTimestampIndex = (CurrentTimestamp + 1) % BufferSize;
FOpenGLRenderQuery* TimerQuery = StartTimestamps[NewTimestampIndex];
{
if (!TimerQuery->bInvalidResource && !PlatformContextIsCurrent(TimerQuery->ResourceContext))
{
PlatformReleaseRenderQuery(TimerQuery->Resource, TimerQuery->ResourceContext);
TimerQuery->bInvalidResource = true;
}
if (TimerQuery->bInvalidResource)
{
PlatformGetNewRenderQuery(&TimerQuery->Resource, &TimerQuery->ResourceContext);
TimerQuery->bInvalidResource = false;
}
}
FOpenGL::QueryTimestampCounter(StartTimestamps[NewTimestampIndex]->Resource);
CurrentTimestamp = NewTimestampIndex;
bIsTiming = true;
}
}
/**
* End a GPU timing measurement.
* The timing for this particular measurement will be resolved at a later time by the GPU.
*/
void FOpenGLBufferedGPUTiming::EndTiming()
{
VERIFY_GL_SCOPE();
// Issue a timestamp query for the 'end' time.
if ( GIsSupported && bIsTiming )
{
checkSlow( CurrentTimestamp >= 0 && CurrentTimestamp < BufferSize );
FOpenGLRenderQuery* TimerQuery = EndTimestamps[CurrentTimestamp];
{
if (!TimerQuery->bInvalidResource && !PlatformContextIsCurrent(TimerQuery->ResourceContext))
{
PlatformReleaseRenderQuery(TimerQuery->Resource, TimerQuery->ResourceContext);
TimerQuery->bInvalidResource = true;
}
if (TimerQuery->bInvalidResource && PlatformOpenGLContextValid())
{
PlatformGetNewRenderQuery(&TimerQuery->Resource, &TimerQuery->ResourceContext);
TimerQuery->bInvalidResource = false;
}
}
FOpenGL::QueryTimestampCounter(EndTimestamps[CurrentTimestamp]->Resource);
NumIssuedTimestamps = FMath::Min<int32>(NumIssuedTimestamps + 1, BufferSize);
bIsTiming = false;
}
}
/**
* Retrieves the most recently resolved timing measurement.
* The unit is the same as for FPlatformTime::Cycles(). Returns 0 if there are no resolved measurements.
*
* @return Value of the most recently resolved timing, or 0 if no measurements have been resolved by the GPU yet.
*/
uint64 FOpenGLBufferedGPUTiming::GetTiming(bool bGetCurrentResultsAndBlock)
{
VERIFY_GL_SCOPE();
if ( GIsSupported )
{
checkSlow( CurrentTimestamp >= 0 && CurrentTimestamp < BufferSize );
GLuint64 StartTime, EndTime;
int32 TimestampIndex = CurrentTimestamp;
{
FOpenGLRenderQuery* EndStamp = EndTimestamps[TimestampIndex];
if (!EndStamp->bInvalidResource && !PlatformContextIsCurrent(EndStamp->ResourceContext))
{
PlatformReleaseRenderQuery(EndStamp->Resource, EndStamp->ResourceContext);
EndStamp->bInvalidResource = true;
}
FOpenGLRenderQuery* StartStamp = StartTimestamps[TimestampIndex];
if (!StartStamp->bInvalidResource && !PlatformContextIsCurrent(StartStamp->ResourceContext))
{
PlatformReleaseRenderQuery(StartStamp->Resource, StartStamp->ResourceContext);
StartStamp->bInvalidResource = true;
}
if(StartStamp->bInvalidResource || EndStamp->bInvalidResource)
{
UE_LOG(LogRHI, Log, TEXT("timing invalid, since the stamp queries have invalid resources"));
return 0.0f;
}
}
if (!bGetCurrentResultsAndBlock)
{
// Quickly check the most recent measurements to see if any of them has been resolved. Do not flush these queries.
for ( int32 IssueIndex = 1; IssueIndex < NumIssuedTimestamps; ++IssueIndex )
{
GLuint EndAvailable = GL_FALSE;
FOpenGL::GetQueryObject(EndTimestamps[TimestampIndex]->Resource, FOpenGL::QM_ResultAvailable, &EndAvailable);
if ( EndAvailable == GL_TRUE )
{
GLuint StartAvailable = GL_FALSE;
FOpenGL::GetQueryObject(StartTimestamps[TimestampIndex]->Resource, FOpenGL::QM_ResultAvailable, &StartAvailable);
if(StartAvailable == GL_TRUE)
{
FOpenGL::GetQueryObject(EndTimestamps[TimestampIndex]->Resource, FOpenGL::QM_Result, &EndTime);
FOpenGL::GetQueryObject(StartTimestamps[TimestampIndex]->Resource, FOpenGL::QM_Result, &StartTime);
if (EndTime > StartTime)
{
return EndTime - StartTime;
}
}
}
TimestampIndex = (TimestampIndex + BufferSize - 1) % BufferSize;
}
}
if ( NumIssuedTimestamps > 0 || bGetCurrentResultsAndBlock )
{
// None of the (NumIssuedTimestamps - 1) measurements were ready yet,
// so check the oldest measurement more thoroughly.
// This really only happens if occlusion and frame sync event queries are disabled, otherwise those will block until the GPU catches up to 1 frame behind
const bool bBlocking = ( NumIssuedTimestamps == BufferSize ) || bGetCurrentResultsAndBlock;
uint32 IdleStart = FPlatformTime::Cycles();
double StartTimeoutTime = FPlatformTime::Seconds();
GLuint EndAvailable = GL_FALSE;
SCOPE_CYCLE_COUNTER( STAT_RenderQueryResultTime );
// If we are blocking, retry until the GPU processes the time stamp command
do
{
FOpenGL::GetQueryObject(EndTimestamps[TimestampIndex]->Resource, FOpenGL::QM_ResultAvailable, &EndAvailable);
if ((FPlatformTime::Seconds() - StartTimeoutTime) > 0.5)
{
UE_LOG(LogRHI, Log, TEXT("Timed out while waiting for GPU to catch up. (500 ms) EndTimeStamp"));
return 0;
}
} while ( EndAvailable == GL_FALSE && bBlocking );
GRenderThreadIdle[ERenderThreadIdleTypes::WaitingForGPUQuery] += FPlatformTime::Cycles() - IdleStart;
GRenderThreadNumIdle[ERenderThreadIdleTypes::WaitingForGPUQuery]++;
if ( EndAvailable == GL_TRUE )
{
IdleStart = FPlatformTime::Cycles();
StartTimeoutTime = FPlatformTime::Seconds();
GLuint StartAvailable = GL_FALSE;
do
{
FOpenGL::GetQueryObject(StartTimestamps[TimestampIndex]->Resource, FOpenGL::QM_ResultAvailable, &StartAvailable);
if ((FPlatformTime::Seconds() - StartTimeoutTime) > 0.5)
{
UE_LOG(LogRHI, Log, TEXT("Timed out while waiting for GPU to catch up. (500 ms) StartTimeStamp"));
return 0;
}
} while ( StartAvailable == GL_FALSE && bBlocking );
GRenderThreadIdle[ERenderThreadIdleTypes::WaitingForGPUQuery] += FPlatformTime::Cycles() - IdleStart;
if(StartAvailable == GL_TRUE)
{
FOpenGL::GetQueryObject(EndTimestamps[TimestampIndex]->Resource, FOpenGL::QM_Result, &EndTime);
FOpenGL::GetQueryObject(StartTimestamps[TimestampIndex]->Resource, FOpenGL::QM_Result, &StartTime);
if (EndTime > StartTime)
{
return EndTime - StartTime;
}
}
}
}
}
return 0;
}
FOpenGLDisjointTimeStampQuery::FOpenGLDisjointTimeStampQuery(class FOpenGLDynamicRHI* InOpenGLRHI)
: bIsResultValid(false)
, DisjointQuery(0)
, Context(0)
, OpenGLRHI(InOpenGLRHI)
{
}
void FOpenGLDisjointTimeStampQuery::StartTracking()
{
VERIFY_GL_SCOPE();
if (IsSupported())
{
if (!PlatformContextIsCurrent(Context))
{
PlatformReleaseRenderQuery(DisjointQuery, Context);
PlatformGetNewRenderQuery(&DisjointQuery, &Context);
}
// Dummy query to reset the driver's internal disjoint status
FOpenGL::TimerQueryDisjoint();
FOpenGL::BeginQuery(UGL_TIME_ELAPSED, DisjointQuery);
}
}
void FOpenGLDisjointTimeStampQuery::EndTracking()
{
VERIFY_GL_SCOPE();
if(IsSupported())
{
FOpenGL::EndQuery( UGL_TIME_ELAPSED );
// Check if the GPU changed clock frequency since the last time GL_GPU_DISJOINT_EXT was checked.
// If so, any timer query will be undefined.
bIsResultValid = !FOpenGL::TimerQueryDisjoint();
}
}
bool FOpenGLDisjointTimeStampQuery::IsResultValid()
{
checkSlow(IsSupported());
return bIsResultValid;
}
bool FOpenGLDisjointTimeStampQuery::GetResult( uint64* OutResult/*=NULL*/ )
{
VERIFY_GL_SCOPE();
if (IsSupported())
{
GLuint Result = 0;
FOpenGL::GetQueryObject(DisjointQuery, FOpenGL::QM_ResultAvailable, &Result);
const double StartTime = FPlatformTime::Seconds();
while (Result == GL_FALSE && (FPlatformTime::Seconds() - StartTime) < 0.5)
{
FPlatformProcess::Sleep(0.005f);
FOpenGL::GetQueryObject(DisjointQuery, FOpenGL::QM_ResultAvailable, &Result);
}
// Presently just discarding the result, because timing is handled by timestamps inside
if (Result != GL_FALSE)
{
GLuint64 ElapsedTime = 0;
FOpenGL::GetQueryObject(DisjointQuery, FOpenGL::QM_Result, &ElapsedTime);
if (OutResult)
{
*OutResult = ElapsedTime;
}
}
bIsResultValid = Result != GL_FALSE;
}
return bIsResultValid;
}
void FOpenGLDisjointTimeStampQuery::InitResources()
{
VERIFY_GL_SCOPE();
if ( IsSupported() )
{
PlatformGetNewRenderQuery(&DisjointQuery, &Context);
}
}
void FOpenGLDisjointTimeStampQuery::ReleaseResources()
{
VERIFY_GL_SCOPE();
if ( IsSupported() )
{
PlatformReleaseRenderQuery(DisjointQuery, Context);
}
}
// Fence implementation
struct FOpenGLGPUFenceProxy
{
FOpenGLGPUFenceProxy()
: Fence(0)
, bIsSignaled(false)
{
}
~FOpenGLGPUFenceProxy()
{
AllOpenGLGPUFences.RemoveSwap(this);
if (Fence != 0)
{
FOpenGL::DeleteSync(Fence);
}
}
void Write()
{
checkf(Fence == 0, TEXT("Fence must be cleared before re-using it."))
if (Fence != 0)
{
FOpenGL::DeleteSync(Fence);
}
else
{
AllOpenGLGPUFences.Add(this);
}
Fence = FOpenGL::FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
bIsSignaled = false;
}
void Poll()
{
if (Fence != 0 && !bIsSignaled)
{
FOpenGLBase::EFenceResult Result = (FOpenGL::ClientWaitSync(Fence, 0, 0));
bIsSignaled = (Result == FOpenGLBase::FR_AlreadySignaled || Result == FOpenGLBase::FR_ConditionSatisfied);
}
}
UGLsync Fence;
bool bIsSignaled;
//
static TArray<FOpenGLGPUFenceProxy*> AllOpenGLGPUFences;
static void PollAllFences()
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FOpenGLGPUFence_PollAllFences);
for (int32 FenceIdx = 0; FenceIdx < AllOpenGLGPUFences.Num(); ++FenceIdx)
{
AllOpenGLGPUFences[FenceIdx]->Poll();
}
}
};
TArray<FOpenGLGPUFenceProxy*> FOpenGLGPUFenceProxy::AllOpenGLGPUFences;
void BeginFrame_PollAllFences()
{
if (IsRunningRHIInSeparateThread())
{
FOpenGLGPUFenceProxy::PollAllFences();
}
}
FGPUFenceRHIRef FOpenGLDynamicRHI::RHICreateGPUFence(const FName &Name)
{
return new FOpenGLGPUFence(Name);
}
FOpenGLGPUFence::FOpenGLGPUFence(FName InName)
: FRHIGPUFence(InName)
{
Proxy = new FOpenGLGPUFenceProxy();
}
FOpenGLGPUFence::~FOpenGLGPUFence()
{
RunOnGLRenderContextThread([Proxy = Proxy]()
{
VERIFY_GL_SCOPE();
delete Proxy;
});
}
void FOpenGLGPUFence::Clear()
{
RunOnGLRenderContextThread([Proxy = Proxy]()
{
VERIFY_GL_SCOPE();
delete Proxy;
});
Proxy = new FOpenGLGPUFenceProxy();
}
bool FOpenGLGPUFence::Poll() const
{
if (Proxy->bIsSignaled)
{
return true;
}
RunOnGLRenderContextThread([Proxy = Proxy]()
{
VERIFY_GL_SCOPE();
check(Proxy != nullptr);
Proxy->Poll();
});
return Proxy->bIsSignaled;
}
void FOpenGLGPUFence::WriteInternal()
{
VERIFY_GL_SCOPE();
Proxy->Write();
}