diff --git a/dawn.json b/dawn.json index 8cfff53d7c..83b5518d8b 100644 --- a/dawn.json +++ b/dawn.json @@ -396,7 +396,7 @@ {"name": "group index", "type": "uint32_t"}, {"name": "group", "type": "bind group"}, {"name": "dynamic offset count", "type": "uint32_t", "default": "0"}, - {"name": "dynamic offsets", "type": "uint64_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} + {"name": "dynamic offsets", "type": "uint32_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} ] }, { @@ -834,7 +834,7 @@ {"name": "group index", "type": "uint32_t"}, {"name": "group", "type": "bind group"}, {"name": "dynamic offset count", "type": "uint32_t", "default": "0"}, - {"name": "dynamic offsets", "type": "uint64_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} + {"name": "dynamic offsets", "type": "uint32_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} ] }, { @@ -980,7 +980,7 @@ {"name": "group index", "type": "uint32_t"}, {"name": "group", "type": "bind group"}, {"name": "dynamic offset count", "type": "uint32_t", "default": "0"}, - {"name": "dynamic offsets", "type": "uint64_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} + {"name": "dynamic offsets", "type": "uint32_t", "annotation": "const*", "length": "dynamic offset count", "optional": true} ] }, { diff --git a/examples/Animometer.cpp b/examples/Animometer.cpp index 6d83f5feae..70b0773ff7 100644 --- a/examples/Animometer.cpp +++ b/examples/Animometer.cpp @@ -159,7 +159,7 @@ void frame() { pass.SetPipeline(pipeline); for (size_t i = 0; i < kNumTriangles; i++) { - uint64_t offset = i * sizeof(ShaderData); + uint32_t offset = i * sizeof(ShaderData); pass.SetBindGroup(0, bindGroup, 1, &offset); pass.Draw(3, 1, 0, 0); } diff --git a/src/dawn_native/BindGroupAndStorageBarrierTracker.h b/src/dawn_native/BindGroupAndStorageBarrierTracker.h index de63efc23e..0c016e1be7 100644 --- a/src/dawn_native/BindGroupAndStorageBarrierTracker.h +++ b/src/dawn_native/BindGroupAndStorageBarrierTracker.h @@ -22,7 +22,7 @@ namespace dawn_native { // Extends BindGroupTrackerBase to also keep track of resources that need a usage transition. - template + template class BindGroupAndStorageBarrierTrackerBase : public BindGroupTrackerBase { using Base = BindGroupTrackerBase; @@ -33,7 +33,7 @@ namespace dawn_native { void OnSetBindGroup(uint32_t index, BindGroupBase* bindGroup, uint32_t dynamicOffsetCount, - uint64_t* dynamicOffsets) { + uint32_t* dynamicOffsets) { if (this->mBindGroups[index] != bindGroup) { mBuffers[index] = {}; mBuffersNeedingBarrier[index] = {}; diff --git a/src/dawn_native/BindGroupTracker.h b/src/dawn_native/BindGroupTracker.h index 9bb7b5937f..121dd0ffa8 100644 --- a/src/dawn_native/BindGroupTracker.h +++ b/src/dawn_native/BindGroupTracker.h @@ -29,13 +29,13 @@ namespace dawn_native { // pipeline state or it changes. // |DynamicOffset| is a template parameter because offsets in Vulkan are uint32_t but uint64_t // in other backends. - template + template class BindGroupTrackerBase { public: void OnSetBindGroup(uint32_t index, BindGroupBase* bindGroup, uint32_t dynamicOffsetCount, - uint64_t* dynamicOffsets) { + uint32_t* dynamicOffsets) { ASSERT(index < kMaxBindGroups); if (mBindGroupLayoutsMask[index]) { @@ -113,21 +113,20 @@ namespace dawn_native { PipelineLayoutBase* mLastAppliedPipelineLayout = nullptr; private: - // Vulkan backend use uint32_t as dynamic offsets type, it is not correct. - // Vulkan should use VkDeviceSize. Dawn vulkan backend has to handle this. - static void SetDynamicOffsets(uint32_t* data, + // We have two overloads here because offsets in Vulkan are uint32_t but uint64_t + // in other backends. + static void SetDynamicOffsets(uint64_t* data, uint32_t dynamicOffsetCount, - uint64_t* dynamicOffsets) { + uint32_t* dynamicOffsets) { for (uint32_t i = 0; i < dynamicOffsetCount; ++i) { - ASSERT(dynamicOffsets[i] <= std::numeric_limits::max()); - data[i] = static_cast(dynamicOffsets[i]); + data[i] = static_cast(dynamicOffsets[i]); } } - static void SetDynamicOffsets(uint64_t* data, + static void SetDynamicOffsets(uint32_t* data, uint32_t dynamicOffsetCount, - uint64_t* dynamicOffsets) { - memcpy(data, dynamicOffsets, sizeof(uint64_t) * dynamicOffsetCount); + uint32_t* dynamicOffsets) { + memcpy(data, dynamicOffsets, sizeof(uint32_t) * dynamicOffsetCount); } }; diff --git a/src/dawn_native/CommandValidation.cpp b/src/dawn_native/CommandValidation.cpp index e3bb099462..b710a14c71 100644 --- a/src/dawn_native/CommandValidation.cpp +++ b/src/dawn_native/CommandValidation.cpp @@ -122,7 +122,7 @@ namespace dawn_native { case Command::SetBindGroup: { SetBindGroupCmd* cmd = commands->NextCommand(); if (cmd->dynamicOffsetCount > 0) { - commands->NextData(cmd->dynamicOffsetCount); + commands->NextData(cmd->dynamicOffsetCount); } TrackBindGroupResourceUsage(cmd->group.Get(), usageTracker); @@ -339,7 +339,7 @@ namespace dawn_native { case Command::SetBindGroup: { SetBindGroupCmd* cmd = commands->NextCommand(); if (cmd->dynamicOffsetCount > 0) { - commands->NextData(cmd->dynamicOffsetCount); + commands->NextData(cmd->dynamicOffsetCount); } TrackBindGroupResourceUsage(cmd->group.Get(), &usageTracker); diff --git a/src/dawn_native/Commands.cpp b/src/dawn_native/Commands.cpp index 0ac1f033b6..b2019a9bf1 100644 --- a/src/dawn_native/Commands.cpp +++ b/src/dawn_native/Commands.cpp @@ -136,7 +136,7 @@ namespace dawn_native { case Command::SetBindGroup: { SetBindGroupCmd* cmd = commands->NextCommand(); if (cmd->dynamicOffsetCount > 0) { - commands->NextData(cmd->dynamicOffsetCount); + commands->NextData(cmd->dynamicOffsetCount); } cmd->~SetBindGroupCmd(); } break; diff --git a/src/dawn_native/ProgrammablePassEncoder.cpp b/src/dawn_native/ProgrammablePassEncoder.cpp index e59eab8ec3..8013ccb393 100644 --- a/src/dawn_native/ProgrammablePassEncoder.cpp +++ b/src/dawn_native/ProgrammablePassEncoder.cpp @@ -73,7 +73,7 @@ namespace dawn_native { void ProgrammablePassEncoder::SetBindGroup(uint32_t groupIndex, BindGroupBase* group, uint32_t dynamicOffsetCount, - const uint64_t* dynamicOffsets) { + const uint32_t* dynamicOffsets) { mEncodingContext->TryEncode(this, [&](CommandAllocator* allocator) -> MaybeError { DAWN_TRY(GetDevice()->ValidateObject(group)); @@ -111,8 +111,8 @@ namespace dawn_native { cmd->group = group; cmd->dynamicOffsetCount = dynamicOffsetCount; if (dynamicOffsetCount > 0) { - uint64_t* offsets = allocator->AllocateData(cmd->dynamicOffsetCount); - memcpy(offsets, dynamicOffsets, dynamicOffsetCount * sizeof(uint64_t)); + uint32_t* offsets = allocator->AllocateData(cmd->dynamicOffsetCount); + memcpy(offsets, dynamicOffsets, dynamicOffsetCount * sizeof(uint32_t)); } return {}; diff --git a/src/dawn_native/ProgrammablePassEncoder.h b/src/dawn_native/ProgrammablePassEncoder.h index fc8f11a952..2508059be9 100644 --- a/src/dawn_native/ProgrammablePassEncoder.h +++ b/src/dawn_native/ProgrammablePassEncoder.h @@ -38,7 +38,7 @@ namespace dawn_native { void SetBindGroup(uint32_t groupIndex, BindGroupBase* group, uint32_t dynamicOffsetCount, - const uint64_t* dynamicOffsets); + const uint32_t* dynamicOffsets); protected: // Construct an "error" programmable pass encoder. diff --git a/src/dawn_native/d3d12/CommandBufferD3D12.cpp b/src/dawn_native/d3d12/CommandBufferD3D12.cpp index a93f9a69d7..431b4c200e 100644 --- a/src/dawn_native/d3d12/CommandBufferD3D12.cpp +++ b/src/dawn_native/d3d12/CommandBufferD3D12.cpp @@ -73,7 +73,7 @@ namespace dawn_native { namespace d3d12 { } // anonymous namespace - class BindGroupStateTracker : public BindGroupAndStorageBarrierTrackerBase { + class BindGroupStateTracker : public BindGroupAndStorageBarrierTrackerBase { public: BindGroupStateTracker(Device* device) : BindGroupAndStorageBarrierTrackerBase(), mDevice(device) { @@ -493,7 +493,7 @@ namespace dawn_native { namespace d3d12 { SetBindGroupCmd* cmd = commands->NextCommand(); BindGroup* group = ToBackend(cmd->group.Get()); if (cmd->dynamicOffsetCount) { - commands->NextData(cmd->dynamicOffsetCount); + commands->NextData(cmd->dynamicOffsetCount); } bindingTracker->TrackSetBindGroup(group, cmd->index, indexInSubmit); } break; @@ -860,10 +860,10 @@ namespace dawn_native { namespace d3d12 { case Command::SetBindGroup: { SetBindGroupCmd* cmd = mCommands.NextCommand(); BindGroup* group = ToBackend(cmd->group.Get()); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); + dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); } bindingTracker->OnSetBindGroup(cmd->index, group, cmd->dynamicOffsetCount, @@ -1154,10 +1154,10 @@ namespace dawn_native { namespace d3d12 { case Command::SetBindGroup: { SetBindGroupCmd* cmd = iter->NextCommand(); BindGroup* group = ToBackend(cmd->group.Get()); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); + dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); } bindingTracker->OnSetBindGroup(cmd->index, group, cmd->dynamicOffsetCount, diff --git a/src/dawn_native/metal/CommandBufferMTL.mm b/src/dawn_native/metal/CommandBufferMTL.mm index db3b4167e8..ebb22a3a2a 100644 --- a/src/dawn_native/metal/CommandBufferMTL.mm +++ b/src/dawn_native/metal/CommandBufferMTL.mm @@ -394,7 +394,7 @@ namespace dawn_native { namespace metal { // pipeline state. // Bind groups may be inherited because bind groups are packed in the buffer / // texture tables in contiguous order. - class BindGroupTracker : public BindGroupTrackerBase { + class BindGroupTracker : public BindGroupTrackerBase { public: explicit BindGroupTracker(StorageBufferLengthTracker* lengthTracker) : BindGroupTrackerBase(), mLengthTracker(lengthTracker) { @@ -764,9 +764,9 @@ namespace dawn_native { namespace metal { case Command::SetBindGroup: { SetBindGroupCmd* cmd = mCommands.NextCommand(); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); + dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); } bindGroups.OnSetBindGroup(cmd->index, ToBackend(cmd->group.Get()), @@ -1026,9 +1026,9 @@ namespace dawn_native { namespace metal { case Command::SetBindGroup: { SetBindGroupCmd* cmd = iter->NextCommand(); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); + dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); } bindGroups.OnSetBindGroup(cmd->index, ToBackend(cmd->group.Get()), diff --git a/src/dawn_native/opengl/CommandBufferGL.cpp b/src/dawn_native/opengl/CommandBufferGL.cpp index b50853802f..f006346825 100644 --- a/src/dawn_native/opengl/CommandBufferGL.cpp +++ b/src/dawn_native/opengl/CommandBufferGL.cpp @@ -210,7 +210,7 @@ namespace dawn_native { namespace opengl { RenderPipelineBase* mLastPipeline = nullptr; }; - class BindGroupTracker : public BindGroupTrackerBase { + class BindGroupTracker : public BindGroupTrackerBase { public: void OnSetPipeline(RenderPipeline* pipeline) { BindGroupTrackerBase::OnSetPipeline(pipeline); @@ -666,9 +666,9 @@ namespace dawn_native { namespace opengl { case Command::SetBindGroup: { SetBindGroupCmd* cmd = mCommands.NextCommand(); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); + dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); } bindGroupTracker.OnSetBindGroup(cmd->index, cmd->group.Get(), cmd->dynamicOffsetCount, dynamicOffsets); @@ -954,9 +954,9 @@ namespace dawn_native { namespace opengl { case Command::SetBindGroup: { SetBindGroupCmd* cmd = iter->NextCommand(); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); + dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); } bindGroupTracker.OnSetBindGroup(cmd->index, cmd->group.Get(), cmd->dynamicOffsetCount, dynamicOffsets); diff --git a/src/dawn_native/vulkan/CommandBufferVk.cpp b/src/dawn_native/vulkan/CommandBufferVk.cpp index 0836b01ae3..4e7026626c 100644 --- a/src/dawn_native/vulkan/CommandBufferVk.cpp +++ b/src/dawn_native/vulkan/CommandBufferVk.cpp @@ -645,9 +645,9 @@ namespace dawn_native { namespace vulkan { SetBindGroupCmd* cmd = mCommands.NextCommand(); BindGroup* bindGroup = ToBackend(cmd->group.Get()); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); + dynamicOffsets = mCommands.NextData(cmd->dynamicOffsetCount); } descriptorSets.OnSetBindGroup(cmd->index, bindGroup, cmd->dynamicOffsetCount, @@ -850,9 +850,9 @@ namespace dawn_native { namespace vulkan { case Command::SetBindGroup: { SetBindGroupCmd* cmd = iter->NextCommand(); BindGroup* bindGroup = ToBackend(cmd->group.Get()); - uint64_t* dynamicOffsets = nullptr; + uint32_t* dynamicOffsets = nullptr; if (cmd->dynamicOffsetCount > 0) { - dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); + dynamicOffsets = iter->NextData(cmd->dynamicOffsetCount); } descriptorSets.OnSetBindGroup(cmd->index, bindGroup, cmd->dynamicOffsetCount, diff --git a/src/tests/end2end/BindGroupTests.cpp b/src/tests/end2end/BindGroupTests.cpp index e958a95128..765341df28 100644 --- a/src/tests/end2end/BindGroupTests.cpp +++ b/src/tests/end2end/BindGroupTests.cpp @@ -571,7 +571,7 @@ TEST_P(BindGroupTests, SetDynamicBindGroupBeforePipeline) { wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass.renderPassInfo); // Set the first dynamic bind group. - uint64_t dynamicOffset = 0; + uint32_t dynamicOffset = 0; pass.SetBindGroup(0, bindGroup, 1, &dynamicOffset); // Set the second dynamic bind group. @@ -645,7 +645,7 @@ TEST_P(BindGroupTests, BindGroupsPersistAfterPipelineChange) { // Set the first bind group at a dynamic offset. // This bind group matches the slot in the pipeline layout. - uint64_t dynamicOffset = 0; + uint32_t dynamicOffset = 0; pass.SetBindGroup(0, bindGroup, 1, &dynamicOffset); // Set the second bind group at a dynamic offset. @@ -740,7 +740,7 @@ TEST_P(BindGroupTests, DrawThenChangePipelineAndBindGroup) { pass.SetPipeline(pipeline0); // Set the first bind group to color0 in the dynamic uniform buffer. - uint64_t dynamicOffset = 0; + uint32_t dynamicOffset = 0; pass.SetBindGroup(0, uniformBindGroup, 1, &dynamicOffset); // Set the first bind group to color1 in the dynamic uniform buffer. diff --git a/src/tests/end2end/DynamicBufferOffsetTests.cpp b/src/tests/end2end/DynamicBufferOffsetTests.cpp index 29e5b0e994..7030f0aab9 100644 --- a/src/tests/end2end/DynamicBufferOffsetTests.cpp +++ b/src/tests/end2end/DynamicBufferOffsetTests.cpp @@ -216,7 +216,7 @@ TEST_P(DynamicBufferOffsetTests, BasicRenderPipeline) { utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize); wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); - std::array offsets = {0, 0}; + std::array offsets = {0, 0}; wgpu::RenderPassEncoder renderPassEncoder = commandEncoder.BeginRenderPass(&renderPass.renderPassInfo); renderPassEncoder.SetPipeline(pipeline); @@ -237,7 +237,7 @@ TEST_P(DynamicBufferOffsetTests, SetDynamicOffestsRenderPipeline) { utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize); wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; wgpu::RenderPassEncoder renderPassEncoder = commandEncoder.BeginRenderPass(&renderPass.renderPassInfo); @@ -258,7 +258,7 @@ TEST_P(DynamicBufferOffsetTests, SetDynamicOffestsRenderPipeline) { TEST_P(DynamicBufferOffsetTests, BasicComputePipeline) { wgpu::ComputePipeline pipeline = CreateComputePipeline(); - std::array offsets = {0, 0}; + std::array offsets = {0, 0}; wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); wgpu::ComputePassEncoder computePassEncoder = commandEncoder.BeginComputePass(); @@ -277,7 +277,7 @@ TEST_P(DynamicBufferOffsetTests, BasicComputePipeline) { TEST_P(DynamicBufferOffsetTests, SetDynamicOffestsComputePipeline) { wgpu::ComputePipeline pipeline = CreateComputePipeline(); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); @@ -303,7 +303,7 @@ TEST_P(DynamicBufferOffsetTests, InheritDynamicOffestsRenderPipeline) { utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize); wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; wgpu::RenderPassEncoder renderPassEncoder = commandEncoder.BeginRenderPass(&renderPass.renderPassInfo); @@ -332,7 +332,7 @@ TEST_P(DynamicBufferOffsetTests, InheritDynamicOffestsComputePipeline) { wgpu::ComputePipeline pipeline = CreateComputePipeline(); wgpu::ComputePipeline testPipeline = CreateComputePipeline(true); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); @@ -360,9 +360,9 @@ TEST_P(DynamicBufferOffsetTests, UpdateDynamicOffestsMultipleTimesRenderPipeline utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize); wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; - std::array testOffsets = {0, 0}; + std::array testOffsets = {0, 0}; wgpu::RenderPassEncoder renderPassEncoder = commandEncoder.BeginRenderPass(&renderPass.renderPassInfo); @@ -384,9 +384,9 @@ TEST_P(DynamicBufferOffsetTests, UpdateDynamicOffestsMultipleTimesRenderPipeline TEST_P(DynamicBufferOffsetTests, UpdateDynamicOffsetsMultipleTimesComputePipeline) { wgpu::ComputePipeline pipeline = CreateComputePipeline(); - std::array offsets = {kMinDynamicBufferOffsetAlignment, + std::array offsets = {kMinDynamicBufferOffsetAlignment, kMinDynamicBufferOffsetAlignment}; - std::array testOffsets = {0, 0}; + std::array testOffsets = {0, 0}; wgpu::CommandEncoder commandEncoder = device.CreateCommandEncoder(); wgpu::ComputePassEncoder computePassEncoder = commandEncoder.BeginComputePass(); diff --git a/src/tests/perf_tests/DrawCallPerf.cpp b/src/tests/perf_tests/DrawCallPerf.cpp index d058fc8b90..84ec9b9f0e 100644 --- a/src/tests/perf_tests/DrawCallPerf.cpp +++ b/src/tests/perf_tests/DrawCallPerf.cpp @@ -541,7 +541,7 @@ void DrawCallPerf::RecordRenderCommands(Encoder pass) { break; case BindGroup::Dynamic: { - uint64_t dynamicOffset = static_cast(i * mAlignedUniformSize); + uint32_t dynamicOffset = static_cast(i * mAlignedUniformSize); pass.SetBindGroup(uniformBindGroupIndex, mUniformBindGroups[0], 1, &dynamicOffset); } break; diff --git a/src/tests/unittests/validation/BindGroupValidationTests.cpp b/src/tests/unittests/validation/BindGroupValidationTests.cpp index 1cd4a96f1e..4d005a1f58 100644 --- a/src/tests/unittests/validation/BindGroupValidationTests.cpp +++ b/src/tests/unittests/validation/BindGroupValidationTests.cpp @@ -693,7 +693,7 @@ class SetBindGroupValidationTest : public ValidationTest { } void TestRenderPassBindGroup(wgpu::BindGroup bindGroup, - uint64_t* offsets, + uint32_t* offsets, uint32_t count, bool expectation) { wgpu::RenderPipeline renderPipeline = CreateRenderPipeline(); @@ -713,7 +713,7 @@ class SetBindGroupValidationTest : public ValidationTest { } void TestComputePassBindGroup(wgpu::BindGroup bindGroup, - uint64_t* offsets, + uint32_t* offsets, uint32_t count, bool expectation) { wgpu::ComputePipeline computePipeline = CreateComputePipeline(); @@ -741,7 +741,7 @@ TEST_F(SetBindGroupValidationTest, Basic) { device, mBindGroupLayout, {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); - std::array offsets = {256, 0}; + std::array offsets = {256, 0}; TestRenderPassBindGroup(bindGroup, offsets.data(), 2, true); @@ -758,7 +758,7 @@ TEST_F(SetBindGroupValidationTest, DynamicOffsetsMismatch) { {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); // Number of offsets mismatch. - std::array mismatchOffsets = {0}; + std::array mismatchOffsets = {0}; TestRenderPassBindGroup(bindGroup, mismatchOffsets.data(), 1, false); @@ -775,7 +775,7 @@ TEST_F(SetBindGroupValidationTest, DynamicOffsetsNotAligned) { {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); // Dynamic offsets are not aligned. - std::array notAlignedOffsets = {1, 2}; + std::array notAlignedOffsets = {1, 2}; TestRenderPassBindGroup(bindGroup, notAlignedOffsets.data(), 2, false); @@ -792,7 +792,7 @@ TEST_F(SetBindGroupValidationTest, OffsetOutOfBoundDynamicUniformBuffer) { {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); // Dynamic offset + offset is larger than buffer size. - std::array overFlowOffsets = {1024, 0}; + std::array overFlowOffsets = {1024, 0}; TestRenderPassBindGroup(bindGroup, overFlowOffsets.data(), 2, false); @@ -809,7 +809,7 @@ TEST_F(SetBindGroupValidationTest, OffsetOutOfBoundDynamicStorageBuffer) { {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); // Dynamic offset + offset is larger than buffer size. - std::array overFlowOffsets = {0, 1024}; + std::array overFlowOffsets = {0, 1024}; TestRenderPassBindGroup(bindGroup, overFlowOffsets.data(), 2, false); @@ -827,7 +827,7 @@ TEST_F(SetBindGroupValidationTest, BindingSizeOutOfBoundDynamicUniformBuffer) { // Dynamic offset + offset isn't larger than buffer size. // But with binding size, it will trigger OOB error. - std::array offsets = {512, 0}; + std::array offsets = {512, 0}; TestRenderPassBindGroup(bindGroup, offsets.data(), 2, false); @@ -843,7 +843,7 @@ TEST_F(SetBindGroupValidationTest, BindingSizeOutOfBoundDynamicStorageBuffer) { {{0, uniformBuffer, 0, kBindingSize}, {1, storageBuffer, 0, kBindingSize}}); // Dynamic offset + offset isn't larger than buffer size. // But with binding size, it will trigger OOB error. - std::array offsets = {0, 512}; + std::array offsets = {0, 512}; TestRenderPassBindGroup(bindGroup, offsets.data(), 2, false); diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp index f19c5750f1..3d7523c09b 100644 --- a/src/tests/unittests/wire/WireArgumentTests.cpp +++ b/src/tests/unittests/wire/WireArgumentTests.cpp @@ -71,7 +71,7 @@ TEST_F(WireArgumentTests, ValueArrayArgument) { WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(device, nullptr); WGPUComputePassEncoder pass = wgpuCommandEncoderBeginComputePass(encoder, nullptr); - std::array testOffsets = {0, 42, 0xDEAD'BEEF'DEAD'BEEFu, 0xFFFF'FFFF'FFFF'FFFFu}; + std::array testOffsets = {0, 42, 0xDEAD'BEEFu, 0xFFFF'FFFFu}; wgpuComputePassEncoderSetBindGroup(pass, 0, bindGroup, testOffsets.size(), testOffsets.data()); WGPUCommandEncoder apiEncoder = api.GetNewCommandEncoder(); @@ -82,7 +82,7 @@ TEST_F(WireArgumentTests, ValueArrayArgument) { EXPECT_CALL(api, ComputePassEncoderSetBindGroup( apiPass, 0, apiBindGroup, testOffsets.size(), - MatchesLambda([testOffsets](const uint64_t* offsets) -> bool { + MatchesLambda([testOffsets](const uint32_t* offsets) -> bool { for (size_t i = 0; i < testOffsets.size(); i++) { if (offsets[i] != testOffsets[i]) { return false;