[WebGPU] Update vertex-buffer-triangle-strip.html to actually use vertex buffer
authorjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Jan 2019 01:35:01 +0000 (01:35 +0000)
committerjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Jan 2019 01:35:01 +0000 (01:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=193473

Reviewed by Dean Jackson and Myles Maxfield.

Source/WebCore:

Also, switch to using the inputSlot instead of the shaderLocation field, as this seems more correct.
As of now I cannot determine an analog for WebGPU's shaderLocation in Metal.

Test: Covered by vertex-buffer-triangle-strip.html. No change in behavior.

* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::setInputStateForPipelineDescriptor): Use the inputSlot instead of shaderLocation as bufferIndex.

LayoutTests:

Refactor the vertex shader to use the vertex stage input, rather than buffer resources.

* webgpu/vertex-buffer-triangle-strip.html:

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

LayoutTests/ChangeLog
LayoutTests/webgpu/vertex-buffer-triangle-strip.html
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm

index 3a5d6c4..cebe788 100644 (file)
@@ -1,3 +1,14 @@
+2019-01-16  Justin Fan  <justin_fan@apple.com>
+
+        [WebGPU] Update vertex-buffer-triangle-strip.html to actually use vertex buffer
+        https://bugs.webkit.org/show_bug.cgi?id=193473
+
+        Reviewed by Dean Jackson and Myles Maxfield.
+
+        Refactor the vertex shader to use the vertex stage input, rather than buffer resources. 
+
+        * webgpu/vertex-buffer-triangle-strip.html:
+
 2019-01-16  Chris Dumez  <cdumez@apple.com>
 
         Regression(PSON) View becomes blank after click a cross-site download link
index ae97379..611fee4 100644 (file)
@@ -12,17 +12,24 @@ const shaderCode = `
     
 using namespace metal;
 
-struct Vertex
+struct VertexIn
+{
+    float4 position [[attribute(0)]];
+};
+
+struct VertexOut
 {
     float4 position [[position]];
 };
 
-vertex Vertex vertex_main(const device Vertex* vertex_array [[buffer(0)]], uint vid [[vertex_id]])
+vertex VertexOut vertex_main(VertexIn vertexIn [[stage_in]])
 {
-    return vertex_array[vid];
+    VertexOut vOut;
+    vOut.position = vertexIn.position;
+    return vOut;
 }
 
-fragment float4 fragment_main(Vertex vertexIn [[stage_in]])
+fragment float4 fragment_main()
 {
     return float4(0.0, 1.0, 0.0, 1.0);
 }
index 1d6bb13..2dd9d50 100644 (file)
@@ -1,3 +1,18 @@
+2019-01-16  Justin Fan  <justin_fan@apple.com>
+
+        [WebGPU] Update vertex-buffer-triangle-strip.html to actually use vertex buffer
+        https://bugs.webkit.org/show_bug.cgi?id=193473
+
+        Reviewed by Dean Jackson and Myles Maxfield.
+
+        Also, switch to using the inputSlot instead of the shaderLocation field, as this seems more correct. 
+        As of now I cannot determine an analog for WebGPU's shaderLocation in Metal. 
+
+        Test: Covered by vertex-buffer-triangle-strip.html. No change in behavior.
+
+        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
+        (WebCore::setInputStateForPipelineDescriptor): Use the inputSlot instead of shaderLocation as bufferIndex. 
+
 2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
 
         [WHLSL] Add the function stage checker
index 79ae926..8232b96 100644 (file)
@@ -134,7 +134,7 @@ static bool setInputStateForPipelineDescriptor(const char* const functionName, M
         MTLVertexAttributeDescriptor *mtlAttributeDesc = [attributeArray objectAtIndexedSubscript:i];
         mtlAttributeDesc.format = *mtlFormat;
         mtlAttributeDesc.offset = attributes[i].offset;
-        mtlAttributeDesc.bufferIndex = attributes[i].shaderLocation;
+        mtlAttributeDesc.bufferIndex = attributes[i].inputSlot;
         [mtlVertexDescriptor.get().attributes setObject:mtlAttributeDesc atIndexedSubscript:i];
     }