Clarify stride validation errors
It was pointed out that these messages, validating
that a vertex attribute offset/size fits within
the buffer stride, were confusing and easy to
misunderstand. Updating in hopes of making the
intent clearer for the reader.
Bug: 361461530
Change-Id: Ibf8f7e7f2004ffad3a5a6636876cdce079d1489f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/203614
Reviewed-by: Gregg Tavares <gman@chromium.org>
Auto-Submit: Brandon Jones <bajones@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/native/RenderPipeline.cpp b/src/dawn/native/RenderPipeline.cpp
index e93a627..64d8f41 100644
--- a/src/dawn/native/RenderPipeline.cpp
+++ b/src/dawn/native/RenderPipeline.cpp
@@ -116,20 +116,23 @@
// No underflow is possible because the max vertex format size is smaller than
// kMaxVertexBufferArrayStride.
DAWN_ASSERT(kMaxVertexBufferArrayStride >= formatInfo.byteSize);
- DAWN_INVALID_IF(
- attribute->offset > kMaxVertexBufferArrayStride - formatInfo.byteSize,
- "Attribute offset (%u) with format %s (size: %u) doesn't fit in the maximum vertex "
- "buffer stride (%u).",
- attribute->offset, attribute->format, formatInfo.byteSize, kMaxVertexBufferArrayStride);
+ DAWN_INVALID_IF(attribute->offset > kMaxVertexBufferArrayStride - formatInfo.byteSize,
+ "Attribute offset (%u) + format size (%u for %s) must be <= the maximum vertex "
+ "buffer stride (%u). Offsets larger than the maximum vertex buffer stride are "
+ "accomodated by setting buffer offsets when calling setVertexBuffer, which the "
+ "attribute offset is added to.",
+ attribute->offset, formatInfo.byteSize, attribute->format,
+ kMaxVertexBufferArrayStride);
// No overflow is possible because the offset is already validated to be less
// than kMaxVertexBufferArrayStride.
DAWN_ASSERT(attribute->offset < kMaxVertexBufferArrayStride);
DAWN_INVALID_IF(
vertexBufferStride > 0 && attribute->offset + formatInfo.byteSize > vertexBufferStride,
- "Attribute offset (%u) with format %s (size: %u) doesn't fit in the vertex buffer "
- "stride (%u).",
- attribute->offset, attribute->format, formatInfo.byteSize, vertexBufferStride);
+ "Attribute offset (%u) + format size (%u for %s) must be <= the vertex buffer stride (%u). "
+ "Offsets larger than the vertex buffer stride are accomodated by setting buffer offsets "
+ "when calling setVertexBuffer, which the attribute offset is added to.",
+ attribute->offset, formatInfo.byteSize, attribute->format, vertexBufferStride);
DAWN_INVALID_IF(attribute->offset % std::min(4u, formatInfo.byteSize) != 0,
"Attribute offset (%u) in not a multiple of %u.", attribute->offset,