2016-03-04 21:22:34 +00:00
|
|
|
//
|
|
|
|
// Copyright (C) 2016 Google, Inc.
|
|
|
|
//
|
|
|
|
// All rights reserved.
|
|
|
|
//
|
|
|
|
// Redistribution and use in source and binary forms, with or without
|
|
|
|
// modification, are permitted provided that the following conditions
|
|
|
|
// are met:
|
|
|
|
//
|
|
|
|
// Redistributions of source code must retain the above copyright
|
|
|
|
// notice, this list of conditions and the following disclaimer.
|
|
|
|
//
|
|
|
|
// Redistributions in binary form must reproduce the above
|
|
|
|
// copyright notice, this list of conditions and the following
|
|
|
|
// disclaimer in the documentation and/or other materials provided
|
|
|
|
// with the distribution.
|
|
|
|
//
|
|
|
|
// Neither the name of Google Inc. nor the names of its
|
|
|
|
// contributors may be used to endorse or promote products derived
|
|
|
|
// from this software without specific prior written permission.
|
|
|
|
//
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
|
|
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
|
|
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
|
|
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
|
|
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
|
|
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
// POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
|
|
|
#include "TestFixture.h"
|
|
|
|
|
|
|
|
namespace glslangtest {
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
using CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>;
|
|
|
|
|
2018-03-16 13:15:48 +00:00
|
|
|
#ifdef NV_EXTENSIONS
|
|
|
|
using CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
|
|
|
|
#endif
|
|
|
|
|
2016-03-04 21:22:34 +00:00
|
|
|
TEST_P(CompileToAstTest, FromFile)
|
|
|
|
{
|
2016-10-05 14:25:09 +00:00
|
|
|
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
|
2019-01-04 10:10:53 +00:00
|
|
|
Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
|
2016-05-16 16:50:30 +00:00
|
|
|
Target::AST);
|
2016-03-04 21:22:34 +00:00
|
|
|
}
|
|
|
|
|
2018-03-16 13:15:48 +00:00
|
|
|
#ifdef NV_EXTENSIONS
|
|
|
|
// Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled).
|
|
|
|
TEST_P(CompileToAstTestNV, FromFile)
|
|
|
|
{
|
|
|
|
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
|
2019-01-04 10:10:53 +00:00
|
|
|
Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
|
2018-03-16 13:15:48 +00:00
|
|
|
Target::AST);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2016-03-04 21:22:34 +00:00
|
|
|
// clang-format off
|
|
|
|
INSTANTIATE_TEST_CASE_P(
|
|
|
|
Glsl, CompileToAstTest,
|
|
|
|
::testing::ValuesIn(std::vector<std::string>({
|
|
|
|
"sample.frag",
|
|
|
|
"sample.vert",
|
|
|
|
"decls.frag",
|
|
|
|
"specExamples.frag",
|
|
|
|
"specExamples.vert",
|
|
|
|
"versionsClean.frag",
|
|
|
|
"versionsClean.vert",
|
|
|
|
"versionsErrors.frag",
|
|
|
|
"versionsErrors.vert",
|
|
|
|
"100.frag",
|
2017-09-04 16:33:04 +00:00
|
|
|
"100samplerExternal.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"120.vert",
|
|
|
|
"120.frag",
|
|
|
|
"130.vert",
|
|
|
|
"130.frag",
|
|
|
|
"140.vert",
|
|
|
|
"140.frag",
|
|
|
|
"150.vert",
|
|
|
|
"150.geom",
|
|
|
|
"150.frag",
|
|
|
|
"precision.frag",
|
|
|
|
"precision.vert",
|
|
|
|
"nonSquare.vert",
|
|
|
|
"matrixError.vert",
|
|
|
|
"cppSimple.vert",
|
|
|
|
"cppIndent.vert",
|
2017-10-28 18:55:02 +00:00
|
|
|
"cppIntMinOverNegativeOne.frag",
|
2019-02-20 10:03:40 +00:00
|
|
|
"cppMerge.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"cppNest.vert",
|
2016-07-30 18:38:17 +00:00
|
|
|
"cppBad.vert",
|
2017-01-03 00:56:08 +00:00
|
|
|
"cppBad2.vert",
|
2019-02-11 10:05:00 +00:00
|
|
|
"cppBad3.vert",
|
2019-02-16 14:35:13 +00:00
|
|
|
"cppBad4.vert",
|
|
|
|
"cppBad5.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"cppComplexExpr.vert",
|
2017-10-16 21:29:07 +00:00
|
|
|
"cppDeepNest.frag",
|
2017-11-02 12:48:32 +00:00
|
|
|
"cppPassMacroName.frag",
|
2018-03-19 06:43:18 +00:00
|
|
|
"cppRelaxSkipTokensErrors.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"badChars.frag",
|
|
|
|
"pointCoord.frag",
|
|
|
|
"array.frag",
|
|
|
|
"array100.frag",
|
|
|
|
"comment.frag",
|
|
|
|
"300.vert",
|
|
|
|
"300.frag",
|
|
|
|
"300BuiltIns.frag",
|
|
|
|
"300layout.vert",
|
|
|
|
"300layout.frag",
|
|
|
|
"300operations.frag",
|
|
|
|
"300block.frag",
|
2017-09-04 16:33:04 +00:00
|
|
|
"300samplerExternal.frag",
|
2019-01-24 20:12:20 +00:00
|
|
|
"300samplerExternalYUV.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"310.comp",
|
|
|
|
"310.vert",
|
|
|
|
"310.geom",
|
|
|
|
"310.frag",
|
|
|
|
"310.tesc",
|
|
|
|
"310.tese",
|
|
|
|
"310implicitSizeArrayError.vert",
|
|
|
|
"310AofA.vert",
|
2018-04-05 17:25:02 +00:00
|
|
|
"310runtimeArray.vert",
|
2017-07-23 19:54:15 +00:00
|
|
|
"320.comp",
|
|
|
|
"320.vert",
|
|
|
|
"320.geom",
|
|
|
|
"320.frag",
|
|
|
|
"320.tesc",
|
|
|
|
"320.tese",
|
2016-03-04 21:22:34 +00:00
|
|
|
"330.frag",
|
|
|
|
"330comp.frag",
|
|
|
|
"constErrors.frag",
|
|
|
|
"constFold.frag",
|
2017-10-28 18:55:02 +00:00
|
|
|
"constFoldIntMin.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"errors.frag",
|
|
|
|
"forwardRef.frag",
|
|
|
|
"uint.frag",
|
|
|
|
"switch.frag",
|
|
|
|
"tokenLength.vert",
|
|
|
|
"100Limits.vert",
|
|
|
|
"100scope.vert",
|
|
|
|
"110scope.vert",
|
|
|
|
"300scope.vert",
|
|
|
|
"400.frag",
|
2016-06-06 00:52:05 +00:00
|
|
|
"400.vert",
|
|
|
|
"410.vert",
|
2016-05-30 00:24:31 +00:00
|
|
|
"420.comp",
|
2016-03-04 21:22:34 +00:00
|
|
|
"420.frag",
|
|
|
|
"420.vert",
|
|
|
|
"420.geom",
|
|
|
|
"420_size_gl_in.geom",
|
|
|
|
"430scope.vert",
|
|
|
|
"lineContinuation100.vert",
|
|
|
|
"lineContinuation.vert",
|
|
|
|
"numeral.frag",
|
|
|
|
"400.geom",
|
|
|
|
"400.tesc",
|
|
|
|
"400.tese",
|
|
|
|
"410.tesc",
|
|
|
|
"420.tesc",
|
|
|
|
"420.tese",
|
|
|
|
"410.geom",
|
|
|
|
"430.vert",
|
|
|
|
"430.comp",
|
|
|
|
"430AofA.frag",
|
2017-07-23 17:49:42 +00:00
|
|
|
"435.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"440.vert",
|
|
|
|
"440.frag",
|
|
|
|
"450.vert",
|
|
|
|
"450.geom",
|
|
|
|
"450.tesc",
|
|
|
|
"450.tese",
|
|
|
|
"450.frag",
|
|
|
|
"450.comp",
|
2017-07-23 20:44:59 +00:00
|
|
|
"460.frag",
|
|
|
|
"460.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"dce.frag",
|
|
|
|
"atomic_uint.frag",
|
2017-11-02 06:05:53 +00:00
|
|
|
"implicitInnerAtomicUint.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"aggOps.frag",
|
|
|
|
"always-discard.frag",
|
|
|
|
"always-discard2.frag",
|
|
|
|
"conditionalDiscard.frag",
|
|
|
|
"conversion.frag",
|
|
|
|
"dataOut.frag",
|
|
|
|
"dataOutIndirect.frag",
|
|
|
|
"deepRvalue.frag",
|
|
|
|
"depthOut.frag",
|
|
|
|
"discard-dce.frag",
|
|
|
|
"doWhileLoop.frag",
|
|
|
|
"earlyReturnDiscard.frag",
|
|
|
|
"flowControl.frag",
|
|
|
|
"forLoop.frag",
|
|
|
|
"functionCall.frag",
|
|
|
|
"functionSemantics.frag",
|
|
|
|
"length.frag",
|
|
|
|
"localAggregates.frag",
|
|
|
|
"loops.frag",
|
|
|
|
"loopsArtificial.frag",
|
|
|
|
"matrix.frag",
|
|
|
|
"matrix2.frag",
|
2018-03-26 06:38:53 +00:00
|
|
|
"mixedArrayDecls.frag",
|
2018-04-05 17:25:02 +00:00
|
|
|
"nonuniform.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"newTexture.frag",
|
|
|
|
"Operations.frag",
|
2017-10-22 17:41:13 +00:00
|
|
|
"overlongLiteral.frag",
|
2016-03-04 21:22:34 +00:00
|
|
|
"prepost.frag",
|
2018-04-02 20:52:15 +00:00
|
|
|
"runtimeArray.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"simpleFunctionCall.frag",
|
2018-05-25 00:11:47 +00:00
|
|
|
"stringToDouble.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"structAssignment.frag",
|
|
|
|
"structDeref.frag",
|
|
|
|
"structure.frag",
|
|
|
|
"swizzle.frag",
|
2017-10-17 08:11:33 +00:00
|
|
|
"invalidSwizzle.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"syntaxError.frag",
|
|
|
|
"test.frag",
|
|
|
|
"texture.frag",
|
2016-12-19 16:19:43 +00:00
|
|
|
"tokenPaste.vert",
|
2016-03-04 21:22:34 +00:00
|
|
|
"types.frag",
|
|
|
|
"uniformArray.frag",
|
|
|
|
"variableArrayIndex.frag",
|
|
|
|
"varyingArray.frag",
|
|
|
|
"varyingArrayIndirect.frag",
|
|
|
|
"voidFunction.frag",
|
|
|
|
"whileLoop.frag",
|
|
|
|
"nonVulkan.frag",
|
2016-05-04 18:35:16 +00:00
|
|
|
"negativeArraySize.comp",
|
|
|
|
"precise.tesc",
|
|
|
|
"precise_struct_block.vert",
|
|
|
|
"maxClipDistances.vert",
|
2018-03-06 23:12:04 +00:00
|
|
|
"findFunction.frag",
|
2019-03-26 17:45:33 +00:00
|
|
|
"constantUnaryConversion.comp",
|
|
|
|
"glsl.450.subgroup.frag",
|
|
|
|
"glsl.450.subgroup.geom",
|
|
|
|
"glsl.450.subgroup.tesc",
|
|
|
|
"glsl.450.subgroup.tese",
|
|
|
|
"glsl.450.subgroup.vert",
|
|
|
|
"glsl.450.subgroupArithmetic.comp",
|
|
|
|
"glsl.450.subgroupBasic.comp",
|
|
|
|
"glsl.450.subgroupBallot.comp",
|
|
|
|
"glsl.450.subgroupBallotNeg.comp",
|
|
|
|
"glsl.450.subgroupClustered.comp",
|
|
|
|
"glsl.450.subgroupClusteredNeg.comp",
|
|
|
|
"glsl.450.subgroupPartitioned.comp",
|
|
|
|
"glsl.450.subgroupShuffle.comp",
|
|
|
|
"glsl.450.subgroupShuffleRelative.comp",
|
|
|
|
"glsl.450.subgroupQuad.comp",
|
|
|
|
"glsl.450.subgroupVote.comp",
|
|
|
|
"glsl.es320.subgroup.frag",
|
|
|
|
"glsl.es320.subgroup.geom",
|
|
|
|
"glsl.es320.subgroup.tesc",
|
|
|
|
"glsl.es320.subgroup.tese",
|
|
|
|
"glsl.es320.subgroup.vert",
|
|
|
|
"glsl.es320.subgroupArithmetic.comp",
|
|
|
|
"glsl.es320.subgroupBasic.comp",
|
|
|
|
"glsl.es320.subgroupBallot.comp",
|
|
|
|
"glsl.es320.subgroupBallotNeg.comp",
|
|
|
|
"glsl.es320.subgroupClustered.comp",
|
|
|
|
"glsl.es320.subgroupClusteredNeg.comp",
|
|
|
|
"glsl.es320.subgroupPartitioned.comp",
|
|
|
|
"glsl.es320.subgroupShuffle.comp",
|
|
|
|
"glsl.es320.subgroupShuffleRelative.comp",
|
|
|
|
"glsl.es320.subgroupQuad.comp",
|
|
|
|
"glsl.es320.subgroupVote.comp",
|
2016-03-04 21:22:34 +00:00
|
|
|
})),
|
2016-05-16 16:50:30 +00:00
|
|
|
FileNameAsCustomTestSuffix
|
2016-03-04 21:22:34 +00:00
|
|
|
);
|
2018-03-16 13:15:48 +00:00
|
|
|
|
|
|
|
#ifdef NV_EXTENSIONS
|
|
|
|
INSTANTIATE_TEST_CASE_P(
|
|
|
|
Glsl, CompileToAstTestNV,
|
|
|
|
::testing::ValuesIn(std::vector<std::string>({
|
|
|
|
"nvShaderNoperspectiveInterpolation.frag",
|
|
|
|
})),
|
|
|
|
FileNameAsCustomTestSuffix
|
|
|
|
);
|
|
|
|
#endif
|
2016-03-04 21:22:34 +00:00
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
} // anonymous namespace
|
|
|
|
} // namespace glslangtest
|