Deprecate size=0 for default in setIndexBuffer and setVertexBuffer

For size parameter in setIndexBuffer and setVertexBuffer, use
wgpu::kWholeSize rather than 0 to indicate using the default
size, i.e. remaining buffer size after offset. Using size=0 is still
avaliable but will cause a deprecation warning.

Bug: dawn:1058
Change-Id: I4c4f6ca6fc7346c225815bdcd607fed110ce2b9a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/65020
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/dawn.json b/dawn.json
index 5103746..7fadb94 100644
--- a/dawn.json
+++ b/dawn.json
@@ -1533,7 +1533,7 @@
                     {"name": "slot", "type": "uint32_t"},
                     {"name": "buffer", "type": "buffer"},
                     {"name": "offset", "type": "uint64_t", "default": "0"},
-                    {"name": "size", "type": "uint64_t", "default": "0"}
+                    {"name": "size", "type": "uint64_t", "default": "WGPU_WHOLE_SIZE"}
                 ]
             },
             {
@@ -1542,7 +1542,7 @@
                     {"name": "buffer", "type": "buffer"},
                     {"name": "format", "type": "index format"},
                     {"name": "offset", "type": "uint64_t", "default": "0"},
-                    {"name": "size", "type": "uint64_t", "default": "0"}
+                    {"name": "size", "type": "uint64_t", "default": "WGPU_WHOLE_SIZE"}
                 ]
             },
             {
@@ -1724,7 +1724,7 @@
                     {"name": "slot", "type": "uint32_t"},
                     {"name": "buffer", "type": "buffer"},
                     {"name": "offset", "type": "uint64_t", "default": "0"},
-                    {"name": "size", "type": "uint64_t", "default": "0"}
+                    {"name": "size", "type": "uint64_t", "default": "WGPU_WHOLE_SIZE"}
                 ]
             },
             {
@@ -1733,7 +1733,7 @@
                     {"name": "buffer", "type": "buffer"},
                     {"name": "format", "type": "index format"},
                     {"name": "offset", "type": "uint64_t", "default": "0"},
-                    {"name": "size", "type": "uint64_t", "default": "0"}
+                    {"name": "size", "type": "uint64_t", "default": "WGPU_WHOLE_SIZE"}
                 ]
             },
             {
diff --git a/src/dawn_native/RenderEncoderBase.cpp b/src/dawn_native/RenderEncoderBase.cpp
index 58849cf..a749884 100644
--- a/src/dawn_native/RenderEncoderBase.cpp
+++ b/src/dawn_native/RenderEncoderBase.cpp
@@ -231,7 +231,17 @@
                 }
                 uint64_t remainingSize = bufferSize - offset;
 
+                // Temporarily treat 0 as undefined for size, and give a warning
+                // TODO(dawn:1058): Remove this if block
                 if (size == 0) {
+                    size = wgpu::kWholeSize;
+                    GetDevice()->EmitDeprecationWarning(
+                        "Using size=0 to indicate default binding size for setIndexBuffer "
+                        "is deprecated. In the future it will result in a zero-size binding. "
+                        "Use `undefined` (wgpu::kWholeSize) or just omit the parameter instead.");
+                }
+
+                if (size == wgpu::kWholeSize) {
                     size = remainingSize;
                 } else {
                     if (size > remainingSize) {
@@ -239,7 +249,8 @@
                     }
                 }
             } else {
-                if (size == 0) {
+                if (size == wgpu::kWholeSize) {
+                    DAWN_ASSERT(buffer->GetSize() >= offset);
                     size = buffer->GetSize() - offset;
                 }
             }
@@ -282,7 +293,17 @@
                 }
                 uint64_t remainingSize = bufferSize - offset;
 
+                // Temporarily treat 0 as undefined for size, and give a warning
+                // TODO(dawn:1058): Remove this if block
                 if (size == 0) {
+                    size = wgpu::kWholeSize;
+                    GetDevice()->EmitDeprecationWarning(
+                        "Using size=0 to indicate default binding size for setVertexBuffer "
+                        "is deprecated. In the future it will result in a zero-size binding. "
+                        "Use `undefined` (wgpu::kWholeSize) or just omit the parameter instead.");
+                }
+
+                if (size == wgpu::kWholeSize) {
                     size = remainingSize;
                 } else {
                     if (size > remainingSize) {
@@ -290,7 +311,8 @@
                     }
                 }
             } else {
-                if (size == 0) {
+                if (size == wgpu::kWholeSize) {
+                    DAWN_ASSERT(buffer->GetSize() >= offset);
                     size = buffer->GetSize() - offset;
                 }
             }
diff --git a/src/tests/end2end/DeprecatedAPITests.cpp b/src/tests/end2end/DeprecatedAPITests.cpp
index 59bab60..0bda014 100644
--- a/src/tests/end2end/DeprecatedAPITests.cpp
+++ b/src/tests/end2end/DeprecatedAPITests.cpp
@@ -34,6 +34,43 @@
     }
 };
 
+// Test that using size=0 to indicate default size in setVertexBuffer and setIndexBuffer is
+// deprecated.
+TEST_P(DeprecationTests, SetBufferWithZeroSizeAsDefault) {
+    wgpu::BufferDescriptor bufferDesc;
+    bufferDesc.size = 128;
+    bufferDesc.usage = wgpu::BufferUsage::Index | wgpu::BufferUsage::Vertex;
+    wgpu::Buffer buffer = device.CreateBuffer(&bufferDesc);
+
+    utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
+    wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+    wgpu::RenderPassEncoder pass;
+
+    {
+        // Control case, use wgpu::kWholeSize to indicate default size.
+        wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass.renderPassInfo);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, wgpu::kWholeSize);
+        pass.SetVertexBuffer(0, buffer, 0, wgpu::kWholeSize);
+        pass.EndPass();
+    }
+
+    {
+        // Control case, omitting size parameter to indicate default size.
+        wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass.renderPassInfo);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0);
+        pass.SetVertexBuffer(0, buffer, 0);
+        pass.EndPass();
+    }
+
+    {
+        // Error case, use 0 to indicate default size will cause deprecated warning.
+        wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass.renderPassInfo);
+        EXPECT_DEPRECATION_WARNING(pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, 0));
+        EXPECT_DEPRECATION_WARNING(pass.SetVertexBuffer(0, buffer, 0, 0));
+        pass.EndPass();
+    }
+}
+
 DAWN_INSTANTIATE_TEST(DeprecationTests,
                       D3D12Backend(),
                       MetalBackend(),
diff --git a/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp b/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp
index 0a34e6a..bab630e 100644
--- a/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp
+++ b/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp
@@ -28,9 +28,9 @@
         // Parameters for testing index buffer
         struct IndexBufferParams {
             wgpu::IndexFormat indexFormat;
-            uint32_t indexBufferSize;              // Size for creating index buffer
-            uint32_t indexBufferOffsetForEncoder;  // Offset for SetIndexBuffer in encoder
-            uint32_t indexBufferSizeForEncoder;    // Size for SetIndexBuffer in encoder
+            uint64_t indexBufferSize;              // Size for creating index buffer
+            uint64_t indexBufferOffsetForEncoder;  // Offset for SetIndexBuffer in encoder
+            uint64_t indexBufferSizeForEncoder;    // Size for SetIndexBuffer in encoder
             uint32_t maxValidIndexNumber;  // max number of {indexCount + firstIndex} for this set
                                            // of parameters
         };
@@ -38,9 +38,9 @@
         // Parameters for testing vertex-step-mode and instance-step-mode vertex buffer
         struct VertexBufferParams {
             uint32_t bufferStride;
-            uint32_t bufferSize;              // Size for creating vertex buffer
-            uint32_t bufferOffsetForEncoder;  // Offset for SetVertexBuffer in encoder
-            uint32_t bufferSizeForEncoder;    // Size for SetVertexBuffer in encoder
+            uint64_t bufferSize;              // Size for creating vertex buffer
+            uint64_t bufferOffsetForEncoder;  // Offset for SetVertexBuffer in encoder
+            uint64_t bufferSizeForEncoder;    // Size for SetVertexBuffer in encoder
             uint32_t maxValidAccessNumber;    // max number of valid access time for this set of
                                               // parameters, i.e. {vertexCount + firstVertex} for
             // vertex-step-mode, and {instanceCount + firstInstance}
@@ -52,7 +52,7 @@
             const wgpu::Buffer buffer;
             wgpu::IndexFormat indexFormat;
             uint64_t offset = 0;
-            uint64_t size = 0;
+            uint64_t size = wgpu::kWholeSize;
         };
 
         // Parameters for setVertexBuffer
@@ -60,7 +60,7 @@
             uint32_t slot;
             const wgpu::Buffer buffer;
             uint64_t offset = 0;
-            uint64_t size = 0;
+            uint64_t size = wgpu::kWholeSize;
         };
         using VertexBufferList = std::vector<VertexBufferSpec>;
 
@@ -273,14 +273,16 @@
         // Parameters list for index buffer. Should cover all IndexFormat, and the zero/non-zero
         // offset and size case in SetIndexBuffer
         const std::vector<IndexBufferParams> kIndexParamsList = {
-            {wgpu::IndexFormat::Uint32, 12 * sizeof(uint32_t), 0, 0, 12},
-            {wgpu::IndexFormat::Uint32, 13 * sizeof(uint32_t), sizeof(uint32_t), 0, 12},
+            {wgpu::IndexFormat::Uint32, 12 * sizeof(uint32_t), 0, wgpu::kWholeSize, 12},
+            {wgpu::IndexFormat::Uint32, 13 * sizeof(uint32_t), sizeof(uint32_t), wgpu::kWholeSize,
+             12},
             {wgpu::IndexFormat::Uint32, 13 * sizeof(uint32_t), 0, 12 * sizeof(uint32_t), 12},
             {wgpu::IndexFormat::Uint32, 14 * sizeof(uint32_t), sizeof(uint32_t),
              12 * sizeof(uint32_t), 12},
 
-            {wgpu::IndexFormat::Uint16, 12 * sizeof(uint16_t), 0, 0, 12},
-            {wgpu::IndexFormat::Uint16, 13 * sizeof(uint16_t), sizeof(uint16_t), 0, 12},
+            {wgpu::IndexFormat::Uint16, 12 * sizeof(uint16_t), 0, wgpu::kWholeSize, 12},
+            {wgpu::IndexFormat::Uint16, 13 * sizeof(uint16_t), sizeof(uint16_t), wgpu::kWholeSize,
+             12},
             {wgpu::IndexFormat::Uint16, 13 * sizeof(uint16_t), 0, 12 * sizeof(uint16_t), 12},
             {wgpu::IndexFormat::Uint16, 14 * sizeof(uint16_t), sizeof(uint16_t),
              12 * sizeof(uint16_t), 12},
@@ -289,18 +291,19 @@
         // stride, buffer size, SetVertexBuffer size and offset.
         const std::vector<VertexBufferParams> kVertexParamsList = {
             // For stride = kFloat32x4Stride
-            {kFloat32x4Stride, 3 * kFloat32x4Stride, 0, 0, 3},
+            {kFloat32x4Stride, 3 * kFloat32x4Stride, 0, wgpu::kWholeSize, 3},
             // Non-zero offset
-            {kFloat32x4Stride, 4 * kFloat32x4Stride, kFloat32x4Stride, 0, 3},
-            // Non-zero size
+            {kFloat32x4Stride, 4 * kFloat32x4Stride, kFloat32x4Stride, wgpu::kWholeSize, 3},
+            // Non-default size
             {kFloat32x4Stride, 4 * kFloat32x4Stride, 0, 3 * kFloat32x4Stride, 3},
             // Non-zero offset and size
             {kFloat32x4Stride, 5 * kFloat32x4Stride, kFloat32x4Stride, 3 * kFloat32x4Stride, 3},
             // For stride = 2 * kFloat32x4Stride
-            {(2 * kFloat32x4Stride), 3 * (2 * kFloat32x4Stride), 0, 0, 3},
+            {(2 * kFloat32x4Stride), 3 * (2 * kFloat32x4Stride), 0, wgpu::kWholeSize, 3},
             // Non-zero offset
-            {(2 * kFloat32x4Stride), 4 * (2 * kFloat32x4Stride), (2 * kFloat32x4Stride), 0, 3},
-            // Non-zero size
+            {(2 * kFloat32x4Stride), 4 * (2 * kFloat32x4Stride), (2 * kFloat32x4Stride),
+             wgpu::kWholeSize, 3},
+            // Non-default size
             {(2 * kFloat32x4Stride), 4 * (2 * kFloat32x4Stride), 0, 3 * (2 * kFloat32x4Stride), 3},
             // Non-zero offset and size
             {(2 * kFloat32x4Stride), 5 * (2 * kFloat32x4Stride), (2 * kFloat32x4Stride),
@@ -309,18 +312,19 @@
         // Parameters list for instance-step-mode buffer.
         const std::vector<VertexBufferParams> kInstanceParamsList = {
             // For stride = kFloat32x2Stride
-            {kFloat32x2Stride, 5 * kFloat32x2Stride, 0, 0, 5},
+            {kFloat32x2Stride, 5 * kFloat32x2Stride, 0, wgpu::kWholeSize, 5},
             // Non-zero offset
-            {kFloat32x2Stride, 6 * kFloat32x2Stride, kFloat32x2Stride, 0, 5},
-            // Non-zero size
+            {kFloat32x2Stride, 6 * kFloat32x2Stride, kFloat32x2Stride, wgpu::kWholeSize, 5},
+            // Non-default size
             {kFloat32x2Stride, 6 * kFloat32x2Stride, 0, 5 * kFloat32x2Stride, 5},
             // Non-zero offset and size
             {kFloat32x2Stride, 7 * kFloat32x2Stride, kFloat32x2Stride, 5 * kFloat32x2Stride, 5},
             // For stride = 3 * kFloat32x2Stride
-            {(3 * kFloat32x2Stride), 5 * (3 * kFloat32x2Stride), 0, 0, 5},
+            {(3 * kFloat32x2Stride), 5 * (3 * kFloat32x2Stride), 0, wgpu::kWholeSize, 5},
             // Non-zero offset
-            {(3 * kFloat32x2Stride), 6 * (3 * kFloat32x2Stride), (3 * kFloat32x2Stride), 0, 5},
-            // Non-zero size
+            {(3 * kFloat32x2Stride), 6 * (3 * kFloat32x2Stride), (3 * kFloat32x2Stride),
+             wgpu::kWholeSize, 5},
+            // Non-default size
             {(3 * kFloat32x2Stride), 6 * (3 * kFloat32x2Stride), 0, 5 * (3 * kFloat32x2Stride), 5},
             // Non-zero offset and size
             {(3 * kFloat32x2Stride), 7 * (3 * kFloat32x2Stride), (3 * kFloat32x2Stride),
@@ -338,8 +342,20 @@
 
         wgpu::Buffer vertexBuffer = CreateBuffer(3 * kFloat32x4Stride);
 
-        VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, 0}};
-        TestRenderPassDraw(pipeline, vertexBufferList, 3, 1, 0, 0, true);
+        {
+            // Implicit size
+            VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, wgpu::kWholeSize}};
+            TestRenderPassDraw(pipeline, vertexBufferList, 3, 1, 0, 0, true);
+        }
+
+        {
+            // Explicit zero size
+            VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, 0}};
+            // size=0 used as default size is deprecated but still avaliable.
+            // TODO(dawn:1058): Change the expectation when size=0 special case is removed.
+            EXPECT_DEPRECATION_WARNING(
+                TestRenderPassDraw(pipeline, vertexBufferList, 3, 1, 0, 0, true));
+        }
     }
 
     // Verify vertex buffer OOB for non-instanced Draw are caught in command encoder
@@ -419,7 +435,7 @@
 
         // Build vertex buffer for 3 vertices
         wgpu::Buffer vertexBuffer = CreateBuffer(3 * kFloat32x4Stride);
-        VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, 0}};
+        VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, wgpu::kWholeSize}};
 
         IndexBufferDesc indexBufferDesc = {indexBuffer, wgpu::IndexFormat::Uint32};
 
@@ -440,8 +456,8 @@
             // Build vertex buffer for 5 instances
             wgpu::Buffer instanceBuffer = CreateBuffer(5 * kFloat32x2Stride);
 
-            VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, 0},
-                                                 {1, instanceBuffer, 0, 0}};
+            VertexBufferList vertexBufferList = {{0, vertexBuffer, 0, wgpu::kWholeSize},
+                                                 {1, instanceBuffer, 0, wgpu::kWholeSize}};
 
             IndexBufferDesc indexBufferDesc = {indexBuffer, params.indexFormat,
                                                params.indexBufferOffsetForEncoder,
@@ -528,33 +544,33 @@
         // indicate that such buffer parameter will cause OOB.
         const std::vector<VertexBufferParams> kVertexParamsListForZeroStride = {
             // Control case
-            {0, 28, 0, 0, 1},
+            {0, 28, 0, wgpu::kWholeSize, 1},
             // Non-zero offset
-            {0, 28, 4, 0, 0},
-            {0, 28, 28, 0, 0},
-            // Non-zero size
+            {0, 28, 4, wgpu::kWholeSize, 0},
+            {0, 28, 28, wgpu::kWholeSize, 0},
+            // Non-default size
             {0, 28, 0, 28, 1},
             {0, 28, 0, 27, 0},
             // Non-zero offset and size
             {0, 32, 4, 28, 1},
             {0, 31, 4, 27, 0},
-            {0, 31, 4, 0, 0},
+            {0, 31, 4, wgpu::kWholeSize, 0},
         };
 
         const std::vector<VertexBufferParams> kInstanceParamsListForZeroStride = {
             // Control case
-            {0, 20, 0, 0, 1},
+            {0, 20, 0, wgpu::kWholeSize, 1},
             // Non-zero offset
-            {0, 24, 4, 0, 1},
-            {0, 20, 4, 0, 0},
-            {0, 20, 20, 0, 0},
-            // Non-zero size
+            {0, 24, 4, wgpu::kWholeSize, 1},
+            {0, 23, 4, wgpu::kWholeSize, 0},
+            {0, 20, 4, wgpu::kWholeSize, 0},
+            {0, 20, 20, wgpu::kWholeSize, 0},
+            // Non-default size
             {0, 21, 0, 20, 1},
             {0, 20, 0, 19, 0},
             // Non-zero offset and size
             {0, 30, 4, 20, 1},
             {0, 30, 4, 19, 0},
-            {0, 23, 4, 0, 0},
         };
 
         // Build a pipeline that require a vertex step mode vertex buffer no smaller than 28 bytes
@@ -617,10 +633,10 @@
             wgpu::RenderPipeline pipeline = CreateBasicRenderPipelineWithInstance();
 
             // Set to vertexBuffer3 and instanceBuffer5 at last
-            VertexBufferList vertexBufferList = {{0, vertexBuffer2, 0, 0},
-                                                 {1, instanceBuffer4, 0, 0},
-                                                 {1, instanceBuffer5, 0, 0},
-                                                 {0, vertexBuffer3, 0, 0}};
+            VertexBufferList vertexBufferList = {{0, vertexBuffer2, 0, wgpu::kWholeSize},
+                                                 {1, instanceBuffer4, 0, wgpu::kWholeSize},
+                                                 {1, instanceBuffer5, 0, wgpu::kWholeSize},
+                                                 {0, vertexBuffer3, 0, wgpu::kWholeSize}};
 
             // For Draw, the max vertexCount is 3 and the max instanceCount is 5
             TestRenderPassDraw(pipeline, vertexBufferList, 3, 5, 0, 0, true);
@@ -633,10 +649,10 @@
                                       6, 0, 0, 0, false);
 
             // Set to vertexBuffer2 and instanceBuffer4 at last
-            vertexBufferList = VertexBufferList{{0, vertexBuffer3, 0, 0},
-                                                {1, instanceBuffer5, 0, 0},
-                                                {0, vertexBuffer2, 0, 0},
-                                                {1, instanceBuffer4, 0, 0}};
+            vertexBufferList = VertexBufferList{{0, vertexBuffer3, 0, wgpu::kWholeSize},
+                                                {1, instanceBuffer5, 0, wgpu::kWholeSize},
+                                                {0, vertexBuffer2, 0, wgpu::kWholeSize},
+                                                {1, instanceBuffer4, 0, wgpu::kWholeSize}};
 
             // For Draw, the max vertexCount is 2 and the max instanceCount is 4
             TestRenderPassDraw(pipeline, vertexBufferList, 2, 4, 0, 0, true);
@@ -653,8 +669,6 @@
         {
             wgpu::RenderPipeline pipeline = CreateBasicRenderPipeline();
 
-            VertexBufferList vertexBufferList = {{0, vertexBuffer3, 0, 0}};
-
             {
                 wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
                 wgpu::RenderPassEncoder renderPassEncoder =
@@ -665,7 +679,7 @@
                 renderPassEncoder.SetIndexBuffer(indexBuffer11, indexFormat);
                 renderPassEncoder.SetIndexBuffer(indexBuffer12, indexFormat);
 
-                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3, 0, 0);
+                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3);
                 // It should be ok to draw 12 index
                 renderPassEncoder.DrawIndexed(12, 1, 0, 0, 0);
                 renderPassEncoder.EndPass();
@@ -684,7 +698,7 @@
                 renderPassEncoder.SetIndexBuffer(indexBuffer11, indexFormat);
                 renderPassEncoder.SetIndexBuffer(indexBuffer12, indexFormat);
 
-                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3, 0, 0);
+                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3);
                 // It should be index buffer OOB to draw 13 index
                 renderPassEncoder.DrawIndexed(13, 1, 0, 0, 0);
                 renderPassEncoder.EndPass();
@@ -703,7 +717,7 @@
                 renderPassEncoder.SetIndexBuffer(indexBuffer12, indexFormat);
                 renderPassEncoder.SetIndexBuffer(indexBuffer11, indexFormat);
 
-                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3, 0, 0);
+                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3);
                 // It should be ok to draw 11 index
                 renderPassEncoder.DrawIndexed(11, 1, 0, 0, 0);
                 renderPassEncoder.EndPass();
@@ -722,7 +736,7 @@
                 renderPassEncoder.SetIndexBuffer(indexBuffer12, indexFormat);
                 renderPassEncoder.SetIndexBuffer(indexBuffer11, indexFormat);
 
-                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3, 0, 0);
+                renderPassEncoder.SetVertexBuffer(0, vertexBuffer3);
                 // It should be index buffer OOB to draw 12 index
                 renderPassEncoder.DrawIndexed(12, 1, 0, 0, 0);
                 renderPassEncoder.EndPass();
diff --git a/src/tests/unittests/validation/IndexBufferValidationTests.cpp b/src/tests/unittests/validation/IndexBufferValidationTests.cpp
index f2da91d..d13bf33 100644
--- a/src/tests/unittests/validation/IndexBufferValidationTests.cpp
+++ b/src/tests/unittests/validation/IndexBufferValidationTests.cpp
@@ -73,11 +73,11 @@
         // Explicit size
         pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, 256);
         // Implicit size
-        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, 0);
-        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256 - 4, 0);
-        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 4, 0);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, wgpu::kWholeSize);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256 - 4, wgpu::kWholeSize);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 4, wgpu::kWholeSize);
         // Implicit size of zero
-        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256, 0);
+        pass.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256, wgpu::kWholeSize);
         pass.EndPass();
         encoder.Finish();
     }
@@ -110,11 +110,11 @@
         // Explicit size
         encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, 256);
         // Implicit size
-        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, 0);
-        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256 - 4, 0);
-        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 4, 0);
+        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 0, wgpu::kWholeSize);
+        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256 - 4, wgpu::kWholeSize);
+        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 4, wgpu::kWholeSize);
         // Implicit size of zero
-        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256, 0);
+        encoder.SetIndexBuffer(buffer, wgpu::IndexFormat::Uint32, 256, wgpu::kWholeSize);
         encoder.Finish();
     }
 
diff --git a/src/tests/unittests/validation/VertexBufferValidationTests.cpp b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
index 31a6f65..f03f236 100644
--- a/src/tests/unittests/validation/VertexBufferValidationTests.cpp
+++ b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
@@ -228,11 +228,11 @@
         // Explicit size
         pass.SetVertexBuffer(0, buffer, 0, 256);
         // Implicit size
-        pass.SetVertexBuffer(0, buffer, 0, 0);
-        pass.SetVertexBuffer(0, buffer, 256 - 4, 0);
-        pass.SetVertexBuffer(0, buffer, 4, 0);
+        pass.SetVertexBuffer(0, buffer, 0, wgpu::kWholeSize);
+        pass.SetVertexBuffer(0, buffer, 256 - 4, wgpu::kWholeSize);
+        pass.SetVertexBuffer(0, buffer, 4, wgpu::kWholeSize);
         // Implicit size of zero
-        pass.SetVertexBuffer(0, buffer, 256, 0);
+        pass.SetVertexBuffer(0, buffer, 256, wgpu::kWholeSize);
         pass.EndPass();
         encoder.Finish();
     }
@@ -265,11 +265,11 @@
         // Explicit size
         encoder.SetVertexBuffer(0, buffer, 0, 256);
         // Implicit size
-        encoder.SetVertexBuffer(0, buffer, 0, 0);
-        encoder.SetVertexBuffer(0, buffer, 256 - 4, 0);
-        encoder.SetVertexBuffer(0, buffer, 4, 0);
+        encoder.SetVertexBuffer(0, buffer, 0, wgpu::kWholeSize);
+        encoder.SetVertexBuffer(0, buffer, 256 - 4, wgpu::kWholeSize);
+        encoder.SetVertexBuffer(0, buffer, 4, wgpu::kWholeSize);
         // Implicit size of zero
-        encoder.SetVertexBuffer(0, buffer, 256, 0);
+        encoder.SetVertexBuffer(0, buffer, 256, wgpu::kWholeSize);
         encoder.Finish();
     }