1617a3babSopenharmony_ci // 2617a3babSopenharmony_ci// Copyright (C) 2016 Google, Inc. 3617a3babSopenharmony_ci// Copyright (C) 2019 ARM Limited. 4617a3babSopenharmony_ci// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. 5617a3babSopenharmony_ci// 6617a3babSopenharmony_ci// All rights reserved. 7617a3babSopenharmony_ci// 8617a3babSopenharmony_ci// Redistribution and use in source and binary forms, with or without 9617a3babSopenharmony_ci// modification, are permitted provided that the following conditions 10617a3babSopenharmony_ci// are met: 11617a3babSopenharmony_ci// 12617a3babSopenharmony_ci// Redistributions of source code must retain the above copyright 13617a3babSopenharmony_ci// notice, this list of conditions and the following disclaimer. 14617a3babSopenharmony_ci// 15617a3babSopenharmony_ci// Redistributions in binary form must reproduce the above 16617a3babSopenharmony_ci// copyright notice, this list of conditions and the following 17617a3babSopenharmony_ci// disclaimer in the documentation and/or other materials provided 18617a3babSopenharmony_ci// with the distribution. 19617a3babSopenharmony_ci// 20617a3babSopenharmony_ci// Neither the name of Google Inc. nor the names of its 21617a3babSopenharmony_ci// contributors may be used to endorse or promote products derived 22617a3babSopenharmony_ci// from this software without specific prior written permission. 23617a3babSopenharmony_ci// 24617a3babSopenharmony_ci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25617a3babSopenharmony_ci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26617a3babSopenharmony_ci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27617a3babSopenharmony_ci// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28617a3babSopenharmony_ci// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29617a3babSopenharmony_ci// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30617a3babSopenharmony_ci// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31617a3babSopenharmony_ci// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32617a3babSopenharmony_ci// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33617a3babSopenharmony_ci// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34617a3babSopenharmony_ci// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35617a3babSopenharmony_ci// POSSIBILITY OF SUCH DAMAGE. 36617a3babSopenharmony_ci 37617a3babSopenharmony_ci#include <algorithm> 38617a3babSopenharmony_ci 39617a3babSopenharmony_ci#include <gtest/gtest.h> 40617a3babSopenharmony_ci 41617a3babSopenharmony_ci#include "TestFixture.h" 42617a3babSopenharmony_ci 43617a3babSopenharmony_cinamespace glslangtest { 44617a3babSopenharmony_cinamespace { 45617a3babSopenharmony_ci 46617a3babSopenharmony_cistruct IoMapData { 47617a3babSopenharmony_ci const char* fileName; 48617a3babSopenharmony_ci const char* entryPoint; 49617a3babSopenharmony_ci int baseSamplerBinding; 50617a3babSopenharmony_ci int baseTextureBinding; 51617a3babSopenharmony_ci int baseImageBinding; 52617a3babSopenharmony_ci int baseUboBinding; 53617a3babSopenharmony_ci int baseSsboBinding; 54617a3babSopenharmony_ci bool autoMapBindings; 55617a3babSopenharmony_ci bool flattenUniforms; 56617a3babSopenharmony_ci}; 57617a3babSopenharmony_ci 58617a3babSopenharmony_cistd::string FileNameAsCustomTestSuffixIoMap( 59617a3babSopenharmony_ci const ::testing::TestParamInfo<IoMapData>& info) { 60617a3babSopenharmony_ci std::string name = info.param.fileName; 61617a3babSopenharmony_ci // A valid test case suffix cannot have '.' and '-' inside. 62617a3babSopenharmony_ci std::replace(name.begin(), name.end(), '.', '_'); 63617a3babSopenharmony_ci std::replace(name.begin(), name.end(), '-', '_'); 64617a3babSopenharmony_ci return name; 65617a3babSopenharmony_ci} 66617a3babSopenharmony_ci 67617a3babSopenharmony_ciusing CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; 68617a3babSopenharmony_ciusing CompileVulkanToSpirvTestNoLink = GlslangTest<::testing::TestWithParam<std::string>>; 69617a3babSopenharmony_ciusing CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam<std::string>>; 70617a3babSopenharmony_ciusing CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; 71617a3babSopenharmony_ciusing CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; 72617a3babSopenharmony_ciusing CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>; 73617a3babSopenharmony_ciusing CompileToSpirv16Test = GlslangTest<::testing::TestWithParam<std::string>>; 74617a3babSopenharmony_ciusing CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; 75617a3babSopenharmony_ciusing VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>; 76617a3babSopenharmony_ciusing OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>; 77617a3babSopenharmony_ciusing VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>; 78617a3babSopenharmony_ciusing HlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>; 79617a3babSopenharmony_ciusing GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>; 80617a3babSopenharmony_ciusing CompileVulkanToSpirvTestQCOM = GlslangTest<::testing::TestWithParam<std::string>>; 81617a3babSopenharmony_ciusing CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::string>>; 82617a3babSopenharmony_ciusing CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>; 83617a3babSopenharmony_ciusing CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>; 84617a3babSopenharmony_ciusing CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>; 85617a3babSopenharmony_ciusing CompileVulkanToNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<std::string>>; 86617a3babSopenharmony_ci 87617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully 88617a3babSopenharmony_ci// generate SPIR-V. 89617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvTest, FromFile) 90617a3babSopenharmony_ci{ 91617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 92617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 93617a3babSopenharmony_ci Target::Spv); 94617a3babSopenharmony_ci} 95617a3babSopenharmony_ci 96617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under Vulkan semantics without linking. Expected to successfully generate SPIR-V. 97617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvTestNoLink, FromFile) 98617a3babSopenharmony_ci{ 99617a3babSopenharmony_ci options().compileOnly = true; 100617a3babSopenharmony_ci // NOTE: Vulkan 1.3 is currently required to use the linkage capability 101617a3babSopenharmony_ci // TODO(ncesario) make sure this is actually necessary 102617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, 103617a3babSopenharmony_ci glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_0, Target::Spv); 104617a3babSopenharmony_ci} 105617a3babSopenharmony_ci 106617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile) 107617a3babSopenharmony_ci{ 108617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 109617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 110617a3babSopenharmony_ci Target::Spv); 111617a3babSopenharmony_ci} 112617a3babSopenharmony_ci 113617a3babSopenharmony_ci// Compiling GLSL to SPIR-V with debug info under Vulkan semantics. Expected 114617a3babSopenharmony_ci// to successfully generate SPIR-V. 115617a3babSopenharmony_ciTEST_P(CompileVulkanToDebugSpirvTest, FromFile) 116617a3babSopenharmony_ci{ 117617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 118617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, 119617a3babSopenharmony_ci glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 120617a3babSopenharmony_ci Target::Spv, true, "", 121617a3babSopenharmony_ci "/baseResults/", false, true); 122617a3babSopenharmony_ci} 123617a3babSopenharmony_ci 124617a3babSopenharmony_ci 125617a3babSopenharmony_ciTEST_P(CompileVulkan1_1ToSpirvTest, FromFile) 126617a3babSopenharmony_ci{ 127617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 128617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_3, 129617a3babSopenharmony_ci Target::Spv); 130617a3babSopenharmony_ci} 131617a3babSopenharmony_ci 132617a3babSopenharmony_ciTEST_P(CompileToSpirv14Test, FromFile) 133617a3babSopenharmony_ci{ 134617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 135617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, 136617a3babSopenharmony_ci Target::Spv); 137617a3babSopenharmony_ci} 138617a3babSopenharmony_ci 139617a3babSopenharmony_ciTEST_P(CompileToSpirv16Test, FromFile) 140617a3babSopenharmony_ci{ 141617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 142617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, 143617a3babSopenharmony_ci Target::Spv); 144617a3babSopenharmony_ci} 145617a3babSopenharmony_ci 146617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully 147617a3babSopenharmony_ci// generate SPIR-V. 148617a3babSopenharmony_ciTEST_P(CompileOpenGLToSpirvTest, FromFile) 149617a3babSopenharmony_ci{ 150617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 151617a3babSopenharmony_ci Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 152617a3babSopenharmony_ci Target::Spv); 153617a3babSopenharmony_ci} 154617a3babSopenharmony_ci 155617a3babSopenharmony_ci// GLSL-level Vulkan semantics test. Expected to error out before generating 156617a3babSopenharmony_ci// SPIR-V. 157617a3babSopenharmony_ciTEST_P(VulkanSemantics, FromFile) 158617a3babSopenharmony_ci{ 159617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 160617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 161617a3babSopenharmony_ci Target::Spv, false); 162617a3babSopenharmony_ci} 163617a3babSopenharmony_ci 164617a3babSopenharmony_ci// GLSL-level Vulkan semantics test. Expected to error out before generating 165617a3babSopenharmony_ci// SPIR-V. 166617a3babSopenharmony_ciTEST_P(OpenGLSemantics, FromFile) 167617a3babSopenharmony_ci{ 168617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 169617a3babSopenharmony_ci Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 170617a3babSopenharmony_ci Target::Spv, false); 171617a3babSopenharmony_ci} 172617a3babSopenharmony_ci 173617a3babSopenharmony_ci// GLSL-level Vulkan semantics test that need to see the AST for validation. 174617a3babSopenharmony_ciTEST_P(VulkanAstSemantics, FromFile) 175617a3babSopenharmony_ci{ 176617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 177617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 178617a3babSopenharmony_ci Target::AST); 179617a3babSopenharmony_ci} 180617a3babSopenharmony_ci 181617a3babSopenharmony_ci// HLSL-level Vulkan semantics tests. 182617a3babSopenharmony_ciTEST_P(HlslIoMap, FromFile) 183617a3babSopenharmony_ci{ 184617a3babSopenharmony_ci loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, 185617a3babSopenharmony_ci Source::HLSL, Semantics::Vulkan, 186617a3babSopenharmony_ci Target::Spv, GetParam().entryPoint, 187617a3babSopenharmony_ci GetParam().baseSamplerBinding, 188617a3babSopenharmony_ci GetParam().baseTextureBinding, 189617a3babSopenharmony_ci GetParam().baseImageBinding, 190617a3babSopenharmony_ci GetParam().baseUboBinding, 191617a3babSopenharmony_ci GetParam().baseSsboBinding, 192617a3babSopenharmony_ci GetParam().autoMapBindings, 193617a3babSopenharmony_ci GetParam().flattenUniforms); 194617a3babSopenharmony_ci} 195617a3babSopenharmony_ci 196617a3babSopenharmony_ci// GLSL-level Vulkan semantics tests. 197617a3babSopenharmony_ciTEST_P(GlslIoMap, FromFile) 198617a3babSopenharmony_ci{ 199617a3babSopenharmony_ci loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, 200617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, 201617a3babSopenharmony_ci Target::Spv, GetParam().entryPoint, 202617a3babSopenharmony_ci GetParam().baseSamplerBinding, 203617a3babSopenharmony_ci GetParam().baseTextureBinding, 204617a3babSopenharmony_ci GetParam().baseImageBinding, 205617a3babSopenharmony_ci GetParam().baseUboBinding, 206617a3babSopenharmony_ci GetParam().baseSsboBinding, 207617a3babSopenharmony_ci GetParam().autoMapBindings, 208617a3babSopenharmony_ci GetParam().flattenUniforms); 209617a3babSopenharmony_ci} 210617a3babSopenharmony_ci 211617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under Vulkan semantics (QCOM extensions enabled). 212617a3babSopenharmony_ci// Expected to successfully generate SPIR-V. 213617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvTestQCOM, FromFile) 214617a3babSopenharmony_ci{ 215617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 216617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 217617a3babSopenharmony_ci Target::Spv); 218617a3babSopenharmony_ci} 219617a3babSopenharmony_ci 220617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). 221617a3babSopenharmony_ci// Expected to successfully generate SPIR-V. 222617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvTestAMD, FromFile) 223617a3babSopenharmony_ci{ 224617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 225617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 226617a3babSopenharmony_ci Target::Spv); 227617a3babSopenharmony_ci} 228617a3babSopenharmony_ci 229617a3babSopenharmony_ci// Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled). 230617a3babSopenharmony_ci// Expected to successfully generate SPIR-V. 231617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirvTestNV, FromFile) 232617a3babSopenharmony_ci{ 233617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 234617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 235617a3babSopenharmony_ci Target::Spv); 236617a3babSopenharmony_ci} 237617a3babSopenharmony_ci 238617a3babSopenharmony_ciTEST_P(CompileVulkanToSpirv14TestNV, FromFile) 239617a3babSopenharmony_ci{ 240617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 241617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, 242617a3babSopenharmony_ci Target::Spv); 243617a3babSopenharmony_ci} 244617a3babSopenharmony_ci 245617a3babSopenharmony_ciTEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) 246617a3babSopenharmony_ci{ 247617a3babSopenharmony_ci loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot, 248617a3babSopenharmony_ci GetParam(), 249617a3babSopenharmony_ci Source::GLSL, 250617a3babSopenharmony_ci Semantics::Vulkan, 251617a3babSopenharmony_ci Target::Spv); 252617a3babSopenharmony_ci} 253617a3babSopenharmony_ci 254617a3babSopenharmony_ciTEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile) 255617a3babSopenharmony_ci{ 256617a3babSopenharmony_ci loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), 257617a3babSopenharmony_ci Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, 258617a3babSopenharmony_ci Target::Spv, true, "", "/baseResults/", false, false, true); 259617a3babSopenharmony_ci} 260617a3babSopenharmony_ci 261617a3babSopenharmony_ci// clang-format off 262617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 263617a3babSopenharmony_ci Glsl, CompileVulkanToSpirvTest, 264617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 265617a3babSopenharmony_ci // Test looping constructs. 266617a3babSopenharmony_ci // No tests yet for making sure break and continue from a nested loop 267617a3babSopenharmony_ci // goes to the innermost target. 268617a3babSopenharmony_ci "spv.barrier.vert", 269617a3babSopenharmony_ci "spv.do-simple.vert", 270617a3babSopenharmony_ci "spv.do-while-continue-break.vert", 271617a3babSopenharmony_ci "spv.for-complex-condition.vert", 272617a3babSopenharmony_ci "spv.for-continue-break.vert", 273617a3babSopenharmony_ci "spv.for-simple.vert", 274617a3babSopenharmony_ci "spv.for-notest.vert", 275617a3babSopenharmony_ci "spv.for-nobody.vert", 276617a3babSopenharmony_ci "spv.while-continue-break.vert", 277617a3babSopenharmony_ci "spv.while-simple.vert", 278617a3babSopenharmony_ci // vulkan-specific tests 279617a3babSopenharmony_ci "rayQuery.rgen", 280617a3babSopenharmony_ci "rayQuery-no-cse.rgen", 281617a3babSopenharmony_ci "rayQuery-initialize.rgen", 282617a3babSopenharmony_ci "rayQuery-allOps.rgen", 283617a3babSopenharmony_ci "rayQuery-allOps.Error.rgen", 284617a3babSopenharmony_ci "rayQuery-committed.Error.rgen", 285617a3babSopenharmony_ci "rayQuery-allOps.comp", 286617a3babSopenharmony_ci "rayQuery-allOps.frag", 287617a3babSopenharmony_ci "rayQuery-initialization.Error.comp", 288617a3babSopenharmony_ci "rayQuery-global.rgen", 289617a3babSopenharmony_ci "rayQuery-types.comp", 290617a3babSopenharmony_ci "rayQuery-OpConvertUToAccelerationStructureKHR.comp", 291617a3babSopenharmony_ci "spv.set.vert", 292617a3babSopenharmony_ci "spv.double.comp", 293617a3babSopenharmony_ci "spv.100ops.frag", 294617a3babSopenharmony_ci "spv.130.frag", 295617a3babSopenharmony_ci "spv.140.frag", 296617a3babSopenharmony_ci "spv.150.geom", 297617a3babSopenharmony_ci "spv.150.vert", 298617a3babSopenharmony_ci "spv.16bitstorage.frag", 299617a3babSopenharmony_ci "spv.16bitstorage_Error.frag", 300617a3babSopenharmony_ci "spv.16bitstorage-int.frag", 301617a3babSopenharmony_ci "spv.16bitstorage_Error-int.frag", 302617a3babSopenharmony_ci "spv.16bitstorage-uint.frag", 303617a3babSopenharmony_ci "spv.16bitstorage_Error-uint.frag", 304617a3babSopenharmony_ci "spv.300BuiltIns.vert", 305617a3babSopenharmony_ci "spv.300layout.frag", 306617a3babSopenharmony_ci "spv.300layout.vert", 307617a3babSopenharmony_ci "spv.300layoutp.vert", 308617a3babSopenharmony_ci "spv.310.comp", 309617a3babSopenharmony_ci "spv.310.bitcast.frag", 310617a3babSopenharmony_ci "spv.330.geom", 311617a3babSopenharmony_ci "spv.400.frag", 312617a3babSopenharmony_ci "spv.400.tesc", 313617a3babSopenharmony_ci "spv.400.tese", 314617a3babSopenharmony_ci "spv.420.geom", 315617a3babSopenharmony_ci "spv.430.frag", 316617a3babSopenharmony_ci "spv.430.vert", 317617a3babSopenharmony_ci "spv.450.tesc", 318617a3babSopenharmony_ci "spv.450.geom", 319617a3babSopenharmony_ci "spv.450.noRedecl.tesc", 320617a3babSopenharmony_ci "spv.8bitstorage-int.frag", 321617a3babSopenharmony_ci "spv.8bitstorage_Error-int.frag", 322617a3babSopenharmony_ci "spv.8bitstorage-uint.frag", 323617a3babSopenharmony_ci "spv.8bitstorage_Error-uint.frag", 324617a3babSopenharmony_ci "spv.8bitstorage-ubo.vert", 325617a3babSopenharmony_ci "spv.8bitstorage-ssbo.vert", 326617a3babSopenharmony_ci "spv.8bit-16bit-construction.frag", 327617a3babSopenharmony_ci "spv.accessChain.frag", 328617a3babSopenharmony_ci "spv.aggOps.frag", 329617a3babSopenharmony_ci "spv.always-discard.frag", 330617a3babSopenharmony_ci "spv.always-discard2.frag", 331617a3babSopenharmony_ci "spv.arbPostDepthCoverage.frag", 332617a3babSopenharmony_ci "spv.arbPostDepthCoverage_Error.frag", 333617a3babSopenharmony_ci "spv.atomicCounter.comp", 334617a3babSopenharmony_ci "spv.bitCast.frag", 335617a3babSopenharmony_ci "spv.bool.vert", 336617a3babSopenharmony_ci "spv.boolInBlock.frag", 337617a3babSopenharmony_ci "spv.branch-return.vert", 338617a3babSopenharmony_ci "spv.bufferhandle1.frag", 339617a3babSopenharmony_ci "spv.bufferhandle10.frag", 340617a3babSopenharmony_ci "spv.bufferhandle11.frag", 341617a3babSopenharmony_ci "spv.bufferhandle12.frag", 342617a3babSopenharmony_ci "spv.bufferhandle13.frag", 343617a3babSopenharmony_ci "spv.bufferhandle14.frag", 344617a3babSopenharmony_ci "spv.bufferhandle15.frag", 345617a3babSopenharmony_ci "spv.bufferhandle16.frag", 346617a3babSopenharmony_ci "spv.bufferhandle17_Errors.frag", 347617a3babSopenharmony_ci "spv.bufferhandle18.frag", 348617a3babSopenharmony_ci "spv.bufferhandle19_Errors.frag", 349617a3babSopenharmony_ci "spv.bufferhandle2.frag", 350617a3babSopenharmony_ci "spv.bufferhandle3.frag", 351617a3babSopenharmony_ci "spv.bufferhandle4.frag", 352617a3babSopenharmony_ci "spv.bufferhandle5.frag", 353617a3babSopenharmony_ci "spv.bufferhandle6.frag", 354617a3babSopenharmony_ci "spv.bufferhandle7.frag", 355617a3babSopenharmony_ci "spv.bufferhandle8.frag", 356617a3babSopenharmony_ci "spv.bufferhandle9.frag", 357617a3babSopenharmony_ci "spv.bufferhandleUvec2.frag", 358617a3babSopenharmony_ci "spv.bufferhandle_Error.frag", 359617a3babSopenharmony_ci "spv.builtInXFB.vert", 360617a3babSopenharmony_ci "spv.conditionalDemote.frag", 361617a3babSopenharmony_ci "spv.conditionalDiscard.frag", 362617a3babSopenharmony_ci "spv.constructComposite.comp", 363617a3babSopenharmony_ci "spv.constStruct.vert", 364617a3babSopenharmony_ci "spv.constConstruct.vert", 365617a3babSopenharmony_ci "spv.controlFlowAttributes.frag", 366617a3babSopenharmony_ci "spv.conversion.frag", 367617a3babSopenharmony_ci "spv.coopmat.comp", 368617a3babSopenharmony_ci "spv.coopmat_Error.comp", 369617a3babSopenharmony_ci "spv.coopmatKHR.comp", 370617a3babSopenharmony_ci "spv.coopmatKHR_arithmetic.comp", 371617a3babSopenharmony_ci "spv.coopmatKHR_arithmeticError.comp", 372617a3babSopenharmony_ci "spv.coopmatKHR_Error.comp", 373617a3babSopenharmony_ci "spv.coopmatKHR_constructor.comp", 374617a3babSopenharmony_ci "spv.coopmatKHR_constructorError.comp", 375617a3babSopenharmony_ci "spv.dataOut.frag", 376617a3babSopenharmony_ci "spv.dataOutIndirect.frag", 377617a3babSopenharmony_ci "spv.dataOutIndirect.vert", 378617a3babSopenharmony_ci "spv.debugPrintf.frag", 379617a3babSopenharmony_ci "spv.debugPrintf_Error.frag", 380617a3babSopenharmony_ci "spv.demoteDisabled.frag", 381617a3babSopenharmony_ci "spv.deepRvalue.frag", 382617a3babSopenharmony_ci "spv.depthOut.frag", 383617a3babSopenharmony_ci "spv.depthUnchanged.frag", 384617a3babSopenharmony_ci "spv.discard-dce.frag", 385617a3babSopenharmony_ci "spv.doWhileLoop.frag", 386617a3babSopenharmony_ci "spv.earlyReturnDiscard.frag", 387617a3babSopenharmony_ci "spv.ext.ShaderTileImage.color.frag", 388617a3babSopenharmony_ci "spv.ext.ShaderTileImage.depth_stencil.frag", 389617a3babSopenharmony_ci "spv.ext.ShaderTileImage.subpassinput.frag", 390617a3babSopenharmony_ci "spv.ext.ShaderTileImage.typemismatch.frag", 391617a3babSopenharmony_ci "spv.ext.ShaderTileImage.overlap.frag", 392617a3babSopenharmony_ci "spv.ext.ShaderTileImage.wronglayout.frag", 393617a3babSopenharmony_ci "spv.extPostDepthCoverage.frag", 394617a3babSopenharmony_ci "spv.extPostDepthCoverage_Error.frag", 395617a3babSopenharmony_ci "spv.float16convertonlyarith.comp", 396617a3babSopenharmony_ci "spv.float16convertonlystorage.comp", 397617a3babSopenharmony_ci "spv.flowControl.frag", 398617a3babSopenharmony_ci "spv.forLoop.frag", 399617a3babSopenharmony_ci "spv.forwardFun.frag", 400617a3babSopenharmony_ci "spv.fragmentDensity.frag", 401617a3babSopenharmony_ci "spv.fragmentDensity.vert", 402617a3babSopenharmony_ci "spv.fragmentDensity-es.frag", 403617a3babSopenharmony_ci "spv.fragmentDensity-neg.frag", 404617a3babSopenharmony_ci "spv.fsi.frag", 405617a3babSopenharmony_ci "spv.fsi_Error.frag", 406617a3babSopenharmony_ci "spv.fullyCovered.frag", 407617a3babSopenharmony_ci "spv.functionCall.frag", 408617a3babSopenharmony_ci "spv.functionNestedOpaque.vert", 409617a3babSopenharmony_ci "spv.functionSemantics.frag", 410617a3babSopenharmony_ci "spv.functionParameterTypes.frag", 411617a3babSopenharmony_ci "spv.GeometryShaderPassthrough.geom", 412617a3babSopenharmony_ci "spv.funcall.array.frag", 413617a3babSopenharmony_ci "spv.load.bool.array.interface.block.frag", 414617a3babSopenharmony_ci "spv.interpOps.frag", 415617a3babSopenharmony_ci "spv.int64.frag", 416617a3babSopenharmony_ci "spv.intcoopmat.comp", 417617a3babSopenharmony_ci "spv.intOps.vert", 418617a3babSopenharmony_ci "spv.intrinsicsSpirvByReference.vert", 419617a3babSopenharmony_ci "spv.intrinsicsSpirvDecorate.frag", 420617a3babSopenharmony_ci "spv.intrinsicsSpirvDecorateId.comp", 421617a3babSopenharmony_ci "spv.intrinsicsSpirvDecorateString.comp", 422617a3babSopenharmony_ci "spv.intrinsicsSpirvExecutionMode.frag", 423617a3babSopenharmony_ci "spv.intrinsicsSpirvInstruction.vert", 424617a3babSopenharmony_ci "spv.intrinsicsSpirvLiteral.vert", 425617a3babSopenharmony_ci "spv.intrinsicsSpirvStorageClass.rchit", 426617a3babSopenharmony_ci "spv.intrinsicsSpirvType.rgen", 427617a3babSopenharmony_ci "spv.intrinsicsSpirvTypeLocalVar.vert", 428617a3babSopenharmony_ci "spv.intrinsicsSpirvTypeWithTypeSpecifier.vert", 429617a3babSopenharmony_ci "spv.invariantAll.vert", 430617a3babSopenharmony_ci "spv.layer.tese", 431617a3babSopenharmony_ci "spv.layoutNested.vert", 432617a3babSopenharmony_ci "spv.length.frag", 433617a3babSopenharmony_ci "spv.localAggregates.frag", 434617a3babSopenharmony_ci "spv.loops.frag", 435617a3babSopenharmony_ci "spv.loopsArtificial.frag", 436617a3babSopenharmony_ci "spv.matFun.vert", 437617a3babSopenharmony_ci "spv.matrix.frag", 438617a3babSopenharmony_ci "spv.matrix2.frag", 439617a3babSopenharmony_ci "spv.memoryQualifier.frag", 440617a3babSopenharmony_ci "spv.merge-unreachable.frag", 441617a3babSopenharmony_ci "spv.multiStruct.comp", 442617a3babSopenharmony_ci "spv.multiStructFuncall.frag", 443617a3babSopenharmony_ci "spv.newTexture.frag", 444617a3babSopenharmony_ci "spv.noDeadDecorations.vert", 445617a3babSopenharmony_ci "spv.nonSquare.vert", 446617a3babSopenharmony_ci "spv.nonuniform.frag", 447617a3babSopenharmony_ci "spv.nonuniform2.frag", 448617a3babSopenharmony_ci "spv.nonuniform3.frag", 449617a3babSopenharmony_ci "spv.nonuniform4.frag", 450617a3babSopenharmony_ci "spv.nonuniform5.frag", 451617a3babSopenharmony_ci "spv.noWorkgroup.comp", 452617a3babSopenharmony_ci "spv.nullInit.comp", 453617a3babSopenharmony_ci "spv.offsets.frag", 454617a3babSopenharmony_ci "spv.Operations.frag", 455617a3babSopenharmony_ci "spv.paramMemory.frag", 456617a3babSopenharmony_ci "spv.paramMemory.420.frag", 457617a3babSopenharmony_ci "spv.precision.frag", 458617a3babSopenharmony_ci "spv.precisionArgs.frag", 459617a3babSopenharmony_ci "spv.precisionNonESSamp.frag", 460617a3babSopenharmony_ci "spv.precisionTexture.frag", 461617a3babSopenharmony_ci "spv.prepost.frag", 462617a3babSopenharmony_ci "spv.privateVariableTypes.frag", 463617a3babSopenharmony_ci "spv.qualifiers.vert", 464617a3babSopenharmony_ci "spv.sample.frag", 465617a3babSopenharmony_ci "spv.sampleId.frag", 466617a3babSopenharmony_ci "spv.samplePosition.frag", 467617a3babSopenharmony_ci "spv.sampleMaskOverrideCoverage.frag", 468617a3babSopenharmony_ci "spv.scalarlayout.frag", 469617a3babSopenharmony_ci "spv.scalarlayoutfloat16.frag", 470617a3babSopenharmony_ci "spv.shaderBallot.comp", 471617a3babSopenharmony_ci "spv.shaderDrawParams.vert", 472617a3babSopenharmony_ci "spv.shaderGroupVote.comp", 473617a3babSopenharmony_ci "spv.shaderStencilExport.frag", 474617a3babSopenharmony_ci "spv.shiftOps.frag", 475617a3babSopenharmony_ci "spv.simpleFunctionCall.frag", 476617a3babSopenharmony_ci "spv.simpleMat.vert", 477617a3babSopenharmony_ci "spv.sparseTexture.frag", 478617a3babSopenharmony_ci "spv.sparseTextureClamp.frag", 479617a3babSopenharmony_ci "spv.structAssignment.frag", 480617a3babSopenharmony_ci "spv.structCopy.comp", 481617a3babSopenharmony_ci "spv.structDeref.frag", 482617a3babSopenharmony_ci "spv.structure.frag", 483617a3babSopenharmony_ci "spv.switch.frag", 484617a3babSopenharmony_ci "spv.swizzle.frag", 485617a3babSopenharmony_ci "spv.swizzleInversion.frag", 486617a3babSopenharmony_ci "spv.test.frag", 487617a3babSopenharmony_ci "spv.test.vert", 488617a3babSopenharmony_ci "spv.texture.frag", 489617a3babSopenharmony_ci "spv.texture.vert", 490617a3babSopenharmony_ci "spv.textureBuffer.vert", 491617a3babSopenharmony_ci "spv.image.frag", 492617a3babSopenharmony_ci "spv.imageAtomic64.frag", 493617a3babSopenharmony_ci "spv.imageAtomic64.comp", 494617a3babSopenharmony_ci "spv.types.frag", 495617a3babSopenharmony_ci "spv.uint.frag", 496617a3babSopenharmony_ci "spv.uniformArray.frag", 497617a3babSopenharmony_ci "spv.variableArrayIndex.frag", 498617a3babSopenharmony_ci "spv.varyingArray.frag", 499617a3babSopenharmony_ci "spv.varyingArrayIndirect.frag", 500617a3babSopenharmony_ci "spv.vecMatConstruct.frag", 501617a3babSopenharmony_ci "spv.voidFunction.frag", 502617a3babSopenharmony_ci "spv.whileLoop.frag", 503617a3babSopenharmony_ci "spv.AofA.frag", 504617a3babSopenharmony_ci "spv.queryL.frag", 505617a3babSopenharmony_ci "spv.separate.frag", 506617a3babSopenharmony_ci "spv.shortCircuit.frag", 507617a3babSopenharmony_ci "spv.pushConstant.vert", 508617a3babSopenharmony_ci "spv.pushConstantAnon.vert", 509617a3babSopenharmony_ci "spv.subpass.frag", 510617a3babSopenharmony_ci "spv.specConstant.vert", 511617a3babSopenharmony_ci "spv.specConstant.comp", 512617a3babSopenharmony_ci "spv.specConstantComposite.vert", 513617a3babSopenharmony_ci "spv.specConstantOperations.vert", 514617a3babSopenharmony_ci "spv.specConstant.float16.comp", 515617a3babSopenharmony_ci "spv.specConstant.int16.comp", 516617a3babSopenharmony_ci "spv.specConstant.int8.comp", 517617a3babSopenharmony_ci "spv.specConstantOp.int16.comp", 518617a3babSopenharmony_ci "spv.specConstantOp.int8.comp", 519617a3babSopenharmony_ci "spv.specConstantOp.float16.comp", 520617a3babSopenharmony_ci "spv.storageBuffer.vert", 521617a3babSopenharmony_ci "spv.terminate.frag", 522617a3babSopenharmony_ci "spv.subgroupUniformControlFlow.vert", 523617a3babSopenharmony_ci "spv.subgroupSizeARB.frag", 524617a3babSopenharmony_ci "spv.precise.tese", 525617a3babSopenharmony_ci "spv.precise.tesc", 526617a3babSopenharmony_ci "spv.viewportindex.tese", 527617a3babSopenharmony_ci "spv.volatileAtomic.comp", 528617a3babSopenharmony_ci "spv.vulkan100.subgroupArithmetic.comp", 529617a3babSopenharmony_ci "spv.vulkan100.subgroupPartitioned.comp", 530617a3babSopenharmony_ci "spv.xfb.vert", 531617a3babSopenharmony_ci "spv.xfb2.vert", 532617a3babSopenharmony_ci "spv.xfb3.vert", 533617a3babSopenharmony_ci "spv.samplerlessTextureFunctions.frag", 534617a3babSopenharmony_ci "spv.smBuiltins.vert", 535617a3babSopenharmony_ci "spv.smBuiltins.frag", 536617a3babSopenharmony_ci "spv.ARMCoreBuiltIns.vert", 537617a3babSopenharmony_ci "spv.ARMCoreBuiltIns.frag", 538617a3babSopenharmony_ci "spv.builtin.PrimitiveShadingRateEXT.vert", 539617a3babSopenharmony_ci "spv.builtin.ShadingRateEXT.frag", 540617a3babSopenharmony_ci "spv.atomicAdd.bufferReference.comp", 541617a3babSopenharmony_ci "spv.fragmentShaderBarycentric3.frag", 542617a3babSopenharmony_ci "spv.fragmentShaderBarycentric4.frag", 543617a3babSopenharmony_ci "spv.ext.textureShadowLod.frag", 544617a3babSopenharmony_ci "spv.ext.textureShadowLod.error.frag", 545617a3babSopenharmony_ci "spv.floatFetch.frag", 546617a3babSopenharmony_ci "spv.atomicRvalue.error.vert", 547617a3babSopenharmony_ci })), 548617a3babSopenharmony_ci FileNameAsCustomTestSuffix 549617a3babSopenharmony_ci); 550617a3babSopenharmony_ci 551617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 552617a3babSopenharmony_ci Glsl, CompileVulkanToSpirvTestNoLink, 553617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 554617a3babSopenharmony_ci "spv.exportFunctions.comp", 555617a3babSopenharmony_ci })), 556617a3babSopenharmony_ci FileNameAsCustomTestSuffix 557617a3babSopenharmony_ci); 558617a3babSopenharmony_ci 559617a3babSopenharmony_ci// Cases with deliberately unreachable code. 560617a3babSopenharmony_ci// By default the compiler will aggressively eliminate 561617a3babSopenharmony_ci// unreachable merges and continues. 562617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 563617a3babSopenharmony_ci GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest, 564617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 565617a3babSopenharmony_ci "spv.dead-after-continue.vert", 566617a3babSopenharmony_ci "spv.dead-after-discard.frag", 567617a3babSopenharmony_ci "spv.dead-after-return.vert", 568617a3babSopenharmony_ci "spv.dead-after-loop-break.vert", 569617a3babSopenharmony_ci "spv.dead-after-switch-break.vert", 570617a3babSopenharmony_ci "spv.dead-complex-continue-after-return.vert", 571617a3babSopenharmony_ci "spv.dead-complex-merge-after-return.vert", 572617a3babSopenharmony_ci })), 573617a3babSopenharmony_ci FileNameAsCustomTestSuffix 574617a3babSopenharmony_ci); 575617a3babSopenharmony_ci 576617a3babSopenharmony_ci// clang-format off 577617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 578617a3babSopenharmony_ci Glsl, CompileVulkanToDebugSpirvTest, 579617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 580617a3babSopenharmony_ci "spv.pp.line.frag", 581617a3babSopenharmony_ci })), 582617a3babSopenharmony_ci FileNameAsCustomTestSuffix 583617a3babSopenharmony_ci); 584617a3babSopenharmony_ci 585617a3babSopenharmony_ci// clang-format off 586617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 587617a3babSopenharmony_ci Glsl, CompileVulkan1_1ToSpirvTest, 588617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 589617a3babSopenharmony_ci "spv.1.3.8bitstorage-ubo.vert", 590617a3babSopenharmony_ci "spv.1.3.8bitstorage-ssbo.vert", 591617a3babSopenharmony_ci "spv.1.3.coopmat.comp", 592617a3babSopenharmony_ci "spv.deviceGroup.frag", 593617a3babSopenharmony_ci "spv.drawParams.vert", 594617a3babSopenharmony_ci "spv.int8.frag", 595617a3babSopenharmony_ci "spv.vulkan110.int16.frag", 596617a3babSopenharmony_ci "spv.int32.frag", 597617a3babSopenharmony_ci "spv.explicittypes.frag", 598617a3babSopenharmony_ci "spv.float16NoRelaxed.vert", 599617a3babSopenharmony_ci "spv.float32.frag", 600617a3babSopenharmony_ci "spv.float64.frag", 601617a3babSopenharmony_ci "spv.memoryScopeSemantics.comp", 602617a3babSopenharmony_ci "spv.memoryScopeSemantics_Error.comp", 603617a3babSopenharmony_ci "spv.multiView.frag", 604617a3babSopenharmony_ci "spv.queueFamilyScope.comp", 605617a3babSopenharmony_ci "spv.RayGenShader11.rgen", 606617a3babSopenharmony_ci "spv.subgroup.frag", 607617a3babSopenharmony_ci "spv.subgroup.geom", 608617a3babSopenharmony_ci "spv.subgroup.tesc", 609617a3babSopenharmony_ci "spv.subgroup.tese", 610617a3babSopenharmony_ci "spv.subgroup.vert", 611617a3babSopenharmony_ci "spv.subgroupArithmetic.comp", 612617a3babSopenharmony_ci "spv.subgroupBasic.comp", 613617a3babSopenharmony_ci "spv.subgroupBallot.comp", 614617a3babSopenharmony_ci "spv.subgroupBallotNeg.comp", 615617a3babSopenharmony_ci "spv.subgroupClustered.comp", 616617a3babSopenharmony_ci "spv.subgroupClusteredNeg.comp", 617617a3babSopenharmony_ci "spv.subgroupPartitioned.comp", 618617a3babSopenharmony_ci "spv.subgroupShuffle.comp", 619617a3babSopenharmony_ci "spv.subgroupShuffleRelative.comp", 620617a3babSopenharmony_ci "spv.subgroupQuad.comp", 621617a3babSopenharmony_ci "spv.subgroupVote.comp", 622617a3babSopenharmony_ci "spv.subgroupExtendedTypesArithmetic.comp", 623617a3babSopenharmony_ci "spv.subgroupExtendedTypesArithmeticNeg.comp", 624617a3babSopenharmony_ci "spv.subgroupExtendedTypesBallot.comp", 625617a3babSopenharmony_ci "spv.subgroupExtendedTypesBallotNeg.comp", 626617a3babSopenharmony_ci "spv.subgroupExtendedTypesClustered.comp", 627617a3babSopenharmony_ci "spv.subgroupExtendedTypesClusteredNeg.comp", 628617a3babSopenharmony_ci "spv.subgroupExtendedTypesPartitioned.comp", 629617a3babSopenharmony_ci "spv.subgroupExtendedTypesPartitionedNeg.comp", 630617a3babSopenharmony_ci "spv.subgroupExtendedTypesShuffle.comp", 631617a3babSopenharmony_ci "spv.subgroupExtendedTypesShuffleNeg.comp", 632617a3babSopenharmony_ci "spv.subgroupExtendedTypesShuffleRelative.comp", 633617a3babSopenharmony_ci "spv.subgroupExtendedTypesShuffleRelativeNeg.comp", 634617a3babSopenharmony_ci "spv.subgroupExtendedTypesQuad.comp", 635617a3babSopenharmony_ci "spv.subgroupExtendedTypesQuadNeg.comp", 636617a3babSopenharmony_ci "spv.subgroupExtendedTypesVote.comp", 637617a3babSopenharmony_ci "spv.subgroupExtendedTypesVoteNeg.comp", 638617a3babSopenharmony_ci "spv.vulkan110.storageBuffer.vert", 639617a3babSopenharmony_ci })), 640617a3babSopenharmony_ci FileNameAsCustomTestSuffix 641617a3babSopenharmony_ci); 642617a3babSopenharmony_ci 643617a3babSopenharmony_ci// clang-format off 644617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 645617a3babSopenharmony_ci Glsl, CompileToSpirv14Test, 646617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 647617a3babSopenharmony_ci "spv.1.4.LoopControl.frag", 648617a3babSopenharmony_ci "spv.1.4.NonWritable.frag", 649617a3babSopenharmony_ci "spv.1.4.OpEntryPoint.frag", 650617a3babSopenharmony_ci "spv.1.4.OpEntryPoint.opaqueParams.vert", 651617a3babSopenharmony_ci "spv.1.4.OpSelect.frag", 652617a3babSopenharmony_ci "spv.1.4.OpCopyLogical.comp", 653617a3babSopenharmony_ci "spv.1.4.OpCopyLogicalBool.comp", 654617a3babSopenharmony_ci "spv.1.4.OpCopyLogical.funcall.frag", 655617a3babSopenharmony_ci "spv.1.4.funcall.array.frag", 656617a3babSopenharmony_ci "spv.1.4.load.bool.array.interface.block.frag", 657617a3babSopenharmony_ci "spv.1.4.image.frag", 658617a3babSopenharmony_ci "spv.1.4.sparseTexture.frag", 659617a3babSopenharmony_ci "spv.1.4.texture.frag", 660617a3babSopenharmony_ci "spv.1.4.constructComposite.comp", 661617a3babSopenharmony_ci "spv.ext.AnyHitShader.rahit", 662617a3babSopenharmony_ci "spv.ext.AnyHitShader_Errors.rahit", 663617a3babSopenharmony_ci "spv.ext.ClosestHitShader.rchit", 664617a3babSopenharmony_ci "spv.ext.ClosestHitShader_Subgroup.rchit", 665617a3babSopenharmony_ci "spv.ext.ClosestHitShader_Errors.rchit", 666617a3babSopenharmony_ci "spv.ext.IntersectShader.rint", 667617a3babSopenharmony_ci "spv.ext.IntersectShader_Errors.rint", 668617a3babSopenharmony_ci "spv.ext.MissShader.rmiss", 669617a3babSopenharmony_ci "spv.ext.MissShader_Errors.rmiss", 670617a3babSopenharmony_ci "spv.ext.RayPrimCull_Errors.rgen", 671617a3babSopenharmony_ci "spv.ext.RayCallable.rcall", 672617a3babSopenharmony_ci "spv.ext.RayCallable_Errors.rcall", 673617a3babSopenharmony_ci "spv.ext.RayConstants.rgen", 674617a3babSopenharmony_ci "spv.ext.RayGenShader.rgen", 675617a3babSopenharmony_ci "spv.ext.RayGenShader_Errors.rgen", 676617a3babSopenharmony_ci "spv.ext.RayGenShader11.rgen", 677617a3babSopenharmony_ci "spv.ext.RayGenShaderArray.rgen", 678617a3babSopenharmony_ci "spv.ext.RayGenSBTlayout.rgen", 679617a3babSopenharmony_ci "spv.ext.RayGenSBTlayout140.rgen", 680617a3babSopenharmony_ci "spv.ext.RayGenSBTlayout430.rgen", 681617a3babSopenharmony_ci "spv.ext.RayGenSBTlayoutscalar.rgen", 682617a3babSopenharmony_ci "spv.ext.World3x4.rahit", 683617a3babSopenharmony_ci "spv.ext.AccelDecl.frag", 684617a3babSopenharmony_ci "spv.ext.RayQueryDecl.frag", 685617a3babSopenharmony_ci 686617a3babSopenharmony_ci // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4. 687617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp", 688617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp", 689617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp", 690617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp", 691617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp", 692617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp", 693617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.std140.comp", 694617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.std430.comp", 695617a3babSopenharmony_ci "spv.WorkgroupMemoryExplicitLayout.scalar.comp", 696617a3babSopenharmony_ci 697617a3babSopenharmony_ci // SPV_EXT_mesh_shader 698617a3babSopenharmony_ci "spv.ext.meshShaderBuiltins.mesh", 699617a3babSopenharmony_ci "spv.ext.meshShaderBuiltinsShadingRate.mesh", 700617a3babSopenharmony_ci "spv.ext.meshShaderRedeclBuiltins.mesh", 701617a3babSopenharmony_ci "spv.ext.meshShaderTaskMem.mesh", 702617a3babSopenharmony_ci "spv.ext.meshShaderUserDefined.mesh", 703617a3babSopenharmony_ci "spv.ext.meshTaskShader.task", 704617a3babSopenharmony_ci "spv.atomiAddEXT.error.mesh", 705617a3babSopenharmony_ci "spv.atomiAddEXT.task", 706617a3babSopenharmony_ci "spv.460.subgroupEXT.task", 707617a3babSopenharmony_ci "spv.460.subgroupEXT.mesh", 708617a3babSopenharmony_ci 709617a3babSopenharmony_ci // SPV_NV_shader_execution_reorder 710617a3babSopenharmony_ci 711617a3babSopenharmony_ci "spv.nv.hitobject-allops.rgen", 712617a3babSopenharmony_ci "spv.nv.hitobject-allops.rchit", 713617a3babSopenharmony_ci "spv.nv.hitobject-allops.rmiss", 714617a3babSopenharmony_ci 715617a3babSopenharmony_ci // SPV_NV_displacment_micromap 716617a3babSopenharmony_ci 717617a3babSopenharmony_ci "spv.nv.dmm-allops.rgen", 718617a3babSopenharmony_ci "spv.nv.dmm-allops.rchit", 719617a3babSopenharmony_ci "spv.nv.dmm-allops.rahit", 720617a3babSopenharmony_ci "spv.nv.dmm-allops.mesh", 721617a3babSopenharmony_ci "spv.nv.dmm-allops.comp", 722617a3babSopenharmony_ci })), 723617a3babSopenharmony_ci FileNameAsCustomTestSuffix 724617a3babSopenharmony_ci); 725617a3babSopenharmony_ci 726617a3babSopenharmony_ci// clang-format off 727617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 728617a3babSopenharmony_ci Glsl, CompileToSpirv16Test, 729617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 730617a3babSopenharmony_ci "spv.1.6.conditionalDiscard.frag", 731617a3babSopenharmony_ci "spv.1.6.helperInvocation.frag", 732617a3babSopenharmony_ci "spv.1.6.helperInvocation.memmodel.frag", 733617a3babSopenharmony_ci "spv.1.6.specConstant.comp", 734617a3babSopenharmony_ci "spv.1.6.samplerBuffer.frag", 735617a3babSopenharmony_ci "spv.1.6.separate.frag", 736617a3babSopenharmony_ci })), 737617a3babSopenharmony_ci FileNameAsCustomTestSuffix 738617a3babSopenharmony_ci); 739617a3babSopenharmony_ci 740617a3babSopenharmony_ci 741617a3babSopenharmony_ci// clang-format off 742617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 743617a3babSopenharmony_ci Hlsl, HlslIoMap, 744617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<IoMapData>{ 745617a3babSopenharmony_ci { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false }, 746617a3babSopenharmony_ci { "spv.register.noautoassign.frag", "main_ep", 5, 10, 0, 15, 30, false, false }, 747617a3babSopenharmony_ci { "spv.register.autoassign-2.frag", "main", 5, 10, 0, 15, 30, true, true }, 748617a3babSopenharmony_ci { "spv.register.subpass.frag", "main", 0, 20, 0, 0, 0, true, true }, 749617a3babSopenharmony_ci { "spv.buffer.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true }, 750617a3babSopenharmony_ci { "spv.ssbo.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true }, 751617a3babSopenharmony_ci { "spv.ssboAlias.frag", "main", 0, 0, 0, 0, 83, true, false }, 752617a3babSopenharmony_ci { "spv.rw.autoassign.frag", "main", 5, 10, 20, 15, 30, true, true }, 753617a3babSopenharmony_ci { "spv.register.autoassign.rangetest.frag", "main", 754617a3babSopenharmony_ci glslang::TQualifier::layoutBindingEnd-2, 755617a3babSopenharmony_ci glslang::TQualifier::layoutBindingEnd+5, 756617a3babSopenharmony_ci 20, 30, true, false }, 757617a3babSopenharmony_ci }), 758617a3babSopenharmony_ci FileNameAsCustomTestSuffixIoMap 759617a3babSopenharmony_ci); 760617a3babSopenharmony_ci 761617a3babSopenharmony_ci// clang-format off 762617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 763617a3babSopenharmony_ci Hlsl, GlslIoMap, 764617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<IoMapData>{ 765617a3babSopenharmony_ci { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, 30, true, false }, 766617a3babSopenharmony_ci { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 0, 15, 30, false, false }, 767617a3babSopenharmony_ci }), 768617a3babSopenharmony_ci FileNameAsCustomTestSuffixIoMap 769617a3babSopenharmony_ci); 770617a3babSopenharmony_ci 771617a3babSopenharmony_ci// clang-format off 772617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 773617a3babSopenharmony_ci Glsl, CompileOpenGLToSpirvTest, 774617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 775617a3babSopenharmony_ci "spv.460.frag", 776617a3babSopenharmony_ci "spv.460.vert", 777617a3babSopenharmony_ci "spv.460.comp", 778617a3babSopenharmony_ci "spv.atomic.comp", 779617a3babSopenharmony_ci "spv.atomicFloat.comp", 780617a3babSopenharmony_ci "spv.atomicFloat_Error.comp", 781617a3babSopenharmony_ci "spv.glFragColor.frag", 782617a3babSopenharmony_ci "spv.rankShift.comp", 783617a3babSopenharmony_ci "spv.specConst.vert", 784617a3babSopenharmony_ci "spv.specTexture.frag", 785617a3babSopenharmony_ci "spv.OVR_multiview.vert", 786617a3babSopenharmony_ci "spv.uniformInitializer.frag", 787617a3babSopenharmony_ci "spv.uniformInitializerSpecConstant.frag", 788617a3babSopenharmony_ci "spv.uniformInitializerStruct.frag", 789617a3babSopenharmony_ci "spv.xfbOffsetOnBlockMembersAssignment.vert", 790617a3babSopenharmony_ci "spv.xfbOffsetOnStructMembersAssignment.vert", 791617a3babSopenharmony_ci "spv.xfbOverlapOffsetCheckWithBlockAndMember.vert", 792617a3babSopenharmony_ci "spv.xfbStrideJustOnce.vert", 793617a3babSopenharmony_ci })), 794617a3babSopenharmony_ci FileNameAsCustomTestSuffix 795617a3babSopenharmony_ci); 796617a3babSopenharmony_ci 797617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 798617a3babSopenharmony_ci Glsl, VulkanSemantics, 799617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 800617a3babSopenharmony_ci "vulkan.frag", 801617a3babSopenharmony_ci "vulkan.vert", 802617a3babSopenharmony_ci "vulkan.comp", 803617a3babSopenharmony_ci "samplerlessTextureFunctions.frag", 804617a3babSopenharmony_ci "spv.intrinsicsFakeEnable.vert", 805617a3babSopenharmony_ci "spv.specConstArrayCheck.vert", 806617a3babSopenharmony_ci })), 807617a3babSopenharmony_ci FileNameAsCustomTestSuffix 808617a3babSopenharmony_ci); 809617a3babSopenharmony_ci 810617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 811617a3babSopenharmony_ci Glsl, OpenGLSemantics, 812617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 813617a3babSopenharmony_ci "glspv.esversion.vert", 814617a3babSopenharmony_ci "glspv.version.frag", 815617a3babSopenharmony_ci "glspv.version.vert", 816617a3babSopenharmony_ci "glspv.frag", 817617a3babSopenharmony_ci "glspv.vert", 818617a3babSopenharmony_ci })), 819617a3babSopenharmony_ci FileNameAsCustomTestSuffix 820617a3babSopenharmony_ci); 821617a3babSopenharmony_ci 822617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 823617a3babSopenharmony_ci Glsl, VulkanAstSemantics, 824617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 825617a3babSopenharmony_ci "vulkan.ast.vert", 826617a3babSopenharmony_ci })), 827617a3babSopenharmony_ci FileNameAsCustomTestSuffix 828617a3babSopenharmony_ci); 829617a3babSopenharmony_ci 830617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 831617a3babSopenharmony_ci Glsl, CompileVulkanToSpirvTestQCOM, 832617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 833617a3babSopenharmony_ci "spv.tpipSampleWeighted.frag", 834617a3babSopenharmony_ci "spv.tpipBoxFilter.frag", 835617a3babSopenharmony_ci "spv.tpipBlockMatchSSD.frag", 836617a3babSopenharmony_ci "spv.tpipBlockMatchSAD.frag", 837617a3babSopenharmony_ci "spv.tpipTextureArrays.frag", 838617a3babSopenharmony_ci })), 839617a3babSopenharmony_ci FileNameAsCustomTestSuffix 840617a3babSopenharmony_ci); 841617a3babSopenharmony_ci 842617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 843617a3babSopenharmony_ci Glsl, CompileVulkanToSpirvTestAMD, 844617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 845617a3babSopenharmony_ci "spv.16bitxfb.vert", 846617a3babSopenharmony_ci "spv.float16.frag", 847617a3babSopenharmony_ci "spv.float16Fetch.frag", 848617a3babSopenharmony_ci "spv.imageLoadStoreLod.frag", 849617a3babSopenharmony_ci "spv.int16.frag", 850617a3babSopenharmony_ci "spv.int16.amd.frag", 851617a3babSopenharmony_ci "spv.shaderBallotAMD.comp", 852617a3babSopenharmony_ci "spv.shaderFragMaskAMD.frag", 853617a3babSopenharmony_ci "spv.textureGatherBiasLod.frag", 854617a3babSopenharmony_ci })), 855617a3babSopenharmony_ci FileNameAsCustomTestSuffix 856617a3babSopenharmony_ci); 857617a3babSopenharmony_ci 858617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 859617a3babSopenharmony_ci Glsl, CompileVulkanToSpirvTestNV, 860617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 861617a3babSopenharmony_ci "spv.sampleMaskOverrideCoverage.frag", 862617a3babSopenharmony_ci "spv.GeometryShaderPassthrough.geom", 863617a3babSopenharmony_ci "spv.viewportArray2.vert", 864617a3babSopenharmony_ci "spv.viewportArray2.tesc", 865617a3babSopenharmony_ci "spv.stereoViewRendering.vert", 866617a3babSopenharmony_ci "spv.stereoViewRendering.tesc", 867617a3babSopenharmony_ci "spv.multiviewPerViewAttributes.vert", 868617a3babSopenharmony_ci "spv.multiviewPerViewAttributes.tesc", 869617a3babSopenharmony_ci "spv.atomicInt64.comp", 870617a3babSopenharmony_ci "spv.atomicStoreInt64.comp", 871617a3babSopenharmony_ci "spv.shadingRate.frag", 872617a3babSopenharmony_ci "spv.RayGenShader.rgen", 873617a3babSopenharmony_ci "spv.RayGenShaderArray.rgen", 874617a3babSopenharmony_ci "spv.RayGenShader_Errors.rgen", 875617a3babSopenharmony_ci "spv.RayConstants.rgen", 876617a3babSopenharmony_ci "spv.IntersectShader.rint", 877617a3babSopenharmony_ci "spv.IntersectShader_Errors.rint", 878617a3babSopenharmony_ci "spv.AnyHitShader.rahit", 879617a3babSopenharmony_ci "spv.AnyHitShader_Errors.rahit", 880617a3babSopenharmony_ci "spv.ClosestHitShader.rchit", 881617a3babSopenharmony_ci "spv.ClosestHitShader_Errors.rchit", 882617a3babSopenharmony_ci "spv.MissShader.rmiss", 883617a3babSopenharmony_ci "spv.MissShader_Errors.rmiss", 884617a3babSopenharmony_ci "spv.RayCallable.rcall", 885617a3babSopenharmony_ci "spv.RayCallable_Errors.rcall", 886617a3babSopenharmony_ci "spv.fragmentShaderBarycentric.frag", 887617a3babSopenharmony_ci "spv.fragmentShaderBarycentric2.frag", 888617a3babSopenharmony_ci "spv.computeShaderDerivatives.comp", 889617a3babSopenharmony_ci "spv.computeShaderDerivatives2.comp", 890617a3babSopenharmony_ci "spv.shaderImageFootprint.frag", 891617a3babSopenharmony_ci "spv.meshShaderBuiltins.mesh", 892617a3babSopenharmony_ci "spv.meshShaderUserDefined.mesh", 893617a3babSopenharmony_ci "spv.meshShaderPerViewBuiltins.mesh", 894617a3babSopenharmony_ci "spv.meshShaderPerViewUserDefined.mesh", 895617a3babSopenharmony_ci "spv.meshShaderPerView_Errors.mesh", 896617a3babSopenharmony_ci "spv.meshShaderSharedMem.mesh", 897617a3babSopenharmony_ci "spv.meshShaderTaskMem.mesh", 898617a3babSopenharmony_ci "spv.320.meshShaderUserDefined.mesh", 899617a3babSopenharmony_ci "spv.meshShaderRedeclBuiltins.mesh", 900617a3babSopenharmony_ci "spv.meshShaderRedeclPerViewBuiltins.mesh", 901617a3babSopenharmony_ci "spv.meshTaskShader.task", 902617a3babSopenharmony_ci "spv.perprimitiveNV.frag", 903617a3babSopenharmony_ci})), 904617a3babSopenharmony_ciFileNameAsCustomTestSuffix 905617a3babSopenharmony_ci); 906617a3babSopenharmony_ci 907617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 908617a3babSopenharmony_ci Glsl, CompileVulkanToSpirv14TestNV, 909617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 910617a3babSopenharmony_ci "spv.RayGenShaderMotion.rgen", 911617a3babSopenharmony_ci "spv.IntersectShaderMotion.rint", 912617a3babSopenharmony_ci "spv.AnyHitShaderMotion.rahit", 913617a3babSopenharmony_ci "spv.ClosestHitShaderMotion.rchit", 914617a3babSopenharmony_ci "spv.MissShaderMotion.rmiss", 915617a3babSopenharmony_ci})), 916617a3babSopenharmony_ciFileNameAsCustomTestSuffix 917617a3babSopenharmony_ci); 918617a3babSopenharmony_ci 919617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 920617a3babSopenharmony_ci Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest, 921617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 922617a3babSopenharmony_ci "spv.texture.sampler.transform.frag", 923617a3babSopenharmony_ci })), 924617a3babSopenharmony_ci FileNameAsCustomTestSuffix 925617a3babSopenharmony_ci); 926617a3babSopenharmony_ci 927617a3babSopenharmony_ciINSTANTIATE_TEST_SUITE_P( 928617a3babSopenharmony_ci Glsl, CompileVulkanToNonSemanticShaderDebugInfoTest, 929617a3babSopenharmony_ci ::testing::ValuesIn(std::vector<std::string>({ 930617a3babSopenharmony_ci "spv.debuginfo.glsl.vert", 931617a3babSopenharmony_ci "spv.debuginfo.glsl.frag", 932617a3babSopenharmony_ci "spv.debuginfo.glsl.comp", 933617a3babSopenharmony_ci "spv.debuginfo.glsl.geom", 934617a3babSopenharmony_ci "spv.debuginfo.glsl.tesc", 935617a3babSopenharmony_ci "spv.debuginfo.glsl.tese", 936617a3babSopenharmony_ci "spv.debuginfo.bufferref.glsl.frag", 937617a3babSopenharmony_ci "spv.debuginfo.const_params.glsl.comp", 938617a3babSopenharmony_ci "spv.debuginfo.scalar_types.glsl.frag", 939617a3babSopenharmony_ci })), 940617a3babSopenharmony_ci FileNameAsCustomTestSuffix 941617a3babSopenharmony_ci); 942617a3babSopenharmony_ci// clang-format on 943617a3babSopenharmony_ci 944617a3babSopenharmony_ci} // anonymous namespace 945617a3babSopenharmony_ci} // namespace glslangtest 946