9#include "Containers/Array.h"
16#define DEBUG_GL_SHADERS (UE_BUILD_DEBUG || UE_EDITOR)
37 return (
A.Location ==
B.Location) && (
A.Varying.Num() ==
B.Varying.Num()) && (
FMemory::Memcmp(
A.Varying.GetData(),
B.Varying.GetData(),
A.Varying.Num() *
sizeof(
ANSICHAR)) == 0);
84 Ar << ShaderResourceTable;
177 return A.TypeEnum ==
B.TypeEnum &&
A.CodeSize ==
B.CodeSize &&
A.CodeCRC ==
B.CodeCRC;
330 int32 GlobalUniformArraySize;
358 return FCrc::MemCrc32(Key.ShaderHashes,
sizeof(Key.ShaderHashes));
365 Ar <<
HashSet.ShaderHashes[Stage];
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT
Definition OpenGLShaderResources.h:25
@ OGL_MAX_UNIFORM_BUFFER_BINDINGS
Definition OpenGLShaderResources.h:23
@ OGL_FIRST_UNIFORM_BUFFER
Definition OpenGLShaderResources.h:24
FArchive & operator<<(FArchive &Ar, FOpenGLShaderVarying &Var)
Definition OpenGLShaderResources.h:50
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Compute
Definition RHIDefinitions.h:208
@ SF_Vertex
Definition RHIDefinitions.h:203
@ SF_Geometry
Definition RHIDefinitions.h:207
@ SF_Pixel
Definition RHIDefinitions.h:206
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition OpenGLShaderResources.h:161
FOpenGLCompiledShaderKey(GLenum InTypeEnum, uint32 InCodeSize, uint32 InCodeCRC)
Definition OpenGLShaderResources.h:164
friend uint32 GetTypeHash(const FOpenGLCompiledShaderKey &Key)
Definition OpenGLShaderResources.h:180
friend bool operator==(const FOpenGLCompiledShaderKey &A, const FOpenGLCompiledShaderKey &B)
Definition OpenGLShaderResources.h:175
uint32 GetCodeCRC() const
Definition OpenGLShaderResources.h:185
FOpenGLCompiledShaderKey()=default
Definition OpenGLShaderResources.h:262
const TBitArray & GetUAVNeeds(int32 &OutMaxUAVUnitUsed) const
Definition OpenGLShaders.cpp:3086
void ConditionalyCompile()
Definition OpenGLShaders.cpp:1107
FOpenGLLinkedProgram * LinkedProgram
Definition OpenGLShaderResources.h:276
bool NeedsUAVStage(int32 UAVStageIndex) const
Definition OpenGLShaders.cpp:3092
static constexpr EShaderFrequency Frequency
Definition OpenGLShaderResources.h:264
int32 MaxTextureStageUsed()
Definition OpenGLShaders.cpp:3075
bool NeedsTextureStage(int32 TextureStageIndex)
Definition OpenGLShaders.cpp:3070
const TBitArray & GetTextureNeeds(int32 &OutMaxTextureStageUsed)
Definition OpenGLShaders.cpp:3080
Definition OpenGLShaderResources.h:252
void ConditionalyCompile()
Definition OpenGLShaders.cpp:1095
static constexpr EShaderFrequency Frequency
Definition OpenGLShaderResources.h:254
Definition OpenGLShaders.cpp:1262
Definition OpenGLShaderResources.h:242
static constexpr EShaderFrequency Frequency
Definition OpenGLShaderResources.h:244
void ConditionalyCompile()
Definition OpenGLShaders.cpp:1083
Definition OpenGLShaderResources.h:335
FSHAHash ShaderHashes[CrossCompiler::NUM_SHADER_STAGES]
Definition OpenGLShaderResources.h:391
friend bool operator==(const FOpenGLProgramKey &A, const FOpenGLProgramKey &B)
Definition OpenGLShaderResources.h:341
friend bool operator!=(const FOpenGLProgramKey &A, const FOpenGLProgramKey &B)
Definition OpenGLShaderResources.h:351
FString ToString() const
Definition OpenGLShaderResources.h:370
FOpenGLProgramKey()=default
friend FArchive & operator<<(FArchive &Ar, FOpenGLProgramKey &HashSet)
Definition OpenGLShaderResources.h:361
friend uint32 GetTypeHash(const FOpenGLProgramKey &Key)
Definition OpenGLShaderResources.h:356
Definition OpenGLShaderResources.h:283
void CommitPackedUniformBuffers(FOpenGLLinkedProgram *LinkedProgram, CrossCompiler::EShaderStage Stage, FRHIUniformBuffer **UniformBuffers, const TArray< CrossCompiler::FUniformBufferCopyInfo > &UniformBuffersCopyInfo)
Definition OpenGLShaders.cpp:3274
void CommitPackedGlobals(const FOpenGLLinkedProgram *LinkedProgram, CrossCompiler::EShaderStage Stage)
Definition OpenGLShaders.cpp:3211
~FOpenGLShaderParameterCache()
Definition OpenGLShaders.cpp:3166
void InitializeResources(int32 UniformArraySize)
Definition OpenGLShaders.cpp:3139
FOpenGLShaderParameterCache()
Definition OpenGLShaders.cpp:3129
void MarkAllDirty()
Definition OpenGLShaders.cpp:3183
Definition OpenGLShaderResources.h:197
bool bUsesProgrammableBlending
Definition OpenGLShaderResources.h:210
TArray< CrossCompiler::FUniformBufferCopyInfo > UniformBuffersCopyInfo
Definition OpenGLShaderResources.h:206
~FOpenGLShader()
Definition OpenGLShaderResources.h:219
GLuint Resource
Definition OpenGLShaderResources.h:200
FOpenGLShaderBindings Bindings
Definition OpenGLShaderResources.h:203
FOpenGLCompiledShaderKey ShaderCodeKey
Definition OpenGLShaderResources.h:208
Definition OpenGLShaderResources.h:232
void ConditionalyCompile()
Definition OpenGLShaders.cpp:1071
static constexpr EShaderFrequency Frequency
Definition OpenGLShaderResources.h:234
Definition RHIResources.h:1018
Definition RHIResources.h:978
Definition RHIResources.h:972
Definition RHIResources.h:854
Definition RHIResources.h:954
Definition SecureHash.h:314
CORE_API void Update(const uint8 *data, uint64 len)
Definition SecureHash.cpp:1205
CORE_API void GetHash(uint8 *puDest) const
Definition SecureHash.cpp:1269
CORE_API void Final()
Definition SecureHash.cpp:1245
Definition SecureHash.h:226
FString ToString() const
Definition SecureHash.h:242
uint8 Hash[20]
Definition SecureHash.h:228
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Empty(SizeType Slack=0)
Definition Array.h:2273
@ PACKED_TYPEINDEX_MAX
Definition CrossCompilerCommon.h:72
EShaderStage
Definition CrossCompilerCommon.h:16
@ NUM_SHADER_STAGES
Definition CrossCompilerCommon.h:24
@ SHADER_STAGE_COMPUTE
Definition CrossCompilerCommon.h:23
@ SHADER_STAGE_PIXEL
Definition CrossCompilerCommon.h:18
@ SHADER_STAGE_VERTEX
Definition CrossCompilerCommon.h:17
U16 Index
Definition radfft.cpp:71
Definition CrossCompilerCommon.h:194
static UE_FORCEINLINE_HINT uint32 MemCrc32(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.h:31
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
Definition OpenGLShaderResources.h:61
TArray< CrossCompiler::FPackedArrayInfo > PackedGlobalArrays
Definition OpenGLShaderResources.h:63
CrossCompiler::FShaderBindingInOutMask InOutMask
Definition OpenGLShaderResources.h:66
uint8 NumSamplers
Definition OpenGLShaderResources.h:68
FArchive & Serialize(FArchive &Ar, FShaderResourceTable &ShaderResourceTable)
Definition OpenGLShaderResources.h:78
TArray< TArray< CrossCompiler::FPackedArrayInfo > > PackedUniformBuffers
Definition OpenGLShaderResources.h:62
uint8 NumUAVs
Definition OpenGLShaderResources.h:70
TArray< FOpenGLShaderVarying > InputVaryings
Definition OpenGLShaderResources.h:64
bool bFlattenUB
Definition OpenGLShaderResources.h:71
TArray< FOpenGLShaderVarying > OutputVaryings
Definition OpenGLShaderResources.h:65
uint8 NumUniformBuffers
Definition OpenGLShaderResources.h:69
FSHAHash VaryingHash
Definition OpenGLShaderResources.h:73
Definition OpenGLShaderResources.h:29
friend bool operator==(const FOpenGLShaderVarying &A, const FOpenGLShaderVarying &B)
Definition OpenGLShaderResources.h:33
TArray< ANSICHAR > Varying
Definition OpenGLShaderResources.h:30
friend uint32 GetTypeHash(const FOpenGLShaderVarying &Var)
Definition OpenGLShaderResources.h:42
int32 Location
Definition OpenGLShaderResources.h:31
Definition RHIResources.h:755