Use a descriptor for BindGroupLayout (#211)

* Use a descriptor for BindGroupLayout
* Fix MatchesLambda
* Add WireTests.StructureOfStructureArrayArgument
* Add BindGroupValidationTests.BindGroupLayoutCache
This commit is contained in:
Kai Ninomiya
2018-07-10 12:23:50 -07:00
committed by GitHub
parent 7883e7e59c
commit 234becf175
32 changed files with 259 additions and 163 deletions

View File

@@ -149,6 +149,7 @@ namespace utils {
return desc;
}
nxt::PipelineLayout MakeBasicPipelineLayout(const nxt::Device& device,
const nxt::BindGroupLayout* bindGroupLayout) {
nxt::PipelineLayoutDescriptor descriptor;
@@ -162,4 +163,21 @@ namespace utils {
return device.CreatePipelineLayout(&descriptor);
}
nxt::BindGroupLayout MakeBindGroupLayout(
const nxt::Device& device,
std::initializer_list<nxt::BindGroupBinding> bindingsInitializer) {
std::vector<nxt::BindGroupBinding> bindings;
nxt::ShaderStageBit kNoStages{};
for (const nxt::BindGroupBinding& binding : bindingsInitializer) {
if (binding.visibility != kNoStages) {
bindings.push_back(binding);
}
}
nxt::BindGroupLayoutDescriptor descriptor;
descriptor.numBindings = static_cast<uint32_t>(bindings.size());
descriptor.bindings = bindings.data();
return device.CreateBindGroupLayout(&descriptor);
}
} // namespace utils

View File

@@ -51,5 +51,8 @@ namespace utils {
nxt::SamplerDescriptor GetDefaultSamplerDescriptor();
nxt::PipelineLayout MakeBasicPipelineLayout(const nxt::Device& device,
const nxt::BindGroupLayout* bindGroupLayout);
nxt::BindGroupLayout MakeBindGroupLayout(
const nxt::Device& device,
std::initializer_list<nxt::BindGroupBinding> bindingsInitializer);
} // namespace utils