commit
48bc10b79f
@ -17,6 +17,20 @@ branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
# changes to these files don't need to trigger testing
|
||||
skip_commits:
|
||||
files:
|
||||
- README.md
|
||||
- README-spirv-remap.txt
|
||||
- LICENSE.txt
|
||||
- CODE_OF_CONDUCT.md
|
||||
- BUILD.*
|
||||
- WORKSPACE
|
||||
- kokoro/*
|
||||
- make-revision
|
||||
- Android.mk
|
||||
- _config.yml
|
||||
|
||||
# Travis advances the master-tot tag to current top of the tree after
|
||||
# each push into the master branch, because it relies on that tag to
|
||||
# upload build artifacts to the master-tot release. This will cause
|
||||
|
10
README.md
10
README.md
@ -35,7 +35,7 @@ Deprecations
|
||||
`${CMAKE_INSTALL_INCLUDEDIR}`. This `SPIRV` folder is being moved to
|
||||
`glslang/SPIRV`. During the transition the `SPIRV` folder will be installed into
|
||||
both locations. The old install of `SPIRV/` will be removed as a CMake install
|
||||
target no sooner then May 1, 2020. See issue #1964.
|
||||
target no sooner than May 1, 2020. See issue #1964.
|
||||
|
||||
Execution of Standalone Wrapper
|
||||
-------------------------------
|
||||
@ -185,7 +185,7 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception
|
||||
+ turn on `-DENABLE_GLSLANG_WEB=ON`
|
||||
+ optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON`
|
||||
* `emsdk` needs to be present in your executable search path, *PATH* for
|
||||
Bash-like enivironments
|
||||
Bash-like environments
|
||||
+ [Instructions located
|
||||
here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
||||
* Wrap cmake call: `emcmake cmake`
|
||||
@ -309,7 +309,7 @@ class TProgram
|
||||
Reflection queries
|
||||
```
|
||||
|
||||
For just validating (not generating code), subsitute these calls:
|
||||
For just validating (not generating code), substitute these calls:
|
||||
|
||||
```cxx
|
||||
setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0);
|
||||
@ -327,7 +327,7 @@ This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to
|
||||
as the `Sh*()` interface, as all the entry points start `Sh`.
|
||||
|
||||
The `Sh*()` interface takes a "compiler" call-back object, which it calls after
|
||||
building call back that is passed the AST and can then execute a backend on it.
|
||||
building call back that is passed the AST and can then execute a back end on it.
|
||||
|
||||
The following is a simplified resulting run-time call stack:
|
||||
|
||||
@ -354,7 +354,7 @@ Basic Internal Operation
|
||||
* The intermediate representation is very high-level, and represented
|
||||
as an in-memory tree. This serves to lose no information from the
|
||||
original program, and to have efficient transfer of the result from
|
||||
parsing to the back-end. In the AST, constants are propogated and
|
||||
parsing to the back-end. In the AST, constants are propagated and
|
||||
folded, and a very small amount of dead code is eliminated.
|
||||
|
||||
To aid linking and reflection, the last top-level branch in the AST
|
||||
|
@ -245,7 +245,9 @@ protected:
|
||||
std::unordered_map<std::string, spv::Function*> functionMap;
|
||||
std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
|
||||
// for mapping glslang block indices to spv indices (e.g., due to hidden members):
|
||||
std::unordered_map<const glslang::TTypeList*, std::vector<int> > memberRemapper;
|
||||
std::unordered_map<int, std::vector<int>> memberRemapper;
|
||||
// for mapping glslang symbol struct to symbol Id
|
||||
std::unordered_map<const glslang::TTypeList*, int> glslangTypeToIdMap;
|
||||
std::stack<bool> breakForLoop; // false means break for switch
|
||||
std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator;
|
||||
// Map pointee types for EbtReference to their forward pointers
|
||||
@ -1661,6 +1663,9 @@ void TGlslangToSpvTraverser::dumpSpv(std::vector<unsigned int>& out)
|
||||
void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
|
||||
{
|
||||
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
|
||||
if (symbol->getType().isStruct())
|
||||
glslangTypeToIdMap[symbol->getType().getStruct()] = symbol->getId();
|
||||
|
||||
if (symbol->getType().getQualifier().isSpecConstant())
|
||||
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
|
||||
|
||||
@ -1753,6 +1758,12 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
|
||||
bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node)
|
||||
{
|
||||
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
|
||||
if (node->getLeft()->getAsSymbolNode() != nullptr && node->getLeft()->getType().isStruct()) {
|
||||
glslangTypeToIdMap[node->getLeft()->getType().getStruct()] = node->getLeft()->getAsSymbolNode()->getId();
|
||||
}
|
||||
if (node->getRight()->getAsSymbolNode() != nullptr && node->getRight()->getType().isStruct()) {
|
||||
glslangTypeToIdMap[node->getRight()->getType().getStruct()] = node->getRight()->getAsSymbolNode()->getId();
|
||||
}
|
||||
|
||||
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
|
||||
if (node->getType().getQualifier().isSpecConstant())
|
||||
@ -1857,9 +1868,12 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
|
||||
{
|
||||
// This may be, e.g., an anonymous block-member selection, which generally need
|
||||
// index remapping due to hidden members in anonymous blocks.
|
||||
std::vector<int>& remapper = memberRemapper[node->getLeft()->getType().getStruct()];
|
||||
assert(remapper.size() > 0);
|
||||
spvIndex = remapper[glslangIndex];
|
||||
int glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()];
|
||||
if (memberRemapper.find(glslangId) != memberRemapper.end()) {
|
||||
std::vector<int>& remapper = memberRemapper[glslangId];
|
||||
assert(remapper.size() > 0);
|
||||
spvIndex = remapper[glslangIndex];
|
||||
}
|
||||
}
|
||||
|
||||
// normal case for indexing array or structure or block
|
||||
@ -3483,7 +3497,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||
|
||||
// else, we haven't seen it...
|
||||
if (type.getBasicType() == glslang::EbtBlock)
|
||||
memberRemapper[glslangMembers].resize(glslangMembers->size());
|
||||
memberRemapper[glslangTypeToIdMap[glslangMembers]].resize(glslangMembers->size());
|
||||
spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier);
|
||||
}
|
||||
break;
|
||||
@ -3619,15 +3633,15 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
|
||||
if (glslangMember.hiddenMember()) {
|
||||
++memberDelta;
|
||||
if (type.getBasicType() == glslang::EbtBlock)
|
||||
memberRemapper[glslangMembers][i] = -1;
|
||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
||||
} else {
|
||||
if (type.getBasicType() == glslang::EbtBlock) {
|
||||
if (filterMember(glslangMember)) {
|
||||
memberDelta++;
|
||||
memberRemapper[glslangMembers][i] = -1;
|
||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
||||
continue;
|
||||
}
|
||||
memberRemapper[glslangMembers][i] = i - memberDelta;
|
||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta;
|
||||
}
|
||||
// modify just this child's view of the qualifier
|
||||
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
||||
@ -3685,7 +3699,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
|
||||
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
|
||||
int member = i;
|
||||
if (type.getBasicType() == glslang::EbtBlock) {
|
||||
member = memberRemapper[glslangMembers][i];
|
||||
member = memberRemapper[glslangTypeToIdMap[glslangMembers]][i];
|
||||
if (filterMember(glslangMember))
|
||||
continue;
|
||||
}
|
||||
@ -7482,7 +7496,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||
id = builder.createCompositeExtract(mulOp, typeId, 0);
|
||||
for (int i = 1; i < componentCount; ++i) {
|
||||
builder.setPrecision(id, precision);
|
||||
id = builder.createBinOp(spv::OpIAdd, typeId, id, builder.createCompositeExtract(operands[0], typeId, i));
|
||||
id = builder.createBinOp(spv::OpIAdd, typeId, id, builder.createCompositeExtract(mulOp, typeId, i));
|
||||
}
|
||||
} else {
|
||||
switch (consumedOperands) {
|
||||
|
@ -67,6 +67,8 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog
|
||||
logger->missingFunctionality("Target version for SPIRV-Tools validator");
|
||||
return spv_target_env::SPV_ENV_VULKAN_1_1;
|
||||
}
|
||||
case glslang::EShTargetVulkan_1_2:
|
||||
return spv_target_env::SPV_ENV_VULKAN_1_2;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ public:
|
||||
text.append("#define ");
|
||||
fixLine(def);
|
||||
|
||||
Processes.push_back("D");
|
||||
Processes.push_back("define-macro ");
|
||||
Processes.back().append(def);
|
||||
|
||||
// The first "=" needs to turn into a space
|
||||
@ -222,7 +222,7 @@ public:
|
||||
text.append("#undef ");
|
||||
fixLine(undef);
|
||||
|
||||
Processes.push_back("U");
|
||||
Processes.push_back("undef-macro ");
|
||||
Processes.back().append(undef);
|
||||
|
||||
text.append(undef);
|
||||
@ -292,9 +292,12 @@ bool SetConfigFile(const std::string& name)
|
||||
//
|
||||
// Give error and exit with failure code.
|
||||
//
|
||||
void Error(const char* message)
|
||||
void Error(const char* message, const char* detail = nullptr)
|
||||
{
|
||||
fprintf(stderr, "%s: Error %s (use -h for usage)\n", ExecutableName, message);
|
||||
fprintf(stderr, "%s: Error: ", ExecutableName);
|
||||
if (detail != nullptr)
|
||||
fprintf(stderr, "%s: ", detail);
|
||||
fprintf(stderr, "%s (use -h for usage)\n", message);
|
||||
exit(EFailUsage);
|
||||
}
|
||||
|
||||
@ -482,7 +485,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
Options |= EOptionAutoMapLocations;
|
||||
} else if (lowerword == "uniform-base") {
|
||||
if (argc <= 1)
|
||||
Error("no <base> provided for --uniform-base");
|
||||
Error("no <base> provided", lowerword.c_str());
|
||||
uniformBase = ::strtol(argv[1], NULL, 10);
|
||||
bumpArg();
|
||||
break;
|
||||
@ -493,15 +496,23 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
else if (strcmp(argv[1], "opengl100") == 0)
|
||||
setOpenGlSpv();
|
||||
else
|
||||
Error("--client expects vulkan100 or opengl100");
|
||||
}
|
||||
Error("expects vulkan100 or opengl100", lowerword.c_str());
|
||||
} else
|
||||
Error("expects vulkan100 or opengl100", lowerword.c_str());
|
||||
bumpArg();
|
||||
} else if (lowerword == "define-macro" ||
|
||||
lowerword == "d") {
|
||||
if (argc > 1)
|
||||
UserPreamble.addDef(argv[1]);
|
||||
else
|
||||
Error("expects <name[=def]>", argv[0]);
|
||||
bumpArg();
|
||||
} else if (lowerword == "dump-builtin-symbols") {
|
||||
DumpBuiltinSymbols = true;
|
||||
} else if (lowerword == "entry-point") {
|
||||
entryPointName = argv[1];
|
||||
if (argc <= 1)
|
||||
Error("no <name> provided for --entry-point");
|
||||
Error("no <name> provided", lowerword.c_str());
|
||||
bumpArg();
|
||||
} else if (lowerword == "flatten-uniform-arrays" || // synonyms
|
||||
lowerword == "flatten-uniform-array" ||
|
||||
@ -576,7 +587,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
} else if (lowerword == "source-entrypoint" || // synonyms
|
||||
lowerword == "sep") {
|
||||
if (argc <= 1)
|
||||
Error("no <entry-point> provided for --source-entrypoint");
|
||||
Error("no <entry-point> provided", lowerword.c_str());
|
||||
sourceEntryPointName = argv[1];
|
||||
bumpArg();
|
||||
break;
|
||||
@ -597,6 +608,9 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
} else if (strcmp(argv[1], "vulkan1.1") == 0) {
|
||||
setVulkanSpv();
|
||||
ClientVersion = glslang::EShTargetVulkan_1_1;
|
||||
} else if (strcmp(argv[1], "vulkan1.2") == 0) {
|
||||
setVulkanSpv();
|
||||
ClientVersion = glslang::EShTargetVulkan_1_2;
|
||||
} else if (strcmp(argv[1], "opengl") == 0) {
|
||||
setOpenGlSpv();
|
||||
ClientVersion = glslang::EShTargetOpenGL_450;
|
||||
@ -619,22 +633,29 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
TargetLanguage = glslang::EShTargetSpv;
|
||||
TargetVersion = glslang::EShTargetSpv_1_5;
|
||||
} else
|
||||
Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl,\n"
|
||||
Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2, opengl,\n"
|
||||
"spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5");
|
||||
}
|
||||
bumpArg();
|
||||
} else if (lowerword == "undef-macro" ||
|
||||
lowerword == "u") {
|
||||
if (argc > 1)
|
||||
UserPreamble.addUndef(argv[1]);
|
||||
else
|
||||
Error("expects <name>", argv[0]);
|
||||
bumpArg();
|
||||
} else if (lowerword == "variable-name" || // synonyms
|
||||
lowerword == "vn") {
|
||||
Options |= EOptionOutputHexadecimal;
|
||||
if (argc <= 1)
|
||||
Error("no <C-variable-name> provided for --variable-name");
|
||||
Error("no <C-variable-name> provided", lowerword.c_str());
|
||||
variableName = argv[1];
|
||||
bumpArg();
|
||||
break;
|
||||
} else if (lowerword == "version") {
|
||||
Options |= EOptionDumpVersions;
|
||||
} else {
|
||||
usage();
|
||||
Error("unrecognized command-line option", argv[0]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -645,7 +666,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
if (argv[0][2] == 0)
|
||||
Options |= EOptionReadHlsl;
|
||||
else
|
||||
UserPreamble.addDef(getStringOperand("-D<macro> macro name"));
|
||||
UserPreamble.addDef(getStringOperand("-D<name[=def]>"));
|
||||
break;
|
||||
case 'u':
|
||||
uniformLocationOverrides.push_back(getUniformOverride());
|
||||
@ -688,7 +709,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
bumpArg();
|
||||
break;
|
||||
case 'U':
|
||||
UserPreamble.addUndef(getStringOperand("-U<macro>: macro name"));
|
||||
UserPreamble.addUndef(getStringOperand("-U<name>"));
|
||||
break;
|
||||
case 'V':
|
||||
setVulkanSpv();
|
||||
@ -760,7 +781,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
Options |= EOptionOutputHexadecimal;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
Error("unrecognized command-line option", argv[0]);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@ -807,6 +828,10 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
TargetLanguage = glslang::EShTargetSpv;
|
||||
TargetVersion = glslang::EShTargetSpv_1_3;
|
||||
break;
|
||||
case glslang::EShTargetVulkan_1_2:
|
||||
TargetLanguage = glslang::EShTargetSpv;
|
||||
TargetVersion = glslang::EShTargetSpv_1_5;
|
||||
break;
|
||||
case glslang::EShTargetOpenGL_450:
|
||||
TargetLanguage = glslang::EShTargetSpv;
|
||||
TargetVersion = glslang::EShTargetSpv_1_0;
|
||||
@ -1263,7 +1288,7 @@ int singleMain()
|
||||
ProcessConfigFile();
|
||||
|
||||
if ((Options & EOptionReadHlsl) && !((Options & EOptionOutputPreprocessed) || (Options & EOptionSpv)))
|
||||
Error("ERROR: HLSL requires SPIR-V code generation (or preprocessing only)");
|
||||
Error("HLSL requires SPIR-V code generation (or preprocessing only)");
|
||||
|
||||
//
|
||||
// Two modes:
|
||||
@ -1498,8 +1523,8 @@ void usage()
|
||||
"Options:\n"
|
||||
" -C cascading errors; risk crash from accumulation of error recoveries\n"
|
||||
" -D input is HLSL (this is the default when any suffix is .hlsl)\n"
|
||||
" -D<macro=def>\n"
|
||||
" -D<macro> define a pre-processor macro\n"
|
||||
" -D<name[=def]> | --define-macro <name[=def]> | --D <name[=def]>\n"
|
||||
" define a pre-processor macro\n"
|
||||
" -E print pre-processed GLSL; cannot be used with -l;\n"
|
||||
" errors will appear on stderr\n"
|
||||
" -G[ver] create SPIR-V binary, under OpenGL semantics; turns on -l;\n"
|
||||
@ -1515,7 +1540,8 @@ void usage()
|
||||
" -Os optimizes SPIR-V to minimize size\n"
|
||||
" -S <stage> uses specified stage rather than parsing the file extension\n"
|
||||
" choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
|
||||
" -U<macro> undefine a pre-processor macro\n"
|
||||
" -U<name> | --undef-macro <name> | --U <name>\n"
|
||||
" undefine a pre-processor macro\n"
|
||||
" -V[ver] create SPIR-V binary, under Vulkan semantics; turns on -l;\n"
|
||||
" default file name is <stage>.spv (-o overrides this)\n"
|
||||
" 'ver', when present, is the version of the input semantics,\n"
|
||||
@ -1621,16 +1647,17 @@ void usage()
|
||||
" --sep synonym for --source-entrypoint\n"
|
||||
" --stdin read from stdin instead of from a file;\n"
|
||||
" requires providing the shader stage using -S\n"
|
||||
" --target-env {vulkan1.0 | vulkan1.1 | opengl | \n"
|
||||
" --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | opengl | \n"
|
||||
" spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n"
|
||||
" set execution environment that emitted code\n"
|
||||
" will execute in (versus source language\n"
|
||||
" semantics selected by --client) defaults:\n"
|
||||
" * 'vulkan1.0' under '--client vulkan<ver>'\n"
|
||||
" * 'opengl' under '--client opengl<ver>'\n"
|
||||
" * 'spirv1.0' under --target-env vulkan1.0\n"
|
||||
" * 'spirv1.3' under --target-env vulkan1.1\n"
|
||||
" multiple --targen-env can be specified.\n"
|
||||
" Set the execution environment that the\n"
|
||||
" generated code will be executed in.\n"
|
||||
" Defaults to:\n"
|
||||
" * vulkan1.0 under --client vulkan<ver>\n"
|
||||
" * opengl under --client opengl<ver>\n"
|
||||
" * spirv1.0 under --target-env vulkan1.0\n"
|
||||
" * spirv1.3 under --target-env vulkan1.1\n"
|
||||
" * spirv1.5 under --target-env vulkan1.2\n"
|
||||
" Multiple --target-env can be specified.\n"
|
||||
" --variable-name <name>\n"
|
||||
" --vn <name> creates a C header file that contains a\n"
|
||||
" uint32_t array named <name>\n"
|
||||
|
@ -201,3 +201,15 @@ int mac;
|
||||
|
||||
#define macr(A,B) A ## B
|
||||
int macr(qrs,tuv);
|
||||
|
||||
layout(std140) uniform BlockName // ERROR
|
||||
{
|
||||
int test;
|
||||
};
|
||||
|
||||
#extension GL_ARB_uniform_buffer_object : enable
|
||||
|
||||
layout(std140) uniform BlockName
|
||||
{
|
||||
int test;
|
||||
};
|
@ -62,12 +62,14 @@ void bar2()
|
||||
b3 < b3; // ERROR
|
||||
uv3 > uv3; // ERROR
|
||||
uvec2(2, 3) >= uvec2(3,3); // ERROR
|
||||
int samples = gl_NumSamples; // ERROR
|
||||
int(bl4) <= int(bl4); // true
|
||||
int(bl4.x) > int(bl4.y); // false
|
||||
}
|
||||
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_texture_rectangle : enable
|
||||
#extension GL_ARB_sample_shading : enable
|
||||
|
||||
uniform sampler2D samp2D;
|
||||
uniform sampler2DShadow samp2DS;
|
||||
@ -83,6 +85,7 @@ void bar23()
|
||||
s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1));
|
||||
s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); // ERROR
|
||||
s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); // ERROR
|
||||
int samples = gl_NumSamples;
|
||||
}
|
||||
|
||||
#extension GL_ARB_gpu_shader5 : enable
|
||||
|
@ -17,6 +17,7 @@ void main()
|
||||
#error GL_ES is not set
|
||||
#endif
|
||||
|
||||
|
||||
in struct S { float f; } s; // ERROR
|
||||
|
||||
float patch = 3.1;
|
||||
@ -51,3 +52,9 @@ float fooi()
|
||||
{
|
||||
return i1 + i2;
|
||||
}
|
||||
|
||||
uniform sampler2DMS aaa1; // ERROR
|
||||
|
||||
#extension GL_ARB_texture_multisample : enable
|
||||
|
||||
uniform sampler2DMS aaa2;
|
||||
|
@ -49,3 +49,12 @@ int primitiveID()
|
||||
return gl_PrimitiveID;
|
||||
gl_PerFragment; // ERROR, block name can't get reused
|
||||
}
|
||||
|
||||
in double type1; // ERROR
|
||||
#extension GL_ARB_gpu_shader_fp64 : enable
|
||||
double type2;
|
||||
double type3 = 2.0;
|
||||
int absTest = sqrt(type3);
|
||||
double absTest2 = sqrt(type3);
|
||||
double absTest3 = sqrt(2);
|
||||
float dk = sqrt(11);
|
@ -6,4 +6,5 @@ in dmat4 dm4;
|
||||
|
||||
void main()
|
||||
{
|
||||
int test = gl_MaxFragmentUniformVectors;
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
#version 450 core
|
||||
layout(local_size_x = 0) in; // ERROR, 0 not allowed
|
||||
|
||||
layout(binding=10000) uniform atomic_uint; // ERROR
|
||||
|
||||
void main()
|
||||
{
|
||||
shared float f; // ERROR shared must be global
|
||||
|
@ -1,6 +1,7 @@
|
||||
#version 420 core
|
||||
|
||||
layout(binding = 0) uniform atomic_uint counter;
|
||||
layout(binding = 0, offset = 9) uniform atomic_uint counter;
|
||||
|
||||
uint func(atomic_uint c)
|
||||
{
|
||||
@ -41,7 +42,7 @@ uniform atomic_uint aNoBind; // ERROR, no binding
|
||||
layout(binding=0, offset=32) uniform atomic_uint aOffset;
|
||||
layout(binding=0, offset=4) uniform atomic_uint;
|
||||
layout(binding=0) uniform atomic_uint bar3; // offset is 4
|
||||
layout(binding=0) uniform atomic_uint ac[3]; // offset = 8
|
||||
layout(binding=0) uniform atomic_uint ac[2]; // offset = 8
|
||||
layout(binding=0) uniform atomic_uint ad; // offset = 20
|
||||
layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding
|
||||
layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets
|
||||
|
@ -79,7 +79,8 @@ ERROR: 0:192: 'assign' : l-value required (can't modify a const)
|
||||
ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserved
|
||||
ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions
|
||||
ERROR: 80 compilation errors. No code generated.
|
||||
ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 81 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 120
|
||||
|
@ -7,36 +7,38 @@ WARNING: 0:45: extension GL_ARB_texture_gather is being used for textureGather(.
|
||||
ERROR: 0:62: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type ' temp 3-component vector of bool' and a right operand of type ' temp 3-component vector of bool' (or there is no acceptable conversion)
|
||||
ERROR: 0:63: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' temp 3-component vector of uint' and a right operand of type ' temp 3-component vector of uint' (or there is no acceptable conversion)
|
||||
ERROR: 0:64: '>=' : wrong operand types: no operation '>=' exists that takes a left-hand operand of type ' const 2-component vector of uint' and a right operand of type ' const 2-component vector of uint' (or there is no acceptable conversion)
|
||||
ERROR: 0:80: 'textureGatherOffset' : no matching overloaded function found
|
||||
ERROR: 0:80: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float'
|
||||
ERROR: 0:81: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:84: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:85: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
WARNING: 0:88: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
|
||||
ERROR: 0:120: 'line continuation' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:126: 'uniform block' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:140: 'length' : does not operate on this type: temp bool
|
||||
ERROR: 0:140: 'boolb' : can't use function syntax on variable
|
||||
ERROR: 0:141: 'length' : does not operate on this type: temp float
|
||||
ERROR: 0:141: '' : function call, method, or subroutine call expected
|
||||
ERROR: 0:141: '' : no matching overloaded function found
|
||||
ERROR: 0:142: 'length' : incomplete method syntax
|
||||
ERROR: 0:143: 'length' : method does not accept any arguments
|
||||
ERROR: 0:146: 'gl_FogFragCoord' : identifiers starting with "gl_" are reserved
|
||||
ERROR: 0:151: 'int' : must be qualified as flat in
|
||||
ERROR: 0:151: 'redeclaration' : cannot change the type of gl_FogFragCoord
|
||||
ERROR: 0:153: 'early_fragment_tests' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:154: 'image load store' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:154: 'iimage2D' : Reserved word.
|
||||
ERROR: 0:169: 'early_fragment_tests' : can only apply to 'in'
|
||||
ERROR: 0:173: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 29 compilation errors. No code generated.
|
||||
ERROR: 0:65: 'gl_NumSamples' : required extension not requested: GL_ARB_sample_shading
|
||||
ERROR: 0:82: 'textureGatherOffset' : no matching overloaded function found
|
||||
ERROR: 0:82: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float'
|
||||
ERROR: 0:83: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:86: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:87: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions
|
||||
WARNING: 0:91: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
|
||||
ERROR: 0:123: 'line continuation' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:129: 'uniform block' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:143: 'length' : does not operate on this type: temp bool
|
||||
ERROR: 0:143: 'boolb' : can't use function syntax on variable
|
||||
ERROR: 0:144: 'length' : does not operate on this type: temp float
|
||||
ERROR: 0:144: '' : function call, method, or subroutine call expected
|
||||
ERROR: 0:144: '' : no matching overloaded function found
|
||||
ERROR: 0:145: 'length' : incomplete method syntax
|
||||
ERROR: 0:146: 'length' : method does not accept any arguments
|
||||
ERROR: 0:149: 'gl_FogFragCoord' : identifiers starting with "gl_" are reserved
|
||||
ERROR: 0:154: 'int' : must be qualified as flat in
|
||||
ERROR: 0:154: 'redeclaration' : cannot change the type of gl_FogFragCoord
|
||||
ERROR: 0:156: 'early_fragment_tests' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:157: 'image load store' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:157: 'iimage2D' : Reserved word.
|
||||
ERROR: 0:172: 'early_fragment_tests' : can only apply to 'in'
|
||||
ERROR: 0:176: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 30 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 130
|
||||
Requested GL_ARB_explicit_attrib_location
|
||||
Requested GL_ARB_explicit_uniform_location
|
||||
Requested GL_ARB_gpu_shader5
|
||||
Requested GL_ARB_sample_shading
|
||||
Requested GL_ARB_separate_shader_objects
|
||||
Requested GL_ARB_shader_image_load_store
|
||||
Requested GL_ARB_shading_language_420pack
|
||||
@ -122,259 +124,267 @@ ERROR: node is still EOpNull!
|
||||
0:63 false (const bool)
|
||||
0:64 Constant:
|
||||
0:64 false (const bool)
|
||||
0:65 Constant:
|
||||
0:65 true (const bool)
|
||||
0:65 Sequence
|
||||
0:65 move second child to first child ( temp int)
|
||||
0:65 'samples' ( temp int)
|
||||
0:65 'gl_NumSamples' ( uniform int SampleMaskIn)
|
||||
0:66 Constant:
|
||||
0:66 false (const bool)
|
||||
0:77 Function Definition: bar23( ( global void)
|
||||
0:77 Function Parameters:
|
||||
0:66 true (const bool)
|
||||
0:67 Constant:
|
||||
0:67 false (const bool)
|
||||
0:79 Function Definition: bar23( ( global void)
|
||||
0:79 Function Parameters:
|
||||
0:? Sequence
|
||||
0:80 's' ( temp 4-component vector of float)
|
||||
0:81 move second child to first child ( temp 4-component vector of float)
|
||||
0:81 's' ( temp 4-component vector of float)
|
||||
0:81 textureGatherOffset ( global 4-component vector of float)
|
||||
0:81 'samp2DR' ( uniform sampler2DRect)
|
||||
0:81 Constant:
|
||||
0:81 0.300000
|
||||
0:81 0.300000
|
||||
0:81 Constant:
|
||||
0:81 1 (const int)
|
||||
0:81 1 (const int)
|
||||
0:82 move second child to first child ( temp 4-component vector of float)
|
||||
0:82 's' ( temp 4-component vector of float)
|
||||
0:82 textureGatherOffset ( global 4-component vector of float)
|
||||
0:82 'samp2D' ( uniform sampler2D)
|
||||
0:82 Constant:
|
||||
0:82 0.300000
|
||||
0:82 0.300000
|
||||
0:82 Constant:
|
||||
0:82 1 (const int)
|
||||
0:82 1 (const int)
|
||||
0:82 's' ( temp 4-component vector of float)
|
||||
0:83 move second child to first child ( temp 4-component vector of float)
|
||||
0:83 's' ( temp 4-component vector of float)
|
||||
0:83 textureGatherOffset ( global 4-component vector of float)
|
||||
0:83 'samp2DA' ( uniform sampler2DArray)
|
||||
0:83 'samp2DR' ( uniform sampler2DRect)
|
||||
0:83 Constant:
|
||||
0:83 0.300000
|
||||
0:83 0.300000
|
||||
0:83 0.300000
|
||||
0:83 Constant:
|
||||
0:83 1 (const int)
|
||||
0:83 1 (const int)
|
||||
0:84 move second child to first child ( temp 4-component vector of float)
|
||||
0:84 's' ( temp 4-component vector of float)
|
||||
0:84 textureGatherOffset ( global 4-component vector of float)
|
||||
0:84 'samp2DS' ( uniform sampler2DShadow)
|
||||
0:84 'samp2D' ( uniform sampler2D)
|
||||
0:84 Constant:
|
||||
0:84 0.300000
|
||||
0:84 0.300000
|
||||
0:84 Constant:
|
||||
0:84 1.300000
|
||||
0:84 Constant:
|
||||
0:84 1 (const int)
|
||||
0:84 1 (const int)
|
||||
0:85 move second child to first child ( temp 4-component vector of float)
|
||||
0:85 's' ( temp 4-component vector of float)
|
||||
0:85 textureGatherOffset ( global 4-component vector of float)
|
||||
0:85 'samp2D' ( uniform sampler2D)
|
||||
0:85 'samp2DA' ( uniform sampler2DArray)
|
||||
0:85 Constant:
|
||||
0:85 0.300000
|
||||
0:85 0.300000
|
||||
0:85 0.300000
|
||||
0:85 Constant:
|
||||
0:85 1 (const int)
|
||||
0:85 1 (const int)
|
||||
0:85 Constant:
|
||||
0:85 2 (const int)
|
||||
0:90 Function Definition: bar234( ( global void)
|
||||
0:90 Function Parameters:
|
||||
0:86 move second child to first child ( temp 4-component vector of float)
|
||||
0:86 's' ( temp 4-component vector of float)
|
||||
0:86 textureGatherOffset ( global 4-component vector of float)
|
||||
0:86 'samp2DS' ( uniform sampler2DShadow)
|
||||
0:86 Constant:
|
||||
0:86 0.300000
|
||||
0:86 0.300000
|
||||
0:86 Constant:
|
||||
0:86 1.300000
|
||||
0:86 Constant:
|
||||
0:86 1 (const int)
|
||||
0:86 1 (const int)
|
||||
0:87 move second child to first child ( temp 4-component vector of float)
|
||||
0:87 's' ( temp 4-component vector of float)
|
||||
0:87 textureGatherOffset ( global 4-component vector of float)
|
||||
0:87 'samp2D' ( uniform sampler2D)
|
||||
0:87 Constant:
|
||||
0:87 0.300000
|
||||
0:87 0.300000
|
||||
0:87 Constant:
|
||||
0:87 1 (const int)
|
||||
0:87 1 (const int)
|
||||
0:87 Constant:
|
||||
0:87 2 (const int)
|
||||
0:88 Sequence
|
||||
0:88 move second child to first child ( temp int)
|
||||
0:88 'samples' ( temp int)
|
||||
0:88 'gl_NumSamples' ( uniform int SampleMaskIn)
|
||||
0:93 Function Definition: bar234( ( global void)
|
||||
0:93 Function Parameters:
|
||||
0:? Sequence
|
||||
0:93 move second child to first child ( temp 4-component vector of float)
|
||||
0:93 's' ( temp 4-component vector of float)
|
||||
0:93 textureGatherOffset ( global 4-component vector of float)
|
||||
0:93 'samp2D' ( uniform sampler2D)
|
||||
0:93 Constant:
|
||||
0:93 0.300000
|
||||
0:93 0.300000
|
||||
0:93 Constant:
|
||||
0:93 1 (const int)
|
||||
0:93 1 (const int)
|
||||
0:94 move second child to first child ( temp 4-component vector of float)
|
||||
0:94 's' ( temp 4-component vector of float)
|
||||
0:94 textureGatherOffset ( global 4-component vector of float)
|
||||
0:94 'samp2DA' ( uniform sampler2DArray)
|
||||
0:94 Constant:
|
||||
0:94 0.300000
|
||||
0:94 0.300000
|
||||
0:94 0.300000
|
||||
0:94 Constant:
|
||||
0:94 1 (const int)
|
||||
0:94 1 (const int)
|
||||
0:95 move second child to first child ( temp 4-component vector of float)
|
||||
0:95 's' ( temp 4-component vector of float)
|
||||
0:95 textureGatherOffset ( global 4-component vector of float)
|
||||
0:95 'samp2DR' ( uniform sampler2DRect)
|
||||
0:95 Constant:
|
||||
0:95 0.300000
|
||||
0:95 0.300000
|
||||
0:95 Constant:
|
||||
0:95 1 (const int)
|
||||
0:95 1 (const int)
|
||||
0:96 move second child to first child ( temp 4-component vector of float)
|
||||
0:96 's' ( temp 4-component vector of float)
|
||||
0:96 textureGatherOffset ( global 4-component vector of float)
|
||||
0:96 'samp2DS' ( uniform sampler2DShadow)
|
||||
0:96 'samp2D' ( uniform sampler2D)
|
||||
0:96 Constant:
|
||||
0:96 0.300000
|
||||
0:96 0.300000
|
||||
0:96 Constant:
|
||||
0:96 1.300000
|
||||
0:96 Constant:
|
||||
0:96 1 (const int)
|
||||
0:96 1 (const int)
|
||||
0:97 move second child to first child ( temp 4-component vector of float)
|
||||
0:97 's' ( temp 4-component vector of float)
|
||||
0:97 textureGatherOffset ( global 4-component vector of float)
|
||||
0:97 'samp2D' ( uniform sampler2D)
|
||||
0:97 'samp2DA' ( uniform sampler2DArray)
|
||||
0:97 Constant:
|
||||
0:97 0.300000
|
||||
0:97 0.300000
|
||||
0:97 0.300000
|
||||
0:97 Constant:
|
||||
0:97 1 (const int)
|
||||
0:97 1 (const int)
|
||||
0:97 Constant:
|
||||
0:97 2 (const int)
|
||||
0:107 Function Definition: bar235( ( global void)
|
||||
0:107 Function Parameters:
|
||||
0:109 Sequence
|
||||
0:109 Sequence
|
||||
0:109 move second child to first child ( temp 3-component vector of int)
|
||||
0:109 'a' ( temp 3-component vector of int)
|
||||
0:109 textureSize ( global 3-component vector of int)
|
||||
0:109 'Sca' ( uniform samplerCubeArray)
|
||||
0:109 Constant:
|
||||
0:109 3 (const int)
|
||||
0:110 Sequence
|
||||
0:110 move second child to first child ( temp 4-component vector of float)
|
||||
0:110 'b' ( temp 4-component vector of float)
|
||||
0:110 texture ( global 4-component vector of float)
|
||||
0:110 'Sca' ( uniform samplerCubeArray)
|
||||
0:110 'i' ( smooth in 4-component vector of float)
|
||||
0:111 Sequence
|
||||
0:111 move second child to first child ( temp 4-component vector of int)
|
||||
0:111 'c' ( temp 4-component vector of int)
|
||||
0:111 texture ( global 4-component vector of int)
|
||||
0:111 'Isca' ( uniform isamplerCubeArray)
|
||||
0:111 'i' ( smooth in 4-component vector of float)
|
||||
0:111 Constant:
|
||||
0:111 0.700000
|
||||
0:98 move second child to first child ( temp 4-component vector of float)
|
||||
0:98 's' ( temp 4-component vector of float)
|
||||
0:98 textureGatherOffset ( global 4-component vector of float)
|
||||
0:98 'samp2DR' ( uniform sampler2DRect)
|
||||
0:98 Constant:
|
||||
0:98 0.300000
|
||||
0:98 0.300000
|
||||
0:98 Constant:
|
||||
0:98 1 (const int)
|
||||
0:98 1 (const int)
|
||||
0:99 move second child to first child ( temp 4-component vector of float)
|
||||
0:99 's' ( temp 4-component vector of float)
|
||||
0:99 textureGatherOffset ( global 4-component vector of float)
|
||||
0:99 'samp2DS' ( uniform sampler2DShadow)
|
||||
0:99 Constant:
|
||||
0:99 0.300000
|
||||
0:99 0.300000
|
||||
0:99 Constant:
|
||||
0:99 1.300000
|
||||
0:99 Constant:
|
||||
0:99 1 (const int)
|
||||
0:99 1 (const int)
|
||||
0:100 move second child to first child ( temp 4-component vector of float)
|
||||
0:100 's' ( temp 4-component vector of float)
|
||||
0:100 textureGatherOffset ( global 4-component vector of float)
|
||||
0:100 'samp2D' ( uniform sampler2D)
|
||||
0:100 Constant:
|
||||
0:100 0.300000
|
||||
0:100 0.300000
|
||||
0:100 Constant:
|
||||
0:100 1 (const int)
|
||||
0:100 1 (const int)
|
||||
0:100 Constant:
|
||||
0:100 2 (const int)
|
||||
0:110 Function Definition: bar235( ( global void)
|
||||
0:110 Function Parameters:
|
||||
0:112 Sequence
|
||||
0:112 Sequence
|
||||
0:112 move second child to first child ( temp 4-component vector of uint)
|
||||
0:112 'd' ( temp 4-component vector of uint)
|
||||
0:112 texture ( global 4-component vector of uint)
|
||||
0:112 'Usca' ( uniform usamplerCubeArray)
|
||||
0:112 'i' ( smooth in 4-component vector of float)
|
||||
0:114 move second child to first child ( temp 4-component vector of float)
|
||||
0:114 'b' ( temp 4-component vector of float)
|
||||
0:114 textureLod ( global 4-component vector of float)
|
||||
0:114 'Sca' ( uniform samplerCubeArray)
|
||||
0:114 'i' ( smooth in 4-component vector of float)
|
||||
0:114 Constant:
|
||||
0:114 1.700000
|
||||
0:115 move second child to first child ( temp 3-component vector of int)
|
||||
0:115 'a' ( temp 3-component vector of int)
|
||||
0:115 textureSize ( global 3-component vector of int)
|
||||
0:115 'Scas' ( uniform samplerCubeArrayShadow)
|
||||
0:115 direct index ( temp int)
|
||||
0:115 'a' ( temp 3-component vector of int)
|
||||
0:115 Constant:
|
||||
0:115 0 (const int)
|
||||
0:116 Sequence
|
||||
0:116 move second child to first child ( temp float)
|
||||
0:116 'f' ( temp float)
|
||||
0:116 texture ( global float)
|
||||
0:116 'Scas' ( uniform samplerCubeArrayShadow)
|
||||
0:116 'i' ( smooth in 4-component vector of float)
|
||||
0:116 direct index ( temp float)
|
||||
0:116 'b' ( temp 4-component vector of float)
|
||||
0:116 Constant:
|
||||
0:116 1 (const int)
|
||||
0:117 move second child to first child ( temp 4-component vector of int)
|
||||
0:117 'c' ( temp 4-component vector of int)
|
||||
0:117 textureGrad ( global 4-component vector of int)
|
||||
0:117 'Isca' ( uniform isamplerCubeArray)
|
||||
0:112 move second child to first child ( temp 3-component vector of int)
|
||||
0:112 'a' ( temp 3-component vector of int)
|
||||
0:112 textureSize ( global 3-component vector of int)
|
||||
0:112 'Sca' ( uniform samplerCubeArray)
|
||||
0:112 Constant:
|
||||
0:112 3 (const int)
|
||||
0:113 Sequence
|
||||
0:113 move second child to first child ( temp 4-component vector of float)
|
||||
0:113 'b' ( temp 4-component vector of float)
|
||||
0:113 texture ( global 4-component vector of float)
|
||||
0:113 'Sca' ( uniform samplerCubeArray)
|
||||
0:113 'i' ( smooth in 4-component vector of float)
|
||||
0:114 Sequence
|
||||
0:114 move second child to first child ( temp 4-component vector of int)
|
||||
0:114 'c' ( temp 4-component vector of int)
|
||||
0:114 texture ( global 4-component vector of int)
|
||||
0:114 'Isca' ( uniform isamplerCubeArray)
|
||||
0:114 'i' ( smooth in 4-component vector of float)
|
||||
0:114 Constant:
|
||||
0:114 0.700000
|
||||
0:115 Sequence
|
||||
0:115 move second child to first child ( temp 4-component vector of uint)
|
||||
0:115 'd' ( temp 4-component vector of uint)
|
||||
0:115 texture ( global 4-component vector of uint)
|
||||
0:115 'Usca' ( uniform usamplerCubeArray)
|
||||
0:115 'i' ( smooth in 4-component vector of float)
|
||||
0:117 move second child to first child ( temp 4-component vector of float)
|
||||
0:117 'b' ( temp 4-component vector of float)
|
||||
0:117 textureLod ( global 4-component vector of float)
|
||||
0:117 'Sca' ( uniform samplerCubeArray)
|
||||
0:117 'i' ( smooth in 4-component vector of float)
|
||||
0:117 Constant:
|
||||
0:117 0.100000
|
||||
0:117 0.100000
|
||||
0:117 0.100000
|
||||
0:117 Constant:
|
||||
0:117 0.200000
|
||||
0:117 0.200000
|
||||
0:117 0.200000
|
||||
0:129 Function Definition: bar23444( ( global void)
|
||||
0:129 Function Parameters:
|
||||
0:117 1.700000
|
||||
0:118 move second child to first child ( temp 3-component vector of int)
|
||||
0:118 'a' ( temp 3-component vector of int)
|
||||
0:118 textureSize ( global 3-component vector of int)
|
||||
0:118 'Scas' ( uniform samplerCubeArrayShadow)
|
||||
0:118 direct index ( temp int)
|
||||
0:118 'a' ( temp 3-component vector of int)
|
||||
0:118 Constant:
|
||||
0:118 0 (const int)
|
||||
0:119 Sequence
|
||||
0:119 move second child to first child ( temp float)
|
||||
0:119 'f' ( temp float)
|
||||
0:119 texture ( global float)
|
||||
0:119 'Scas' ( uniform samplerCubeArrayShadow)
|
||||
0:119 'i' ( smooth in 4-component vector of float)
|
||||
0:119 direct index ( temp float)
|
||||
0:119 'b' ( temp 4-component vector of float)
|
||||
0:119 Constant:
|
||||
0:119 1 (const int)
|
||||
0:120 move second child to first child ( temp 4-component vector of int)
|
||||
0:120 'c' ( temp 4-component vector of int)
|
||||
0:120 textureGrad ( global 4-component vector of int)
|
||||
0:120 'Isca' ( uniform isamplerCubeArray)
|
||||
0:120 'i' ( smooth in 4-component vector of float)
|
||||
0:120 Constant:
|
||||
0:120 0.100000
|
||||
0:120 0.100000
|
||||
0:120 0.100000
|
||||
0:120 Constant:
|
||||
0:120 0.200000
|
||||
0:120 0.200000
|
||||
0:120 0.200000
|
||||
0:132 Function Definition: bar23444( ( global void)
|
||||
0:132 Function Parameters:
|
||||
0:? Sequence
|
||||
0:132 Sequence
|
||||
0:132 move second child to first child ( temp float)
|
||||
0:132 'a1' ( temp float)
|
||||
0:132 direct index ( temp float)
|
||||
0:132 direct index ( temp 3-component vector of float)
|
||||
0:132 'm43' ( temp 4X3 matrix of float)
|
||||
0:132 Constant:
|
||||
0:132 3 (const int)
|
||||
0:132 Constant:
|
||||
0:132 1 (const int)
|
||||
0:134 Sequence
|
||||
0:134 move second child to first child ( temp int)
|
||||
0:134 'a2' ( temp int)
|
||||
0:134 Constant:
|
||||
0:134 4 (const int)
|
||||
0:135 add second child into first child ( temp int)
|
||||
0:135 'a2' ( temp int)
|
||||
0:135 Constant:
|
||||
0:135 3 (const int)
|
||||
0:136 add second child into first child ( temp int)
|
||||
0:136 'a2' ( temp int)
|
||||
0:136 Constant:
|
||||
0:136 3 (const int)
|
||||
0:135 Sequence
|
||||
0:135 move second child to first child ( temp float)
|
||||
0:135 'a1' ( temp float)
|
||||
0:135 direct index ( temp float)
|
||||
0:135 direct index ( temp 3-component vector of float)
|
||||
0:135 'm43' ( temp 4X3 matrix of float)
|
||||
0:135 Constant:
|
||||
0:135 3 (const int)
|
||||
0:135 Constant:
|
||||
0:135 1 (const int)
|
||||
0:137 Sequence
|
||||
0:137 move second child to first child ( temp float)
|
||||
0:137 'b' ( const (read only) float)
|
||||
0:137 component-wise multiply ( temp float)
|
||||
0:137 Constant:
|
||||
0:137 2.000000
|
||||
0:137 'a1' ( temp float)
|
||||
0:138 move second child to first child ( temp float)
|
||||
0:138 direct index ( temp float)
|
||||
0:138 'a' ( global 3-component vector of float)
|
||||
0:138 Constant:
|
||||
0:138 0 (const int)
|
||||
0:137 move second child to first child ( temp int)
|
||||
0:137 'a2' ( temp int)
|
||||
0:137 Constant:
|
||||
0:137 4 (const int)
|
||||
0:138 add second child into first child ( temp int)
|
||||
0:138 'a2' ( temp int)
|
||||
0:138 Constant:
|
||||
0:138 -1.000000
|
||||
0:140 Constant:
|
||||
0:140 0.000000
|
||||
0:141 Constant:
|
||||
0:141 0.000000
|
||||
0:138 3 (const int)
|
||||
0:139 add second child into first child ( temp int)
|
||||
0:139 'a2' ( temp int)
|
||||
0:139 Constant:
|
||||
0:139 3 (const int)
|
||||
0:140 Sequence
|
||||
0:140 move second child to first child ( temp float)
|
||||
0:140 'b' ( const (read only) float)
|
||||
0:140 component-wise multiply ( temp float)
|
||||
0:140 Constant:
|
||||
0:140 2.000000
|
||||
0:140 'a1' ( temp float)
|
||||
0:141 move second child to first child ( temp float)
|
||||
0:141 direct index ( temp float)
|
||||
0:141 'a' ( global 3-component vector of float)
|
||||
0:141 Constant:
|
||||
0:141 0 (const int)
|
||||
0:141 Constant:
|
||||
0:141 -1.000000
|
||||
0:143 Constant:
|
||||
0:143 1 (const int)
|
||||
0:162 Function Definition: qux2( ( global void)
|
||||
0:162 Function Parameters:
|
||||
0:143 0.000000
|
||||
0:144 Constant:
|
||||
0:144 0.000000
|
||||
0:146 Constant:
|
||||
0:146 1 (const int)
|
||||
0:165 Function Definition: qux2( ( global void)
|
||||
0:165 Function Parameters:
|
||||
0:? Sequence
|
||||
0:165 imageAtomicCompSwap ( global int)
|
||||
0:165 'iimg2D' (layout( r32i) uniform iimage2D)
|
||||
0:165 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:165 'i' ( temp int)
|
||||
0:165 'i' ( temp int)
|
||||
0:165 'i' ( temp int)
|
||||
0:165 'i' ( temp int)
|
||||
0:166 Sequence
|
||||
0:166 move second child to first child ( temp 4-component vector of int)
|
||||
0:166 'pos' ( temp 4-component vector of int)
|
||||
0:166 imageLoad ( global 4-component vector of int)
|
||||
0:166 'iimg2D' (layout( r32i) uniform iimage2D)
|
||||
0:166 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:166 'i' ( temp int)
|
||||
0:166 'i' ( temp int)
|
||||
0:168 imageAtomicCompSwap ( global int)
|
||||
0:168 'iimg2D' (layout( r32i) uniform iimage2D)
|
||||
0:168 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:168 'i' ( temp int)
|
||||
0:168 'i' ( temp int)
|
||||
0:168 'i' ( temp int)
|
||||
0:168 'i' ( temp int)
|
||||
0:169 Sequence
|
||||
0:169 move second child to first child ( temp 4-component vector of int)
|
||||
0:169 'pos' ( temp 4-component vector of int)
|
||||
0:169 imageLoad ( global 4-component vector of int)
|
||||
0:169 'iimg2D' (layout( r32i) uniform iimage2D)
|
||||
0:169 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:169 'i' ( temp int)
|
||||
0:169 'i' ( temp int)
|
||||
0:? Linker Objects
|
||||
0:? 'a' ( global 3-component vector of float)
|
||||
0:? 'b' ( global float)
|
||||
@ -416,6 +426,7 @@ Shader version: 130
|
||||
Requested GL_ARB_explicit_attrib_location
|
||||
Requested GL_ARB_explicit_uniform_location
|
||||
Requested GL_ARB_gpu_shader5
|
||||
Requested GL_ARB_sample_shading
|
||||
Requested GL_ARB_separate_shader_objects
|
||||
Requested GL_ARB_shader_image_load_store
|
||||
Requested GL_ARB_shading_language_420pack
|
||||
|
@ -1,14 +1,15 @@
|
||||
140.frag
|
||||
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
|
||||
ERROR: 0:17: '#error' : GL_ES is not set
|
||||
ERROR: 0:20: 'fragment-shader struct input' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:24: 'location' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:24: 'location qualifier on input' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:26: 'location' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:26: 'location qualifier on output' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:40: 'assign' : l-value required "v" (can't modify shader input)
|
||||
ERROR: 0:40: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters.
|
||||
ERROR: 8 compilation errors. No code generated.
|
||||
ERROR: 0:21: 'fragment-shader struct input' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:25: 'location' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:25: 'location qualifier on input' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:27: 'location' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:27: 'location qualifier on output' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:41: 'assign' : l-value required "v" (can't modify shader input)
|
||||
ERROR: 0:41: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters.
|
||||
ERROR: 0:56: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
|
||||
ERROR: 9 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 140
|
||||
@ -25,80 +26,80 @@ ERROR: node is still EOpNull!
|
||||
0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 'patch' ( global float)
|
||||
0:22 Constant:
|
||||
0:22 3.100000
|
||||
0:38 Function Definition: foo( ( global void)
|
||||
0:38 Function Parameters:
|
||||
0:40 Sequence
|
||||
0:40 Sequence
|
||||
0:40 move second child to first child ( temp 2-component vector of float)
|
||||
0:40 'r1' ( temp 2-component vector of float)
|
||||
0:40 modf ( global 2-component vector of float)
|
||||
0:40 vector swizzle ( temp 2-component vector of float)
|
||||
0:40 'v' ( smooth in 4-component vector of float)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 vector swizzle ( temp 2-component vector of float)
|
||||
0:40 'v' ( smooth in 4-component vector of float)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 2 (const int)
|
||||
0:40 Constant:
|
||||
0:40 3 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 'patch' ( global float)
|
||||
0:23 Constant:
|
||||
0:23 3.100000
|
||||
0:39 Function Definition: foo( ( global void)
|
||||
0:39 Function Parameters:
|
||||
0:41 Sequence
|
||||
0:41 Sequence
|
||||
0:41 move second child to first child ( temp 2-component vector of float)
|
||||
0:41 'r2' ( temp 2-component vector of float)
|
||||
0:41 'r1' ( temp 2-component vector of float)
|
||||
0:41 modf ( global 2-component vector of float)
|
||||
0:41 vector swizzle ( temp 2-component vector of float)
|
||||
0:41 'o' ( out 4-component vector of float)
|
||||
0:41 'v' ( smooth in 4-component vector of float)
|
||||
0:41 Sequence
|
||||
0:41 Constant:
|
||||
0:41 0 (const int)
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 vector swizzle ( temp 2-component vector of float)
|
||||
0:41 'o' ( out 4-component vector of float)
|
||||
0:41 'v' ( smooth in 4-component vector of float)
|
||||
0:41 Sequence
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:41 Constant:
|
||||
0:41 3 (const int)
|
||||
0:42 move second child to first child ( temp float)
|
||||
0:42 direct index ( temp float)
|
||||
0:42 'o' ( out 4-component vector of float)
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 Function Call: fooi( ( global float)
|
||||
0:47 Sequence
|
||||
0:47 move second child to first child ( temp float)
|
||||
0:47 'i1' ( global float)
|
||||
0:47 Test condition and select ( temp float)
|
||||
0:47 Condition
|
||||
0:47 'gl_FrontFacing' ( gl_FrontFacing bool Face)
|
||||
0:47 true case
|
||||
0:47 Constant:
|
||||
0:47 -2.000000
|
||||
0:47 false case
|
||||
0:47 Constant:
|
||||
0:47 2.000000
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp 2-component vector of float)
|
||||
0:42 'r2' ( temp 2-component vector of float)
|
||||
0:42 modf ( global 2-component vector of float)
|
||||
0:42 vector swizzle ( temp 2-component vector of float)
|
||||
0:42 'o' ( out 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 Constant:
|
||||
0:42 1 (const int)
|
||||
0:42 vector swizzle ( temp 2-component vector of float)
|
||||
0:42 'o' ( out 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 Constant:
|
||||
0:42 3 (const int)
|
||||
0:43 move second child to first child ( temp float)
|
||||
0:43 direct index ( temp float)
|
||||
0:43 'o' ( out 4-component vector of float)
|
||||
0:43 Constant:
|
||||
0:43 2 (const int)
|
||||
0:43 Function Call: fooi( ( global float)
|
||||
0:48 Sequence
|
||||
0:48 move second child to first child ( temp float)
|
||||
0:48 'i2' ( global float)
|
||||
0:48 Constant:
|
||||
0:48 102.000000
|
||||
0:50 Function Definition: fooi( ( global float)
|
||||
0:50 Function Parameters:
|
||||
0:52 Sequence
|
||||
0:52 Branch: Return with expression
|
||||
0:52 add ( temp float)
|
||||
0:52 'i1' ( global float)
|
||||
0:52 'i2' ( global float)
|
||||
0:48 'i1' ( global float)
|
||||
0:48 Test condition and select ( temp float)
|
||||
0:48 Condition
|
||||
0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face)
|
||||
0:48 true case
|
||||
0:48 Constant:
|
||||
0:48 -2.000000
|
||||
0:48 false case
|
||||
0:48 Constant:
|
||||
0:48 2.000000
|
||||
0:49 Sequence
|
||||
0:49 move second child to first child ( temp float)
|
||||
0:49 'i2' ( global float)
|
||||
0:49 Constant:
|
||||
0:49 102.000000
|
||||
0:51 Function Definition: fooi( ( global float)
|
||||
0:51 Function Parameters:
|
||||
0:53 Sequence
|
||||
0:53 Branch: Return with expression
|
||||
0:53 add ( temp float)
|
||||
0:53 'i1' ( global float)
|
||||
0:53 'i2' ( global float)
|
||||
0:? Linker Objects
|
||||
0:? 'v' ( smooth in 4-component vector of float)
|
||||
0:? 'i' ( smooth in 4-component vector of float)
|
||||
@ -131,28 +132,28 @@ ERROR: node is still EOpNull!
|
||||
0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 'patch' ( global float)
|
||||
0:22 Constant:
|
||||
0:22 3.100000
|
||||
0:47 Sequence
|
||||
0:47 move second child to first child ( temp float)
|
||||
0:47 'i1' ( global float)
|
||||
0:47 Test condition and select ( temp float)
|
||||
0:47 Condition
|
||||
0:47 'gl_FrontFacing' ( gl_FrontFacing bool Face)
|
||||
0:47 true case
|
||||
0:47 Constant:
|
||||
0:47 -2.000000
|
||||
0:47 false case
|
||||
0:47 Constant:
|
||||
0:47 2.000000
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 'patch' ( global float)
|
||||
0:23 Constant:
|
||||
0:23 3.100000
|
||||
0:48 Sequence
|
||||
0:48 move second child to first child ( temp float)
|
||||
0:48 'i2' ( global float)
|
||||
0:48 Constant:
|
||||
0:48 102.000000
|
||||
0:48 'i1' ( global float)
|
||||
0:48 Test condition and select ( temp float)
|
||||
0:48 Condition
|
||||
0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face)
|
||||
0:48 true case
|
||||
0:48 Constant:
|
||||
0:48 -2.000000
|
||||
0:48 false case
|
||||
0:48 Constant:
|
||||
0:48 2.000000
|
||||
0:49 Sequence
|
||||
0:49 move second child to first child ( temp float)
|
||||
0:49 'i2' ( global float)
|
||||
0:49 Constant:
|
||||
0:49 102.000000
|
||||
0:? Linker Objects
|
||||
0:? 'v' ( smooth in 4-component vector of float)
|
||||
0:? 'i' ( smooth in 4-component vector of float)
|
||||
|
@ -5,10 +5,15 @@ ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_cent
|
||||
ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use
|
||||
ERROR: 0:50: 'gl_PerFragment' : cannot be used (maybe an instance name is needed)
|
||||
ERROR: 0:50: 'gl_PerFragment' : undeclared identifier
|
||||
ERROR: 6 compilation errors. No code generated.
|
||||
ERROR: 0:53: 'double' : Reserved word.
|
||||
ERROR: 0:53: 'double' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:53: 'double' : must be qualified as flat in
|
||||
ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int'
|
||||
ERROR: 10 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 150
|
||||
Requested GL_ARB_gpu_shader_fp64
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
@ -109,6 +114,26 @@ ERROR: node is still EOpNull!
|
||||
0:49 Branch: Return with expression
|
||||
0:49 'gl_PrimitiveID' ( flat in int PrimitiveID)
|
||||
0:50 'gl_PerFragment' ( temp float)
|
||||
0:56 Sequence
|
||||
0:56 move second child to first child ( temp double)
|
||||
0:56 'type3' ( global double)
|
||||
0:56 Constant:
|
||||
0:56 2.000000
|
||||
0:58 Sequence
|
||||
0:58 move second child to first child ( temp double)
|
||||
0:58 'absTest2' ( global double)
|
||||
0:58 sqrt ( global double)
|
||||
0:58 'type3' ( global double)
|
||||
0:59 Sequence
|
||||
0:59 move second child to first child ( temp double)
|
||||
0:59 'absTest3' ( global double)
|
||||
0:59 Constant:
|
||||
0:59 1.414214
|
||||
0:60 Sequence
|
||||
0:60 move second child to first child ( temp float)
|
||||
0:60 'dk' ( global float)
|
||||
0:60 Constant:
|
||||
0:60 3.316625
|
||||
0:? Linker Objects
|
||||
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
|
||||
0:? 'foo' ( smooth in 4-component vector of float)
|
||||
@ -123,12 +148,20 @@ ERROR: node is still EOpNull!
|
||||
0:? 'p2' ( flat in 2-component vector of int)
|
||||
0:? 'p3' ( flat in 3-component vector of int)
|
||||
0:? 'samp' ( flat in int)
|
||||
0:? 'type1' ( smooth in double)
|
||||
0:? 'type2' ( global double)
|
||||
0:? 'type3' ( global double)
|
||||
0:? 'absTest' ( global int)
|
||||
0:? 'absTest2' ( global double)
|
||||
0:? 'absTest3' ( global double)
|
||||
0:? 'dk' ( global float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 150
|
||||
Requested GL_ARB_gpu_shader_fp64
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
@ -144,6 +177,26 @@ ERROR: node is still EOpNull!
|
||||
0:18 'patch' ( global float)
|
||||
0:18 Constant:
|
||||
0:18 3.100000
|
||||
0:56 Sequence
|
||||
0:56 move second child to first child ( temp double)
|
||||
0:56 'type3' ( global double)
|
||||
0:56 Constant:
|
||||
0:56 2.000000
|
||||
0:58 Sequence
|
||||
0:58 move second child to first child ( temp double)
|
||||
0:58 'absTest2' ( global double)
|
||||
0:58 sqrt ( global double)
|
||||
0:58 'type3' ( global double)
|
||||
0:59 Sequence
|
||||
0:59 move second child to first child ( temp double)
|
||||
0:59 'absTest3' ( global double)
|
||||
0:59 Constant:
|
||||
0:59 1.414214
|
||||
0:60 Sequence
|
||||
0:60 move second child to first child ( temp float)
|
||||
0:60 'dk' ( global float)
|
||||
0:60 Constant:
|
||||
0:60 3.316625
|
||||
0:? Linker Objects
|
||||
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
|
||||
0:? 'foo' ( smooth in 4-component vector of float)
|
||||
@ -158,4 +211,11 @@ ERROR: node is still EOpNull!
|
||||
0:? 'p2' ( flat in 2-component vector of int)
|
||||
0:? 'p3' ( flat in 3-component vector of int)
|
||||
0:? 'samp' ( flat in int)
|
||||
0:? 'type1' ( smooth in double)
|
||||
0:? 'type2' ( global double)
|
||||
0:? 'type3' ( global double)
|
||||
0:? 'absTest' ( global int)
|
||||
0:? 'absTest2' ( global double)
|
||||
0:? 'absTest3' ( global double)
|
||||
0:? 'dk' ( global float)
|
||||
|
||||
|
@ -3,6 +3,12 @@ Shader version: 410
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main( ( global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp int)
|
||||
0:9 'test' ( temp int)
|
||||
0:9 Constant:
|
||||
0:9 16 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'd' ( in double)
|
||||
0:? 'd3' ( in 3-component vector of double)
|
||||
@ -18,6 +24,12 @@ Shader version: 410
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main( ( global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp int)
|
||||
0:9 'test' ( temp int)
|
||||
0:9 Constant:
|
||||
0:9 16 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'd' ( in double)
|
||||
0:? 'd3' ( in 3-component vector of double)
|
||||
|
@ -1,14 +1,15 @@
|
||||
450.comp
|
||||
ERROR: 0:2: 'local_size_x' : must be at least 1
|
||||
ERROR: 0:5: 'shared' : not allowed in nested scope
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
ERROR: 0:4: 'binding' : atomic_uint binding is too large
|
||||
ERROR: 0:8: 'shared' : not allowed in nested scope
|
||||
ERROR: 3 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:3 Function Definition: main( ( global void)
|
||||
0:3 Function Parameters:
|
||||
0:6 Function Definition: main( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
@ -18,7 +19,7 @@ Linked compute stage:
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:3 Function Definition: main( ( global void)
|
||||
0:3 Function Parameters:
|
||||
0:6 Function Definition: main( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:? Linker Objects
|
||||
|
||||
|
@ -1,64 +1,65 @@
|
||||
atomic_uint.frag
|
||||
ERROR: 0:10: 'atomic_uint' : samplers and atomic_uints cannot be output parameters
|
||||
ERROR: 0:12: 'return' : type does not match, or is not convertible to, the function's return type
|
||||
ERROR: 0:18: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter
|
||||
ERROR: 0:23: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings
|
||||
ERROR: 0:28: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( binding=0 offset=0) uniform atomic_uint' and a right operand of type 'layout( binding=0 offset=0) uniform atomic_uint' (or there is no acceptable conversion)
|
||||
ERROR: 0:29: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( binding=0 offset=0) uniform atomic_uint (or there is no acceptable conversion)
|
||||
ERROR: 0:31: '[]' : scalar integer expression required
|
||||
ERROR: 0:34: 'assign' : l-value required "counter" (can't modify a uniform)
|
||||
ERROR: 0:34: 'assign' : cannot convert from ' const int' to 'layout( binding=0 offset=0) uniform atomic_uint'
|
||||
ERROR: 0:37: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acin
|
||||
ERROR: 0:38: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acg
|
||||
ERROR: 0:47: 'offset' : atomic counters sharing the same offset: 12
|
||||
ERROR: 0:48: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings
|
||||
ERROR: 13 compilation errors. No code generated.
|
||||
ERROR: 0:4: 'counter' : redefinition
|
||||
ERROR: 0:11: 'atomic_uint' : samplers and atomic_uints cannot be output parameters
|
||||
ERROR: 0:13: 'return' : type does not match, or is not convertible to, the function's return type
|
||||
ERROR: 0:19: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter
|
||||
ERROR: 0:24: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings
|
||||
ERROR: 0:29: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( binding=0 offset=0) uniform atomic_uint' and a right operand of type 'layout( binding=0 offset=0) uniform atomic_uint' (or there is no acceptable conversion)
|
||||
ERROR: 0:30: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( binding=0 offset=0) uniform atomic_uint (or there is no acceptable conversion)
|
||||
ERROR: 0:32: '[]' : scalar integer expression required
|
||||
ERROR: 0:35: 'assign' : l-value required "counter" (can't modify a uniform)
|
||||
ERROR: 0:35: 'assign' : cannot convert from ' const int' to 'layout( binding=0 offset=0) uniform atomic_uint'
|
||||
ERROR: 0:38: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acin
|
||||
ERROR: 0:39: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acg
|
||||
ERROR: 0:48: 'offset' : atomic counters sharing the same offset: 12
|
||||
ERROR: 0:49: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings
|
||||
ERROR: 14 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 420
|
||||
ERROR: node is still EOpNull!
|
||||
0:5 Function Definition: func(au1; ( global uint)
|
||||
0:5 Function Parameters:
|
||||
0:5 'c' ( in atomic_uint)
|
||||
0:7 Sequence
|
||||
0:7 Branch: Return with expression
|
||||
0:7 AtomicCounterIncrement ( global uint)
|
||||
0:7 'c' ( in atomic_uint)
|
||||
0:10 Function Definition: func2(au1; ( global uint)
|
||||
0:10 Function Parameters:
|
||||
0:10 'c' ( out atomic_uint)
|
||||
0:12 Sequence
|
||||
0:12 Branch: Return with expression
|
||||
0:12 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:6 Function Definition: func(au1; ( global uint)
|
||||
0:6 Function Parameters:
|
||||
0:6 'c' ( in atomic_uint)
|
||||
0:8 Sequence
|
||||
0:8 Branch: Return with expression
|
||||
0:8 AtomicCounterIncrement ( global uint)
|
||||
0:8 'c' ( in atomic_uint)
|
||||
0:11 Function Definition: func2(au1; ( global uint)
|
||||
0:11 Function Parameters:
|
||||
0:11 'c' ( out atomic_uint)
|
||||
0:13 Sequence
|
||||
0:13 Branch: Return with expression
|
||||
0:13 AtomicCounter ( global uint)
|
||||
0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:16 Function Definition: main( ( global void)
|
||||
0:16 Function Parameters:
|
||||
0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:14 Branch: Return with expression
|
||||
0:14 AtomicCounter ( global uint)
|
||||
0:14 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:17 Function Definition: main( ( global void)
|
||||
0:17 Function Parameters:
|
||||
0:? Sequence
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp uint)
|
||||
0:19 'val' ( temp uint)
|
||||
0:19 AtomicCounter ( global uint)
|
||||
0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:20 AtomicCounterDecrement ( global uint)
|
||||
0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:26 Function Definition: opac( ( global void)
|
||||
0:26 Function Parameters:
|
||||
0:28 Sequence
|
||||
0:28 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:20 'val' ( temp uint)
|
||||
0:20 AtomicCounter ( global uint)
|
||||
0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:21 AtomicCounterDecrement ( global uint)
|
||||
0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:27 Function Definition: opac( ( global void)
|
||||
0:27 Function Parameters:
|
||||
0:29 Sequence
|
||||
0:29 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:31 indirect index ( temp int)
|
||||
0:31 'a' ( temp 3-element array of int)
|
||||
0:31 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:32 direct index (layout( binding=1 offset=3) temp atomic_uint)
|
||||
0:32 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint)
|
||||
0:32 Constant:
|
||||
0:32 2 (const int)
|
||||
0:33 indirect index (layout( binding=1 offset=3) temp atomic_uint)
|
||||
0:30 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:32 indirect index ( temp int)
|
||||
0:32 'a' ( temp 3-element array of int)
|
||||
0:32 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:33 direct index (layout( binding=1 offset=3) temp atomic_uint)
|
||||
0:33 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint)
|
||||
0:33 'i' ( uniform int)
|
||||
0:34 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:34 indirect index (layout( binding=1 offset=3) temp atomic_uint)
|
||||
0:34 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint)
|
||||
0:34 'i' ( uniform int)
|
||||
0:35 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:? Linker Objects
|
||||
0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint)
|
||||
@ -68,8 +69,8 @@ ERROR: node is still EOpNull!
|
||||
0:? 'aNoBind' ( uniform atomic_uint)
|
||||
0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint)
|
||||
0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint)
|
||||
0:? 'ac' (layout( binding=0 offset=8) uniform 3-element array of atomic_uint)
|
||||
0:? 'ad' (layout( binding=0 offset=20) uniform atomic_uint)
|
||||
0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint)
|
||||
0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint)
|
||||
0:? 'bar4' (layout( offset=8) uniform atomic_uint)
|
||||
0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint)
|
||||
0:? 'bigBind' (layout( binding=20) uniform atomic_uint)
|
||||
@ -80,16 +81,16 @@ Linked fragment stage:
|
||||
|
||||
Shader version: 420
|
||||
ERROR: node is still EOpNull!
|
||||
0:16 Function Definition: main( ( global void)
|
||||
0:16 Function Parameters:
|
||||
0:17 Function Definition: main( ( global void)
|
||||
0:17 Function Parameters:
|
||||
0:? Sequence
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp uint)
|
||||
0:19 'val' ( temp uint)
|
||||
0:19 AtomicCounter ( global uint)
|
||||
0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:20 AtomicCounterDecrement ( global uint)
|
||||
0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:20 'val' ( temp uint)
|
||||
0:20 AtomicCounter ( global uint)
|
||||
0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:21 AtomicCounterDecrement ( global uint)
|
||||
0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:? Linker Objects
|
||||
0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint)
|
||||
0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint)
|
||||
@ -99,8 +100,8 @@ ERROR: node is still EOpNull!
|
||||
0:? 'aNoBind' ( uniform atomic_uint)
|
||||
0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint)
|
||||
0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint)
|
||||
0:? 'ac' (layout( binding=0 offset=8) uniform 3-element array of atomic_uint)
|
||||
0:? 'ad' (layout( binding=0 offset=20) uniform atomic_uint)
|
||||
0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint)
|
||||
0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint)
|
||||
0:? 'bar4' (layout( offset=8) uniform atomic_uint)
|
||||
0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint)
|
||||
0:? 'bigBind' (layout( binding=20) uniform atomic_uint)
|
||||
|
@ -1,7 +1,6 @@
|
||||
hlsl.gs-hs-mix.tesc
|
||||
Shader version: 500
|
||||
vertices = 3
|
||||
input primitive = triangles
|
||||
vertex spacing = fractional_odd_spacing
|
||||
triangle order = ccw
|
||||
0:? Sequence
|
||||
@ -402,7 +401,6 @@ Linked tessellation control stage:
|
||||
|
||||
Shader version: 500
|
||||
vertices = 3
|
||||
input primitive = triangles
|
||||
vertex spacing = fractional_odd_spacing
|
||||
triangle order = ccw
|
||||
0:? Sequence
|
||||
|
@ -295,7 +295,7 @@ gl_FragCoord origin is upper left
|
||||
39: 17(ivec2) Load 19(i3)
|
||||
40: 17(ivec2) IMul 38 39
|
||||
41: 11(int) CompositeExtract 40 0
|
||||
42: 11(int) CompositeExtract 38 1
|
||||
42: 11(int) CompositeExtract 40 1
|
||||
43: 11(int) IAdd 41 42
|
||||
44: 17(ivec2) CompositeConstruct 43 43
|
||||
Store 19(i3) 44
|
||||
@ -303,9 +303,9 @@ gl_FragCoord origin is upper left
|
||||
46: 22(ivec3) Load 24(i4)
|
||||
47: 22(ivec3) IMul 45 46
|
||||
48: 11(int) CompositeExtract 47 0
|
||||
49: 11(int) CompositeExtract 45 1
|
||||
49: 11(int) CompositeExtract 47 1
|
||||
50: 11(int) IAdd 48 49
|
||||
51: 11(int) CompositeExtract 45 2
|
||||
51: 11(int) CompositeExtract 47 2
|
||||
52: 11(int) IAdd 50 51
|
||||
53: 22(ivec3) CompositeConstruct 52 52 52
|
||||
Store 24(i4) 53
|
||||
@ -313,11 +313,11 @@ gl_FragCoord origin is upper left
|
||||
55: 27(ivec4) Load 29(i5)
|
||||
56: 27(ivec4) IMul 54 55
|
||||
57: 11(int) CompositeExtract 56 0
|
||||
58: 11(int) CompositeExtract 54 1
|
||||
58: 11(int) CompositeExtract 56 1
|
||||
59: 11(int) IAdd 57 58
|
||||
60: 11(int) CompositeExtract 54 2
|
||||
60: 11(int) CompositeExtract 56 2
|
||||
61: 11(int) IAdd 59 60
|
||||
62: 11(int) CompositeExtract 54 3
|
||||
62: 11(int) CompositeExtract 56 3
|
||||
63: 11(int) IAdd 61 62
|
||||
64: 27(ivec4) CompositeConstruct 63 63 63 63
|
||||
Store 29(i5) 64
|
||||
|
@ -66,6 +66,58 @@ output primitive = line_strip
|
||||
0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
|
||||
0:? 'VertexID' ( temp 3-element array of uint)
|
||||
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
|
||||
0:21 Function Parameters:
|
||||
0:21 'VertexID' ( in 2-element array of uint)
|
||||
0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:? Sequence
|
||||
0:23 Sequence
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:? 'OutputStream.clip0' ( out float Position)
|
||||
0:23 clip0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 direct index ( out float ClipDistance)
|
||||
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 clip0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 direct index ( out float CullDistance)
|
||||
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 cull0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
|
||||
0:23 vpai: direct index for structure ( temp uint)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 3 (const int)
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:? 'OutputStream.rtai' ( out uint Layer)
|
||||
0:23 rtai: direct index for structure ( temp uint)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 4 (const int)
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:? 'OutputStream.ii' (layout( location=0) out int)
|
||||
0:23 ii: direct index for structure ( temp int)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 5 (const int)
|
||||
0:23 EmitVertex ( temp void)
|
||||
0:? Linker Objects
|
||||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:? 'OutputStream.clip0' ( out float Position)
|
||||
@ -146,6 +198,58 @@ output primitive = line_strip
|
||||
0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
|
||||
0:? 'VertexID' ( temp 3-element array of uint)
|
||||
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
|
||||
0:21 Function Parameters:
|
||||
0:21 'VertexID' ( in 2-element array of uint)
|
||||
0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:? Sequence
|
||||
0:23 Sequence
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:? 'OutputStream.clip0' ( out float Position)
|
||||
0:23 clip0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 direct index ( out float ClipDistance)
|
||||
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 clip0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp float)
|
||||
0:23 direct index ( out float CullDistance)
|
||||
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 cull0: direct index for structure ( temp float)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
|
||||
0:23 vpai: direct index for structure ( temp uint)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 3 (const int)
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:? 'OutputStream.rtai' ( out uint Layer)
|
||||
0:23 rtai: direct index for structure ( temp uint)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 4 (const int)
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:? 'OutputStream.ii' (layout( location=0) out int)
|
||||
0:23 ii: direct index for structure ( temp int)
|
||||
0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
|
||||
0:23 Constant:
|
||||
0:23 5 (const int)
|
||||
0:23 EmitVertex ( temp void)
|
||||
0:? Linker Objects
|
||||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:? 'OutputStream.clip0' ( out float Position)
|
||||
@ -158,7 +262,7 @@ output primitive = line_strip
|
||||
Validation failed
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80008
|
||||
// Id's are bound by 65
|
||||
// Id's are bound by 88
|
||||
|
||||
Capability Geometry
|
||||
Capability ClipDistance
|
||||
@ -166,7 +270,7 @@ Validation failed
|
||||
Capability MultiViewport
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Geometry 4 "main" 20 29 34 40 45 50 57
|
||||
EntryPoint Geometry 4 "main" 28 37 42 48 53 58 65
|
||||
ExecutionMode 4 Triangles
|
||||
ExecutionMode 4 Invocations 1
|
||||
ExecutionMode 4 OutputLineStrip
|
||||
@ -183,25 +287,29 @@ Validation failed
|
||||
Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;"
|
||||
Name 15 "VertexID"
|
||||
Name 16 "OutputStream"
|
||||
Name 20 "OutputStream.clip0"
|
||||
Name 21 "s"
|
||||
Name 29 "OutputStream.clip0"
|
||||
Name 34 "OutputStream.cull0"
|
||||
Name 40 "OutputStream.vpai"
|
||||
Name 45 "OutputStream.rtai"
|
||||
Name 50 "OutputStream.ii"
|
||||
Name 55 "VertexID"
|
||||
Name 57 "VertexID"
|
||||
Name 59 "OutputStream"
|
||||
Name 60 "param"
|
||||
Name 62 "param"
|
||||
Decorate 20(OutputStream.clip0) BuiltIn Position
|
||||
Decorate 29(OutputStream.clip0) BuiltIn ClipDistance
|
||||
Decorate 34(OutputStream.cull0) BuiltIn CullDistance
|
||||
Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex
|
||||
Decorate 45(OutputStream.rtai) BuiltIn Layer
|
||||
Decorate 50(OutputStream.ii) Location 0
|
||||
Decorate 57(VertexID) Location 0
|
||||
Name 25 "notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;"
|
||||
Name 23 "VertexID"
|
||||
Name 24 "OutputStream"
|
||||
Name 28 "OutputStream.clip0"
|
||||
Name 29 "s"
|
||||
Name 37 "OutputStream.clip0"
|
||||
Name 42 "OutputStream.cull0"
|
||||
Name 48 "OutputStream.vpai"
|
||||
Name 53 "OutputStream.rtai"
|
||||
Name 58 "OutputStream.ii"
|
||||
Name 63 "VertexID"
|
||||
Name 65 "VertexID"
|
||||
Name 67 "OutputStream"
|
||||
Name 68 "param"
|
||||
Name 70 "param"
|
||||
Name 73 "s"
|
||||
Decorate 28(OutputStream.clip0) BuiltIn Position
|
||||
Decorate 37(OutputStream.clip0) BuiltIn ClipDistance
|
||||
Decorate 42(OutputStream.cull0) BuiltIn CullDistance
|
||||
Decorate 48(OutputStream.vpai) BuiltIn ViewportIndex
|
||||
Decorate 53(OutputStream.rtai) BuiltIn Layer
|
||||
Decorate 58(OutputStream.ii) Location 0
|
||||
Decorate 65(VertexID) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
@ -213,69 +321,101 @@ Validation failed
|
||||
12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int)
|
||||
13: TypePointer Function 12(S)
|
||||
14: TypeFunction 2 9(ptr) 13(ptr)
|
||||
19: TypePointer Output 10(float)
|
||||
20(OutputStream.clip0): 19(ptr) Variable Output
|
||||
22: 11(int) Constant 0
|
||||
23: TypePointer Function 10(float)
|
||||
26: 6(int) Constant 1
|
||||
27: TypeArray 10(float) 26
|
||||
28: TypePointer Output 27
|
||||
29(OutputStream.clip0): 28(ptr) Variable Output
|
||||
30: 11(int) Constant 1
|
||||
34(OutputStream.cull0): 28(ptr) Variable Output
|
||||
35: 11(int) Constant 2
|
||||
39: TypePointer Output 6(int)
|
||||
40(OutputStream.vpai): 39(ptr) Variable Output
|
||||
41: 11(int) Constant 3
|
||||
42: TypePointer Function 6(int)
|
||||
45(OutputStream.rtai): 39(ptr) Variable Output
|
||||
46: 11(int) Constant 4
|
||||
49: TypePointer Output 11(int)
|
||||
50(OutputStream.ii): 49(ptr) Variable Output
|
||||
51: 11(int) Constant 5
|
||||
52: TypePointer Function 11(int)
|
||||
56: TypePointer Input 8
|
||||
57(VertexID): 56(ptr) Variable Input
|
||||
19: 6(int) Constant 2
|
||||
20: TypeArray 6(int) 19
|
||||
21: TypePointer Function 20
|
||||
22: TypeFunction 2 21(ptr) 13(ptr)
|
||||
27: TypePointer Output 10(float)
|
||||
28(OutputStream.clip0): 27(ptr) Variable Output
|
||||
30: 11(int) Constant 0
|
||||
31: TypePointer Function 10(float)
|
||||
34: 6(int) Constant 1
|
||||
35: TypeArray 10(float) 34
|
||||
36: TypePointer Output 35
|
||||
37(OutputStream.clip0): 36(ptr) Variable Output
|
||||
38: 11(int) Constant 1
|
||||
42(OutputStream.cull0): 36(ptr) Variable Output
|
||||
43: 11(int) Constant 2
|
||||
47: TypePointer Output 6(int)
|
||||
48(OutputStream.vpai): 47(ptr) Variable Output
|
||||
49: 11(int) Constant 3
|
||||
50: TypePointer Function 6(int)
|
||||
53(OutputStream.rtai): 47(ptr) Variable Output
|
||||
54: 11(int) Constant 4
|
||||
57: TypePointer Output 11(int)
|
||||
58(OutputStream.ii): 57(ptr) Variable Output
|
||||
59: 11(int) Constant 5
|
||||
60: TypePointer Function 11(int)
|
||||
64: TypePointer Input 8
|
||||
65(VertexID): 64(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
55(VertexID): 9(ptr) Variable Function
|
||||
59(OutputStream): 13(ptr) Variable Function
|
||||
60(param): 9(ptr) Variable Function
|
||||
62(param): 13(ptr) Variable Function
|
||||
58: 8 Load 57(VertexID)
|
||||
Store 55(VertexID) 58
|
||||
61: 8 Load 55(VertexID)
|
||||
Store 60(param) 61
|
||||
63: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param)
|
||||
64: 12(S) Load 62(param)
|
||||
Store 59(OutputStream) 64
|
||||
63(VertexID): 9(ptr) Variable Function
|
||||
67(OutputStream): 13(ptr) Variable Function
|
||||
68(param): 9(ptr) Variable Function
|
||||
70(param): 13(ptr) Variable Function
|
||||
66: 8 Load 65(VertexID)
|
||||
Store 63(VertexID) 66
|
||||
69: 8 Load 63(VertexID)
|
||||
Store 68(param) 69
|
||||
71: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 68(param) 70(param)
|
||||
72: 12(S) Load 70(param)
|
||||
Store 67(OutputStream) 72
|
||||
Return
|
||||
FunctionEnd
|
||||
17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14
|
||||
15(VertexID): 9(ptr) FunctionParameter
|
||||
16(OutputStream): 13(ptr) FunctionParameter
|
||||
18: Label
|
||||
21(s): 13(ptr) Variable Function
|
||||
24: 23(ptr) AccessChain 21(s) 22
|
||||
25: 10(float) Load 24
|
||||
Store 20(OutputStream.clip0) 25
|
||||
31: 23(ptr) AccessChain 21(s) 30
|
||||
32: 10(float) Load 31
|
||||
33: 19(ptr) AccessChain 29(OutputStream.clip0) 22
|
||||
Store 33 32
|
||||
36: 23(ptr) AccessChain 21(s) 35
|
||||
37: 10(float) Load 36
|
||||
38: 19(ptr) AccessChain 34(OutputStream.cull0) 22
|
||||
Store 38 37
|
||||
43: 42(ptr) AccessChain 21(s) 41
|
||||
44: 6(int) Load 43
|
||||
Store 40(OutputStream.vpai) 44
|
||||
47: 42(ptr) AccessChain 21(s) 46
|
||||
48: 6(int) Load 47
|
||||
Store 45(OutputStream.rtai) 48
|
||||
53: 52(ptr) AccessChain 21(s) 51
|
||||
54: 11(int) Load 53
|
||||
Store 50(OutputStream.ii) 54
|
||||
29(s): 13(ptr) Variable Function
|
||||
32: 31(ptr) AccessChain 29(s) 30
|
||||
33: 10(float) Load 32
|
||||
Store 28(OutputStream.clip0) 33
|
||||
39: 31(ptr) AccessChain 29(s) 38
|
||||
40: 10(float) Load 39
|
||||
41: 27(ptr) AccessChain 37(OutputStream.clip0) 30
|
||||
Store 41 40
|
||||
44: 31(ptr) AccessChain 29(s) 43
|
||||
45: 10(float) Load 44
|
||||
46: 27(ptr) AccessChain 42(OutputStream.cull0) 30
|
||||
Store 46 45
|
||||
51: 50(ptr) AccessChain 29(s) 49
|
||||
52: 6(int) Load 51
|
||||
Store 48(OutputStream.vpai) 52
|
||||
55: 50(ptr) AccessChain 29(s) 54
|
||||
56: 6(int) Load 55
|
||||
Store 53(OutputStream.rtai) 56
|
||||
61: 60(ptr) AccessChain 29(s) 59
|
||||
62: 11(int) Load 61
|
||||
Store 58(OutputStream.ii) 62
|
||||
EmitVertex
|
||||
Return
|
||||
FunctionEnd
|
||||
25(notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 22
|
||||
23(VertexID): 21(ptr) FunctionParameter
|
||||
24(OutputStream): 13(ptr) FunctionParameter
|
||||
26: Label
|
||||
73(s): 13(ptr) Variable Function
|
||||
74: 31(ptr) AccessChain 73(s) 30
|
||||
75: 10(float) Load 74
|
||||
Store 28(OutputStream.clip0) 75
|
||||
76: 31(ptr) AccessChain 73(s) 38
|
||||
77: 10(float) Load 76
|
||||
78: 27(ptr) AccessChain 37(OutputStream.clip0) 30
|
||||
Store 78 77
|
||||
79: 31(ptr) AccessChain 73(s) 43
|
||||
80: 10(float) Load 79
|
||||
81: 27(ptr) AccessChain 42(OutputStream.cull0) 30
|
||||
Store 81 80
|
||||
82: 50(ptr) AccessChain 73(s) 49
|
||||
83: 6(int) Load 82
|
||||
Store 48(OutputStream.vpai) 83
|
||||
84: 50(ptr) AccessChain 73(s) 54
|
||||
85: 6(int) Load 84
|
||||
Store 53(OutputStream.rtai) 85
|
||||
86: 60(ptr) AccessChain 73(s) 59
|
||||
87: 11(int) Load 86
|
||||
Store 58(OutputStream.ii) 87
|
||||
EmitVertex
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -14,3 +14,11 @@ void main(triangle in uint VertexID[3] : VertexID,
|
||||
S s;
|
||||
OutputStream.Append(s);
|
||||
}
|
||||
|
||||
[maxvertexcount(4)]
|
||||
void notmain(line in uint VertexID[2] : VertexID,
|
||||
inout LineStream<S> OutputStream)
|
||||
{
|
||||
S s;
|
||||
OutputStream.Append(s);
|
||||
}
|
||||
|
@ -176,9 +176,9 @@ diff -b $BASEDIR/hlsl.pp.line3.frag.out $TARGETDIR/hlsl.pp.line3.frag.out || HAS
|
||||
# Testing -D and -U
|
||||
#
|
||||
echo "Testing -D and -U"
|
||||
$EXE -DUNDEFED -UIN_SHADER -DFOO=200 -i -l -UUNDEFED -DMUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out
|
||||
$EXE -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out
|
||||
diff -b $BASEDIR/glsl.-D-U.frag.out $TARGETDIR/glsl.-D-U.frag.out || HASERROR=1
|
||||
$EXE -D -Od -e main -V -i -DUNDEFED -UIN_SHADER -DFOO=200 -UUNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out
|
||||
$EXE -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out
|
||||
diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1
|
||||
|
||||
#
|
||||
@ -189,6 +189,7 @@ $EXE --client vulkan100 spv.targetVulkan.vert || HASERROR=1
|
||||
$EXE --client opengl100 spv.targetOpenGL.vert || HASERROR=1
|
||||
$EXE --target-env vulkan1.0 spv.targetVulkan.vert || HASERROR=1
|
||||
$EXE --target-env vulkan1.1 spv.targetVulkan.vert || HASERROR=1
|
||||
$EXE --target-env vulkan1.2 spv.targetVulkan.vert || HASERROR=1
|
||||
$EXE --target-env opengl spv.targetOpenGL.vert || HASERROR=1
|
||||
$EXE -V100 spv.targetVulkan.vert || HASERROR=1
|
||||
$EXE -G100 spv.targetOpenGL.vert || HASERROR=1
|
||||
|
@ -1,3 +1,3 @@
|
||||
// This header is generated by the make-revision script.
|
||||
|
||||
#define GLSLANG_PATCH_LEVEL 3500
|
||||
#define GLSLANG_PATCH_LEVEL 3559
|
||||
|
@ -690,7 +690,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
//
|
||||
// double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack
|
||||
//
|
||||
if (profile != EEsProfile && version >= 400) {
|
||||
if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
|
||||
commonBuiltins.append(
|
||||
|
||||
"double sqrt(double);"
|
||||
@ -1298,15 +1298,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"vec3 fma(vec3, vec3, vec3 );"
|
||||
"vec4 fma(vec4, vec4, vec4 );"
|
||||
"\n");
|
||||
}
|
||||
|
||||
if (profile != EEsProfile) {
|
||||
if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
|
||||
commonBuiltins.append(
|
||||
"double fma(double, double, double);"
|
||||
"dvec2 fma(dvec2, dvec2, dvec2 );"
|
||||
"dvec3 fma(dvec3, dvec3, dvec3 );"
|
||||
"dvec4 fma(dvec4, dvec4, dvec4 );"
|
||||
"\n");
|
||||
}
|
||||
}
|
||||
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
@ -1325,7 +1325,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"\n");
|
||||
}
|
||||
|
||||
if (profile != EEsProfile && version >= 400) {
|
||||
if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
|
||||
commonBuiltins.append(
|
||||
"double frexp(double, out int);"
|
||||
"dvec2 frexp( dvec2, out ivec2);"
|
||||
@ -5178,19 +5178,25 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"flat in int gl_PrimitiveID;"
|
||||
);
|
||||
|
||||
if (version >= 400) {
|
||||
if (version >= 130) { // ARB_sample_shading
|
||||
stageBuiltins[EShLangFragment].append(
|
||||
"flat in int gl_SampleID;"
|
||||
" in vec2 gl_SamplePosition;"
|
||||
"flat in int gl_SampleMaskIn[];"
|
||||
" out int gl_SampleMask[];"
|
||||
);
|
||||
if (spvVersion.spv == 0)
|
||||
|
||||
if (spvVersion.spv == 0) {
|
||||
stageBuiltins[EShLangFragment].append(
|
||||
"uniform int gl_NumSamples;"
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (version >= 400)
|
||||
stageBuiltins[EShLangFragment].append(
|
||||
"flat in int gl_SampleMaskIn[];"
|
||||
);
|
||||
|
||||
if (version >= 430)
|
||||
stageBuiltins[EShLangFragment].append(
|
||||
"flat in int gl_Layer;"
|
||||
@ -6621,6 +6627,14 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
|
||||
} else {
|
||||
// non-ES profile
|
||||
|
||||
if (version > 400) {
|
||||
snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors);
|
||||
s.append(builtInConstant);
|
||||
|
||||
snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors);
|
||||
s.append(builtInConstant);
|
||||
}
|
||||
|
||||
snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs);
|
||||
s.append(builtInConstant);
|
||||
|
||||
@ -7422,18 +7436,29 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable);
|
||||
}
|
||||
|
||||
if ((profile != EEsProfile && version >= 400) ||
|
||||
if ((profile != EEsProfile && version >= 130) ||
|
||||
(profile == EEsProfile && version >= 310)) {
|
||||
BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable);
|
||||
BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable);
|
||||
BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable);
|
||||
BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable);
|
||||
if (profile == EEsProfile && version < 320) {
|
||||
symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_OES_sample_variables);
|
||||
BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable);
|
||||
BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable);
|
||||
BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable);
|
||||
|
||||
if (profile != EEsProfile && version < 400) {
|
||||
BuiltInVariable("gl_NumSamples", EbvSampleMask, symbolTable);
|
||||
|
||||
symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_ARB_sample_shading);
|
||||
symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_ARB_sample_shading);
|
||||
symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_ARB_sample_shading);
|
||||
symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_ARB_sample_shading);
|
||||
} else {
|
||||
BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable);
|
||||
|
||||
if (profile == EEsProfile && version < 320) {
|
||||
symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_OES_sample_variables);
|
||||
symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_OES_sample_variables);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6035,6 +6035,10 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol)
|
||||
offset = qualifier.layoutOffset;
|
||||
else
|
||||
offset = atomicUintOffsets[qualifier.layoutBinding];
|
||||
|
||||
if (offset % 4 != 0)
|
||||
error(loc, "atomic counters offset should align based on 4:", "offset", "%d", offset);
|
||||
|
||||
symbol.getWritableType().getQualifier().layoutOffset = offset;
|
||||
|
||||
// Check for overlap
|
||||
@ -6087,7 +6091,7 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct
|
||||
if (isEsProfile() || version < 120)
|
||||
function = findFunctionExact(loc, call, builtIn);
|
||||
else if (version < 400)
|
||||
function = findFunction120(loc, call, builtIn);
|
||||
function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
|
||||
else if (explicitTypesEnabled)
|
||||
function = findFunctionExplicitTypes(loc, call, builtIn);
|
||||
else
|
||||
@ -6380,13 +6384,15 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc,
|
||||
void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
|
||||
{
|
||||
#ifndef GLSLANG_WEB
|
||||
if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() &&
|
||||
publicType.qualifier.hasOffset()) {
|
||||
if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) {
|
||||
if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
|
||||
error(loc, "atomic_uint binding is too large", "binding", "");
|
||||
return;
|
||||
}
|
||||
atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
|
||||
|
||||
if(publicType.qualifier.hasOffset()) {
|
||||
atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -7609,7 +7615,7 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
|
||||
switch (qualifier.storage) {
|
||||
case EvqUniform:
|
||||
profileRequires(loc, EEsProfile, 300, nullptr, "uniform block");
|
||||
profileRequires(loc, ENoProfile, 140, nullptr, "uniform block");
|
||||
profileRequires(loc, ENoProfile, 140, E_GL_ARB_uniform_buffer_object, "uniform block");
|
||||
if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.isPushConstant())
|
||||
requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "std430 requires the buffer storage qualifier");
|
||||
break;
|
||||
|
@ -1166,7 +1166,10 @@ int TScanContext::tokenizeIdentifier()
|
||||
case DVEC3:
|
||||
case DVEC4:
|
||||
afterType = true;
|
||||
if (parseContext.isEsProfile() || parseContext.version < 400)
|
||||
if (parseContext.isEsProfile() || parseContext.version < 150 ||
|
||||
(!parseContext.symbolTable.atBuiltInLevel() &&
|
||||
parseContext.version < 400 &&
|
||||
!parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)))
|
||||
reservedWord();
|
||||
return keyword;
|
||||
|
||||
@ -1421,6 +1424,9 @@ int TScanContext::tokenizeIdentifier()
|
||||
afterType = true;
|
||||
if (parseContext.isEsProfile() && parseContext.version >= 310)
|
||||
return keyword;
|
||||
if (!parseContext.isEsProfile() && (parseContext.version > 140 ||
|
||||
(parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample))))
|
||||
return keyword;
|
||||
return es30ReservedFromGLSL(150);
|
||||
|
||||
case SAMPLER2DMSARRAY:
|
||||
@ -1430,6 +1436,9 @@ int TScanContext::tokenizeIdentifier()
|
||||
if ((parseContext.isEsProfile() && parseContext.version >= 320) ||
|
||||
parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array))
|
||||
return keyword;
|
||||
if (!parseContext.isEsProfile() && (parseContext.version > 140 ||
|
||||
(parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample))))
|
||||
return keyword;
|
||||
return es30ReservedFromGLSL(150);
|
||||
|
||||
case SAMPLER1D:
|
||||
@ -1735,7 +1744,9 @@ int TScanContext::dMat()
|
||||
return keyword;
|
||||
}
|
||||
|
||||
if (!parseContext.isEsProfile() && parseContext.version >= 400)
|
||||
if (!parseContext.isEsProfile() && (parseContext.version >= 400 ||
|
||||
parseContext.symbolTable.atBuiltInLevel() ||
|
||||
(parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64))))
|
||||
return keyword;
|
||||
|
||||
if (parseContext.isForwardCompatible())
|
||||
|
@ -172,6 +172,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_ARB_tessellation_shader] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_enhanced_layouts] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_texture_cube_map_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_texture_multisample] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_shader_texture_lod] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_explicit_attrib_location] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_explicit_uniform_location] = EBhDisable;
|
||||
@ -183,6 +184,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_ARB_shader_texture_image_samples] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_viewport_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_gpu_shader_int64] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_gpu_shader_fp64] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_shader_ballot] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable;
|
||||
@ -192,6 +194,8 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_fragment_shader_interlock] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_shader_clock] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_uniform_buffer_object] = EBhDisable;
|
||||
extensionBehavior[E_GL_ARB_sample_shading] = EBhDisable;
|
||||
|
||||
extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable;
|
||||
extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable;
|
||||
@ -335,7 +339,6 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
|
||||
// AEP
|
||||
"#define GL_ANDROID_extension_pack_es31a 1\n"
|
||||
"#define GL_KHR_blend_equation_advanced 1\n"
|
||||
"#define GL_OES_sample_variables 1\n"
|
||||
"#define GL_OES_shader_image_atomic 1\n"
|
||||
"#define GL_OES_shader_multisample_interpolation 1\n"
|
||||
@ -379,6 +382,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
"#define GL_ARB_tessellation_shader 1\n"
|
||||
"#define GL_ARB_enhanced_layouts 1\n"
|
||||
"#define GL_ARB_texture_cube_map_array 1\n"
|
||||
"#define GL_ARB_texture_multisample 1\n"
|
||||
"#define GL_ARB_shader_texture_lod 1\n"
|
||||
"#define GL_ARB_explicit_attrib_location 1\n"
|
||||
"#define GL_ARB_explicit_uniform_location 1\n"
|
||||
@ -390,13 +394,16 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
"#define GL_ARB_shader_texture_image_samples 1\n"
|
||||
"#define GL_ARB_viewport_array 1\n"
|
||||
"#define GL_ARB_gpu_shader_int64 1\n"
|
||||
"#define GL_ARB_gpu_shader_fp64 1\n"
|
||||
"#define GL_ARB_shader_ballot 1\n"
|
||||
"#define GL_ARB_sparse_texture2 1\n"
|
||||
"#define GL_ARB_sparse_texture_clamp 1\n"
|
||||
"#define GL_ARB_shader_stencil_export 1\n"
|
||||
"#define GL_ARB_sample_shading 1\n"
|
||||
// "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members
|
||||
"#define GL_ARB_post_depth_coverage 1\n"
|
||||
"#define GL_ARB_fragment_shader_interlock 1\n"
|
||||
"#define GL_ARB_uniform_buffer_object 1\n"
|
||||
"#define GL_EXT_shader_non_constant_global_initializers 1\n"
|
||||
"#define GL_EXT_shader_image_load_formatted 1\n"
|
||||
"#define GL_EXT_post_depth_coverage 1\n"
|
||||
@ -499,6 +506,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
preamble +=
|
||||
"#define GL_GOOGLE_cpp_style_line_directive 1\n"
|
||||
"#define GL_GOOGLE_include_directive 1\n"
|
||||
"#define GL_KHR_blend_equation_advanced 1\n"
|
||||
;
|
||||
#endif
|
||||
|
||||
@ -919,8 +927,8 @@ void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op)
|
||||
// Call for any operation needing GLSL double data-type support.
|
||||
void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op)
|
||||
{
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
|
||||
//requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader_fp64, op);
|
||||
}
|
||||
|
||||
// Call for any operation needing GLSL float16 data-type support.
|
||||
|
@ -124,6 +124,7 @@ const char* const E_GL_ARB_compute_shader = "GL_ARB_compute_shader
|
||||
const char* const E_GL_ARB_tessellation_shader = "GL_ARB_tessellation_shader";
|
||||
const char* const E_GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layouts";
|
||||
const char* const E_GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array";
|
||||
const char* const E_GL_ARB_texture_multisample = "GL_ARB_texture_multisample";
|
||||
const char* const E_GL_ARB_shader_texture_lod = "GL_ARB_shader_texture_lod";
|
||||
const char* const E_GL_ARB_explicit_attrib_location = "GL_ARB_explicit_attrib_location";
|
||||
const char* const E_GL_ARB_explicit_uniform_location = "GL_ARB_explicit_uniform_location";
|
||||
@ -135,6 +136,7 @@ const char* const E_GL_ARB_derivative_control = "GL_ARB_derivative_con
|
||||
const char* const E_GL_ARB_shader_texture_image_samples = "GL_ARB_shader_texture_image_samples";
|
||||
const char* const E_GL_ARB_viewport_array = "GL_ARB_viewport_array";
|
||||
const char* const E_GL_ARB_gpu_shader_int64 = "GL_ARB_gpu_shader_int64";
|
||||
const char* const E_GL_ARB_gpu_shader_fp64 = "GL_ARB_gpu_shader_fp64";
|
||||
const char* const E_GL_ARB_shader_ballot = "GL_ARB_shader_ballot";
|
||||
const char* const E_GL_ARB_sparse_texture2 = "GL_ARB_sparse_texture2";
|
||||
const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture_clamp";
|
||||
@ -144,6 +146,8 @@ const char* const E_GL_ARB_post_depth_coverage = "GL_ARB_post_depth_cov
|
||||
const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array";
|
||||
const char* const E_GL_ARB_fragment_shader_interlock = "GL_ARB_fragment_shader_interlock";
|
||||
const char* const E_GL_ARB_shader_clock = "GL_ARB_shader_clock";
|
||||
const char* const E_GL_ARB_uniform_buffer_object = "GL_ARB_uniform_buffer_object";
|
||||
const char* const E_GL_ARB_sample_shading = "GL_ARB_sample_shading";
|
||||
|
||||
const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic";
|
||||
const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote";
|
||||
|
@ -402,7 +402,9 @@ GLSLANG_WEB_EXCLUDE_ON
|
||||
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
|
||||
}
|
||||
| DOUBLECONSTANT {
|
||||
parseContext.doubleCheck($1.loc, "double literal");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double literal");
|
||||
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
|
||||
}
|
||||
| FLOAT16CONSTANT {
|
||||
@ -1751,7 +1753,9 @@ type_specifier_nonarray
|
||||
}
|
||||
GLSLANG_WEB_EXCLUDE_ON
|
||||
| DOUBLE {
|
||||
parseContext.doubleCheck($1.loc, "double");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
}
|
||||
@ -1811,19 +1815,25 @@ GLSLANG_WEB_EXCLUDE_ON
|
||||
$$.basicType = EbtUint64;
|
||||
}
|
||||
| DVEC2 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| DVEC3 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| DVEC4 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(4);
|
||||
@ -2027,73 +2037,97 @@ GLSLANG_WEB_EXCLUDE_ON
|
||||
$$.setVector(4);
|
||||
}
|
||||
| DMAT2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 2);
|
||||
}
|
||||
| DMAT3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 3);
|
||||
}
|
||||
| DMAT4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 4);
|
||||
}
|
||||
| DMAT2X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 2);
|
||||
}
|
||||
| DMAT2X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 3);
|
||||
}
|
||||
| DMAT2X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 4);
|
||||
}
|
||||
| DMAT3X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 2);
|
||||
}
|
||||
| DMAT3X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 3);
|
||||
}
|
||||
| DMAT3X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 4);
|
||||
}
|
||||
| DMAT4X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 2);
|
||||
}
|
||||
| DMAT4X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 3);
|
||||
}
|
||||
| DMAT4X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 4);
|
||||
|
@ -402,7 +402,9 @@ primary_expression
|
||||
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
|
||||
}
|
||||
| DOUBLECONSTANT {
|
||||
parseContext.doubleCheck($1.loc, "double literal");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double literal");
|
||||
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
|
||||
}
|
||||
| FLOAT16CONSTANT {
|
||||
@ -1751,7 +1753,9 @@ type_specifier_nonarray
|
||||
}
|
||||
|
||||
| DOUBLE {
|
||||
parseContext.doubleCheck($1.loc, "double");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
}
|
||||
@ -1811,19 +1815,25 @@ type_specifier_nonarray
|
||||
$$.basicType = EbtUint64;
|
||||
}
|
||||
| DVEC2 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| DVEC3 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| DVEC4 {
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double vector");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setVector(4);
|
||||
@ -2027,73 +2037,97 @@ type_specifier_nonarray
|
||||
$$.setVector(4);
|
||||
}
|
||||
| DMAT2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 2);
|
||||
}
|
||||
| DMAT3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 3);
|
||||
}
|
||||
| DMAT4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 4);
|
||||
}
|
||||
| DMAT2X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 2);
|
||||
}
|
||||
| DMAT2X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 3);
|
||||
}
|
||||
| DMAT2X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(2, 4);
|
||||
}
|
||||
| DMAT3X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 2);
|
||||
}
|
||||
| DMAT3X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 3);
|
||||
}
|
||||
| DMAT3X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(3, 4);
|
||||
}
|
||||
| DMAT4X2 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 2);
|
||||
}
|
||||
| DMAT4X3 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 3);
|
||||
}
|
||||
| DMAT4X4 {
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck($1.loc, "double matrix");
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtDouble;
|
||||
$$.setMatrix(4, 4);
|
||||
|
@ -4279,7 +4279,9 @@ yyreduce:
|
||||
case 15:
|
||||
#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
|
||||
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
|
||||
}
|
||||
#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
|
||||
@ -6498,7 +6500,9 @@ yyreduce:
|
||||
case 228:
|
||||
#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
}
|
||||
@ -6618,7 +6622,9 @@ yyreduce:
|
||||
case 240:
|
||||
#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setVector(2);
|
||||
@ -6629,7 +6635,9 @@ yyreduce:
|
||||
case 241:
|
||||
#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setVector(3);
|
||||
@ -6640,7 +6648,9 @@ yyreduce:
|
||||
case 242:
|
||||
#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setVector(4);
|
||||
@ -7014,7 +7024,9 @@ yyreduce:
|
||||
case 276:
|
||||
#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(2, 2);
|
||||
@ -7025,7 +7037,9 @@ yyreduce:
|
||||
case 277:
|
||||
#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(3, 3);
|
||||
@ -7036,7 +7050,9 @@ yyreduce:
|
||||
case 278:
|
||||
#line 2041 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(4, 4);
|
||||
@ -7047,7 +7063,9 @@ yyreduce:
|
||||
case 279:
|
||||
#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(2, 2);
|
||||
@ -7058,7 +7076,9 @@ yyreduce:
|
||||
case 280:
|
||||
#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(2, 3);
|
||||
@ -7069,7 +7089,9 @@ yyreduce:
|
||||
case 281:
|
||||
#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(2, 4);
|
||||
@ -7080,7 +7102,9 @@ yyreduce:
|
||||
case 282:
|
||||
#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(3, 2);
|
||||
@ -7091,7 +7115,9 @@ yyreduce:
|
||||
case 283:
|
||||
#line 2071 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(3, 3);
|
||||
@ -7102,7 +7128,9 @@ yyreduce:
|
||||
case 284:
|
||||
#line 2077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(3, 4);
|
||||
@ -7113,7 +7141,9 @@ yyreduce:
|
||||
case 285:
|
||||
#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(4, 2);
|
||||
@ -7124,7 +7154,9 @@ yyreduce:
|
||||
case 286:
|
||||
#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(4, 3);
|
||||
@ -7135,7 +7167,9 @@ yyreduce:
|
||||
case 287:
|
||||
#line 2095 "MachineIndependent/glslang.y" /* yacc.c:1646 */
|
||||
{
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
|
||||
if (! parseContext.symbolTable.atBuiltInLevel())
|
||||
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
|
||||
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
|
||||
(yyval.interm.type).basicType = EbtDouble;
|
||||
(yyval.interm.type).setMatrix(4, 4);
|
||||
|
@ -831,6 +831,7 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink&
|
||||
if (iter->second != location) {
|
||||
TString errorMsg = "Invalid location: " + name;
|
||||
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
|
||||
hasError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -856,6 +857,7 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink&
|
||||
if (iter->second != location) {
|
||||
TString errorMsg = "Invalid location: " + name;
|
||||
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
|
||||
hasError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -884,6 +886,7 @@ void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink&
|
||||
if (iter->second != binding) {
|
||||
TString errorMsg = "Invalid binding: " + name;
|
||||
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
|
||||
hasError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,6 +129,7 @@ public:
|
||||
uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage);
|
||||
|
||||
TSlotSetMap slots;
|
||||
bool hasError = false;
|
||||
|
||||
protected:
|
||||
TDefaultIoResolverBase(TDefaultIoResolverBase&);
|
||||
|
@ -332,6 +332,9 @@ public:
|
||||
case EShTargetVulkan_1_1:
|
||||
processes.addProcess("target-env vulkan1.1");
|
||||
break;
|
||||
case EShTargetVulkan_1_2:
|
||||
processes.addProcess("target-env vulkan1.2");
|
||||
break;
|
||||
default:
|
||||
processes.addProcess("target-env vulkanUnknown");
|
||||
break;
|
||||
|
@ -145,6 +145,7 @@ typedef enum {
|
||||
typedef enum {
|
||||
EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0
|
||||
EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1
|
||||
EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2
|
||||
EShTargetOpenGL_450 = 450, // OpenGL
|
||||
} EShTargetClientVersion;
|
||||
|
||||
|
@ -2516,6 +2516,8 @@ bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const T
|
||||
//
|
||||
bool HlslGrammar::acceptFunctionParameters(TFunction& function)
|
||||
{
|
||||
parseContext.beginParameterParsing(function);
|
||||
|
||||
// LEFT_PAREN
|
||||
if (! acceptTokenClass(EHTokLeftParen))
|
||||
return false;
|
||||
|
@ -69,7 +69,8 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
|
||||
clipDistanceOutput(nullptr),
|
||||
cullDistanceOutput(nullptr),
|
||||
clipDistanceInput(nullptr),
|
||||
cullDistanceInput(nullptr)
|
||||
cullDistanceInput(nullptr),
|
||||
parsingEntrypointParameters(false)
|
||||
{
|
||||
globalUniformDefaults.clear();
|
||||
globalUniformDefaults.layoutMatrix = ElmRowMajor;
|
||||
@ -2049,7 +2050,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
|
||||
};
|
||||
|
||||
// if we aren't in the entry point, fix the IO as such and exit
|
||||
if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
|
||||
if (! isEntrypointName(userFunction.getName())) {
|
||||
remapNonEntryPointIO(userFunction);
|
||||
return nullptr;
|
||||
}
|
||||
@ -8884,6 +8885,10 @@ void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier
|
||||
//
|
||||
bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry)
|
||||
{
|
||||
// these can be declared on non-entry-points, in which case they lose their meaning
|
||||
if (! parsingEntrypointParameters)
|
||||
return true;
|
||||
|
||||
switch (geometry) {
|
||||
case ElgPoints: // fall through
|
||||
case ElgLines: // ...
|
||||
@ -8914,6 +8919,10 @@ bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayout
|
||||
if (language != EShLangGeometry)
|
||||
return true;
|
||||
|
||||
// these can be declared on non-entry-points, in which case they lose their meaning
|
||||
if (! parsingEntrypointParameters)
|
||||
return true;
|
||||
|
||||
switch (geometry) {
|
||||
case ElgPoints:
|
||||
case ElgLineStrip:
|
||||
|
@ -183,6 +183,11 @@ public:
|
||||
void getFullNamespaceName(TString*&) const;
|
||||
void addScopeMangler(TString&);
|
||||
|
||||
void beginParameterParsing(TFunction& function)
|
||||
{
|
||||
parsingEntrypointParameters = isEntrypointName(function.getName());
|
||||
}
|
||||
|
||||
void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
|
||||
void popSwitchSequence() { switchSequenceStack.pop_back(); }
|
||||
|
||||
@ -241,6 +246,7 @@ protected:
|
||||
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
|
||||
bool isScalarConstructor(const TIntermNode*);
|
||||
TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
|
||||
bool isEntrypointName(const TString& name) { return name.compare(intermediate.getEntryPointName().c_str()) == 0; }
|
||||
|
||||
// Return true if this node requires L-value conversion (e.g, to an imageStore).
|
||||
bool shouldConvertLValue(const TIntermNode*) const;
|
||||
@ -494,6 +500,7 @@ protected:
|
||||
};
|
||||
|
||||
TMap<int, tShadowTextureSymbols*> textureShadowVariant;
|
||||
bool parsingEntrypointParameters;
|
||||
};
|
||||
|
||||
// This is the prefix we use for built-in methods to avoid namespace collisions with
|
||||
|
@ -5,7 +5,7 @@
|
||||
"site" : "github",
|
||||
"subrepo" : "KhronosGroup/SPIRV-Tools",
|
||||
"subdir" : "External/spirv-tools",
|
||||
"commit" : "5c019b5923c1f6bf00a3ac28114ec4a7b1faa0e2"
|
||||
"commit" : "323a81fc5e30e43a04e5e22af4cba98ca2a161e6"
|
||||
},
|
||||
{
|
||||
"name" : "spirv-tools/external/spirv-headers",
|
||||
|
Loading…
x
Reference in New Issue
Block a user