summaryrefslogtreecommitdiff
path: root/chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp')
-rw-r--r--chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp40
1 files changed, 19 insertions, 21 deletions
diff --git a/chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp b/chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp
index 5cb05d31c5c..bc659ee3205 100644
--- a/chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp
+++ b/chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp
@@ -75,7 +75,7 @@ namespace dawn_native {
}
// static
- ResultOrError<PipelineLayoutBase*> PipelineLayoutBase::CreateDefault(
+ ResultOrError<Ref<PipelineLayoutBase>> PipelineLayoutBase::CreateDefault(
DeviceBase* device,
std::vector<StageAndDescriptor> stages) {
using EntryMap = std::map<BindingNumber, BindGroupLayoutEntry>;
@@ -177,7 +177,7 @@ namespace dawn_native {
// Loops over all the reflected BindGroupLayoutEntries from shaders.
for (const StageAndDescriptor& stage : stages) {
const EntryPointMetadata::BindingInfoArray& info =
- stage.second->module->GetEntryPoint(stage.second->entryPoint).bindings;
+ stage.module->GetEntryPoint(stage.entryPoint).bindings;
for (BindGroupIndex group(0); group < info.size(); ++group) {
for (const auto& bindingIt : info[group]) {
@@ -187,7 +187,7 @@ namespace dawn_native {
// Create the BindGroupLayoutEntry
BindGroupLayoutEntry entry = ConvertMetadataToEntry(shaderBinding);
entry.binding = static_cast<uint32_t>(bindingNumber);
- entry.visibility = StageBit(stage.first);
+ entry.visibility = StageBit(stage.shaderStage);
// Add it to our map of all entries, if there is an existing entry, then we
// need to merge, if we can.
@@ -213,32 +213,30 @@ namespace dawn_native {
}
// Create the deduced pipeline layout, validating if it is valid.
- PipelineLayoutBase* pipelineLayout = nullptr;
- {
- ityp::array<BindGroupIndex, BindGroupLayoutBase*, kMaxBindGroups> bgls = {};
- for (BindGroupIndex group(0); group < pipelineBGLCount; ++group) {
- bgls[group] = bindGroupLayouts[group].Get();
- }
+ ityp::array<BindGroupIndex, BindGroupLayoutBase*, kMaxBindGroups> bgls = {};
+ for (BindGroupIndex group(0); group < pipelineBGLCount; ++group) {
+ bgls[group] = bindGroupLayouts[group].Get();
+ }
- PipelineLayoutDescriptor desc = {};
- desc.bindGroupLayouts = bgls.data();
- desc.bindGroupLayoutCount = static_cast<uint32_t>(pipelineBGLCount);
+ PipelineLayoutDescriptor desc = {};
+ desc.bindGroupLayouts = bgls.data();
+ desc.bindGroupLayoutCount = static_cast<uint32_t>(pipelineBGLCount);
- DAWN_TRY(ValidatePipelineLayoutDescriptor(device, &desc));
- DAWN_TRY_ASSIGN(pipelineLayout, device->GetOrCreatePipelineLayout(&desc));
+ DAWN_TRY(ValidatePipelineLayoutDescriptor(device, &desc));
- ASSERT(!pipelineLayout->IsError());
- }
+ Ref<PipelineLayoutBase> result;
+ DAWN_TRY_ASSIGN(result, device->GetOrCreatePipelineLayout(&desc));
+ ASSERT(!result->IsError());
- // Sanity check in debug that the pipeline layout is compatible with the current pipeline.
+ // Sanity check in debug that the pipeline layout is compatible with the current
+ // pipeline.
for (const StageAndDescriptor& stage : stages) {
- const EntryPointMetadata& metadata =
- stage.second->module->GetEntryPoint(stage.second->entryPoint);
- ASSERT(ValidateCompatibilityWithPipelineLayout(device, metadata, pipelineLayout)
+ const EntryPointMetadata& metadata = stage.module->GetEntryPoint(stage.entryPoint);
+ ASSERT(ValidateCompatibilityWithPipelineLayout(device, metadata, result.Get())
.IsSuccess());
}
- return pipelineLayout;
+ return std::move(result);
}
const BindGroupLayoutBase* PipelineLayoutBase::GetBindGroupLayout(BindGroupIndex group) const {