1617a3babSopenharmony_ci// 2617a3babSopenharmony_ci// Copyright (C) 2016 Google, Inc. 3617a3babSopenharmony_ci// 4617a3babSopenharmony_ci// All rights reserved. 5617a3babSopenharmony_ci// 6617a3babSopenharmony_ci// Redistribution and use in source and binary forms, with or without 7617a3babSopenharmony_ci// modification, are permitted provided that the following conditions 8617a3babSopenharmony_ci// are met: 9617a3babSopenharmony_ci// 10617a3babSopenharmony_ci// Redistributions of source code must retain the above copyright 11617a3babSopenharmony_ci// notice, this list of conditions and the following disclaimer. 12617a3babSopenharmony_ci// 13617a3babSopenharmony_ci// Redistributions in binary form must reproduce the above 14617a3babSopenharmony_ci// copyright notice, this list of conditions and the following 15617a3babSopenharmony_ci// disclaimer in the documentation and/or other materials provided 16617a3babSopenharmony_ci// with the distribution. 17617a3babSopenharmony_ci// 18617a3babSopenharmony_ci// Neither the name of Google Inc. nor the names of its 19617a3babSopenharmony_ci// contributors may be used to endorse or promote products derived 20617a3babSopenharmony_ci// from this software without specific prior written permission. 21617a3babSopenharmony_ci// 22617a3babSopenharmony_ci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23617a3babSopenharmony_ci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24617a3babSopenharmony_ci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25617a3babSopenharmony_ci// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26617a3babSopenharmony_ci// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27617a3babSopenharmony_ci// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28617a3babSopenharmony_ci// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29617a3babSopenharmony_ci// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30617a3babSopenharmony_ci// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31617a3babSopenharmony_ci// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32617a3babSopenharmony_ci// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33617a3babSopenharmony_ci// POSSIBILITY OF SUCH DAMAGE. 34617a3babSopenharmony_ci 35617a3babSopenharmony_ci#include <gtest/gtest.h> 36617a3babSopenharmony_ci 37617a3babSopenharmony_ci#include "TestFixture.h" 38617a3babSopenharmony_ci 39617a3babSopenharmony_cinamespace glslangtest { 40617a3babSopenharmony_cinamespace { 41617a3babSopenharmony_ci 42617a3babSopenharmony_ciusing CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>; 43617a3babSopenharmony_ci 44617a3babSopenharmony_ciusing CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>; 45617a3babSopenharmony_ci 46617a3babSopenharmony_ciTEST_P(CompileToAstTest, FromFile) 47617a3babSopenharmony_ci{ 48617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 49617a3babSopenharmony_ci Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 50617a3babSopenharmony_ci Target::AST); 51617a3babSopenharmony_ci} 52617a3babSopenharmony_ci 53617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled). 54617a3babSopenharmony_ciTEST_P(CompileToAstTestNV, FromFile) 55617a3babSopenharmony_ci{ 56617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 57617a3babSopenharmony_ci Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 58617a3babSopenharmony_ci Target::AST); 59617a3babSopenharmony_ci} 60617a3babSopenharmony_ci 61617a3babSopenharmony_ci// clang-format off 62617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 63617a3babSopenharmony_ci Glsl, CompileToAstTest, 64617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 65617a3babSopenharmony_ci "sample.frag", 66617a3babSopenharmony_ci "sample.vert", 67617a3babSopenharmony_ci "decls.frag", 68617a3babSopenharmony_ci "specExamples.frag", 69617a3babSopenharmony_ci "specExamples.vert", 70617a3babSopenharmony_ci "versionsClean.frag", 71617a3babSopenharmony_ci "versionsClean.vert", 72617a3babSopenharmony_ci "versionsErrors.frag", 73617a3babSopenharmony_ci "versionsErrors.vert", 74617a3babSopenharmony_ci "100.frag", 75617a3babSopenharmony_ci "100samplerExternal.frag", 76617a3babSopenharmony_ci "120.vert", 77617a3babSopenharmony_ci "120.frag", 78617a3babSopenharmony_ci "130.vert", 79617a3babSopenharmony_ci "130.frag", 80617a3babSopenharmony_ci "140.vert", 81617a3babSopenharmony_ci "140.frag", 82617a3babSopenharmony_ci "150.vert", 83617a3babSopenharmony_ci "150.geom", 84617a3babSopenharmony_ci "150.frag", 85617a3babSopenharmony_ci "precision.frag", 86617a3babSopenharmony_ci "precision.vert", 87617a3babSopenharmony_ci "nonSquare.vert", 88617a3babSopenharmony_ci "matrixError.vert", 89617a3babSopenharmony_ci "cppSimple.vert", 90617a3babSopenharmony_ci "cppIndent.vert", 91617a3babSopenharmony_ci "cppIntMinOverNegativeOne.frag", 92617a3babSopenharmony_ci "cppMerge.frag", 93617a3babSopenharmony_ci "cppNest.vert", 94617a3babSopenharmony_ci "cppBad.vert", 95617a3babSopenharmony_ci "cppBad2.vert", 96617a3babSopenharmony_ci "cppBad3.vert", 97617a3babSopenharmony_ci "cppBad4.vert", 98617a3babSopenharmony_ci "cppBad5.vert", 99617a3babSopenharmony_ci "cppComplexExpr.vert", 100617a3babSopenharmony_ci "cppDeepNest.frag", 101617a3babSopenharmony_ci "cppPassMacroName.frag", 102617a3babSopenharmony_ci "cppRelaxSkipTokensErrors.vert", 103617a3babSopenharmony_ci "badChars.frag", 104617a3babSopenharmony_ci "pointCoord.frag", 105617a3babSopenharmony_ci "array.frag", 106617a3babSopenharmony_ci "array100.frag", 107617a3babSopenharmony_ci "comment.frag", 108617a3babSopenharmony_ci "300.vert", 109617a3babSopenharmony_ci "300.frag", 110617a3babSopenharmony_ci "300BuiltIns.frag", 111617a3babSopenharmony_ci "300layout.vert", 112617a3babSopenharmony_ci "300layout.frag", 113617a3babSopenharmony_ci "300operations.frag", 114617a3babSopenharmony_ci "300block.frag", 115617a3babSopenharmony_ci "300samplerExternal.frag", 116617a3babSopenharmony_ci "300samplerExternalYUV.frag", 117617a3babSopenharmony_ci "310.comp", 118617a3babSopenharmony_ci "310.vert", 119617a3babSopenharmony_ci "310.geom", 120617a3babSopenharmony_ci "310.frag", 121617a3babSopenharmony_ci "310.tesc", 122617a3babSopenharmony_ci "310.tese", 123617a3babSopenharmony_ci "310implicitSizeArrayError.vert", 124617a3babSopenharmony_ci "310.inheritMemory.frag", 125617a3babSopenharmony_ci "310AofA.vert", 126617a3babSopenharmony_ci "310runtimeArray.vert", 127617a3babSopenharmony_ci "320.comp", 128617a3babSopenharmony_ci "320.vert", 129617a3babSopenharmony_ci "320.geom", 130617a3babSopenharmony_ci "320.frag", 131617a3babSopenharmony_ci "320.tesc", 132617a3babSopenharmony_ci "320.tese", 133617a3babSopenharmony_ci "330.frag", 134617a3babSopenharmony_ci "330comp.frag", 135617a3babSopenharmony_ci "constErrors.frag", 136617a3babSopenharmony_ci "constFold.frag", 137617a3babSopenharmony_ci "constFoldIntMin.frag", 138617a3babSopenharmony_ci "errors.frag", 139617a3babSopenharmony_ci "forwardRef.frag", 140617a3babSopenharmony_ci "uint.frag", 141617a3babSopenharmony_ci "switch.frag", 142617a3babSopenharmony_ci "tokenLength.vert", 143617a3babSopenharmony_ci "100Limits.vert", 144617a3babSopenharmony_ci "100scope.vert", 145617a3babSopenharmony_ci "110scope.vert", 146617a3babSopenharmony_ci "300scope.vert", 147617a3babSopenharmony_ci "400.frag", 148617a3babSopenharmony_ci "400.vert", 149617a3babSopenharmony_ci "410.vert", 150617a3babSopenharmony_ci "420.comp", 151617a3babSopenharmony_ci "420.frag", 152617a3babSopenharmony_ci "420.vert", 153617a3babSopenharmony_ci "420.geom", 154617a3babSopenharmony_ci "420_size_gl_in.geom", 155617a3babSopenharmony_ci "430scope.vert", 156617a3babSopenharmony_ci "lineContinuation100.vert", 157617a3babSopenharmony_ci "lineContinuation.vert", 158617a3babSopenharmony_ci "numeral.frag", 159617a3babSopenharmony_ci "400.geom", 160617a3babSopenharmony_ci "400.tesc", 161617a3babSopenharmony_ci "400.tese", 162617a3babSopenharmony_ci "410.tesc", 163617a3babSopenharmony_ci "420.tesc", 164617a3babSopenharmony_ci "420.tese", 165617a3babSopenharmony_ci "410.geom", 166617a3babSopenharmony_ci "430.vert", 167617a3babSopenharmony_ci "430.comp", 168617a3babSopenharmony_ci "430AofA.frag", 169617a3babSopenharmony_ci "435.vert", 170617a3babSopenharmony_ci "440.vert", 171617a3babSopenharmony_ci "440.frag", 172617a3babSopenharmony_ci "450.vert", 173617a3babSopenharmony_ci "450.geom", 174617a3babSopenharmony_ci "450.tesc", 175617a3babSopenharmony_ci "450.tese", 176617a3babSopenharmony_ci "450.frag", 177617a3babSopenharmony_ci "450.comp", 178617a3babSopenharmony_ci "460.frag", 179617a3babSopenharmony_ci "460.vert", 180617a3babSopenharmony_ci "dce.frag", 181617a3babSopenharmony_ci "atomic_uint.frag", 182617a3babSopenharmony_ci "implicitInnerAtomicUint.frag", 183617a3babSopenharmony_ci "aggOps.frag", 184617a3babSopenharmony_ci "always-discard.frag", 185617a3babSopenharmony_ci "always-discard2.frag", 186617a3babSopenharmony_ci "conditionalDiscard.frag", 187617a3babSopenharmony_ci "conversion.frag", 188617a3babSopenharmony_ci "dataOut.frag", 189617a3babSopenharmony_ci "dataOutIndirect.frag", 190617a3babSopenharmony_ci "deepRvalue.frag", 191617a3babSopenharmony_ci "depthOut.frag", 192617a3babSopenharmony_ci "discard-dce.frag", 193617a3babSopenharmony_ci "doWhileLoop.frag", 194617a3babSopenharmony_ci "earlyReturnDiscard.frag", 195617a3babSopenharmony_ci "flowControl.frag", 196617a3babSopenharmony_ci "forLoop.frag", 197617a3babSopenharmony_ci "functionCall.frag", 198617a3babSopenharmony_ci "functionSemantics.frag", 199617a3babSopenharmony_ci "length.frag", 200617a3babSopenharmony_ci "localAggregates.frag", 201617a3babSopenharmony_ci "loops.frag", 202617a3babSopenharmony_ci "loopsArtificial.frag", 203617a3babSopenharmony_ci "matrix.frag", 204617a3babSopenharmony_ci "matrix2.frag", 205617a3babSopenharmony_ci "mixedArrayDecls.frag", 206617a3babSopenharmony_ci "nonuniform.frag", 207617a3babSopenharmony_ci "newTexture.frag", 208617a3babSopenharmony_ci "Operations.frag", 209617a3babSopenharmony_ci "overlongLiteral.frag", 210617a3babSopenharmony_ci "prepost.frag", 211617a3babSopenharmony_ci "runtimeArray.vert", 212617a3babSopenharmony_ci "simpleFunctionCall.frag", 213617a3babSopenharmony_ci "stringToDouble.vert", 214617a3babSopenharmony_ci "struct.error.frag", 215617a3babSopenharmony_ci "structAssignment.frag", 216617a3babSopenharmony_ci "structDeref.frag", 217617a3babSopenharmony_ci "structure.frag", 218617a3babSopenharmony_ci "swizzle.frag", 219617a3babSopenharmony_ci "invalidSwizzle.vert", 220617a3babSopenharmony_ci "syntaxError.frag", 221617a3babSopenharmony_ci "test.frag", 222617a3babSopenharmony_ci "texture.frag", 223617a3babSopenharmony_ci "tokenPaste.vert", 224617a3babSopenharmony_ci "types.frag", 225617a3babSopenharmony_ci "uniformArray.frag", 226617a3babSopenharmony_ci "variableArrayIndex.frag", 227617a3babSopenharmony_ci "varyingArray.frag", 228617a3babSopenharmony_ci "varyingArrayIndirect.frag", 229617a3babSopenharmony_ci "voidFunction.frag", 230617a3babSopenharmony_ci "whileLoop.frag", 231617a3babSopenharmony_ci "nonVulkan.frag", 232617a3babSopenharmony_ci "negativeArraySize.comp", 233617a3babSopenharmony_ci "precise.tesc", 234617a3babSopenharmony_ci "precise_struct_block.vert", 235617a3babSopenharmony_ci "maxClipDistances.vert", 236617a3babSopenharmony_ci "findFunction.frag", 237617a3babSopenharmony_ci "noMatchingFunction.frag", 238617a3babSopenharmony_ci "constantUnaryConversion.comp", 239617a3babSopenharmony_ci "xfbUnsizedArray.error.vert", 240617a3babSopenharmony_ci "xfbUnsizedArray.error.tese", 241617a3babSopenharmony_ci "glsl.140.layoutOffset.error.vert", 242617a3babSopenharmony_ci "glsl.430.layoutOffset.error.vert", 243617a3babSopenharmony_ci "glsl.450.subgroup.frag", 244617a3babSopenharmony_ci "glsl.450.subgroup.geom", 245617a3babSopenharmony_ci "glsl.450.subgroup.tesc", 246617a3babSopenharmony_ci "glsl.450.subgroup.tese", 247617a3babSopenharmony_ci "glsl.450.subgroup.vert", 248617a3babSopenharmony_ci "glsl.450.subgroupArithmetic.comp", 249617a3babSopenharmony_ci "glsl.450.subgroupBasic.comp", 250617a3babSopenharmony_ci "glsl.450.subgroupBallot.comp", 251617a3babSopenharmony_ci "glsl.450.subgroupBallotNeg.comp", 252617a3babSopenharmony_ci "glsl.450.subgroupClustered.comp", 253617a3babSopenharmony_ci "glsl.450.subgroupClusteredNeg.comp", 254617a3babSopenharmony_ci "glsl.450.subgroupPartitioned.comp", 255617a3babSopenharmony_ci "glsl.450.subgroupShuffle.comp", 256617a3babSopenharmony_ci "glsl.450.subgroupShuffleRelative.comp", 257617a3babSopenharmony_ci "glsl.450.subgroupQuad.comp", 258617a3babSopenharmony_ci "glsl.450.subgroupVote.comp", 259617a3babSopenharmony_ci "glsl.460.subgroup.mesh", 260617a3babSopenharmony_ci "glsl.460.subgroup.task", 261617a3babSopenharmony_ci "glsl.460.subgroup.rahit", 262617a3babSopenharmony_ci "glsl.460.subgroup.rcall", 263617a3babSopenharmony_ci "glsl.460.subgroup.rchit", 264617a3babSopenharmony_ci "glsl.460.subgroup.rgen", 265617a3babSopenharmony_ci "glsl.460.subgroup.rint", 266617a3babSopenharmony_ci "glsl.460.subgroup.rmiss", 267617a3babSopenharmony_ci "glsl.es300.layoutOffset.error.vert", 268617a3babSopenharmony_ci "glsl.es320.subgroup.frag", 269617a3babSopenharmony_ci "glsl.es320.subgroup.geom", 270617a3babSopenharmony_ci "glsl.es320.subgroup.tesc", 271617a3babSopenharmony_ci "glsl.es320.subgroup.tese", 272617a3babSopenharmony_ci "glsl.es320.subgroup.vert", 273617a3babSopenharmony_ci "glsl.es320.subgroupArithmetic.comp", 274617a3babSopenharmony_ci "glsl.es320.subgroupBasic.comp", 275617a3babSopenharmony_ci "glsl.es320.subgroupBallot.comp", 276617a3babSopenharmony_ci "glsl.es320.subgroupBallotNeg.comp", 277617a3babSopenharmony_ci "glsl.es320.subgroupClustered.comp", 278617a3babSopenharmony_ci "glsl.es320.subgroupClusteredNeg.comp", 279617a3babSopenharmony_ci "glsl.es320.subgroupPartitioned.comp", 280617a3babSopenharmony_ci "glsl.es320.subgroupShuffle.comp", 281617a3babSopenharmony_ci "glsl.es320.subgroupShuffleRelative.comp", 282617a3babSopenharmony_ci "glsl.es320.subgroupQuad.comp", 283617a3babSopenharmony_ci "glsl.es320.subgroupVote.comp", 284617a3babSopenharmony_ci "glsl.es320.extTextureShadowLod.frag", 285617a3babSopenharmony_ci "glsl.ext.textureShadowLod.frag", 286617a3babSopenharmony_ci "terminate.frag", 287617a3babSopenharmony_ci "terminate.vert", 288617a3babSopenharmony_ci "negativeWorkGroupSize.comp", 289617a3babSopenharmony_ci "textureoffset_sampler2darrayshadow.vert", 290617a3babSopenharmony_ci "atomicAdd.comp", 291617a3babSopenharmony_ci "GL_ARB_gpu_shader5.u2i.vert", 292617a3babSopenharmony_ci "textureQueryLOD.frag", 293617a3babSopenharmony_ci "atomicCounterARBOps.vert", 294617a3babSopenharmony_ci "GL_EXT_shader_integer_mix.vert", 295617a3babSopenharmony_ci "GL_ARB_draw_instanced.vert", 296617a3babSopenharmony_ci "GL_ARB_fragment_coord_conventions.vert", 297617a3babSopenharmony_ci "GL_ARB_bindless_texture.frag", 298617a3babSopenharmony_ci "BestMatchFunction.vert", 299617a3babSopenharmony_ci "EndStreamPrimitive.geom", 300617a3babSopenharmony_ci "floatBitsToInt.vert", 301617a3babSopenharmony_ci "coord_conventions.frag", 302617a3babSopenharmony_ci "gl_FragCoord.frag", 303617a3babSopenharmony_ci "glsl.interpOp.error.frag", 304617a3babSopenharmony_ci "GL_EXT_draw_instanced.vert", 305617a3babSopenharmony_ci "overflow_underflow_toinf_0.frag", 306617a3babSopenharmony_ci "GL_EXT_texture_array.frag", 307617a3babSopenharmony_ci })), 308617a3babSopenharmony_ci FileNameAsCustomTestSuffix 309617a3babSopenharmony_ci); 310617a3babSopenharmony_ci 311617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 312617a3babSopenharmony_ci Glsl, CompileToAstTestNV, 313617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 314617a3babSopenharmony_ci "nvShaderNoperspectiveInterpolation.frag", 315617a3babSopenharmony_ci })), 316617a3babSopenharmony_ci FileNameAsCustomTestSuffix 317617a3babSopenharmony_ci); 318617a3babSopenharmony_ci 319617a3babSopenharmony_ci// clang-format on 320617a3babSopenharmony_ci 321617a3babSopenharmony_ci} // anonymous namespace 322617a3babSopenharmony_ci} // namespace glslangtest 323