Fix wgpu::WholeSize not being set correctly inside BindGroup The only test where this can matter at the moment is the OpArrayLength test, so one of the buffers tested is repurposed to test wgpu::WholeSize with an offset. Bug: dawn:377 Change-Id: I43f22f614dff55e399246c46892a865ec77f13c4 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19080 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/BindGroup.cpp b/src/dawn_native/BindGroup.cpp index c81a2cc..421cc2a 100644 --- a/src/dawn_native/BindGroup.cpp +++ b/src/dawn_native/BindGroup.cpp
@@ -227,8 +227,9 @@ ASSERT(mBindingData.bindings[bindingIndex].Get() == nullptr); mBindingData.bindings[bindingIndex] = binding.buffer; mBindingData.bufferData[bindingIndex].offset = binding.offset; - uint64_t bufferSize = - (binding.size == wgpu::kWholeSize) ? binding.buffer->GetSize() : binding.size; + uint64_t bufferSize = (binding.size == wgpu::kWholeSize) + ? binding.buffer->GetSize() - binding.offset + : binding.size; mBindingData.bufferData[bindingIndex].size = bufferSize; continue; }
diff --git a/src/tests/end2end/OpArrayLengthTests.cpp b/src/tests/end2end/OpArrayLengthTests.cpp index fcd60ef..fa795bf 100644 --- a/src/tests/end2end/OpArrayLengthTests.cpp +++ b/src/tests/end2end/OpArrayLengthTests.cpp
@@ -32,7 +32,7 @@ bufferDesc.size = 256; mStorageBuffer256 = device.CreateBuffer(&bufferDesc); - bufferDesc.size = 512; + bufferDesc.size = 512 + 256; mStorageBuffer512 = device.CreateBuffer(&bufferDesc); // Put them all in a bind group for tests to bind them easily. @@ -47,7 +47,7 @@ { {0, mStorageBuffer4, 0, 4}, {1, mStorageBuffer256, 0, wgpu::kWholeSize}, - {2, mStorageBuffer512, 0, 512}, + {2, mStorageBuffer512, 256, wgpu::kWholeSize}, }); // Common shader code to use these buffers in shaders, assuming they are in bindgroup index