diff options
Diffstat (limited to 'chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp')
-rw-r--r-- | chromium/third_party/dawn/src/dawn_native/PipelineLayout.cpp | 40 |
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 { |