Use C++17 structure bindings instead of some std::tie
Not all std::tie can be replaced because structured binding introduces
references names and cannot bind member variables.
Bug: dawn:824
Change-Id: Ie2b45834aac72fb063d4aaea5949a53457bc73c9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75068
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/generator/templates/dawn_wire/server/ServerDoers.cpp b/generator/templates/dawn_wire/server/ServerDoers.cpp
index 0c3031c..a663956 100644
--- a/generator/templates/dawn_wire/server/ServerDoers.cpp
+++ b/generator/templates/dawn_wire/server/ServerDoers.cpp
@@ -94,9 +94,7 @@
//* Dawn native that makes all child objects internally null if their
//* Device is destroyed.
while (data->info->childObjectTypesAndIds.size() > 0) {
- ObjectType childObjectType;
- ObjectId childObjectId;
- std::tie(childObjectType, childObjectId) = UnpackObjectTypeAndId(
+ auto [childObjectType, childObjectId] = UnpackObjectTypeAndId(
*data->info->childObjectTypesAndIds.begin());
if (!DoDestroyObject(childObjectType, childObjectId)) {
return false;
diff --git a/src/tests/end2end/GpuMemorySynchronizationTests.cpp b/src/tests/end2end/GpuMemorySynchronizationTests.cpp
index 3c9d273..96b732b 100644
--- a/src/tests/end2end/GpuMemorySynchronizationTests.cpp
+++ b/src/tests/end2end/GpuMemorySynchronizationTests.cpp
@@ -94,9 +94,7 @@
TEST_P(GpuMemorySyncTests, ComputePass) {
// Create pipeline, bind group, and buffer for compute pass.
wgpu::Buffer buffer = CreateBuffer();
- wgpu::ComputePipeline compute;
- wgpu::BindGroup bindGroup;
- std::tie(compute, bindGroup) = CreatePipelineAndBindGroupForCompute(buffer);
+ auto [compute, bindGroup] = CreatePipelineAndBindGroupForCompute(buffer);
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
// Iterate the read-add-write operations in compute pass a few times.
@@ -126,10 +124,7 @@
// Create pipeline, bind group, and buffer for render pass.
wgpu::Buffer buffer = CreateBuffer();
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::RenderPipeline render;
- wgpu::BindGroup bindGroup;
- std::tie(render, bindGroup) =
- CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
+ auto [render, bindGroup] = CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
// Iterate the read-add-write operations in render pass a few times.
@@ -155,14 +150,9 @@
// Create pipeline, bind group, and buffer for render pass and compute pass.
wgpu::Buffer buffer = CreateBuffer();
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::RenderPipeline render;
- wgpu::BindGroup bindGroup0;
- std::tie(render, bindGroup0) =
- CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
- wgpu::ComputePipeline compute;
- wgpu::BindGroup bindGroup1;
- std::tie(compute, bindGroup1) = CreatePipelineAndBindGroupForCompute(buffer);
+ auto [render, bindGroup0] = CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
+ auto [compute, bindGroup1] = CreatePipelineAndBindGroupForCompute(buffer);
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
@@ -192,15 +182,10 @@
TEST_P(GpuMemorySyncTests, ComputePassToRenderPass) {
// Create pipeline, bind group, and buffer for compute pass and render pass.
wgpu::Buffer buffer = CreateBuffer();
- wgpu::ComputePipeline compute;
- wgpu::BindGroup bindGroup1;
- std::tie(compute, bindGroup1) = CreatePipelineAndBindGroupForCompute(buffer);
+ auto [compute, bindGroup1] = CreatePipelineAndBindGroupForCompute(buffer);
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::RenderPipeline render;
- wgpu::BindGroup bindGroup0;
- std::tie(render, bindGroup0) =
- CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
+ auto [render, bindGroup0] = CreatePipelineAndBindGroupForRender(buffer, renderPass.colorFormat);
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
@@ -300,12 +285,8 @@
// Create pipeline, bind group, and buffer for compute pass and render pass.
CreateBuffer();
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::ComputePipeline compute;
- wgpu::BindGroup computeBindGroup;
- std::tie(compute, computeBindGroup) = CreatePipelineAndBindGroupForCompute();
- wgpu::RenderPipeline render;
- wgpu::BindGroup renderBindGroup;
- std::tie(render, renderBindGroup) = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
+ auto [compute, computeBindGroup] = CreatePipelineAndBindGroupForCompute();
+ auto [render, renderBindGroup] = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
// Write data into a storage buffer in compute pass.
wgpu::CommandEncoder encoder0 = device.CreateCommandEncoder();
@@ -336,12 +317,8 @@
// Create pipeline, bind group, and buffer for compute pass and render pass.
CreateBuffer();
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::ComputePipeline compute;
- wgpu::BindGroup computeBindGroup;
- std::tie(compute, computeBindGroup) = CreatePipelineAndBindGroupForCompute();
- wgpu::RenderPipeline render;
- wgpu::BindGroup renderBindGroup;
- std::tie(render, renderBindGroup) = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
+ auto [compute, computeBindGroup] = CreatePipelineAndBindGroupForCompute();
+ auto [render, renderBindGroup] = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
// Write data into a storage buffer in compute pass.
wgpu::CommandBuffer cb[2];
@@ -375,12 +352,8 @@
// Create pipeline, bind group, and buffer for compute pass and render pass.
CreateBuffer();
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
- wgpu::ComputePipeline compute;
- wgpu::BindGroup computeBindGroup;
- std::tie(compute, computeBindGroup) = CreatePipelineAndBindGroupForCompute();
- wgpu::RenderPipeline render;
- wgpu::BindGroup renderBindGroup;
- std::tie(render, renderBindGroup) = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
+ auto [compute, computeBindGroup] = CreatePipelineAndBindGroupForCompute();
+ auto [render, renderBindGroup] = CreatePipelineAndBindGroupForRender(renderPass.colorFormat);
// Write data into a storage buffer in compute pass.
wgpu::CommandBuffer cb[2];
diff --git a/src/tests/unittests/validation/BindGroupValidationTests.cpp b/src/tests/unittests/validation/BindGroupValidationTests.cpp
index 4051aca..16302b9 100644
--- a/src/tests/unittests/validation/BindGroupValidationTests.cpp
+++ b/src/tests/unittests/validation/BindGroupValidationTests.cpp
@@ -1916,9 +1916,7 @@
// Test it is valid to set bind groups before setting the pipeline.
TEST_F(SetBindGroupPersistenceValidationTest, BindGroupBeforePipeline) {
- std::vector<wgpu::BindGroupLayout> bindGroupLayouts;
- wgpu::RenderPipeline pipeline;
- std::tie(bindGroupLayouts, pipeline) = SetUpLayoutsAndPipeline({{
+ auto [bindGroupLayouts, pipeline] = SetUpLayoutsAndPipeline({{
{{
wgpu::BufferBindingType::Uniform,
wgpu::BufferBindingType::Uniform,
@@ -1957,9 +1955,7 @@
// Test that it is valid to draw with bind groups that are not "inherited". They persist
// after a pipeline change.
TEST_F(SetBindGroupPersistenceValidationTest, NotVulkanInheritance) {
- std::vector<wgpu::BindGroupLayout> bindGroupLayoutsA;
- wgpu::RenderPipeline pipelineA;
- std::tie(bindGroupLayoutsA, pipelineA) = SetUpLayoutsAndPipeline({{
+ auto [bindGroupLayoutsA, pipelineA] = SetUpLayoutsAndPipeline({{
{{
wgpu::BufferBindingType::Uniform,
wgpu::BufferBindingType::Storage,
@@ -1970,9 +1966,7 @@
}},
}});
- std::vector<wgpu::BindGroupLayout> bindGroupLayoutsB;
- wgpu::RenderPipeline pipelineB;
- std::tie(bindGroupLayoutsB, pipelineB) = SetUpLayoutsAndPipeline({{
+ auto [bindGroupLayoutsB, pipelineB] = SetUpLayoutsAndPipeline({{
{{
wgpu::BufferBindingType::Storage,
wgpu::BufferBindingType::Uniform,