diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c17b2b38..afea3bcc 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -786,16 +786,14 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T convertGlslangToSpvType(node->getType()), left, right, node->getLeft()->getType().getBasicType()); + builder.clearAccessChain(); if (! result) { spv::MissingFunctionality("unknown glslang binary operation"); + return true; // pick up a child as the place-holder result } else { - builder.clearAccessChain(); builder.setAccessChainRValue(result); - return false; } - - return true; } bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) @@ -908,10 +906,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI default: spv::MissingFunctionality("unknown glslang unary"); - break; + return true; // pick up operand as placeholder result } - - return true; } bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node) @@ -1251,7 +1247,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (! result) { spv::MissingFunctionality("unknown glslang aggregate"); - return true; + return true; // pick up a child as a placeholder operand } else { builder.clearAccessChain(); builder.setAccessChainRValue(result); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 02ee7a0f..f1bb31f1 100755 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1369,14 +1369,12 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter case Dim2D: case DimCube: case DimRect: + case DimSubpassData: numComponents = 2; break; case Dim3D: numComponents = 3; break; - case DimSubpassData: - MissingFunctionality("input-attachment dim"); - break; default: assert(0); @@ -2251,7 +2249,6 @@ void TbdFunctionality(const char* tbd) void MissingFunctionality(const char* fun) { printf("Missing functionality: %s\n", fun); - exit(1); } Builder::Loop::Loop(Builder& builder, bool testFirstArg) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4ebfd653..a0d1fe05 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "SPIRV99.863" +#define GLSLANG_REVISION "SPIRV99.864" #define GLSLANG_DATE "21-Dec-2015"