Descriptorize BindGroups.

This commit adds utils::MakeBindGroup to make code craeting bind groups
nicer to read. Additional tests are added that give 100% coverage of
ValidateBindGroupDescriptor.

BUG=dawn:3

Change-Id: I56e1da8c2952306ad233845b0ec3ec32aef793d9
Reviewed-on: https://dawn-review.googlesource.com/c/2802
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez
2018-12-05 07:18:30 +00:00
committed by Commit Bot service account
parent 006f218392
commit 6f9d21e805
35 changed files with 687 additions and 416 deletions

View File

@@ -298,19 +298,22 @@ namespace {
.SetDepthStencilState(depthStencilState)
.GetResult();
auto bindGroupBuilder = device.CreateBindGroupBuilder();
bindGroupBuilder.SetLayout(bindGroupLayout);
dawn::BindGroup bindGroup;
if (hasTexture) {
const auto& textureView = textures[iTextureID];
const auto& iSamplerID = scene.textures[iTextureID].sampler;
bindGroupBuilder.SetSamplers(0, 1, &samplers[iSamplerID]);
bindGroupBuilder.SetTextureViews(1, 1, &textureView);
bindGroup = utils::MakeBindGroup(device, bindGroupLayout, {
{0, samplers[iSamplerID]},
{1, textureView}
});
} else {
bindGroup = utils::MakeBindGroup(device, bindGroupLayout, {});
}
MaterialInfo material = {
pipeline.Get(),
bindGroupBuilder.GetResult(),
pipeline,
bindGroup,
std::map<uint32_t, std::string>(),
};
materials[key] = std::move(material);