diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h | 85 |
1 files changed, 68 insertions, 17 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h b/src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h index 42444e3a56..daeec8de41 100644 --- a/src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h +++ b/src/3rdparty/angle/src/compiler/translator/UtilsHLSL.h @@ -11,6 +11,7 @@ #define COMPILER_TRANSLATOR_UTILSHLSL_H_ #include <vector> +#include "compiler/translator/IntermNode.h" #include "compiler/translator/Types.h" #include "angle_gl.h" @@ -20,22 +21,33 @@ class TName; namespace sh { -// Unique combinations of HLSL Texture type and HLSL Sampler type. -enum HLSLTextureSamplerGroup +// HLSL Texture type for GLSL sampler type and readonly image type. +enum HLSLTextureGroup { - // Regular samplers + // read resources HLSL_TEXTURE_2D, HLSL_TEXTURE_MIN = HLSL_TEXTURE_2D, HLSL_TEXTURE_CUBE, HLSL_TEXTURE_2D_ARRAY, HLSL_TEXTURE_3D, + HLSL_TEXTURE_2D_UNORM, + HLSL_TEXTURE_CUBE_UNORM, + HLSL_TEXTURE_2D_ARRAY_UNORN, + HLSL_TEXTURE_3D_UNORM, + HLSL_TEXTURE_2D_SNORM, + HLSL_TEXTURE_CUBE_SNORM, + HLSL_TEXTURE_2D_ARRAY_SNORM, + HLSL_TEXTURE_3D_SNORM, + HLSL_TEXTURE_2D_MS, HLSL_TEXTURE_2D_INT4, HLSL_TEXTURE_3D_INT4, HLSL_TEXTURE_2D_ARRAY_INT4, + HLSL_TEXTURE_2D_MS_INT4, HLSL_TEXTURE_2D_UINT4, HLSL_TEXTURE_3D_UINT4, HLSL_TEXTURE_2D_ARRAY_UINT4, + HLSL_TEXTURE_2D_MS_UINT4, // Comparison samplers @@ -50,29 +62,68 @@ enum HLSLTextureSamplerGroup HLSL_TEXTURE_MAX = HLSL_TEXTURE_UNKNOWN }; -HLSLTextureSamplerGroup TextureGroup(const TBasicType type); -TString TextureString(const HLSLTextureSamplerGroup type); -TString TextureString(const TBasicType type); -TString TextureGroupSuffix(const HLSLTextureSamplerGroup type); -TString TextureGroupSuffix(const TBasicType type); -TString TextureTypeSuffix(const TBasicType type); +// HLSL RWTexture type for GLSL read and write image type. +enum HLSLRWTextureGroup +{ + // read/write resource + HLSL_RWTEXTURE_2D_FLOAT4, + HLSL_RWTEXTURE_MIN = HLSL_RWTEXTURE_2D_FLOAT4, + HLSL_RWTEXTURE_2D_ARRAY_FLOAT4, + HLSL_RWTEXTURE_3D_FLOAT4, + HLSL_RWTEXTURE_2D_UNORM, + HLSL_RWTEXTURE_2D_ARRAY_UNORN, + HLSL_RWTEXTURE_3D_UNORM, + HLSL_RWTEXTURE_2D_SNORM, + HLSL_RWTEXTURE_2D_ARRAY_SNORM, + HLSL_RWTEXTURE_3D_SNORM, + HLSL_RWTEXTURE_2D_UINT4, + HLSL_RWTEXTURE_2D_ARRAY_UINT4, + HLSL_RWTEXTURE_3D_UINT4, + HLSL_RWTEXTURE_2D_INT4, + HLSL_RWTEXTURE_2D_ARRAY_INT4, + HLSL_RWTEXTURE_3D_INT4, + + HLSL_RWTEXTURE_UNKNOWN, + HLSL_RWTEXTURE_MAX = HLSL_RWTEXTURE_UNKNOWN +}; + +HLSLTextureGroup TextureGroup(const TBasicType type, + TLayoutImageInternalFormat imageInternalFormat = EiifUnspecified); +TString TextureString(const HLSLTextureGroup textureGroup); +TString TextureString(const TBasicType type, + TLayoutImageInternalFormat imageInternalFormat = EiifUnspecified); +TString TextureGroupSuffix(const HLSLTextureGroup type); +TString TextureGroupSuffix(const TBasicType type, + TLayoutImageInternalFormat imageInternalFormat = EiifUnspecified); +TString TextureTypeSuffix(const TBasicType type, + TLayoutImageInternalFormat imageInternalFormat = EiifUnspecified); +HLSLRWTextureGroup RWTextureGroup(const TBasicType type, + TLayoutImageInternalFormat imageInternalFormat); +TString RWTextureString(const HLSLRWTextureGroup textureGroup); +TString RWTextureString(const TBasicType type, TLayoutImageInternalFormat imageInternalFormat); +TString RWTextureGroupSuffix(const HLSLRWTextureGroup type); +TString RWTextureGroupSuffix(const TBasicType type, TLayoutImageInternalFormat imageInternalFormat); +TString RWTextureTypeSuffix(const TBasicType type, TLayoutImageInternalFormat imageInternalFormat); + TString SamplerString(const TBasicType type); -TString SamplerString(HLSLTextureSamplerGroup type); -// Prepends an underscore to avoid naming clashes +TString SamplerString(HLSLTextureGroup type); + +// Adds a prefix to user-defined names to avoid naming clashes. TString Decorate(const TString &string); -TString DecorateIfNeeded(const TName &name); -// Decorates and also unmangles the function name +TString DecorateVariableIfNeeded(const TName &name); TString DecorateFunctionIfNeeded(const TName &name); -TString DecorateUniform(const TString &string, const TType &type); TString DecorateField(const TString &string, const TStructure &structure); TString DecoratePrivate(const TString &privateText); TString TypeString(const TType &type); TString StructNameString(const TStructure &structure); -TString QualifiedStructNameString(const TStructure &structure, bool useHLSLRowMajorPacking, +TString QualifiedStructNameString(const TStructure &structure, + bool useHLSLRowMajorPacking, bool useStd140Packing); TString InterpolationString(TQualifier qualifier); TString QualifierString(TQualifier qualifier); -int HLSLTextureCoordsCount(const TBasicType samplerType); +// Parameters may need to be included in function names to disambiguate between overloaded +// functions. +TString DisambiguateFunctionName(const TIntermSequence *parameters); } -#endif // COMPILER_TRANSLATOR_UTILSHLSL_H_ +#endif // COMPILER_TRANSLATOR_UTILSHLSL_H_ |