diff --git a/src/dawn/native/IndirectDrawMetadata.cpp b/src/dawn/native/IndirectDrawMetadata.cpp index db9eaac425f..dca5d23879a 100644 --- a/src/dawn/native/IndirectDrawMetadata.cpp +++ b/src/dawn/native/IndirectDrawMetadata.cpp @@ -40,8 +40,13 @@ namespace dawn::native { uint64_t ComputeMaxIndirectValidationBatchOffsetRange(const CombinedLimits& limits) { - return limits.v1.maxStorageBufferBindingSize - limits.v1.minStorageBufferOffsetAlignment - - kDrawIndexedIndirectSize; + uint64_t requiredSubtrahend = + static_cast(limits.v1.minStorageBufferOffsetAlignment) + + kDrawIndexedIndirectSize; + if (limits.v1.maxStorageBufferBindingSize <= requiredSubtrahend) { + return 0; + } + return limits.v1.maxStorageBufferBindingSize - requiredSubtrahend; } IndirectDrawMetadata::IndexedIndirectBufferValidationInfo::IndexedIndirectBufferValidationInfo(