Fix #2005. Allow multiple compilation units to declare identical push_constant blocks (#2123)

* Fixes #2005

Allow multiple units in a stage to have push_constants as long
as the blocks match.
Requires #2006 to be fixed to be functional.

* tweaks to #2005 fix after some testing

* add unit tests for push constants across multiple compilation units

For #2005

* update reference output for tests that fail validation

* fix uninitialized result.validationResult
This commit is contained in:
Malcolm Bechard
2020-03-16 10:51:15 -04:00
committed by GitHub
parent 9b620aa0c1
commit 4b2483ee88
14 changed files with 503 additions and 1 deletions

View File

@@ -50,6 +50,7 @@ TEST_P(LinkTestVulkan, FromFile)
const size_t fileCount = fileNames.size();
const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::Vulkan, Target::AST);
GlslangResult result;
result.validationResult = false;
// Compile each input shader file.
bool success = true;
@@ -108,6 +109,12 @@ INSTANTIATE_TEST_CASE_P(
::testing::ValuesIn(std::vector<std::vector<std::string>>({
{"link1.vk.frag", "link2.vk.frag"},
{"spv.unit1.frag", "spv.unit2.frag", "spv.unit3.frag"},
{"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag",
"link.vk.matchingPC.0.2.frag"},
{"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag",
"link.vk.differentPC.0.2.frag"},
{"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag",
"link.vk.differentPC.1.2.frag"},
}))
);
// clang-format on