• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  //
2 // Copyright (C) 2016 Google, Inc.
3 // Copyright (C) 2019, 2022-2024 Arm Limited.
4 // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
5 //
6 // All rights reserved.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 //    Redistributions of source code must retain the above copyright
13 //    notice, this list of conditions and the following disclaimer.
14 //
15 //    Redistributions in binary form must reproduce the above
16 //    copyright notice, this list of conditions and the following
17 //    disclaimer in the documentation and/or other materials provided
18 //    with the distribution.
19 //
20 //    Neither the name of Google Inc. nor the names of its
21 //    contributors may be used to endorse or promote products derived
22 //    from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 // POSSIBILITY OF SUCH DAMAGE.
36 
37 #include <algorithm>
38 
39 #include <gtest/gtest.h>
40 
41 #include "TestFixture.h"
42 
43 namespace glslangtest {
44 namespace {
45 
46 struct IoMapData {
47     const char* fileName;
48     const char* entryPoint;
49     int baseSamplerBinding;
50     int baseTextureBinding;
51     int baseImageBinding;
52     int baseUboBinding;
53     int baseSsboBinding;
54     bool autoMapBindings;
55     bool flattenUniforms;
56 };
57 
FileNameAsCustomTestSuffixIoMap(const::testing::TestParamInfo<IoMapData> & info)58 std::string FileNameAsCustomTestSuffixIoMap(
59     const ::testing::TestParamInfo<IoMapData>& info) {
60     std::string name = info.param.fileName;
61     // A valid test case suffix cannot have '.' and '-' inside.
62     std::replace(name.begin(), name.end(), '.', '_');
63     std::replace(name.begin(), name.end(), '-', '_');
64     return name;
65 }
66 
67 using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
68 using CompileVulkanToSpirvTestNoLink = GlslangTest<::testing::TestWithParam<std::string>>;
69 using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam<std::string>>;
70 using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
71 using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>;
72 using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam<std::string>>;
73 using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
74 using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
75 using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
76 using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
77 using HlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
78 using GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
79 using CompileVulkanToSpirvTestQCOM = GlslangTest<::testing::TestWithParam<std::string>>;
80 using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::string>>;
81 using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
82 using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>;
83 using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
84 using GlslSpirvDebugInfoTest = GlslangTest<::testing::TestWithParam<std::string>>;
85 using GlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<std::string>>;
86 using GlslNonSemanticShaderDebugInfoSpirv13Test = GlslangTest<::testing::TestWithParam<std::string>>;
87 
88 // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
89 // generate SPIR-V.
TEST_P(CompileVulkanToSpirvTest,FromFile)90 TEST_P(CompileVulkanToSpirvTest, FromFile)
91 {
92     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
93                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
94                             Target::Spv);
95 }
96 
97 // Compiling GLSL to SPIR-V under Vulkan semantics without linking. Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestNoLink,FromFile)98 TEST_P(CompileVulkanToSpirvTestNoLink, FromFile)
99 {
100     options().compileOnly = true;
101     // NOTE: Vulkan 1.3 is currently required to use the linkage capability
102     // TODO(ncesario) make sure this is actually necessary
103     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan,
104                             glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_0, Target::Spv);
105 }
106 
TEST_P(CompileVulkanToSpirvDeadCodeElimTest,FromFile)107 TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile)
108 {
109     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
110                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
111                             Target::Spv);
112 }
113 
114 
TEST_P(CompileVulkan1_1ToSpirvTest,FromFile)115 TEST_P(CompileVulkan1_1ToSpirvTest, FromFile)
116 {
117     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
118                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3,
119                             Target::Spv);
120 }
121 
TEST_P(CompileToSpirv14Test,FromFile)122 TEST_P(CompileToSpirv14Test, FromFile)
123 {
124     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
125                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4,
126                             Target::Spv);
127 }
128 
TEST_P(CompileToSpirv16Test,FromFileTargetVulkan1_3)129 TEST_P(CompileToSpirv16Test, FromFileTargetVulkan1_3)
130 {
131     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
132                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6,
133                             Target::Spv);
134 }
135 
TEST_P(CompileToSpirv16Test,FromFileTargetVulkan1_4)136 TEST_P(CompileToSpirv16Test, FromFileTargetVulkan1_4)
137 {
138     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
139                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_4, glslang::EShTargetSpv_1_6,
140                             Target::Spv);
141 }
142 
143 // Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully
144 // generate SPIR-V.
TEST_P(CompileOpenGLToSpirvTest,FromFile)145 TEST_P(CompileOpenGLToSpirvTest, FromFile)
146 {
147     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
148                             Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
149                             Target::Spv);
150 }
151 
152 // GLSL-level Vulkan semantics test. Expected to error out before generating
153 // SPIR-V.
TEST_P(VulkanSemantics,FromFile)154 TEST_P(VulkanSemantics, FromFile)
155 {
156     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
157                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
158                             Target::Spv, false);
159 }
160 
161 // GLSL-level Vulkan semantics test. Expected to error out before generating
162 // SPIR-V.
TEST_P(OpenGLSemantics,FromFile)163 TEST_P(OpenGLSemantics, FromFile)
164 {
165     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
166                             Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
167                             Target::Spv, false);
168 }
169 
170 // GLSL-level Vulkan semantics test that need to see the AST for validation.
TEST_P(VulkanAstSemantics,FromFile)171 TEST_P(VulkanAstSemantics, FromFile)
172 {
173     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
174                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
175                             Target::AST);
176 }
177 
178 // HLSL-level Vulkan semantics tests.
TEST_P(HlslIoMap,FromFile)179 TEST_P(HlslIoMap, FromFile)
180 {
181     loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
182                                  Source::HLSL, Semantics::Vulkan,
183                                  Target::Spv, GetParam().entryPoint,
184                                  GetParam().baseSamplerBinding,
185                                  GetParam().baseTextureBinding,
186                                  GetParam().baseImageBinding,
187                                  GetParam().baseUboBinding,
188                                  GetParam().baseSsboBinding,
189                                  GetParam().autoMapBindings,
190                                  GetParam().flattenUniforms);
191 }
192 
193 // GLSL-level Vulkan semantics tests.
TEST_P(GlslIoMap,FromFile)194 TEST_P(GlslIoMap, FromFile)
195 {
196     loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
197                                  Source::GLSL, Semantics::Vulkan,
198                                  Target::Spv, GetParam().entryPoint,
199                                  GetParam().baseSamplerBinding,
200                                  GetParam().baseTextureBinding,
201                                  GetParam().baseImageBinding,
202                                  GetParam().baseUboBinding,
203                                  GetParam().baseSsboBinding,
204                                  GetParam().autoMapBindings,
205                                  GetParam().flattenUniforms);
206 }
207 
208 // Compiling GLSL to SPIR-V under Vulkan semantics (QCOM extensions enabled).
209 // Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestQCOM,FromFile)210 TEST_P(CompileVulkanToSpirvTestQCOM, FromFile)
211 {
212     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
213                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
214                             Target::Spv);
215 }
216 
217 // Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled).
218 // Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestAMD,FromFile)219 TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
220 {
221     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
222                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
223                             Target::Spv);
224 }
225 
226 // Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled).
227 // Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestNV,FromFile)228 TEST_P(CompileVulkanToSpirvTestNV, FromFile)
229 {
230     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
231                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
232                             Target::Spv);
233 }
234 
TEST_P(CompileVulkanToSpirv14TestNV,FromFile)235 TEST_P(CompileVulkanToSpirv14TestNV, FromFile)
236 {
237     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
238                             Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4,
239                             Target::Spv);
240 }
241 
TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest,FromFile)242 TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile)
243 {
244     loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot,
245                                                                      GetParam(),
246                                                                      Source::GLSL,
247                                                                      Semantics::Vulkan,
248                                                                      Target::Spv);
249 }
250 
TEST_P(GlslSpirvDebugInfoTest,FromFile)251 TEST_P(GlslSpirvDebugInfoTest, FromFile)
252 {
253     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan,
254                             glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "",
255                             "/baseResults/", false, true, false);
256 }
257 
TEST_P(GlslNonSemanticShaderDebugInfoTest,FromFile)258 TEST_P(GlslNonSemanticShaderDebugInfoTest, FromFile)
259 {
260     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan,
261                             glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "",
262                             "/baseResults/", false, true, true);
263 }
264 
TEST_P(GlslNonSemanticShaderDebugInfoSpirv13Test,FromFile)265 TEST_P(GlslNonSemanticShaderDebugInfoSpirv13Test, FromFile)
266 {
267     loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan,
268                             glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, Target::Spv, true, "",
269                             "/baseResults/", false, true, true);
270 }
271 
272 // clang-format off
273 INSTANTIATE_TEST_SUITE_P(
274     Glsl, CompileVulkanToSpirvTest,
275     ::testing::ValuesIn(std::vector<std::string>({
276         // Test looping constructs.
277         // No tests yet for making sure break and continue from a nested loop
278         // goes to the innermost target.
279         "spv.barrier.vert",
280         "spv.do-simple.vert",
281         "spv.do-while-continue-break.vert",
282         "spv.for-complex-condition.vert",
283         "spv.for-continue-break.vert",
284         "spv.for-simple.vert",
285         "spv.for-notest.vert",
286         "spv.for-nobody.vert",
287         "spv.while-continue-break.vert",
288         "spv.while-simple.vert",
289         // vulkan-specific tests
290         "rayQuery.rgen",
291         "rayQuery-no-cse.rgen",
292         "rayQuery-initialize.rgen",
293         "rayQuery-allOps.rgen",
294         "rayQuery-allOps.Error.rgen",
295         "rayQuery-committed.Error.rgen",
296         "rayQuery-allOps.comp",
297         "rayQuery-allOps.frag",
298         "rayQuery-initialization.Error.comp",
299         "rayQuery-global.rgen",
300         "rayQuery-types.comp",
301         "rayQuery-OpConvertUToAccelerationStructureKHR.comp",
302         "spv.set.vert",
303         "spv.double.comp",
304         "spv.100ops.frag",
305         "spv.130.frag",
306         "spv.140.frag",
307         "spv.150.geom",
308         "spv.150.vert",
309         "spv.16bitstorage.frag",
310         "spv.16bitstorage_Error.frag",
311         "spv.16bitstorage-int.frag",
312         "spv.16bitstorage_Error-int.frag",
313         "spv.16bitstorage-uint.frag",
314         "spv.16bitstorage_Error-uint.frag",
315         "spv.300BuiltIns.vert",
316         "spv.300layout.frag",
317         "spv.300layout.vert",
318         "spv.300layoutp.vert",
319         "spv.310.comp",
320         "spv.310.bitcast.frag",
321         "spv.330.geom",
322         "spv.400.frag",
323         "spv.400.tesc",
324         "spv.400.tese",
325         "spv.420.geom",
326         "spv.430.frag",
327         "spv.430.vert",
328         "spv.450.tesc",
329         "spv.450.geom",
330         "spv.450.noRedecl.tesc",
331         "spv.8bitstorage-int.frag",
332         "spv.8bitstorage_Error-int.frag",
333         "spv.8bitstorage-uint.frag",
334         "spv.8bitstorage_Error-uint.frag",
335         "spv.8bitstorage-ubo.vert",
336         "spv.8bitstorage-ssbo.vert",
337         "spv.8bit-16bit-construction.frag",
338         "spv.accessChain.frag",
339         "spv.aggOps.frag",
340         "spv.always-discard.frag",
341         "spv.always-discard2.frag",
342         "spv.arbPostDepthCoverage.frag",
343         "spv.arbPostDepthCoverage_Error.frag",
344         "spv.atomicCounter.comp",
345         "spv.bitCast.frag",
346         "spv.bool.vert",
347         "spv.boolInBlock.frag",
348         "spv.branch-return.vert",
349         "spv.bufferhandle11.frag",
350         "spv.bufferhandle12.frag",
351         "spv.bufferhandle13.frag",
352         "spv.bufferhandle14.frag",
353         "spv.bufferhandle15.frag",
354         "spv.bufferhandle16.frag",
355         "spv.bufferhandle17_Errors.frag",
356         "spv.bufferhandle18.frag",
357         "spv.bufferhandle19_Errors.frag",
358         "spv.bufferhandle2.frag",
359         "spv.bufferhandle3_Errors.frag",
360         "spv.bufferhandle4.frag",
361         "spv.bufferhandle5.frag",
362         "spv.bufferhandle6.frag",
363         "spv.bufferhandle7.frag",
364         "spv.bufferhandle8.frag",
365         "spv.bufferhandle9.frag",
366         "spv.bufferhandleUvec2.frag",
367         "spv.bufferhandle_Error.frag",
368         "spv.builtInXFB.vert",
369         "spv.conditionalDemote.frag",
370         "spv.conditionalDiscard.frag",
371         "spv.constructComposite.comp",
372         "spv.constStruct.vert",
373         "spv.constConstruct.vert",
374         "spv.controlFlowAttributes.frag",
375         "spv.conversion.frag",
376         "spv.dataOut.frag",
377         "spv.dataOutIndirect.frag",
378         "spv.dataOutIndirect.vert",
379         "spv.debugPrintf.frag",
380         "spv.debugPrintf_Error.frag",
381         "spv.demoteDisabled.frag",
382         "spv.deepRvalue.frag",
383         "spv.depthOut.frag",
384         "spv.depthUnchanged.frag",
385         "spv.discard-dce.frag",
386         "spv.doWhileLoop.frag",
387         "spv.earlyReturnDiscard.frag",
388         "spv.expect_assume.assumeEXT.comp",
389         "spv.expect_assume.expectEXT.comp",
390         "spv.expect_assume.expectEXT.exttypes.comp",
391         "spv.ext.ShaderTileImage.color.frag",
392         "spv.ext.ShaderTileImage.depth_stencil.frag",
393         "spv.ext.ShaderTileImage.subpassinput.frag",
394         "spv.ext.ShaderTileImage.typemismatch.frag",
395         "spv.ext.ShaderTileImage.overlap.frag",
396         "spv.ext.ShaderTileImage.wronglayout.frag",
397         "spv.extPostDepthCoverage.frag",
398         "spv.extPostDepthCoverage_Error.frag",
399         "spv.float16convertonlyarith.comp",
400         "spv.float16convertonlystorage.comp",
401         "spv.flowControl.frag",
402         "spv.forLoop.frag",
403         "spv.forwardFun.frag",
404         "spv.fragmentDensity.frag",
405         "spv.fragmentDensity.vert",
406         "spv.fragmentDensity-es.frag",
407         "spv.fragmentDensity-neg.frag",
408         "spv.fsi.frag",
409         "spv.fsi_Error.frag",
410         "spv.fullyCovered.frag",
411         "spv.functionCall.frag",
412         "spv.functionNestedOpaque.vert",
413         "spv.functionSemantics.frag",
414         "spv.functionParameterTypes.frag",
415         "spv.GeometryShaderPassthrough.geom",
416         "spv.funcall.array.frag",
417         "spv.load.bool.array.interface.block.frag",
418         "spv.int_dot.frag",
419         "spv.int_dot_Error.frag",
420         "spv.interpOps.frag",
421         "spv.int64.frag",
422         "spv.intOps.vert",
423         "spv.intrinsicsDebugBreak.frag",
424         "spv.intrinsicsSpirvByReference.vert",
425         "spv.intrinsicsSpirvDecorate.frag",
426         "spv.intrinsicsSpirvDecorateId.comp",
427         "spv.intrinsicsSpirvDecorateString.comp",
428         "spv.intrinsicsSpirvExecutionMode.frag",
429         "spv.intrinsicsSpirvInstruction.vert",
430         "spv.intrinsicsSpirvLiteral.vert",
431         "spv.intrinsicsSpirvStorageClass.rchit",
432         "spv.intrinsicsSpirvType.rgen",
433         "spv.intrinsicsSpirvTypeLocalVar.vert",
434         "spv.intrinsicsSpirvTypeWithTypeSpecifier.vert",
435         "spv.invariantAll.vert",
436         "spv.layer.tese",
437         "spv.layoutNested.vert",
438         "spv.length.frag",
439         "spv.localAggregates.frag",
440         "spv.loops.frag",
441         "spv.loopsArtificial.frag",
442         "spv.matFun.vert",
443         "spv.matrix.frag",
444         "spv.matrix2.frag",
445         "spv.maximalReconvergence.vert",
446         "spv.memoryQualifier.frag",
447         "spv.merge-unreachable.frag",
448         "spv.multiStruct.comp",
449         "spv.multiStructFuncall.frag",
450         "spv.newTexture.frag",
451         "spv.noDeadDecorations.vert",
452         "spv.nonSquare.vert",
453         "spv.nonuniform.frag",
454         "spv.nonuniform2.frag",
455         "spv.nonuniform3.frag",
456         "spv.nonuniform4.frag",
457         "spv.nonuniform5.frag",
458         "spv.noWorkgroup.comp",
459         "spv.nvAtomicFp16Vec.frag",
460         "spv.nullInit.comp",
461         "spv.offsets.frag",
462         "spv.Operations.frag",
463         "spv.paramMemory.frag",
464         "spv.paramMemory.420.frag",
465         "spv.precision.frag",
466         "spv.precisionArgs.frag",
467         "spv.precisionNonESSamp.frag",
468         "spv.precisionTexture.frag",
469         "spv.prepost.frag",
470         "spv.privateVariableTypes.frag",
471         "spv.qualifiers.vert",
472         "spv.sample.frag",
473         "spv.sampleId.frag",
474         "spv.samplePosition.frag",
475         "spv.sampleMaskOverrideCoverage.frag",
476         "spv.scalarlayout.frag",
477         "spv.scalarlayoutfloat16.frag",
478         "spv.shaderBallot.comp",
479         "spv.shaderDrawParams.vert",
480         "spv.shaderGroupVote.comp",
481         "spv.shaderStencilExport.frag",
482         "spv.shiftOps.frag",
483         "spv.simpleFunctionCall.frag",
484         "spv.simpleMat.vert",
485         "spv.sparseTexture.frag",
486         "spv.sparseTextureClamp.frag",
487         "spv.structAssignment.frag",
488         "spv.structCopy.comp",
489         "spv.structDeref.frag",
490         "spv.structure.frag",
491         "spv.switch.frag",
492         "spv.swizzle.frag",
493         "spv.swizzleInversion.frag",
494         "spv.test.frag",
495         "spv.test.vert",
496         "spv.texture.frag",
497         "spv.texture.vert",
498         "spv.textureBuffer.vert",
499         "spv.image.frag",
500         "spv.imageAtomic64.frag",
501         "spv.imageAtomic64.comp",
502         "spv.types.frag",
503         "spv.uint.frag",
504         "spv.uniformArray.frag",
505         "spv.variableArrayIndex.frag",
506         "spv.varyingArray.frag",
507         "spv.varyingArrayIndirect.frag",
508         "spv.vecMatConstruct.frag",
509         "spv.voidFunction.frag",
510         "spv.whileLoop.frag",
511         "spv.AofA.frag",
512         "spv.queryL.frag",
513         "spv.separate.frag",
514         "spv.shortCircuit.frag",
515         "spv.pushConstant.vert",
516         "spv.pushConstantAnon.vert",
517         "spv.subpass.frag",
518         "spv.specConstant.vert",
519         "spv.specConstant.comp",
520         "spv.specConstantComposite.vert",
521         "spv.specConstantOperations.vert",
522         "spv.specConstant.float16.comp",
523         "spv.specConstant.int16.comp",
524         "spv.specConstant.int8.comp",
525         "spv.specConstantOp.int16.comp",
526         "spv.specConstantOp.int8.comp",
527         "spv.specConstantOp.float16.comp",
528         "spv.storageBuffer.vert",
529         "spv.terminate.frag",
530         "spv.subgroupUniformControlFlow.vert",
531         "spv.subgroupSizeARB.frag",
532         "spv.precise.tese",
533         "spv.precise.tesc",
534         "spv.viewportindex.tese",
535         "spv.volatileAtomic.comp",
536         "spv.vulkan100.subgroupArithmetic.comp",
537         "spv.vulkan100.subgroupPartitioned.comp",
538         "spv.xfb.vert",
539         "spv.xfb2.vert",
540         "spv.xfb3.vert",
541         "spv.samplerlessTextureFunctions.frag",
542         "spv.smBuiltins.vert",
543         "spv.smBuiltins.frag",
544         "spv.ARMCoreBuiltIns.vert",
545         "spv.ARMCoreBuiltIns.frag",
546         "spv.builtin.PrimitiveShadingRateEXT.vert",
547         "spv.builtin.ShadingRateEXT.frag",
548         "spv.fragmentShaderBarycentric3.frag",
549         "spv.fragmentShaderBarycentric4.frag",
550         "spv.ext.textureShadowLod.frag",
551         "spv.ext.textureShadowLod.error.frag",
552         "spv.floatFetch.frag",
553         "spv.atomicRvalue.error.vert",
554         "spv.sampledImageBlock.frag",
555         "spv.multiple.var.same.const.frag",
556         "spv.textureoffset_non_const.vert",
557         "spv.sparsetextureoffset_non_const.vert",
558         "spv.sparsetextureoffset_non_const_fail.vert",
559     })),
560     FileNameAsCustomTestSuffix
561 );
562 
563 INSTANTIATE_TEST_SUITE_P(
564     Glsl, CompileVulkanToSpirvTestNoLink,
565     ::testing::ValuesIn(std::vector<std::string>({
566         "spv.exportFunctions.comp",
567     })),
568     FileNameAsCustomTestSuffix
569 );
570 
571 // Cases with deliberately unreachable code.
572 // By default the compiler will aggressively eliminate
573 // unreachable merges and continues.
574 INSTANTIATE_TEST_SUITE_P(
575     GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest,
576     ::testing::ValuesIn(std::vector<std::string>({
577         "spv.dead-after-continue.vert",
578         "spv.dead-after-discard.frag",
579         "spv.dead-after-return.vert",
580         "spv.dead-after-loop-break.vert",
581         "spv.dead-after-switch-break.vert",
582         "spv.dead-complex-continue-after-return.vert",
583         "spv.dead-complex-merge-after-return.vert",
584     })),
585     FileNameAsCustomTestSuffix
586 );
587 
588 // clang-format off
589 INSTANTIATE_TEST_SUITE_P(
590     Glsl, CompileVulkan1_1ToSpirvTest,
591     ::testing::ValuesIn(std::vector<std::string>({
592         "spv.1.3.8bitstorage-ubo.vert",
593         "spv.1.3.8bitstorage-ssbo.vert",
594         "spv.1.3.coopmat.comp",
595         "spv.deviceGroup.frag",
596         "spv.drawParams.vert",
597         "spv.int8.frag",
598         "spv.vulkan110.int16.frag",
599         "spv.int32.frag",
600         "spv.explicittypes.frag",
601         "spv.float16NoRelaxed.vert",
602         "spv.float32.frag",
603         "spv.float64.frag",
604         "spv.memoryScopeSemantics.comp",
605         "spv.memoryScopeSemantics_Error.comp",
606         "spv.multiView.frag",
607         "spv.queueFamilyScope.comp",
608         "spv.RayGenShader11.rgen",
609         "spv.subgroup.frag",
610         "spv.subgroup.geom",
611         "spv.subgroup.tesc",
612         "spv.subgroup.tese",
613         "spv.subgroup.vert",
614         "spv.subgroupArithmetic.comp",
615         "spv.subgroupBasic.comp",
616         "spv.subgroupBallot.comp",
617         "spv.subgroupBallotNeg.comp",
618         "spv.subgroupClustered.comp",
619         "spv.subgroupClusteredNeg.comp",
620         "spv.subgroupPartitioned.comp",
621         "spv.subgroupRotate.comp",
622         "spv.subgroupShuffle.comp",
623         "spv.subgroupShuffleRelative.comp",
624         "spv.subgroupQuad.comp",
625         "spv.subgroupVote.comp",
626         "spv.subgroupExtendedTypesArithmetic.comp",
627         "spv.subgroupExtendedTypesArithmeticNeg.comp",
628         "spv.subgroupExtendedTypesBallot.comp",
629         "spv.subgroupExtendedTypesBallotNeg.comp",
630         "spv.subgroupExtendedTypesClustered.comp",
631         "spv.subgroupExtendedTypesClusteredNeg.comp",
632         "spv.subgroupExtendedTypesPartitioned.comp",
633         "spv.subgroupExtendedTypesPartitionedNeg.comp",
634         "spv.subgroupExtendedTypesRotate.comp",
635         "spv.subgroupExtendedTypesRotateNeg.comp",
636         "spv.subgroupExtendedTypesShuffle.comp",
637         "spv.subgroupExtendedTypesShuffleNeg.comp",
638         "spv.subgroupExtendedTypesShuffleRelative.comp",
639         "spv.subgroupExtendedTypesShuffleRelativeNeg.comp",
640         "spv.subgroupExtendedTypesQuad.comp",
641         "spv.subgroupExtendedTypesQuadNeg.comp",
642         "spv.subgroupExtendedTypesVote.comp",
643         "spv.subgroupExtendedTypesVoteNeg.comp",
644         "spv.vulkan110.storageBuffer.vert",
645 
646         // These tests use the Vulkan memory model.
647         "spv.bufferhandle1.frag",
648         "spv.bufferhandle10.frag",
649         "spv.coopmat.comp",
650         "spv.coopmat_Error.comp",
651         "spv.coopmatKHR.comp",
652         "spv.coopmat_armlayout.comp",
653         "spv.coopmatKHR_arithmetic.comp",
654         "spv.coopmatKHR_arithmeticError.comp",
655         "spv.coopmatKHR_Error.comp",
656         "spv.coopmatKHR_constructor.comp",
657         "spv.coopmatKHR_constructorError.comp",
658         "spv.coopvec.comp",
659         "spv.coopvec2.comp",
660         "spv.coopvecloadstore.comp",
661         "spv.coopvec_Error.comp",
662         "spv.coopvecTraining.comp",
663         "spv.coopvecTraining_Error.comp",
664         "spv.intcoopmat.comp",
665         "spv.intrinsicsInteractWithCoopMat.comp",
666         "spv.replicate.comp",
667         "spv.replicatespec.comp",
668         "spv.atomicAdd.bufferReference.comp",
669         "spv.nontemporalbuffer.frag",
670         "spv.atomicFloat.comp",
671     })),
672     FileNameAsCustomTestSuffix
673 );
674 
675 // clang-format off
676 INSTANTIATE_TEST_SUITE_P(
677     Glsl, CompileToSpirv14Test,
678     ::testing::ValuesIn(std::vector<std::string>({
679         "spv.1.4.LoopControl.frag",
680         "spv.1.4.NonWritable.frag",
681         "spv.1.4.OpEntryPoint.frag",
682         "spv.1.4.OpEntryPoint.opaqueParams.vert",
683         "spv.1.4.OpSelect.frag",
684         "spv.1.4.OpCopyLogical.comp",
685         "spv.1.4.OpCopyLogicalBool.comp",
686         "spv.1.4.OpCopyLogical.funcall.frag",
687         "spv.1.4.funcall.array.frag",
688         "spv.1.4.load.bool.array.interface.block.frag",
689         "spv.1.4.image.frag",
690         "spv.1.4.sparseTexture.frag",
691         "spv.1.4.texture.frag",
692         "spv.1.4.constructComposite.comp",
693         "spv.ext.AnyHitShader.rahit",
694         "spv.ext.AnyHitShader_Errors.rahit",
695         "spv.ext.ClosestHitShader.rchit",
696         "spv.ext.ClosestHitShader_Subgroup.rchit",
697         "spv.ext.ClosestHitShader_Errors.rchit",
698         "spv.ext.IntersectShader.rint",
699         "spv.ext.IntersectShader_Errors.rint",
700         "spv.ext.MissShader.rmiss",
701         "spv.ext.MissShader_Errors.rmiss",
702         "spv.ext.RayPrimCull_Errors.rgen",
703         "spv.ext.RayCallable.rcall",
704         "spv.ext.RayCallable_Errors.rcall",
705         "spv.ext.RayConstants.rgen",
706         "spv.ext.RayGenShader.rgen",
707         "spv.ext.RayGenShader_Errors.rgen",
708         "spv.ext.RayGenShader11.rgen",
709         "spv.ext.RayGenShaderArray.rgen",
710         "spv.ext.RayGenSBTlayout.rgen",
711         "spv.ext.RayGenSBTlayout140.rgen",
712         "spv.ext.RayGenSBTlayout430.rgen",
713         "spv.ext.RayGenSBTlayoutscalar.rgen",
714         "spv.ext.World3x4.rahit",
715         "spv.ext.AccelDecl.frag",
716         "spv.ext.RayQueryDecl.frag",
717 
718         // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4.
719         "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp",
720         "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp",
721         "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp",
722         "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp",
723         "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp",
724         "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp",
725         "spv.WorkgroupMemoryExplicitLayout.std140.comp",
726         "spv.WorkgroupMemoryExplicitLayout.std430.comp",
727         "spv.WorkgroupMemoryExplicitLayout.scalar.comp",
728 
729         // SPV_EXT_mesh_shader
730         "spv.ext.meshShaderBuiltins.mesh",
731         "spv.ext.meshShaderBuiltinsShadingRate.mesh",
732         "spv.ext.meshShaderRedeclBuiltins.mesh",
733         "spv.ext.meshShaderTaskMem.mesh",
734         "spv.ext.meshShaderUserDefined.mesh",
735         "spv.ext.meshTaskShader.task",
736         "spv.atomiAddEXT.error.mesh",
737         "spv.atomiAddEXT.task",
738         "spv.460.subgroupEXT.task",
739         "spv.460.subgroupEXT.mesh",
740 
741         // SPV_NV_shader_execution_reorder
742 
743         "spv.nv.hitobject-errors.rgen",
744         "spv.nv.hitobject-allops.rgen",
745         "spv.nv.hitobject-allops.rchit",
746         "spv.nv.hitobject-allops.rmiss",
747 
748 
749         // SPV_NV_displacment_micromap
750 
751         "spv.nv.dmm-allops.rgen",
752         "spv.nv.dmm-allops.rchit",
753         "spv.nv.dmm-allops.rahit",
754         "spv.nv.dmm-allops.mesh",
755         "spv.nv.dmm-allops.comp",
756 
757         // SPV_NV_cluster_acceleration_structure
758         "spv.nv.cluster-allops.rgen",
759         "spv.nv.cluster-allops.rchit",
760         "spv.nv.cluster-allops.rmiss",
761         "spv.nv.cluster-allops.rahit",
762         "spv.nv.cluster-allops.frag",
763 
764         // SPV_NV_linear_swept_spheres
765 
766         "spv.nv.lss-allops.rgen",
767         "spv.nv.lss-allops.rchit",
768         "spv.nv.lss-allops.rmiss",
769         "spv.nv.lss-allops.frag",
770 
771     })),
772     FileNameAsCustomTestSuffix
773 );
774 
775 // clang-format off
776 INSTANTIATE_TEST_SUITE_P(
777     Glsl, CompileToSpirv16Test,
778     ::testing::ValuesIn(std::vector<std::string>({
779         "spv.1.6.conditionalDiscard.frag",
780         "spv.1.6.helperInvocation.frag",
781         "spv.1.6.helperInvocation.memmodel.frag",
782         "spv.1.6.specConstant.comp",
783         "spv.1.6.samplerBuffer.frag",
784         "spv.1.6.separate.frag",
785         "spv.1.6.quad.frag",
786         "spv.coopmat2_constructor.comp",
787         "spv.coopmat2_error.comp",
788         "spv.coopmat2_tensor.comp",
789         "spv.1.6.nontemporalimage.frag"
790     })),
791     FileNameAsCustomTestSuffix
792 );
793 
794 
795 // clang-format off
796 INSTANTIATE_TEST_SUITE_P(
797     Hlsl, HlslIoMap,
798     ::testing::ValuesIn(std::vector<IoMapData>{
799         { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false },
800         { "spv.register.noautoassign.frag", "main_ep", 5, 10, 0, 15, 30, false, false },
801         { "spv.register.autoassign-2.frag", "main", 5, 10, 0, 15, 30, true, true },
802         { "spv.register.subpass.frag", "main", 0, 20, 0, 0, 0, true, true },
803         { "spv.buffer.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true },
804         { "spv.ssbo.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true },
805         { "spv.ssboAlias.frag", "main", 0, 0, 0, 0, 83, true, false },
806         { "spv.rw.autoassign.frag", "main", 5, 10, 20, 15, 30, true, true },
807         { "spv.register.autoassign.rangetest.frag", "main",
808                 glslang::TQualifier::layoutBindingEnd-2,
809                 glslang::TQualifier::layoutBindingEnd+5,
810                 0, 20, 30, true, false },
811     }),
812     FileNameAsCustomTestSuffixIoMap
813 );
814 
815 // clang-format off
816 INSTANTIATE_TEST_SUITE_P(
817     Hlsl, GlslIoMap,
818     ::testing::ValuesIn(std::vector<IoMapData>{
819         { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, 30, true, false },
820         { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 0, 15, 30, false, false },
821     }),
822     FileNameAsCustomTestSuffixIoMap
823 );
824 
825 // clang-format off
826 INSTANTIATE_TEST_SUITE_P(
827     Glsl, CompileOpenGLToSpirvTest,
828     ::testing::ValuesIn(std::vector<std::string>({
829         "spv.460.frag",
830         "spv.460.vert",
831         "spv.460.comp",
832         "spv.atomic.comp",
833         "spv.atomicFloat_Error.comp",
834         "spv.glFragColor.frag",
835         "spv.rankShift.comp",
836         "spv.specConst.vert",
837         "spv.specTexture.frag",
838         "spv.OVR_multiview.vert",
839         "spv.uniformInitializer.frag",
840         "spv.uniformInitializerSpecConstant.frag",
841         "spv.uniformInitializerStruct.frag",
842         "spv.xfbOffsetOnBlockMembersAssignment.vert",
843         "spv.xfbOffsetOnStructMembersAssignment.vert",
844         "spv.xfbOverlapOffsetCheckWithBlockAndMember.vert",
845         "spv.xfbStrideJustOnce.vert",
846     })),
847     FileNameAsCustomTestSuffix
848 );
849 
850 INSTANTIATE_TEST_SUITE_P(
851     Glsl, VulkanSemantics,
852     ::testing::ValuesIn(std::vector<std::string>({
853         "vulkan.frag",
854         "vulkan.vert",
855         "vulkan.comp",
856         "samplerlessTextureFunctions.frag",
857         "spv.intrinsicsFakeEnable.vert",
858         "spv.specConstArrayCheck.vert",
859     })),
860     FileNameAsCustomTestSuffix
861 );
862 
863 INSTANTIATE_TEST_SUITE_P(
864     Glsl, OpenGLSemantics,
865     ::testing::ValuesIn(std::vector<std::string>({
866         "glspv.esversion.vert",
867         "glspv.version.frag",
868         "glspv.version.vert",
869         "glspv.frag",
870         "glspv.vert",
871     })),
872     FileNameAsCustomTestSuffix
873 );
874 
875 INSTANTIATE_TEST_SUITE_P(
876     Glsl, VulkanAstSemantics,
877     ::testing::ValuesIn(std::vector<std::string>({
878         "vulkan.ast.vert",
879     })),
880     FileNameAsCustomTestSuffix
881 );
882 
883 INSTANTIATE_TEST_SUITE_P(
884     Glsl, CompileVulkanToSpirvTestQCOM,
885     ::testing::ValuesIn(std::vector<std::string>({
886         "spv.tpipSampleWeighted.frag",
887         "spv.tpipBoxFilter.frag",
888         "spv.tpipBlockMatchSSD.frag",
889         "spv.tpipBlockMatchSAD.frag",
890         "spv.tpipTextureArrays.frag",
891         "spv.tpipBlockMatchGatherSAD.frag",
892         "spv.tpipBlockMatchGatherSSD.frag",
893         "spv.tpipBlockMatchWindowSAD.frag",
894         "spv.tpipBlockMatchWindowSSD.frag",
895     })),
896     FileNameAsCustomTestSuffix
897 );
898 
899 INSTANTIATE_TEST_SUITE_P(
900     Glsl, CompileVulkanToSpirvTestAMD,
901     ::testing::ValuesIn(std::vector<std::string>({
902         "spv.16bitxfb.vert",
903         "spv.float16.frag",
904         "spv.float16Fetch.frag",
905         "spv.imageLoadStoreLod.frag",
906         "spv.int16.frag",
907         "spv.int16.amd.frag",
908         "spv.shaderBallotAMD.comp",
909         "spv.shaderFragMaskAMD.frag",
910         "spv.textureGatherBiasLod.frag",
911     })),
912     FileNameAsCustomTestSuffix
913 );
914 
915 INSTANTIATE_TEST_SUITE_P(
916     Glsl, CompileVulkanToSpirvTestNV,
917     ::testing::ValuesIn(std::vector<std::string>({
918     "spv.sampleMaskOverrideCoverage.frag",
919     "spv.GeometryShaderPassthrough.geom",
920     "spv.viewportArray2.vert",
921     "spv.viewportArray2.tesc",
922     "spv.stereoViewRendering.vert",
923     "spv.stereoViewRendering.tesc",
924     "spv.multiviewPerViewAttributes.vert",
925     "spv.multiviewPerViewAttributes.tesc",
926     "spv.atomicInt64.comp",
927     "spv.atomicStoreInt64.comp",
928     "spv.shadingRate.frag",
929     "spv.RayGenShader.rgen",
930     "spv.RayGenShaderArray.rgen",
931     "spv.RayGenShader_Errors.rgen",
932     "spv.RayConstants.rgen",
933     "spv.IntersectShader.rint",
934     "spv.IntersectShader_Errors.rint",
935     "spv.AnyHitShader.rahit",
936     "spv.AnyHitShader_Errors.rahit",
937     "spv.ClosestHitShader.rchit",
938     "spv.ClosestHitShader_Errors.rchit",
939     "spv.MissShader.rmiss",
940     "spv.MissShader_Errors.rmiss",
941     "spv.RayCallable.rcall",
942     "spv.RayCallable_Errors.rcall",
943     "spv.fragmentShaderBarycentric.frag",
944     "spv.fragmentShaderBarycentric2.frag",
945     "spv.computeShaderDerivatives.comp",
946     "spv.computeShaderDerivatives2.comp",
947     "spv.computeShaderDerivativesSpec.comp",
948     "spv.computeShaderDerivativesSpec2.comp",
949     "spv.shaderImageFootprint.frag",
950     "spv.meshShaderBuiltins.mesh",
951     "spv.meshShaderUserDefined.mesh",
952     "spv.meshShaderPerViewBuiltins.mesh",
953     "spv.meshShaderPerViewUserDefined.mesh",
954     "spv.meshShaderPerView_Errors.mesh",
955     "spv.meshShaderSharedMem.mesh",
956     "spv.meshShaderTaskMem.mesh",
957     "spv.320.meshShaderUserDefined.mesh",
958     "spv.meshShaderRedeclBuiltins.mesh",
959     "spv.meshShaderRedeclPerViewBuiltins.mesh",
960     "spv.meshTaskShader.task",
961     "spv.perprimitiveNV.frag",
962 })),
963 FileNameAsCustomTestSuffix
964 );
965 
966 INSTANTIATE_TEST_SUITE_P(
967     Glsl, CompileVulkanToSpirv14TestNV,
968     ::testing::ValuesIn(std::vector<std::string>({
969     "spv.RayGenShaderMotion.rgen",
970     "spv.IntersectShaderMotion.rint",
971     "spv.AnyHitShaderMotion.rahit",
972     "spv.ClosestHitShaderMotion.rchit",
973     "spv.MissShaderMotion.rmiss",
974 })),
975 FileNameAsCustomTestSuffix
976 );
977 
978 INSTANTIATE_TEST_SUITE_P(
979     Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
980     ::testing::ValuesIn(std::vector<std::string>({
981       "spv.texture.sampler.transform.frag",
982     })),
983     FileNameAsCustomTestSuffix
984 );
985 
986 INSTANTIATE_TEST_SUITE_P(
987     Glsl, GlslSpirvDebugInfoTest,
988     ::testing::ValuesIn(std::vector<std::string>({
989         "spv.pp.line.frag",
990     })),
991     FileNameAsCustomTestSuffix
992 );
993 
994 INSTANTIATE_TEST_SUITE_P(
995     Glsl, GlslNonSemanticShaderDebugInfoTest,
996     ::testing::ValuesIn(std::vector<std::string>({
997         "spv.debuginfo.glsl.vert",
998         "spv.debuginfo.glsl.frag",
999         "spv.debuginfo.glsl.comp",
1000         "spv.debuginfo.glsl.geom",
1001         "spv.debuginfo.glsl.tesc",
1002         "spv.debuginfo.glsl.tese",
1003         "spv.debuginfo.bufferref.glsl.frag",
1004         "spv.debuginfo.const_params.glsl.comp",
1005         "spv.debuginfo.scalar_types.glsl.frag",
1006         "spv.debuginfo.rt_types.glsl.rgen",
1007         "spv.debuginfo.include.glsl.frag",
1008         "spv.debuginfo.multiline.glsl.frag",
1009         "spv.debuginfo.implicit_br.glsl.frag",
1010     })),
1011     FileNameAsCustomTestSuffix
1012 );
1013 
1014 INSTANTIATE_TEST_SUITE_P(
1015     Glsl, GlslNonSemanticShaderDebugInfoSpirv13Test,
1016     ::testing::ValuesIn(std::vector<std::string>({
1017         "spv.debuginfo.coopmatKHR.comp",
1018     })),
1019     FileNameAsCustomTestSuffix
1020 );
1021 // clang-format on
1022 
1023 }  // anonymous namespace
1024 }  // namespace glslangtest
1025