Guard AppleClang linker options
[platform/upstream/glslang.git] / gtests / VkRelaxed.FromFile.cpp
index d791d6c..96cd3cf 100644 (file)
@@ -48,6 +48,7 @@ namespace {
 
 struct vkRelaxedData {
     std::vector<std::string> fileNames;
+    std::vector<std::vector<std::string>> resourceSetBindings;
 };
 
 using VulkanRelaxedTest = GlslangTest <::testing::TestWithParam<vkRelaxedData>>;
@@ -106,8 +107,8 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
                 auto inQualifier = in.getType()->getQualifier();
                 auto outQualifier = out->second->getType()->getQualifier();
                 success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
-            }
-            else {
+            // These are not part of a matched interface. Other cases still need to be added.
+            } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") {
                 success &= false;
             }
         }
@@ -191,6 +192,7 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
 TEST_P(VulkanRelaxedTest, FromFile)
 {
     const auto& fileNames = GetParam().fileNames;
+    const auto& resourceSetBindings = GetParam().resourceSetBindings;
     Semantics semantics = Semantics::Vulkan;
     const size_t fileCount = fileNames.size();
     const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv);
@@ -230,6 +232,12 @@ TEST_P(VulkanRelaxedTest, FromFile)
     result.linkingOutput = program.getInfoLog();
     result.linkingError = program.getInfoDebugLog();
 
+    if (!resourceSetBindings.empty()) {
+        assert(resourceSetBindings.size() == fileNames.size());
+        for (size_t i = 0; i < shaders.size(); i++)
+            shaders[i]->setResourceSetBinding(resourceSetBindings[i]);
+    }
+
     unsigned int stage = 0;
     glslang::TIntermediate* firstIntermediate = nullptr;
     while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; }
@@ -285,12 +293,14 @@ INSTANTIATE_TEST_SUITE_P(
     ::testing::ValuesIn(std::vector<vkRelaxedData>({
         {{"vk.relaxed.frag"}},
         {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}},
+        {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}},
         {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}},
         {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}},
+        {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } },
     }))
 );
 // clang-format on
 
 }  // anonymous namespace
 }  // namespace glslangtest
-#endif 
\ No newline at end of file
+#endif