diff --git a/dawn.json b/dawn.json
index a0e8d2c..ec441fa 100644
--- a/dawn.json
+++ b/dawn.json
@@ -799,9 +799,9 @@
             {
                 "name": "dispatch",
                 "args": [
-                    {"name": "x", "type": "uint32_t"},
-                    {"name": "y", "type": "uint32_t", "default": "1"},
-                    {"name": "z", "type": "uint32_t", "default": "1"}
+                    {"name": "workgroupCountX", "type": "uint32_t"},
+                    {"name": "workgroupCountY", "type": "uint32_t", "default": "1"},
+                    {"name": "workgroupCountZ", "type": "uint32_t", "default": "1"}
                 ]
             },
             {
diff --git a/src/dawn_native/ComputePassEncoder.cpp b/src/dawn_native/ComputePassEncoder.cpp
index 714181a..5c9a457 100644
--- a/src/dawn_native/ComputePassEncoder.cpp
+++ b/src/dawn_native/ComputePassEncoder.cpp
@@ -159,7 +159,9 @@
         }
     }
 
-    void ComputePassEncoder::APIDispatch(uint32_t x, uint32_t y, uint32_t z) {
+    void ComputePassEncoder::APIDispatch(uint32_t workgroupCountX,
+                                         uint32_t workgroupCountY,
+                                         uint32_t workgroupCountZ) {
         mEncodingContext->TryEncode(
             this,
             [&](CommandAllocator* allocator) -> MaybeError {
@@ -169,20 +171,20 @@
                     uint32_t workgroupsPerDimension =
                         GetDevice()->GetLimits().v1.maxComputeWorkgroupsPerDimension;
 
-                    DAWN_INVALID_IF(
-                        x > workgroupsPerDimension,
-                        "Dispatch size X (%u) exceeds max compute workgroups per dimension (%u).",
-                        x, workgroupsPerDimension);
+                    DAWN_INVALID_IF(workgroupCountX > workgroupsPerDimension,
+                                    "Dispatch workgroup count X (%u) exceeds max compute "
+                                    "workgroups per dimension (%u).",
+                                    workgroupCountX, workgroupsPerDimension);
 
-                    DAWN_INVALID_IF(
-                        y > workgroupsPerDimension,
-                        "Dispatch size Y (%u) exceeds max compute workgroups per dimension (%u).",
-                        y, workgroupsPerDimension);
+                    DAWN_INVALID_IF(workgroupCountY > workgroupsPerDimension,
+                                    "Dispatch workgroup count Y (%u) exceeds max compute "
+                                    "workgroups per dimension (%u).",
+                                    workgroupCountY, workgroupsPerDimension);
 
-                    DAWN_INVALID_IF(
-                        z > workgroupsPerDimension,
-                        "Dispatch size Z (%u) exceeds max compute workgroups per dimension (%u).",
-                        z, workgroupsPerDimension);
+                    DAWN_INVALID_IF(workgroupCountZ > workgroupsPerDimension,
+                                    "Dispatch workgroup count Z (%u) exceeds max compute "
+                                    "workgroups per dimension (%u).",
+                                    workgroupCountZ, workgroupsPerDimension);
                 }
 
                 // Record the synchronization scope for Dispatch, which is just the current
@@ -190,13 +192,14 @@
                 AddDispatchSyncScope();
 
                 DispatchCmd* dispatch = allocator->Allocate<DispatchCmd>(Command::Dispatch);
-                dispatch->x = x;
-                dispatch->y = y;
-                dispatch->z = z;
+                dispatch->x = workgroupCountX;
+                dispatch->y = workgroupCountY;
+                dispatch->z = workgroupCountZ;
 
                 return {};
             },
-            "encoding %s.Dispatch(%u, %u, %u).", this, x, y, z);
+            "encoding %s.Dispatch(%u, %u, %u).", this, workgroupCountX, workgroupCountY,
+            workgroupCountZ);
     }
 
     ResultOrError<std::pair<Ref<BufferBase>, uint64_t>>
diff --git a/src/dawn_native/ComputePassEncoder.h b/src/dawn_native/ComputePassEncoder.h
index 1b526fe..13e7e02 100644
--- a/src/dawn_native/ComputePassEncoder.h
+++ b/src/dawn_native/ComputePassEncoder.h
@@ -40,7 +40,9 @@
 
         void APIEndPass();
 
-        void APIDispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1);
+        void APIDispatch(uint32_t workgroupCountX,
+                         uint32_t workgroupCountY = 1,
+                         uint32_t workgroupCountZ = 1);
         void APIDispatchIndirect(BufferBase* indirectBuffer, uint64_t indirectOffset);
         void APISetPipeline(ComputePipelineBase* pipeline);
 
diff --git a/src/dawn_node/binding/GPUComputePassEncoder.cpp b/src/dawn_node/binding/GPUComputePassEncoder.cpp
index 08b1fd2..03145ee 100644
--- a/src/dawn_node/binding/GPUComputePassEncoder.cpp
+++ b/src/dawn_node/binding/GPUComputePassEncoder.cpp
@@ -37,10 +37,10 @@
     }
 
     void GPUComputePassEncoder::dispatch(Napi::Env,
-                                         interop::GPUSize32 x,
-                                         interop::GPUSize32 y,
-                                         interop::GPUSize32 z) {
-        enc_.Dispatch(x, y, z);
+                                         interop::GPUSize32 workgroupCountX,
+                                         interop::GPUSize32 workgroupCountY,
+                                         interop::GPUSize32 workgroupCountZ) {
+        enc_.Dispatch(workgroupCountX, workgroupCountY, workgroupCountZ);
     }
 
     void GPUComputePassEncoder::dispatchIndirect(
diff --git a/src/dawn_node/binding/GPUComputePassEncoder.h b/src/dawn_node/binding/GPUComputePassEncoder.h
index b7199ac..f82280b 100644
--- a/src/dawn_node/binding/GPUComputePassEncoder.h
+++ b/src/dawn_node/binding/GPUComputePassEncoder.h
@@ -37,9 +37,9 @@
         void setPipeline(Napi::Env,
                          interop::Interface<interop::GPUComputePipeline> pipeline) override;
         void dispatch(Napi::Env,
-                      interop::GPUSize32 x,
-                      interop::GPUSize32 y,
-                      interop::GPUSize32 z) override;
+                      interop::GPUSize32 workgroupCountX,
+                      interop::GPUSize32 workgroupCountY,
+                      interop::GPUSize32 workgroupCountZ) override;
         void dispatchIndirect(Napi::Env,
                               interop::Interface<interop::GPUBuffer> indirectBuffer,
                               interop::GPUSize64 indirectOffset) override;
