123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- //
- // 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>>;
- using CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
- TEST_P(CompileToAstTest, FromFile)
- {
- loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
- Target::AST);
- }
- // Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled).
- TEST_P(CompileToAstTestNV, FromFile)
- {
- loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
- Target::AST);
- }
- // clang-format off
- INSTANTIATE_TEST_SUITE_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",
- "100samplerExternal.frag",
- "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",
- "cppIntMinOverNegativeOne.frag",
- "cppMerge.frag",
- "cppNest.vert",
- "cppBad.vert",
- "cppBad2.vert",
- "cppBad3.vert",
- "cppBad4.vert",
- "cppBad5.vert",
- "cppComplexExpr.vert",
- "cppDeepNest.frag",
- "cppPassMacroName.frag",
- "cppRelaxSkipTokensErrors.vert",
- "badChars.frag",
- "pointCoord.frag",
- "array.frag",
- "array100.frag",
- "comment.frag",
- "300.vert",
- "300.frag",
- "300BuiltIns.frag",
- "300layout.vert",
- "300layout.frag",
- "300operations.frag",
- "300block.frag",
- "300samplerExternal.frag",
- "300samplerExternalYUV.frag",
- "310.comp",
- "310.vert",
- "310.geom",
- "310.frag",
- "310.tesc",
- "310.tese",
- "310implicitSizeArrayError.vert",
- "310.inheritMemory.frag",
- "310AofA.vert",
- "310runtimeArray.vert",
- "320.comp",
- "320.vert",
- "320.geom",
- "320.frag",
- "320.tesc",
- "320.tese",
- "330.frag",
- "330comp.frag",
- "constErrors.frag",
- "constFold.frag",
- "constFoldIntMin.frag",
- "errors.frag",
- "forwardRef.frag",
- "uint.frag",
- "switch.frag",
- "tokenLength.vert",
- "100Limits.vert",
- "100scope.vert",
- "110scope.vert",
- "300scope.vert",
- "400.frag",
- "400.vert",
- "410.vert",
- "420.comp",
- "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",
- "435.vert",
- "440.vert",
- "440.frag",
- "450.vert",
- "450.geom",
- "450.tesc",
- "450.tese",
- "450.frag",
- "450.comp",
- "460.frag",
- "460.vert",
- "dce.frag",
- "atomic_uint.frag",
- "implicitInnerAtomicUint.frag",
- "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",
- "mixedArrayDecls.frag",
- "nonuniform.frag",
- "newTexture.frag",
- "Operations.frag",
- "overlongLiteral.frag",
- "prepost.frag",
- "runtimeArray.vert",
- "simpleFunctionCall.frag",
- "stringToDouble.vert",
- "structAssignment.frag",
- "structDeref.frag",
- "structure.frag",
- "swizzle.frag",
- "invalidSwizzle.vert",
- "syntaxError.frag",
- "test.frag",
- "texture.frag",
- "tokenPaste.vert",
- "types.frag",
- "uniformArray.frag",
- "variableArrayIndex.frag",
- "varyingArray.frag",
- "varyingArrayIndirect.frag",
- "voidFunction.frag",
- "whileLoop.frag",
- "nonVulkan.frag",
- "negativeArraySize.comp",
- "precise.tesc",
- "precise_struct_block.vert",
- "maxClipDistances.vert",
- "findFunction.frag",
- "noMatchingFunction.frag",
- "constantUnaryConversion.comp",
- "xfbUnsizedArray.error.vert",
- "xfbUnsizedArray.error.tese",
- "glsl.140.layoutOffset.error.vert",
- "glsl.430.layoutOffset.error.vert",
- "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.460.subgroup.mesh",
- "glsl.460.subgroup.task",
- "glsl.460.subgroup.rahit",
- "glsl.460.subgroup.rcall",
- "glsl.460.subgroup.rchit",
- "glsl.460.subgroup.rgen",
- "glsl.460.subgroup.rint",
- "glsl.460.subgroup.rmiss",
- "glsl.es300.layoutOffset.error.vert",
- "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",
- "terminate.frag",
- "terminate.vert",
- "negativeWorkGroupSize.comp",
- "textureoffset_sampler2darrayshadow.vert",
- "atomicAdd.comp",
- "GL_ARB_gpu_shader5.u2i.vert",
- "textureQueryLOD.frag",
- "atomicCounterARBOps.vert",
- "GL_EXT_shader_integer_mix.vert",
- "GL_ARB_draw_instanced.vert",
- "GL_ARB_fragment_coord_conventions.vert",
- "BestMatchFunction.vert",
- "EndStreamPrimitive.geom",
- "floatBitsToInt.vert",
- "coord_conventions.frag",
- "gl_FragCoord.frag"
- })),
- FileNameAsCustomTestSuffix
- );
- INSTANTIATE_TEST_SUITE_P(
- Glsl, CompileToAstTestNV,
- ::testing::ValuesIn(std::vector<std::string>({
- "nvShaderNoperspectiveInterpolation.frag",
- })),
- FileNameAsCustomTestSuffix
- );
- // clang-format on
- } // anonymous namespace
- } // namespace glslangtest
|