You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Removed overrides of PostInit where applicable. - Added GRequiredRecursiveShaders as a flags enum set by the platform RHI, which indicates which group of global shaders will be used with recursive command lists. - Replaced calls to CreateClearReplacementShaders() in ShaderCompiler.cpp with CreateRecursiveShaders(), enqueued in a render thread command. Fix ensure calling IsInRenderingThread() from scene renderer tasks - The tasks may be launched inline, meaning they're still running on the render thread, so shouldn't be tagged as EParallelRenderingThread. - Use FOptionalTaskTagScope instead of FTaskTagScope. General cleanup of OpenGL threading. - Removed shader proxy objects. Proxies were used to defer creation of shaders to the RHI thread. This is can be achieved simply with RHICmdList.EnqueueLambda() to defer those operations. - The FOpenGL...RHIThreadFence types were used to fence deletion of resources on the RT. All RHI resources are deleted on the RHIT now, so there is no need to track lifetimes in this way. - Replaced multiple uses of ALLOC_COMMAND_CL / bCanRunOnThisThread with RHICmdList.EnqueueLambda(). Removed types and functions: - FOpenGLAssertRHIThreadFence - FOpenGLRHIThreadResourceFence - TOpenGLResourceProxy - TOpenGLShaderProxy - TIsGLProxyObject_V - TIsGLResourceWithFence - FOpenGLVertexShaderProxy - FOpenGLGeometryShaderProxy - FOpenGLPixelShaderProxy - FOpenGLComputeShaderProxy - CheckRHITFence() - FOpenGLDynamicRHI::ResourceCastProxy() - FOpenGLDynamicRHI::ResourceCast_Unfenced() #rb Dmitriy.Dyomin, Carl.Lloyd, #jira none #preflight 63ee96dcd60e91569b60f743 [CL 24278699 by Luke Thatcher in ue5-main branch]
105 lines
9.0 KiB
C++
105 lines
9.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
#include "ClearReplacementShaders.h"
|
|
#include "ShaderParameterUtils.h"
|
|
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementVS , SF_Vertex);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementVS_Bounds , SF_Vertex);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementVS_Depth , SF_Vertex);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementPS , SF_Pixel);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementPS_128 , SF_Pixel);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementPS_Zero , SF_Pixel);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Uint_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Float_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Uint_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Float_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Uint_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Float_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture3D_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2D_Float4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Uint_Zero , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Uint_Zero , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Uint_Zero , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Uint , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Uint , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Uint , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Uint , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture3D_Float4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2D_Float4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Float4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture3D_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2D_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Uint4 , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture3D_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2D_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Uint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Buffer_Sint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_LargeBuffer_Sint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_StructuredBuffer_Sint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture3D_Sint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2D_Sint4_Bounds , SF_Compute);
|
|
IMPLEMENT_SHADER_TYPE4_WITH_TEMPLATE_PREFIX(template<>, RENDERCORE_API, FClearReplacementCS_Texture2DArray_Sint4_Bounds , SF_Compute);
|
|
|
|
void CreateClearReplacementShaders()
|
|
{
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Uint_Bounds>();
|
|
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Float_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Float4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Uint_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Float_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Float4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Uint_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Float_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Float4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture3D_Float4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2D_Float4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Float4_Bounds>();
|
|
|
|
// Compute shaders for clearing each resource type. No bounds checks enabled.
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Uint_Zero>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Uint_Zero>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Uint_Zero>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Uint>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Uint>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Uint>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Uint>();
|
|
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture3D_Float4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2D_Float4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Float4>();
|
|
|
|
// Used by ClearUAV_T in ClearQuad.cpp
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture3D_Uint4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2D_Uint4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Uint4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Uint4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Uint4>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Uint4>();
|
|
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Uint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Uint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Uint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture3D_Uint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2D_Uint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Uint4_Bounds>();
|
|
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Buffer_Sint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_LargeBuffer_Sint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_StructuredBuffer_Sint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture3D_Sint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2D_Sint4_Bounds>();
|
|
ForceInitGlobalShaderType<FClearReplacementCS_Texture2DArray_Sint4_Bounds>();
|
|
}
|