[Web GPU] GPUComputePassEncoder::dispatch number of thread groups, not grid size
authorjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Apr 2019 22:51:21 +0000 (22:51 +0000)
committerjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Apr 2019 22:51:21 +0000 (22:51 +0000)
https://bugs.webkit.org/show_bug.cgi?id=196984

Reviewed by Myles C. Maxfield.

Source/WebCore:

Test: Updated compute-squares.html.

* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm:
(WebCore::GPUComputePassEncoder::dispatch):

LayoutTests:

* webgpu/compute-squares.html: One thread group is enough to process the data in a single pass.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244406 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/webgpu/compute-squares.html
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm

index ef78a26..65f9d76 100644 (file)
@@ -1,3 +1,12 @@
+2019-04-17  Justin Fan  <justin_fan@apple.com>
+
+        [Web GPU] GPUComputePassEncoder::dispatch number of thread groups, not grid size
+        https://bugs.webkit.org/show_bug.cgi?id=196984
+
+        Reviewed by Myles C. Maxfield.
+
+        * webgpu/compute-squares.html: One thread group is enough to process the data in a single pass.
+
 2019-04-17  John Wilander  <wilander@apple.com>
 
         Add prioritization of ad click conversions and cleaning of sent ad click conversions
index cb7210b..40d60ab 100644 (file)
@@ -58,7 +58,8 @@ promise_test(async () => {
     
     passEncoder.setPipeline(pipeline);
     
-    passEncoder.dispatch(data.length, 1, 1);
+    // One thread group.
+    passEncoder.dispatch(1, 1, 1);
     passEncoder.endPass();
     
     device.getQueue().submit([commandEncoder.finish()]);
index 14fdaee..5e3c140 100644 (file)
@@ -1,3 +1,15 @@
+2019-04-17  Justin Fan  <justin_fan@apple.com>
+
+        [Web GPU] GPUComputePassEncoder::dispatch number of thread groups, not grid size
+        https://bugs.webkit.org/show_bug.cgi?id=196984
+
+        Reviewed by Myles C. Maxfield.
+
+        Test: Updated compute-squares.html.
+
+        * platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm:
+        (WebCore::GPUComputePassEncoder::dispatch):
+
 2019-04-17  Andy Estes  <aestes@apple.com>
 
         [iOS] Support multiple file selection in UIDocumentPickerViewController
index 6db56c0..713c1b7 100644 (file)
@@ -96,14 +96,17 @@ void GPUComputePassEncoder::dispatch(unsigned x, unsigned y, unsigned z)
     ASSERT(pipelineState);
 
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    // FIXME: This should be gleaned from the shader if not using MSL. For now, use the docs' example calculation.
+
     auto w = pipelineState.threadExecutionWidth;
     auto h = pipelineState.maxTotalThreadsPerThreadgroup / w;
+
+    // FIXME: This should be gleaned from the shader if not using MSL. For now, use the docs' example calculation.
     auto threadsPerThreadgroup = MTLSizeMake(w, h, 1);
 
-    auto threadgroupsPerGrid = MTLSizeMake((x + w - 1) / w, (y + h - 1) / h, z);
+    auto threadgroupsPerGrid = MTLSizeMake(x, y, z);
 
     [m_platformComputePassEncoder dispatchThreadgroups:threadgroupsPerGrid threadsPerThreadgroup:threadsPerThreadgroup];
+
     END_BLOCK_OBJC_EXCEPTIONS;
 }