(glslang) Turn functions static

This commit is contained in:
LibretroAdmin 2022-07-31 19:52:41 +02:00
parent 2b84be1210
commit e602f8762b
2 changed files with 27 additions and 51 deletions

View File

@ -5806,9 +5806,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2
"\n");
}
// printf("%s\n", commonBuiltins.c_str());
// printf("%s\n", stageBuiltins[EShLangFragment].c_str());
}
//

View File

@ -58,28 +58,29 @@ namespace { // anonymous namespace functions
const bool UseHlslTypes = true;
const char* BaseTypeName(const char argOrder, const char* scalarName, const char* vecName, const char* matName)
static const char* BaseTypeName(const char argOrder, const char* scalarName, const char* vecName, const char* matName)
{
switch (argOrder) {
case 'S': return scalarName;
case 'V': return vecName;
case 'M': return matName;
default: return "UNKNOWN_TYPE";
default: break;
}
return "UNKNOWN_TYPE";
}
// arg order queries
bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; }
bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; }
bool IsTextureNonMS(const char argOrder) { return argOrder == '%'; }
bool IsSubpassInput(const char argOrder) { return argOrder == '[' || argOrder == ']'; }
bool IsArrayedTexture(const char argOrder) { return argOrder == '@'; }
bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; }
bool IsMS(const char argOrder) { return IsTextureMS(argOrder) || argOrder == ']'; }
bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; }
bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; }
static bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; }
static bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; }
static bool IsTextureNonMS(const char argOrder) { return argOrder == '%'; }
static bool IsSubpassInput(const char argOrder) { return argOrder == '[' || argOrder == ']'; }
static bool IsArrayedTexture(const char argOrder) { return argOrder == '@'; }
static bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; }
static bool IsMS(const char argOrder) { return IsTextureMS(argOrder) || argOrder == ']'; }
static bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; }
static bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; }
bool IsTextureType(const char argOrder)
static bool IsTextureType(const char argOrder)
{
return IsTextureNonMS(argOrder) || IsArrayedTexture(argOrder) ||
IsTextureMS(argOrder) || IsBuffer(argOrder) || IsImage(argOrder);
@ -87,7 +88,7 @@ bool IsTextureType(const char argOrder)
// Reject certain combinations that are illegal sample methods. For example,
// 3D arrays.
bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim0)
static bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim0)
{
const bool isArrayed = IsArrayed(*argOrder);
const bool isMS = IsTextureMS(*argOrder);
@ -152,30 +153,29 @@ bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim
}
// Return the number of the coordinate arg, if any
int CoordinateArgPos(const glslang::TString& name, bool isTexture)
static int CoordinateArgPos(const glslang::TString& name, bool isTexture)
{
if (!isTexture || (name == "GetDimensions"))
return -1; // has none
else if (name == "Load")
return 1;
else
return 2; // other texture methods are 2
return 2; // other texture methods are 2
}
// Some texture methods use an addition coordinate dimension for the mip
bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer, bool isImage)
static bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer, bool isImage)
{
return name == "Load" && !isMS && !isBuffer && !isImage;
}
// LOD calculations don't pass the array level in the coordinate.
bool NoArrayCoord(const glslang::TString& name)
static bool NoArrayCoord(const glslang::TString& name)
{
return name == "CalculateLevelOfDetail" || name == "CalculateLevelOfDetailUnclamped";
}
// Handle IO params marked with > or <
const char* IoParam(glslang::TString& s, const char* nthArgOrder)
static const char* IoParam(glslang::TString& s, const char* nthArgOrder)
{
if (*nthArgOrder == '>') { // output params
++nthArgOrder;
@ -189,7 +189,7 @@ const char* IoParam(glslang::TString& s, const char* nthArgOrder)
}
// Handle repeated args
void HandleRepeatArg(const char*& arg, const char*& prev, const char* current)
static void HandleRepeatArg(const char*& arg, const char*& prev, const char* current)
{
if (*arg == ',' || *arg == '\0')
arg = prev;
@ -199,13 +199,13 @@ void HandleRepeatArg(const char*& arg, const char*& prev, const char* current)
// Return true for the end of a single argument key, which can be the end of the string, or
// the comma separator.
inline bool IsEndOfArg(const char* arg)
static inline bool IsEndOfArg(const char* arg)
{
return arg == nullptr || *arg == '\0' || *arg == ',';
}
// If this is a fixed vector size, such as V3, return the size. Else return 0.
int FixedVecSize(const char* arg)
static int FixedVecSize(const char* arg)
{
while (!IsEndOfArg(arg)) {
if (isdigit(*arg))
@ -223,7 +223,7 @@ int FixedVecSize(const char* arg)
// argType: F = float, D = double, I = int, U = uint, B = bool, S = sampler
// dim0 = vector dimension, or matrix 1st dimension
// dim1 = matrix 2nd dimension
glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1)
static glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1)
{
const bool isTranspose = (argOrder[0] == '^');
const bool isTexture = IsTextureType(argOrder[0]);
@ -373,7 +373,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
// The GLSL parser can be used to parse a subset of HLSL prototypes. However, many valid HLSL prototypes
// are not valid GLSL prototypes. This rejects the invalid ones. Thus, there is a single switch below
// to enable creation of the entire HLSL space.
inline bool IsValid(const char* cname, char retOrder, char retType, char argOrder, char argType, int dim0, int dim1)
static inline bool IsValid(const char* cname, char retOrder, char retType, char argOrder, char argType, int dim0, int dim1)
{
const bool isVec = (argOrder == 'V');
@ -410,7 +410,7 @@ inline bool IsValid(const char* cname, char retOrder, char retType, char argOrde
}
// return position of end of argument specifier
inline const char* FindEndOfArg(const char* arg)
static inline const char* FindEndOfArg(const char* arg)
{
while (!IsEndOfArg(arg))
++arg;
@ -419,7 +419,7 @@ inline const char* FindEndOfArg(const char* arg)
}
// Return pointer to beginning of Nth argument specifier in the string.
inline const char* NthArg(const char* arg, int n)
static inline const char* NthArg(const char* arg, int n)
{
for (int x=0; x<n && arg; ++x)
if ((arg = FindEndOfArg(arg)) != nullptr)
@ -428,7 +428,7 @@ inline const char* NthArg(const char* arg, int n)
return arg;
}
inline void FindVectorMatrixBounds(const char* argOrder, int fixedVecSize, int& dim0Min, int& dim0Max, int& /*dim1Min*/, int& dim1Max)
static inline void FindVectorMatrixBounds(const char* argOrder, int fixedVecSize, int& dim0Min, int& dim0Max, int& /*dim1Min*/, int& dim1Max)
{
for (int arg = 0; ; ++arg) {
const char* nthArgOrder(NthArg(argOrder, arg));
@ -1053,14 +1053,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
}
createMatTimesMat(); // handle this case separately, for convenience
// printf("Common:\n%s\n", getCommonString().c_str());
// printf("Frag:\n%s\n", getStageString(EShLangFragment).c_str());
// printf("Vertex:\n%s\n", getStageString(EShLangVertex).c_str());
// printf("Geo:\n%s\n", getStageString(EShLangGeometry).c_str());
// printf("TessCtrl:\n%s\n", getStageString(EShLangTessControl).c_str());
// printf("TessEval:\n%s\n", getStageString(EShLangTessEvaluation).c_str());
// printf("Compute:\n%s\n", getStageString(EShLangCompute).c_str());
}
//
@ -1166,22 +1158,9 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
symbolTable.relateToOperator("max", EOpMax);
symbolTable.relateToOperator("min", EOpMin);
symbolTable.relateToOperator("modf", EOpModf);
// symbolTable.relateToOperator("msad4", EOpMsad4);
symbolTable.relateToOperator("mul", EOpGenMul);
// symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type
symbolTable.relateToOperator("normalize", EOpNormalize);
symbolTable.relateToOperator("pow", EOpPow);
// symbolTable.relateToOperator("printf", EOpPrintf);
// symbolTable.relateToOperator("Process2DQuadTessFactorsAvg");
// symbolTable.relateToOperator("Process2DQuadTessFactorsMax");
// symbolTable.relateToOperator("Process2DQuadTessFactorsMin");
// symbolTable.relateToOperator("ProcessIsolineTessFactors");
// symbolTable.relateToOperator("ProcessQuadTessFactorsAvg");
// symbolTable.relateToOperator("ProcessQuadTessFactorsMax");
// symbolTable.relateToOperator("ProcessQuadTessFactorsMin");
// symbolTable.relateToOperator("ProcessTriTessFactorsAvg");
// symbolTable.relateToOperator("ProcessTriTessFactorsMax");
// symbolTable.relateToOperator("ProcessTriTessFactorsMin");
symbolTable.relateToOperator("radians", EOpRadians);
symbolTable.relateToOperator("rcp", EOpRcp);
symbolTable.relateToOperator("reflect", EOpReflect);