Unverified Commit 1ee5d1c0 by John Kessenich Committed by GitHub

Merge pull request #2330 from ShabbyX/optimize_for_angle

Optimize for angle
parents 906d48a7 59fb2d63
...@@ -109,7 +109,6 @@ template("glslang_sources_common") { ...@@ -109,7 +109,6 @@ template("glslang_sources_common") {
"SPIRV/SpvBuilder.cpp", "SPIRV/SpvBuilder.cpp",
"SPIRV/SpvBuilder.h", "SPIRV/SpvBuilder.h",
"SPIRV/SpvPostProcess.cpp", "SPIRV/SpvPostProcess.cpp",
"SPIRV/SpvTools.cpp",
"SPIRV/SpvTools.h", "SPIRV/SpvTools.h",
"SPIRV/bitutils.h", "SPIRV/bitutils.h",
"SPIRV/disassemble.cpp", "SPIRV/disassemble.cpp",
...@@ -156,7 +155,7 @@ template("glslang_sources_common") { ...@@ -156,7 +155,7 @@ template("glslang_sources_common") {
"glslang/MachineIndependent/attribute.cpp", "glslang/MachineIndependent/attribute.cpp",
"glslang/MachineIndependent/attribute.h", "glslang/MachineIndependent/attribute.h",
"glslang/MachineIndependent/gl_types.h", "glslang/MachineIndependent/gl_types.h",
"glslang/MachineIndependent/glslang_tab.cpp", "glslang/MachineIndependent/glslang_angle_tab.cpp.h",
"glslang/MachineIndependent/glslang_tab.cpp.h", "glslang/MachineIndependent/glslang_tab.cpp.h",
"glslang/MachineIndependent/intermOut.cpp", "glslang/MachineIndependent/intermOut.cpp",
"glslang/MachineIndependent/iomapper.cpp", "glslang/MachineIndependent/iomapper.cpp",
...@@ -207,9 +206,25 @@ template("glslang_sources_common") { ...@@ -207,9 +206,25 @@ template("glslang_sources_common") {
} }
defines = [] defines = []
if (invoker.is_angle) {
sources += [
"glslang/MachineIndependent/glslang_angle_tab.cpp",
]
defines += [ "GLSLANG_ANGLE" ]
}
else {
sources += [
"glslang/MachineIndependent/glslang_tab.cpp",
]
}
if (invoker.enable_opt) { if (invoker.enable_opt) {
sources += [ "SPIRV/SpvTools.cpp" ]
defines += [ "ENABLE_OPT=1" ] defines += [ "ENABLE_OPT=1" ]
} }
if (invoker.is_angle) {
defines += [ "GLSLANG_ANGLE" ]
}
if (is_win) { if (is_win) {
sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] sources += [ "glslang/OSDependent/Windows/ossource.cpp" ]
...@@ -257,11 +272,13 @@ template("glslang_sources_common") { ...@@ -257,11 +272,13 @@ template("glslang_sources_common") {
glslang_sources_common("glslang_lib_sources") { glslang_sources_common("glslang_lib_sources") {
enable_opt = !glslang_angle enable_opt = !glslang_angle
enable_hlsl = !glslang_angle enable_hlsl = !glslang_angle
is_angle = glslang_angle
} }
glslang_sources_common("glslang_sources") { glslang_sources_common("glslang_sources") {
enable_opt = true enable_opt = true
enable_hlsl = true enable_hlsl = true
is_angle = false
} }
source_set("glslang_default_resource_limits_sources") { source_set("glslang_default_resource_limits_sources") {
......
...@@ -283,6 +283,8 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile ...@@ -283,6 +283,8 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile
{ {
#ifdef GLSLANG_WEB #ifdef GLSLANG_WEB
return spv::SourceLanguageESSL; return spv::SourceLanguageESSL;
#elif defined(GLSLANG_ANGLE)
return spv::SourceLanguageGLSL;
#endif #endif
switch (source) { switch (source) {
...@@ -8686,7 +8688,7 @@ void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName) ...@@ -8686,7 +8688,7 @@ void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
// Write SPIR-V out to a text file with 32-bit hexadecimal words // Write SPIR-V out to a text file with 32-bit hexadecimal words
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName) void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
{ {
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
std::ofstream out; std::ofstream out;
out.open(baseName, std::ios::binary | std::ios::out); out.open(baseName, std::ios::binary | std::ios::out);
if (out.fail()) if (out.fail())
......
...@@ -294,6 +294,9 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi ...@@ -294,6 +294,9 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi
#ifdef GLSLANG_WEB #ifdef GLSLANG_WEB
profile = EEsProfile; profile = EEsProfile;
version = 310; version = 310;
#elif defined(GLSLANG_ANGLE)
profile = ECoreProfile;
version = 450;
#endif #endif
(*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]);
...@@ -315,6 +318,9 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS ...@@ -315,6 +318,9 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
#ifdef GLSLANG_WEB #ifdef GLSLANG_WEB
profile = EEsProfile; profile = EEsProfile;
version = 310; version = 310;
#elif defined(GLSLANG_ANGLE)
profile = ECoreProfile;
version = 450;
#endif #endif
std::unique_ptr<TBuiltInParseables> builtInParseables(CreateBuiltInParseables(infoSink, source)); std::unique_ptr<TBuiltInParseables> builtInParseables(CreateBuiltInParseables(infoSink, source));
...@@ -354,7 +360,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS ...@@ -354,7 +360,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
(profile == EEsProfile && version >= 310)) (profile == EEsProfile && version >= 310))
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source,
infoSink, commonTable, symbolTables); infoSink, commonTable, symbolTables);
#endif
// check for compute // check for compute
if ((profile != EEsProfile && version >= 420) || if ((profile != EEsProfile && version >= 420) ||
...@@ -362,6 +367,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS ...@@ -362,6 +367,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source,
infoSink, commonTable, symbolTables); infoSink, commonTable, symbolTables);
#ifndef GLSLANG_ANGLE
// check for ray tracing stages // check for ray tracing stages
if (profile != EEsProfile && version >= 450) { if (profile != EEsProfile && version >= 450) {
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source, InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source,
...@@ -389,6 +395,8 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS ...@@ -389,6 +395,8 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
(profile == EEsProfile && version >= 320)) (profile == EEsProfile && version >= 320))
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source,
infoSink, commonTable, symbolTables); infoSink, commonTable, symbolTables);
#endif // !GLSLANG_ANGLE
#endif // !GLSLANG_WEB
return true; return true;
} }
...@@ -490,7 +498,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp ...@@ -490,7 +498,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
// Function to Print all builtins // Function to Print all builtins
void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable)
{ {
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
infoSink.debug << "BuiltinSymbolTable {\n"; infoSink.debug << "BuiltinSymbolTable {\n";
symbolTable.dump(infoSink, true); symbolTable.dump(infoSink, true);
...@@ -594,7 +602,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo ...@@ -594,7 +602,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
break; break;
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// Correct for stage type... // Correct for stage type...
switch (stage) { switch (stage) {
case EShLangGeometry: case EShLangGeometry:
...@@ -870,7 +878,7 @@ bool ProcessDeferred( ...@@ -870,7 +878,7 @@ bool ProcessDeferred(
: userInput.scanVersion(version, profile, versionNotFirstToken); : userInput.scanVersion(version, profile, versionNotFirstToken);
bool versionNotFound = version == 0; bool versionNotFound = version == 0;
if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { if (forceDefaultVersionAndProfile && source == EShSourceGlsl) {
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound &&
(version != defaultVersion || profile != defaultProfile)) { (version != defaultVersion || profile != defaultProfile)) {
compiler->infoSink.info << "Warning, (version, profile) forced to be (" compiler->infoSink.info << "Warning, (version, profile) forced to be ("
...@@ -893,10 +901,13 @@ bool ProcessDeferred( ...@@ -893,10 +901,13 @@ bool ProcessDeferred(
#ifdef GLSLANG_WEB #ifdef GLSLANG_WEB
profile = EEsProfile; profile = EEsProfile;
version = 310; version = 310;
#elif defined(GLSLANG_ANGLE)
profile = ECoreProfile;
version = 450;
#endif #endif
bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst));
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
bool warnVersionNotFirst = false; bool warnVersionNotFirst = false;
if (! versionWillBeError && versionNotFirstToken) { if (! versionWillBeError && versionNotFirstToken) {
if (messages & EShMsgRelaxedErrors) if (messages & EShMsgRelaxedErrors)
...@@ -966,7 +977,7 @@ bool ProcessDeferred( ...@@ -966,7 +977,7 @@ bool ProcessDeferred(
parseContext->setLimits(*resources); parseContext->setLimits(*resources);
if (! goodVersion) if (! goodVersion)
parseContext->addError(); parseContext->addError();
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (warnVersionNotFirst) { if (warnVersionNotFirst) {
TSourceLoc loc; TSourceLoc loc;
loc.init(); loc.init();
...@@ -1003,7 +1014,7 @@ bool ProcessDeferred( ...@@ -1003,7 +1014,7 @@ bool ProcessDeferred(
return success; return success;
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// Responsible for keeping track of the most recent source string and line in // Responsible for keeping track of the most recent source string and line in
// the preprocessor and outputting newlines appropriately if the source string // the preprocessor and outputting newlines appropriately if the source string
...@@ -1226,14 +1237,16 @@ struct DoFullParse{ ...@@ -1226,14 +1237,16 @@ struct DoFullParse{
parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n"; parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n";
} }
#ifndef GLSLANG_ANGLE
if (messages & EShMsgAST) if (messages & EShMsgAST)
intermediate.output(parseContext.infoSink, true); intermediate.output(parseContext.infoSink, true);
#endif
return success; return success;
} }
}; };
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// Take a single compilation unit, and run the preprocessor on it. // Take a single compilation unit, and run the preprocessor on it.
// Return: True if there were no issues found in preprocessing, // Return: True if there were no issues found in preprocessing,
// False if during preprocessing any unknown version, pragmas or // False if during preprocessing any unknown version, pragmas or
...@@ -1873,7 +1886,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion ...@@ -1873,7 +1886,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion
&environment); &environment);
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// Fill in a string with the result of preprocessing ShaderStrings // Fill in a string with the result of preprocessing ShaderStrings
// Returns true if all extensions, pragmas and version strings were valid. // Returns true if all extensions, pragmas and version strings were valid.
// //
...@@ -1911,7 +1924,7 @@ const char* TShader::getInfoDebugLog() ...@@ -1911,7 +1924,7 @@ const char* TShader::getInfoDebugLog()
} }
TProgram::TProgram() : TProgram::TProgram() :
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
reflection(0), reflection(0),
#endif #endif
linked(false) linked(false)
...@@ -1927,7 +1940,7 @@ TProgram::TProgram() : ...@@ -1927,7 +1940,7 @@ TProgram::TProgram() :
TProgram::~TProgram() TProgram::~TProgram()
{ {
delete infoSink; delete infoSink;
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
delete reflection; delete reflection;
#endif #endif
...@@ -1974,7 +1987,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) ...@@ -1974,7 +1987,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages)
if (stages[stage].size() == 0) if (stages[stage].size() == 0)
return true; return true;
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
int numEsShaders = 0, numNonEsShaders = 0; int numEsShaders = 0, numNonEsShaders = 0;
for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) {
if ((*it)->intermediate->getProfile() == EEsProfile) { if ((*it)->intermediate->getProfile() == EEsProfile) {
...@@ -2028,8 +2041,10 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) ...@@ -2028,8 +2041,10 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages)
#endif #endif
intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0);
#ifndef GLSLANG_ANGLE
if (messages & EShMsgAST) if (messages & EShMsgAST)
intermediate[stage]->output(*infoSink, true); intermediate[stage]->output(*infoSink, true);
#endif
return intermediate[stage]->getNumErrors() == 0; return intermediate[stage]->getNumErrors() == 0;
} }
...@@ -2044,7 +2059,7 @@ const char* TProgram::getInfoDebugLog() ...@@ -2044,7 +2059,7 @@ const char* TProgram::getInfoDebugLog()
return infoSink->debug.c_str(); return infoSink->debug.c_str();
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// //
// Reflection implementation. // Reflection implementation.
...@@ -2126,6 +2141,6 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) ...@@ -2126,6 +2141,6 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper)
return ioMapper->doMap(pResolver, *infoSink); return ioMapper->doMap(pResolver, *infoSink);
} }
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
} // end namespace glslang } // end namespace glslang
...@@ -178,7 +178,7 @@ void TType::buildMangledName(TString& mangledName) const ...@@ -178,7 +178,7 @@ void TType::buildMangledName(TString& mangledName) const
} }
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// //
// Dump functions. // Dump functions.
......
...@@ -117,7 +117,7 @@ public: ...@@ -117,7 +117,7 @@ public:
virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); }
virtual const char** getExtensions() const { return extensions->data(); } virtual const char** getExtensions() const { return extensions->data(); }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0;
void dumpExtensions(TInfoSink& infoSink) const; void dumpExtensions(TInfoSink& infoSink) const;
#endif #endif
...@@ -196,7 +196,7 @@ public: ...@@ -196,7 +196,7 @@ public:
} }
virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
virtual void dump(TInfoSink& infoSink, bool complete = false) const; virtual void dump(TInfoSink& infoSink, bool complete = false) const;
#endif #endif
...@@ -319,7 +319,7 @@ public: ...@@ -319,7 +319,7 @@ public:
virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; }
virtual const TParameter& operator[](int i) const { return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
virtual void dump(TInfoSink& infoSink, bool complete = false) const override; virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
#endif #endif
...@@ -381,7 +381,7 @@ public: ...@@ -381,7 +381,7 @@ public:
virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); }
virtual int getAnonId() const { return anonId; } virtual int getAnonId() const { return anonId; }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
virtual void dump(TInfoSink& infoSink, bool complete = false) const override; virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
#endif #endif
...@@ -551,7 +551,7 @@ public: ...@@ -551,7 +551,7 @@ public:
void relateToOperator(const char* name, TOperator op); void relateToOperator(const char* name, TOperator op);
void setFunctionExtensions(const char* name, int num, const char* const extensions[]); void setFunctionExtensions(const char* name, int num, const char* const extensions[]);
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
void dump(TInfoSink& infoSink, bool complete = false) const; void dump(TInfoSink& infoSink, bool complete = false) const;
#endif #endif
TSymbolTableLevel* clone() const; TSymbolTableLevel* clone() const;
...@@ -854,7 +854,7 @@ public: ...@@ -854,7 +854,7 @@ public:
} }
int getMaxSymbolId() { return uniqueId; } int getMaxSymbolId() { return uniqueId; }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
void dump(TInfoSink& infoSink, bool complete = false) const; void dump(TInfoSink& infoSink, bool complete = false) const;
#endif #endif
void copyTable(const TSymbolTable& copyOf); void copyTable(const TSymbolTable& copyOf);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
/* A Bison parser, made by GNU Bison 3.5.1. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* Undocumented macros, especially those whose name start with YY_,
are private implementation details. Do not rely on them. */
#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_ANGLE_TAB_CPP_H_INCLUDED
# define YY_YY_MACHINEINDEPENDENT_GLSLANG_ANGLE_TAB_CPP_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
#if YYDEBUG
extern int yydebug;
#endif
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
CONST = 258,
BOOL = 259,
INT = 260,
UINT = 261,
FLOAT = 262,
BVEC2 = 263,
BVEC3 = 264,
BVEC4 = 265,
IVEC2 = 266,
IVEC3 = 267,
IVEC4 = 268,
UVEC2 = 269,
UVEC3 = 270,
UVEC4 = 271,
VEC2 = 272,
VEC3 = 273,
VEC4 = 274,
MAT2 = 275,
MAT3 = 276,
MAT4 = 277,
MAT2X2 = 278,
MAT2X3 = 279,
MAT2X4 = 280,
MAT3X2 = 281,
MAT3X3 = 282,
MAT3X4 = 283,
MAT4X2 = 284,
MAT4X3 = 285,
MAT4X4 = 286,
SAMPLER2D = 287,
SAMPLER3D = 288,
SAMPLERCUBE = 289,
SAMPLER2DSHADOW = 290,
SAMPLERCUBESHADOW = 291,
SAMPLER2DARRAY = 292,
SAMPLER2DARRAYSHADOW = 293,
ISAMPLER2D = 294,
ISAMPLER3D = 295,
ISAMPLERCUBE = 296,
ISAMPLER2DARRAY = 297,
USAMPLER2D = 298,
USAMPLER3D = 299,
USAMPLERCUBE = 300,
USAMPLER2DARRAY = 301,
SAMPLER = 302,
SAMPLERSHADOW = 303,
TEXTURE2D = 304,
TEXTURE3D = 305,
TEXTURECUBE = 306,
TEXTURE2DARRAY = 307,
ITEXTURE2D = 308,
ITEXTURE3D = 309,
ITEXTURECUBE = 310,
ITEXTURE2DARRAY = 311,
UTEXTURE2D = 312,
UTEXTURE3D = 313,
UTEXTURECUBE = 314,
UTEXTURE2DARRAY = 315,
ATTRIBUTE = 316,
VARYING = 317,
SAMPLERCUBEARRAY = 318,
SAMPLERCUBEARRAYSHADOW = 319,
ISAMPLERCUBEARRAY = 320,
USAMPLERCUBEARRAY = 321,
SAMPLER2DRECT = 322,
SAMPLER2DRECTSHADOW = 323,
ISAMPLER2DRECT = 324,
USAMPLER2DRECT = 325,
SAMPLERBUFFER = 326,
ISAMPLERBUFFER = 327,
USAMPLERBUFFER = 328,
SAMPLER2DMS = 329,
ISAMPLER2DMS = 330,
USAMPLER2DMS = 331,
SAMPLER2DMSARRAY = 332,
ISAMPLER2DMSARRAY = 333,
USAMPLER2DMSARRAY = 334,
SAMPLEREXTERNALOES = 335,
SAMPLEREXTERNAL2DY2YEXT = 336,
IMAGE1D = 337,
IIMAGE1D = 338,
UIMAGE1D = 339,
IMAGE2D = 340,
IIMAGE2D = 341,
UIMAGE2D = 342,
IMAGE3D = 343,
IIMAGE3D = 344,
UIMAGE3D = 345,
IMAGE2DRECT = 346,
IIMAGE2DRECT = 347,
UIMAGE2DRECT = 348,
IMAGECUBE = 349,
IIMAGECUBE = 350,
UIMAGECUBE = 351,
IMAGEBUFFER = 352,
IIMAGEBUFFER = 353,
UIMAGEBUFFER = 354,
IMAGE1DARRAY = 355,
IIMAGE1DARRAY = 356,
UIMAGE1DARRAY = 357,
IMAGE2DARRAY = 358,
IIMAGE2DARRAY = 359,
UIMAGE2DARRAY = 360,
IMAGECUBEARRAY = 361,
IIMAGECUBEARRAY = 362,
UIMAGECUBEARRAY = 363,
IMAGE2DMS = 364,
IIMAGE2DMS = 365,
UIMAGE2DMS = 366,
IMAGE2DMSARRAY = 367,
IIMAGE2DMSARRAY = 368,
UIMAGE2DMSARRAY = 369,
TEXTURECUBEARRAY = 370,
ITEXTURECUBEARRAY = 371,
UTEXTURECUBEARRAY = 372,
TEXTURE1D = 373,
ITEXTURE1D = 374,
UTEXTURE1D = 375,
TEXTURE1DARRAY = 376,
ITEXTURE1DARRAY = 377,
UTEXTURE1DARRAY = 378,
TEXTURE2DRECT = 379,
ITEXTURE2DRECT = 380,
UTEXTURE2DRECT = 381,
TEXTUREBUFFER = 382,
ITEXTUREBUFFER = 383,
UTEXTUREBUFFER = 384,
TEXTURE2DMS = 385,
ITEXTURE2DMS = 386,
UTEXTURE2DMS = 387,
TEXTURE2DMSARRAY = 388,
ITEXTURE2DMSARRAY = 389,
UTEXTURE2DMSARRAY = 390,
LEFT_OP = 391,
RIGHT_OP = 392,
INC_OP = 393,
DEC_OP = 394,
LE_OP = 395,
GE_OP = 396,
EQ_OP = 397,
NE_OP = 398,
AND_OP = 399,
OR_OP = 400,
XOR_OP = 401,
MUL_ASSIGN = 402,
DIV_ASSIGN = 403,
ADD_ASSIGN = 404,
MOD_ASSIGN = 405,
LEFT_ASSIGN = 406,
RIGHT_ASSIGN = 407,
AND_ASSIGN = 408,
XOR_ASSIGN = 409,
OR_ASSIGN = 410,
SUB_ASSIGN = 411,
STRING_LITERAL = 412,
LEFT_PAREN = 413,
RIGHT_PAREN = 414,
LEFT_BRACKET = 415,
RIGHT_BRACKET = 416,
LEFT_BRACE = 417,
RIGHT_BRACE = 418,
DOT = 419,
COMMA = 420,
COLON = 421,
EQUAL = 422,
SEMICOLON = 423,
BANG = 424,
DASH = 425,
TILDE = 426,
PLUS = 427,
STAR = 428,
SLASH = 429,
PERCENT = 430,
LEFT_ANGLE = 431,
RIGHT_ANGLE = 432,
VERTICAL_BAR = 433,
CARET = 434,
AMPERSAND = 435,
QUESTION = 436,
INVARIANT = 437,
HIGH_PRECISION = 438,
MEDIUM_PRECISION = 439,
LOW_PRECISION = 440,
PRECISION = 441,
PACKED = 442,
RESOURCE = 443,
SUPERP = 444,
FLOATCONSTANT = 445,
INTCONSTANT = 446,
UINTCONSTANT = 447,
BOOLCONSTANT = 448,
IDENTIFIER = 449,
TYPE_NAME = 450,
CENTROID = 451,
IN = 452,
OUT = 453,
INOUT = 454,
STRUCT = 455,
VOID = 456,
WHILE = 457,
BREAK = 458,
CONTINUE = 459,
DO = 460,
ELSE = 461,
FOR = 462,
IF = 463,
DISCARD = 464,
RETURN = 465,
SWITCH = 466,
CASE = 467,
DEFAULT = 468,
UNIFORM = 469,
SHARED = 470,
BUFFER = 471,
FLAT = 472,
SMOOTH = 473,
LAYOUT = 474,
PATCH = 475,
SAMPLE = 476,
COHERENT = 477,
VOLATILE = 478,
RESTRICT = 479,
READONLY = 480,
WRITEONLY = 481,
NOPERSPECTIVE = 482,
PRECISE = 483
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 103 "MachineIndependent/glslang_angle.y"
struct {
glslang::TSourceLoc loc;
union {
glslang::TString *string;
int i;
unsigned int u;
long long i64;
unsigned long long u64;
bool b;
double d;
};
glslang::TSymbol* symbol;
} lex;
struct {
glslang::TSourceLoc loc;
glslang::TOperator op;
union {
TIntermNode* intermNode;
glslang::TIntermNodePair nodePair;
glslang::TIntermTyped* intermTypedNode;
glslang::TAttributes* attributes;
};
union {
glslang::TPublicType type;
glslang::TFunction* function;
glslang::TParameter param;
glslang::TTypeLoc typeLine;
glslang::TTypeList* typeList;
glslang::TArraySizes* arraySizes;
glslang::TIdentifierList* identifierList;
};
glslang::TArraySizes* typeParameters;
} interm;
#line 322 "MachineIndependent/glslang_angle_tab.cpp.h"
};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
int yyparse (glslang::TParseContext* pParseContext);
#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_ANGLE_TAB_CPP_H_INCLUDED */
This source diff could not be displayed because it is too large. You can view the blob instead.
/* A Bison parser, made by GNU Bison 3.0.4. */ /* A Bison parser, made by GNU Bison 3.5.1. */
/* Bison interface for Yacc-like parsers in C /* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -30,8 +31,11 @@ ...@@ -30,8 +31,11 @@
This special exception was added by the Free Software Foundation in This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */ version 2.2 of Bison. */
#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED /* Undocumented macros, especially those whose name start with YY_,
# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED are private implementation details. Do not rely on them. */
#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
/* Debug traces. */ /* Debug traces. */
#ifndef YYDEBUG #ifndef YYDEBUG
# define YYDEBUG 1 # define YYDEBUG 1
...@@ -212,26 +216,26 @@ extern int yydebug; ...@@ -212,26 +216,26 @@ extern int yydebug;
SAMPLERCUBEARRAYSHADOW = 422, SAMPLERCUBEARRAYSHADOW = 422,
ISAMPLERCUBEARRAY = 423, ISAMPLERCUBEARRAY = 423,
USAMPLERCUBEARRAY = 424, USAMPLERCUBEARRAY = 424,
SAMPLER1D = 425, SAMPLER2DRECT = 425,
SAMPLER1DARRAY = 426, SAMPLER2DRECTSHADOW = 426,
SAMPLER1DARRAYSHADOW = 427, ISAMPLER2DRECT = 427,
ISAMPLER1D = 428, USAMPLER2DRECT = 428,
SAMPLER1DSHADOW = 429, SAMPLERBUFFER = 429,
SAMPLER2DRECT = 430, ISAMPLERBUFFER = 430,
SAMPLER2DRECTSHADOW = 431, USAMPLERBUFFER = 431,
ISAMPLER2DRECT = 432, SAMPLER2DMS = 432,
USAMPLER2DRECT = 433, ISAMPLER2DMS = 433,
SAMPLERBUFFER = 434, USAMPLER2DMS = 434,
ISAMPLERBUFFER = 435, SAMPLER2DMSARRAY = 435,
USAMPLERBUFFER = 436, ISAMPLER2DMSARRAY = 436,
SAMPLER2DMS = 437, USAMPLER2DMSARRAY = 437,
ISAMPLER2DMS = 438, SAMPLEREXTERNALOES = 438,
USAMPLER2DMS = 439, SAMPLEREXTERNAL2DY2YEXT = 439,
SAMPLER2DMSARRAY = 440, SAMPLER1D = 440,
ISAMPLER2DMSARRAY = 441, SAMPLER1DARRAY = 441,
USAMPLER2DMSARRAY = 442, SAMPLER1DARRAYSHADOW = 442,
SAMPLEREXTERNALOES = 443, ISAMPLER1D = 443,
SAMPLEREXTERNAL2DY2YEXT = 444, SAMPLER1DSHADOW = 444,
ISAMPLER1DARRAY = 445, ISAMPLER1DARRAY = 445,
USAMPLER1D = 446, USAMPLER1D = 446,
USAMPLER1DARRAY = 447, USAMPLER1DARRAY = 447,
...@@ -441,36 +445,35 @@ extern int yydebug; ...@@ -441,36 +445,35 @@ extern int yydebug;
HITATTREXT = 651, HITATTREXT = 651,
CALLDATAEXT = 652, CALLDATAEXT = 652,
CALLDATAINEXT = 653, CALLDATAINEXT = 653,
PATCH = 654, NONUNIFORM = 654,
SAMPLE = 655, DEVICECOHERENT = 655,
NONUNIFORM = 656, QUEUEFAMILYCOHERENT = 656,
COHERENT = 657, WORKGROUPCOHERENT = 657,
VOLATILE = 658, SUBGROUPCOHERENT = 658,
RESTRICT = 659, NONPRIVATE = 659,
READONLY = 660, SHADERCALLCOHERENT = 660,
WRITEONLY = 661, EXPLICITINTERPAMD = 661,
DEVICECOHERENT = 662, PERVERTEXNV = 662,
QUEUEFAMILYCOHERENT = 663, PERPRIMITIVENV = 663,
WORKGROUPCOHERENT = 664, PERVIEWNV = 664,
SUBGROUPCOHERENT = 665, PERTASKNV = 665,
NONPRIVATE = 666, PATCH = 666,
SHADERCALLCOHERENT = 667, SAMPLE = 667,
NOPERSPECTIVE = 668, COHERENT = 668,
EXPLICITINTERPAMD = 669, VOLATILE = 669,
PERVERTEXNV = 670, RESTRICT = 670,
PERPRIMITIVENV = 671, READONLY = 671,
PERVIEWNV = 672, WRITEONLY = 672,
PERTASKNV = 673, NOPERSPECTIVE = 673,
PRECISE = 674 PRECISE = 674
}; };
#endif #endif
/* Value type. */ /* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE union YYSTYPE
{ {
#line 97 "glslang.y" /* yacc.c:1909 */ #line 103 "MachineIndependent/glslang.y"
struct { struct {
glslang::TSourceLoc loc; glslang::TSourceLoc loc;
...@@ -506,9 +509,9 @@ union YYSTYPE ...@@ -506,9 +509,9 @@ union YYSTYPE
glslang::TArraySizes* typeParameters; glslang::TArraySizes* typeParameters;
} interm; } interm;
#line 510 "glslang_tab.cpp.h" /* yacc.c:1909 */ #line 513 "MachineIndependent/glslang_tab.cpp.h"
};
};
typedef union YYSTYPE YYSTYPE; typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
...@@ -518,4 +521,4 @@ typedef union YYSTYPE YYSTYPE; ...@@ -518,4 +521,4 @@ typedef union YYSTYPE YYSTYPE;
int yyparse (glslang::TParseContext* pParseContext); int yyparse (glslang::TParseContext* pParseContext);
#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */ #endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
// //
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#include "localintermediate.h" #include "localintermediate.h"
#include "../Include/InfoSink.h" #include "../Include/InfoSink.h"
...@@ -1562,4 +1562,4 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) ...@@ -1562,4 +1562,4 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
} // end namespace glslang } // end namespace glslang
#endif // not GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
// //
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#include "../Include/Common.h" #include "../Include/Common.h"
#include "../Include/InfoSink.h" #include "../Include/InfoSink.h"
...@@ -1281,4 +1281,4 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { ...@@ -1281,4 +1281,4 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) {
} // end namespace glslang } // end namespace glslang
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
// //
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#ifndef _IOMAPPER_INCLUDED #ifndef _IOMAPPER_INCLUDED
#define _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED
...@@ -186,7 +186,7 @@ protected: ...@@ -186,7 +186,7 @@ protected:
} }
}; };
// Defaulf I/O resolver for OpenGL // Default I/O resolver for OpenGL
struct TDefaultGlslIoResolver : public TDefaultIoResolverBase { struct TDefaultGlslIoResolver : public TDefaultIoResolverBase {
public: public:
typedef std::map<TString, int> TVarSlotMap; // <resourceName, location/binding> typedef std::map<TString, int> TVarSlotMap; // <resourceName, location/binding>
...@@ -299,4 +299,4 @@ public: ...@@ -299,4 +299,4 @@ public:
#endif // _IOMAPPER_INCLUDED #endif // _IOMAPPER_INCLUDED
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
...@@ -82,7 +82,7 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message) ...@@ -82,7 +82,7 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message)
// //
void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
{ {
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
mergeCallGraphs(infoSink, unit); mergeCallGraphs(infoSink, unit);
mergeModes(infoSink, unit); mergeModes(infoSink, unit);
mergeTrees(infoSink, unit); mergeTrees(infoSink, unit);
...@@ -104,7 +104,7 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) ...@@ -104,7 +104,7 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit)
callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end());
} }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_MAX(member) member = std::max(member, unit.member)
#define MERGE_TRUE(member) if (unit.member) member = unit.member; #define MERGE_TRUE(member) if (unit.member) member = unit.member;
...@@ -533,7 +533,7 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) ...@@ -533,7 +533,7 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType)
// //
void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage)
{ {
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
bool writeTypeComparison = false; bool writeTypeComparison = false;
// Types have to match // Types have to match
......
...@@ -241,7 +241,10 @@ class TIntermediate { ...@@ -241,7 +241,10 @@ class TIntermediate {
public: public:
explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) :
language(l), language(l),
profile(p), version(v), treeRoot(0), #ifndef GLSLANG_ANGLE
profile(p), version(v),
#endif
treeRoot(0),
numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
invertY(false), invertY(false),
useStorageBuffer(false), useStorageBuffer(false),
...@@ -295,9 +298,20 @@ public: ...@@ -295,9 +298,20 @@ public:
#endif #endif
} }
void setVersion(int v) { version = v; } void setVersion(int v)
{
#ifndef GLSLANG_ANGLE
version = v;
#endif
}
void setProfile(EProfile p)
{
#ifndef GLSLANG_ANGLE
profile = p;
#endif
}
int getVersion() const { return version; } int getVersion() const { return version; }
void setProfile(EProfile p) { profile = p; }
EProfile getProfile() const { return profile; } EProfile getProfile() const { return profile; }
void setSpv(const SpvVersion& s) void setSpv(const SpvVersion& s)
{ {
...@@ -929,8 +943,13 @@ protected: ...@@ -929,8 +943,13 @@ protected:
typedef std::list<TCall> TGraph; typedef std::list<TCall> TGraph;
TGraph callGraph; TGraph callGraph;
#ifdef GLSLANG_ANGLE
const EProfile profile = ECoreProfile;
const int version = 450;
#else
EProfile profile; // source profile EProfile profile; // source profile
int version; // source version int version; // source version
#endif
SpvVersion spvVersion; SpvVersion spvVersion;
TIntermNode* treeRoot; TIntermNode* treeRoot;
std::map<std::string, TExtensionBehavior> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them std::map<std::string, TExtensionBehavior> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
......
...@@ -58,7 +58,7 @@ public: ...@@ -58,7 +58,7 @@ public:
const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink,
bool forwardCompatible, EShMessages messages) bool forwardCompatible, EShMessages messages)
: :
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
forwardCompatible(forwardCompatible), forwardCompatible(forwardCompatible),
profile(profile), profile(profile),
#endif #endif
...@@ -117,8 +117,13 @@ public: ...@@ -117,8 +117,13 @@ public:
bool suppressWarnings() const { return true; } bool suppressWarnings() const { return true; }
bool isForwardCompatible() const { return false; } bool isForwardCompatible() const { return false; }
#else #else
#ifdef GLSLANG_ANGLE
const bool forwardCompatible = true;
const EProfile profile = ECoreProfile;
#else
bool forwardCompatible; // true if errors are to be given for use of deprecated features bool forwardCompatible; // true if errors are to be given for use of deprecated features
EProfile profile; // the declared profile in the shader (core by default) EProfile profile; // the declared profile in the shader (core by default)
#endif
bool isEsProfile() const { return profile == EEsProfile; } bool isEsProfile() const { return profile == EEsProfile; }
void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc); void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc);
void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions,
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
// //
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#include "../Include/Common.h" #include "../Include/Common.h"
#include "reflection.h" #include "reflection.h"
...@@ -1266,4 +1266,4 @@ void TReflection::dump() ...@@ -1266,4 +1266,4 @@ void TReflection::dump()
} // end namespace glslang } // end namespace glslang
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
// //
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
#ifndef _REFLECTION_INCLUDED #ifndef _REFLECTION_INCLUDED
#define _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED
...@@ -220,4 +220,4 @@ protected: ...@@ -220,4 +220,4 @@ protected:
#endif // _REFLECTION_INCLUDED #endif // _REFLECTION_INCLUDED
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
...@@ -690,7 +690,7 @@ private: ...@@ -690,7 +690,7 @@ private:
TShader& operator=(TShader&); TShader& operator=(TShader&);
}; };
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// //
// A reflection database and its interface, consistent with the OpenGL API reflection queries. // A reflection database and its interface, consistent with the OpenGL API reflection queries.
...@@ -808,7 +808,7 @@ public: ...@@ -808,7 +808,7 @@ public:
virtual void addStage(EShLanguage stage) = 0; virtual void addStage(EShLanguage stage) = 0;
}; };
#endif // GLSLANG_WEB #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
// Make one TProgram per set of shaders that will get linked together. Add all // Make one TProgram per set of shaders that will get linked together. Add all
// the shaders that are to be linked together. After calling shader.parse() // the shaders that are to be linked together. After calling shader.parse()
...@@ -829,7 +829,7 @@ public: ...@@ -829,7 +829,7 @@ public:
TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; }
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
// Reflection Interface // Reflection Interface
...@@ -923,7 +923,7 @@ public: ...@@ -923,7 +923,7 @@ public:
// If resolver is not provided it uses the previous approach // If resolver is not provided it uses the previous approach
// and respects auto assignment and offsets. // and respects auto assignment and offsets.
GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr);
#endif #endif // !GLSLANG_WEB && !GLSLANG_ANGLE
protected: protected:
GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages); GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages);
...@@ -933,7 +933,7 @@ protected: ...@@ -933,7 +933,7 @@ protected:
TIntermediate* intermediate[EShLangCount]; TIntermediate* intermediate[EShLangCount];
bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage
TInfoSink* infoSink; TInfoSink* infoSink;
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
TReflection* reflection; TReflection* reflection;
#endif #endif
bool linked; bool linked;
......
...@@ -39,6 +39,7 @@ then ...@@ -39,6 +39,7 @@ then
elif [ "$#" -eq 0 ] elif [ "$#" -eq 0 ]
then then
m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
m4 -P -DGLSLANG_ANGLE MachineIndependent/glslang.m4 > MachineIndependent/glslang_angle.y
else else
echo usage: echo usage:
echo $0 web echo $0 web
...@@ -47,3 +48,7 @@ else ...@@ -47,3 +48,7 @@ else
fi fi
bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp
if [ "$1" != 'web' ]
then
bison --defines=MachineIndependent/glslang_angle_tab.cpp.h -t MachineIndependent/glslang_angle.y -o MachineIndependent/glslang_angle_tab.cpp
fi
...@@ -75,7 +75,7 @@ TEST_P(LinkTestVulkan, FromFile) ...@@ -75,7 +75,7 @@ TEST_P(LinkTestVulkan, FromFile)
result.linkingOutput = program.getInfoLog(); result.linkingOutput = program.getInfoLog();
result.linkingError = program.getInfoDebugLog(); result.linkingError = program.getInfoDebugLog();
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (success) if (success)
program.mapIO(); program.mapIO();
#endif #endif
......
...@@ -253,7 +253,7 @@ public: ...@@ -253,7 +253,7 @@ public:
glslang::TProgram program; glslang::TProgram program;
program.addShader(&shader); program.addShader(&shader);
success &= program.link(controls); success &= program.link(controls);
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (success) if (success)
program.mapIO(); program.mapIO();
#endif #endif
...@@ -315,7 +315,7 @@ public: ...@@ -315,7 +315,7 @@ public:
program.addShader(&shader); program.addShader(&shader);
success &= program.link(controls); success &= program.link(controls);
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (success) if (success)
program.mapIO(); program.mapIO();
#endif #endif
...@@ -360,7 +360,7 @@ public: ...@@ -360,7 +360,7 @@ public:
glslang::TProgram program; glslang::TProgram program;
program.addShader(&shader); program.addShader(&shader);
success &= program.link(controls); success &= program.link(controls);
#ifndef GLSLANG_WEB #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
if (success) if (success)
program.mapIO(); program.mapIO();
#endif #endif
......
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
"glslang/MachineIndependent/glslang_tab.cpp", "glslang/MachineIndependent/glslang_tab.cpp",
"glslang/MachineIndependent/glslang_tab.cpp.h" "glslang/MachineIndependent/glslang_tab.cpp.h"
"glslang/MachineIndependent/glslang_angle_tab.cpp",
"glslang/MachineIndependent/glslang_angle_tab.cpp.h"
] ]
} }
], ],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment