Match vertex format in dawn with webgpu

BUG=dawn:41

Change-Id: If16e615ccf6b9c7e85d41adcdb6d66baa07179da
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5280
Commit-Queue: Shaobo Yan <shaobo.yan@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/dawn.json b/dawn.json
index 493eeac..b522d7e 100644
--- a/dawn.json
+++ b/dawn.json
@@ -1094,18 +1094,36 @@
     "vertex format": {
         "category": "enum",
         "values": [
-            {"value": 0,  "name": "float r32 g32 b32 a32"},
-            {"value": 1,  "name": "float r32 g32 b32"},
-            {"value": 2,  "name": "float r32 g32"},
-            {"value": 3,  "name": "float r32"},
-            {"value": 4,  "name": "int r32 g32 b32 a32"},
-            {"value": 5,  "name": "int r32 g32 b32"},
-            {"value": 6,  "name": "int r32 g32"},
-            {"value": 7,  "name": "int r32"},
-            {"value": 8,  "name": "ushort r16 g16 b16 a16"},
-            {"value": 9,  "name": "ushort r16 g16"},
-            {"value": 10, "name": "unorm r8 g8 b8 a8"},
-            {"value": 11, "name": "unorm r8 g8"}
+            {"value": 0,  "name": "uChar2"},
+            {"value": 1,  "name": "uChar4"},
+            {"value": 2,  "name": "char2"},
+            {"value": 3,  "name": "char4"},
+            {"value": 4,  "name": "uChar2 norm"},
+            {"value": 5, "name": "uChar4 norm"},
+            {"value": 6, "name": "char2 norm"},
+            {"value": 7, "name": "char4 norm"},
+            {"value": 8, "name": "uShort2"},
+            {"value": 9, "name": "uShort4"},
+            {"value": 10, "name": "short2"},
+            {"value": 11, "name": "short4"},
+            {"value": 12, "name": "uShort2 norm"},
+            {"value": 13, "name": "uShort4 norm"},
+            {"value": 14, "name": "short2 norm"},
+            {"value": 15, "name": "short4 norm"},
+            {"value": 16, "name": "half2"},
+            {"value": 17, "name": "half4"},
+            {"value": 18, "name": "float"},
+            {"value": 19, "name": "float2"},
+            {"value": 20, "name": "float3"},
+            {"value": 21, "name": "float4"},
+            {"value": 22, "name": "uInt"},
+            {"value": 23, "name": "uInt2"},
+            {"value": 24, "name": "uInt3"},
+            {"value": 25, "name": "uInt4"},
+            {"value": 26, "name": "int"},
+            {"value": 27, "name": "int2"},
+            {"value": 28, "name": "int3"},
+            {"value": 29, "name": "int4"}
         ]
     },
     "ObjectType": {
diff --git a/examples/ComputeBoids.cpp b/examples/ComputeBoids.cpp
index 27c60f5..196fc98 100644
--- a/examples/ComputeBoids.cpp
+++ b/examples/ComputeBoids.cpp
@@ -118,13 +118,13 @@
     attribute1.shaderLocation = 0;
     attribute1.inputSlot = 0;
     attribute1.offset = offsetof(Particle, pos);
-    attribute1.format = dawn::VertexFormat::FloatR32G32;
+    attribute1.format = dawn::VertexFormat::Float2;
 
     dawn::VertexAttributeDescriptor attribute2;
     attribute2.shaderLocation = 1;
     attribute2.inputSlot = 0;
     attribute2.offset = offsetof(Particle, vel);
-    attribute2.format = dawn::VertexFormat::FloatR32G32;
+    attribute2.format = dawn::VertexFormat::Float2;
 
     dawn::VertexInputDescriptor input1;
     input1.inputSlot = 0;
@@ -135,7 +135,7 @@
     attribute3.shaderLocation = 2;
     attribute3.inputSlot = 1;
     attribute3.offset = 0;
-    attribute3.format = dawn::VertexFormat::FloatR32G32;
+    attribute3.format = dawn::VertexFormat::Float2;
 
     dawn::VertexInputDescriptor input2;
     input2.inputSlot = 1;
diff --git a/examples/CppHelloTriangle.cpp b/examples/CppHelloTriangle.cpp
index a55e99d..d431db2 100644
--- a/examples/CppHelloTriangle.cpp
+++ b/examples/CppHelloTriangle.cpp
@@ -115,7 +115,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = 0;
-    attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+    attribute.format = dawn::VertexFormat::Float4;
 
     dawn::VertexInputDescriptor input;
     input.inputSlot = 0;
diff --git a/examples/CubeReflection.cpp b/examples/CubeReflection.cpp
index fbe0752..bba0e52 100644
--- a/examples/CubeReflection.cpp
+++ b/examples/CubeReflection.cpp
@@ -160,13 +160,13 @@
     attribute1.shaderLocation = 0;
     attribute1.inputSlot = 0;
     attribute1.offset = 0;
-    attribute1.format = dawn::VertexFormat::FloatR32G32B32;
+    attribute1.format = dawn::VertexFormat::Float3;
 
     dawn::VertexAttributeDescriptor attribute2;
     attribute2.shaderLocation = 1;
     attribute2.inputSlot = 0;
     attribute2.offset = 3 * sizeof(float);
-    attribute2.format = dawn::VertexFormat::FloatR32G32B32;
+    attribute2.format = dawn::VertexFormat::Float3;
 
     dawn::VertexInputDescriptor input;
     input.inputSlot = 0;
diff --git a/examples/glTFViewer/glTFViewer.cpp b/examples/glTFViewer/glTFViewer.cpp
index 377fe69..41e836f 100644
--- a/examples/glTFViewer/glTFViewer.cpp
+++ b/examples/glTFViewer/glTFViewer.cpp
@@ -107,13 +107,13 @@
     bool techniqueParameterTypeToVertexFormat(int type, dawn::VertexFormat *format) {
         switch (type) {
             case gl::FloatVec2:
-                *format = dawn::VertexFormat::FloatR32G32;
+                *format = dawn::VertexFormat::Float2;
                 return true;
             case gl::FloatVec3:
-                *format = dawn::VertexFormat::FloatR32G32B32;
+                *format = dawn::VertexFormat::Float3;
                 return true;
             case gl::FloatVec4:
-                *format = dawn::VertexFormat::FloatR32G32B32A32;
+                *format = dawn::VertexFormat::Float4;
                 return true;
             default:
                 return false;
@@ -290,7 +290,7 @@
             attribute.offset = 0;
             attribute.shaderLocation = i;
             attribute.inputSlot = i;
-            attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+            attribute.format = dawn::VertexFormat::Float4;
 
             dawn::VertexInputDescriptor input;
             input.inputSlot = i;
diff --git a/src/dawn_native/InputState.cpp b/src/dawn_native/InputState.cpp
index 6440069..dce0a43 100644
--- a/src/dawn_native/InputState.cpp
+++ b/src/dawn_native/InputState.cpp
@@ -33,23 +33,42 @@
         }
     }
 
+    // TODO(shaobo.yan@intel.com): Add end2end test to cover all the formats.
     uint32_t VertexFormatNumComponents(dawn::VertexFormat format) {
         switch (format) {
-            case dawn::VertexFormat::FloatR32G32B32A32:
-            case dawn::VertexFormat::IntR32G32B32A32:
-            case dawn::VertexFormat::UshortR16G16B16A16:
-            case dawn::VertexFormat::UnormR8G8B8A8:
+            case dawn::VertexFormat::UChar4:
+            case dawn::VertexFormat::Char4:
+            case dawn::VertexFormat::UChar4Norm:
+            case dawn::VertexFormat::Char4Norm:
+            case dawn::VertexFormat::UShort4:
+            case dawn::VertexFormat::Short4:
+            case dawn::VertexFormat::UShort4Norm:
+            case dawn::VertexFormat::Short4Norm:
+            case dawn::VertexFormat::Half4:
+            case dawn::VertexFormat::Float4:
+            case dawn::VertexFormat::UInt4:
+            case dawn::VertexFormat::Int4:
                 return 4;
-            case dawn::VertexFormat::FloatR32G32B32:
-            case dawn::VertexFormat::IntR32G32B32:
+            case dawn::VertexFormat::Float3:
+            case dawn::VertexFormat::UInt3:
+            case dawn::VertexFormat::Int3:
                 return 3;
-            case dawn::VertexFormat::FloatR32G32:
-            case dawn::VertexFormat::IntR32G32:
-            case dawn::VertexFormat::UshortR16G16:
-            case dawn::VertexFormat::UnormR8G8:
+            case dawn::VertexFormat::UChar2:
+            case dawn::VertexFormat::Char2:
+            case dawn::VertexFormat::UChar2Norm:
+            case dawn::VertexFormat::Char2Norm:
+            case dawn::VertexFormat::UShort2:
+            case dawn::VertexFormat::Short2:
+            case dawn::VertexFormat::UShort2Norm:
+            case dawn::VertexFormat::Short2Norm:
+            case dawn::VertexFormat::Half2:
+            case dawn::VertexFormat::Float2:
+            case dawn::VertexFormat::UInt2:
+            case dawn::VertexFormat::Int2:
                 return 2;
-            case dawn::VertexFormat::FloatR32:
-            case dawn::VertexFormat::IntR32:
+            case dawn::VertexFormat::Float:
+            case dawn::VertexFormat::UInt:
+            case dawn::VertexFormat::Int:
                 return 1;
             default:
                 UNREACHABLE();
@@ -58,22 +77,40 @@
 
     size_t VertexFormatComponentSize(dawn::VertexFormat format) {
         switch (format) {
-            case dawn::VertexFormat::FloatR32G32B32A32:
-            case dawn::VertexFormat::FloatR32G32B32:
-            case dawn::VertexFormat::FloatR32G32:
-            case dawn::VertexFormat::FloatR32:
-                return sizeof(float);
-            case dawn::VertexFormat::IntR32G32B32A32:
-            case dawn::VertexFormat::IntR32G32B32:
-            case dawn::VertexFormat::IntR32G32:
-            case dawn::VertexFormat::IntR32:
-                return sizeof(int32_t);
-            case dawn::VertexFormat::UshortR16G16B16A16:
-            case dawn::VertexFormat::UshortR16G16:
+            case dawn::VertexFormat::UChar2:
+            case dawn::VertexFormat::UChar4:
+            case dawn::VertexFormat::Char2:
+            case dawn::VertexFormat::Char4:
+            case dawn::VertexFormat::UChar2Norm:
+            case dawn::VertexFormat::UChar4Norm:
+            case dawn::VertexFormat::Char2Norm:
+            case dawn::VertexFormat::Char4Norm:
+                return sizeof(char);
+            case dawn::VertexFormat::UShort2:
+            case dawn::VertexFormat::UShort4:
+            case dawn::VertexFormat::UShort2Norm:
+            case dawn::VertexFormat::UShort4Norm:
+            case dawn::VertexFormat::Short2:
+            case dawn::VertexFormat::Short4:
+            case dawn::VertexFormat::Short2Norm:
+            case dawn::VertexFormat::Short4Norm:
+            case dawn::VertexFormat::Half2:
+            case dawn::VertexFormat::Half4:
                 return sizeof(uint16_t);
-            case dawn::VertexFormat::UnormR8G8B8A8:
-            case dawn::VertexFormat::UnormR8G8:
-                return sizeof(uint8_t);
+            case dawn::VertexFormat::Float:
+            case dawn::VertexFormat::Float2:
+            case dawn::VertexFormat::Float3:
+            case dawn::VertexFormat::Float4:
+                return sizeof(float);
+            case dawn::VertexFormat::UInt:
+            case dawn::VertexFormat::UInt2:
+            case dawn::VertexFormat::UInt3:
+            case dawn::VertexFormat::UInt4:
+            case dawn::VertexFormat::Int:
+            case dawn::VertexFormat::Int2:
+            case dawn::VertexFormat::Int3:
+            case dawn::VertexFormat::Int4:
+                return sizeof(int32_t);
             default:
                 UNREACHABLE();
         }
diff --git a/src/dawn_native/d3d12/InputStateD3D12.cpp b/src/dawn_native/d3d12/InputStateD3D12.cpp
index edeb4c0..fcfa6b1 100644
--- a/src/dawn_native/d3d12/InputStateD3D12.cpp
+++ b/src/dawn_native/d3d12/InputStateD3D12.cpp
@@ -20,30 +20,66 @@
 
     static DXGI_FORMAT VertexFormatType(dawn::VertexFormat format) {
         switch (format) {
-            case dawn::VertexFormat::FloatR32G32B32A32:
-                return DXGI_FORMAT_R32G32B32A32_FLOAT;
-            case dawn::VertexFormat::FloatR32G32B32:
-                return DXGI_FORMAT_R32G32B32_FLOAT;
-            case dawn::VertexFormat::FloatR32G32:
-                return DXGI_FORMAT_R32G32_FLOAT;
-            case dawn::VertexFormat::FloatR32:
-                return DXGI_FORMAT_R32_FLOAT;
-            case dawn::VertexFormat::IntR32G32B32A32:
-                return DXGI_FORMAT_R32G32B32A32_SINT;
-            case dawn::VertexFormat::IntR32G32B32:
-                return DXGI_FORMAT_R32G32B32_SINT;
-            case dawn::VertexFormat::IntR32G32:
-                return DXGI_FORMAT_R32G32_SINT;
-            case dawn::VertexFormat::IntR32:
-                return DXGI_FORMAT_R32_SINT;
-            case dawn::VertexFormat::UshortR16G16B16A16:
-                return DXGI_FORMAT_R16G16B16A16_UINT;
-            case dawn::VertexFormat::UshortR16G16:
-                return DXGI_FORMAT_R16G16_UINT;
-            case dawn::VertexFormat::UnormR8G8B8A8:
-                return DXGI_FORMAT_R8G8B8A8_UNORM;
-            case dawn::VertexFormat::UnormR8G8:
+            case dawn::VertexFormat::UChar2:
+                return DXGI_FORMAT_R8G8_UINT;
+            case dawn::VertexFormat::UChar4:
+                return DXGI_FORMAT_R8G8B8A8_UINT;
+            case dawn::VertexFormat::Char2:
+                return DXGI_FORMAT_R8G8_SINT;
+            case dawn::VertexFormat::Char4:
+                return DXGI_FORMAT_R8G8B8A8_SINT;
+            case dawn::VertexFormat::UChar2Norm:
                 return DXGI_FORMAT_R8G8_UNORM;
+            case dawn::VertexFormat::UChar4Norm:
+                return DXGI_FORMAT_R8G8B8A8_UNORM;
+            case dawn::VertexFormat::Char2Norm:
+                return DXGI_FORMAT_R8G8_SNORM;
+            case dawn::VertexFormat::Char4Norm:
+                return DXGI_FORMAT_R8G8B8A8_SNORM;
+            case dawn::VertexFormat::UShort2:
+                return DXGI_FORMAT_R16G16_UINT;
+            case dawn::VertexFormat::UShort4:
+                return DXGI_FORMAT_R16G16B16A16_UINT;
+            case dawn::VertexFormat::Short2:
+                return DXGI_FORMAT_R16G16_SINT;
+            case dawn::VertexFormat::Short4:
+                return DXGI_FORMAT_R16G16B16A16_SINT;
+            case dawn::VertexFormat::UShort2Norm:
+                return DXGI_FORMAT_R16G16_UNORM;
+            case dawn::VertexFormat::UShort4Norm:
+                return DXGI_FORMAT_R16G16B16A16_UNORM;
+            case dawn::VertexFormat::Short2Norm:
+                return DXGI_FORMAT_R16G16_SNORM;
+            case dawn::VertexFormat::Short4Norm:
+                return DXGI_FORMAT_R16G16B16A16_SNORM;
+            case dawn::VertexFormat::Half2:
+                return DXGI_FORMAT_R16G16_FLOAT;
+            case dawn::VertexFormat::Half4:
+                return DXGI_FORMAT_R16G16B16A16_FLOAT;
+            case dawn::VertexFormat::Float:
+                return DXGI_FORMAT_R32_FLOAT;
+            case dawn::VertexFormat::Float2:
+                return DXGI_FORMAT_R32G32_FLOAT;
+            case dawn::VertexFormat::Float3:
+                return DXGI_FORMAT_R32G32B32_FLOAT;
+            case dawn::VertexFormat::Float4:
+                return DXGI_FORMAT_R32G32B32A32_FLOAT;
+            case dawn::VertexFormat::UInt:
+                return DXGI_FORMAT_R32_UINT;
+            case dawn::VertexFormat::UInt2:
+                return DXGI_FORMAT_R32G32_UINT;
+            case dawn::VertexFormat::UInt3:
+                return DXGI_FORMAT_R32G32B32_UINT;
+            case dawn::VertexFormat::UInt4:
+                return DXGI_FORMAT_R32G32B32A32_UINT;
+            case dawn::VertexFormat::Int:
+                return DXGI_FORMAT_R32_SINT;
+            case dawn::VertexFormat::Int2:
+                return DXGI_FORMAT_R32G32_SINT;
+            case dawn::VertexFormat::Int3:
+                return DXGI_FORMAT_R32G32B32_SINT;
+            case dawn::VertexFormat::Int4:
+                return DXGI_FORMAT_R32G32B32A32_SINT;
             default:
                 UNREACHABLE();
         }
diff --git a/src/dawn_native/metal/InputStateMTL.mm b/src/dawn_native/metal/InputStateMTL.mm
index 0763a3d..ead1dac 100644
--- a/src/dawn_native/metal/InputStateMTL.mm
+++ b/src/dawn_native/metal/InputStateMTL.mm
@@ -21,30 +21,66 @@
     namespace {
         MTLVertexFormat VertexFormatType(dawn::VertexFormat format) {
             switch (format) {
-                case dawn::VertexFormat::FloatR32G32B32A32:
-                    return MTLVertexFormatFloat4;
-                case dawn::VertexFormat::FloatR32G32B32:
-                    return MTLVertexFormatFloat3;
-                case dawn::VertexFormat::FloatR32G32:
-                    return MTLVertexFormatFloat2;
-                case dawn::VertexFormat::FloatR32:
-                    return MTLVertexFormatFloat;
-                case dawn::VertexFormat::IntR32G32B32A32:
-                    return MTLVertexFormatInt4;
-                case dawn::VertexFormat::IntR32G32B32:
-                    return MTLVertexFormatInt3;
-                case dawn::VertexFormat::IntR32G32:
-                    return MTLVertexFormatInt2;
-                case dawn::VertexFormat::IntR32:
-                    return MTLVertexFormatInt;
-                case dawn::VertexFormat::UshortR16G16B16A16:
-                    return MTLVertexFormatUShort4;
-                case dawn::VertexFormat::UshortR16G16:
-                    return MTLVertexFormatUShort2;
-                case dawn::VertexFormat::UnormR8G8B8A8:
-                    return MTLVertexFormatUChar4Normalized;
-                case dawn::VertexFormat::UnormR8G8:
+                case dawn::VertexFormat::UChar2:
+                    return MTLVertexFormatUChar2;
+                case dawn::VertexFormat::UChar4:
+                    return MTLVertexFormatUChar4;
+                case dawn::VertexFormat::Char2:
+                    return MTLVertexFormatChar2;
+                case dawn::VertexFormat::Char4:
+                    return MTLVertexFormatChar4;
+                case dawn::VertexFormat::UChar2Norm:
                     return MTLVertexFormatUChar2Normalized;
+                case dawn::VertexFormat::UChar4Norm:
+                    return MTLVertexFormatUChar4Normalized;
+                case dawn::VertexFormat::Char2Norm:
+                    return MTLVertexFormatChar2Normalized;
+                case dawn::VertexFormat::Char4Norm:
+                    return MTLVertexFormatChar4Normalized;
+                case dawn::VertexFormat::UShort2:
+                    return MTLVertexFormatUShort2;
+                case dawn::VertexFormat::UShort4:
+                    return MTLVertexFormatUShort4;
+                case dawn::VertexFormat::Short2:
+                    return MTLVertexFormatShort2;
+                case dawn::VertexFormat::Short4:
+                    return MTLVertexFormatShort4;
+                case dawn::VertexFormat::UShort2Norm:
+                    return MTLVertexFormatUShort2Normalized;
+                case dawn::VertexFormat::UShort4Norm:
+                    return MTLVertexFormatUShort4Normalized;
+                case dawn::VertexFormat::Short2Norm:
+                    return MTLVertexFormatShort2Normalized;
+                case dawn::VertexFormat::Short4Norm:
+                    return MTLVertexFormatShort4Normalized;
+                case dawn::VertexFormat::Half2:
+                    return MTLVertexFormatHalf2;
+                case dawn::VertexFormat::Half4:
+                    return MTLVertexFormatHalf4;
+                case dawn::VertexFormat::Float:
+                    return MTLVertexFormatFloat;
+                case dawn::VertexFormat::Float2:
+                    return MTLVertexFormatFloat2;
+                case dawn::VertexFormat::Float3:
+                    return MTLVertexFormatFloat3;
+                case dawn::VertexFormat::Float4:
+                    return MTLVertexFormatFloat4;
+                case dawn::VertexFormat::UInt:
+                    return MTLVertexFormatUInt;
+                case dawn::VertexFormat::UInt2:
+                    return MTLVertexFormatUInt2;
+                case dawn::VertexFormat::UInt3:
+                    return MTLVertexFormatUInt3;
+                case dawn::VertexFormat::UInt4:
+                    return MTLVertexFormatUInt4;
+                case dawn::VertexFormat::Int:
+                    return MTLVertexFormatInt;
+                case dawn::VertexFormat::Int2:
+                    return MTLVertexFormatInt2;
+                case dawn::VertexFormat::Int3:
+                    return MTLVertexFormatInt3;
+                case dawn::VertexFormat::Int4:
+                    return MTLVertexFormatInt4;
             }
         }
 
diff --git a/src/dawn_native/opengl/CommandBufferGL.cpp b/src/dawn_native/opengl/CommandBufferGL.cpp
index 098ca1e..f25d303 100644
--- a/src/dawn_native/opengl/CommandBufferGL.cpp
+++ b/src/dawn_native/opengl/CommandBufferGL.cpp
@@ -47,22 +47,44 @@
 
         GLenum VertexFormatType(dawn::VertexFormat format) {
             switch (format) {
-                case dawn::VertexFormat::FloatR32G32B32A32:
-                case dawn::VertexFormat::FloatR32G32B32:
-                case dawn::VertexFormat::FloatR32G32:
-                case dawn::VertexFormat::FloatR32:
-                    return GL_FLOAT;
-                case dawn::VertexFormat::IntR32G32B32A32:
-                case dawn::VertexFormat::IntR32G32B32:
-                case dawn::VertexFormat::IntR32G32:
-                case dawn::VertexFormat::IntR32:
-                    return GL_INT;
-                case dawn::VertexFormat::UshortR16G16B16A16:
-                case dawn::VertexFormat::UshortR16G16:
-                    return GL_UNSIGNED_SHORT;
-                case dawn::VertexFormat::UnormR8G8B8A8:
-                case dawn::VertexFormat::UnormR8G8:
+                case dawn::VertexFormat::UChar2:
+                case dawn::VertexFormat::UChar4:
+                case dawn::VertexFormat::UChar2Norm:
+                case dawn::VertexFormat::UChar4Norm:
                     return GL_UNSIGNED_BYTE;
+                case dawn::VertexFormat::Char2:
+                case dawn::VertexFormat::Char4:
+                case dawn::VertexFormat::Char2Norm:
+                case dawn::VertexFormat::Char4Norm:
+                    return GL_BYTE;
+                case dawn::VertexFormat::UShort2:
+                case dawn::VertexFormat::UShort4:
+                case dawn::VertexFormat::UShort2Norm:
+                case dawn::VertexFormat::UShort4Norm:
+                    return GL_UNSIGNED_SHORT;
+                case dawn::VertexFormat::Short2:
+                case dawn::VertexFormat::Short4:
+                case dawn::VertexFormat::Short2Norm:
+                case dawn::VertexFormat::Short4Norm:
+                    return GL_SHORT;
+                case dawn::VertexFormat::Half2:
+                case dawn::VertexFormat::Half4:
+                    return GL_HALF_FLOAT;
+                case dawn::VertexFormat::Float:
+                case dawn::VertexFormat::Float2:
+                case dawn::VertexFormat::Float3:
+                case dawn::VertexFormat::Float4:
+                    return GL_FLOAT;
+                case dawn::VertexFormat::UInt:
+                case dawn::VertexFormat::UInt2:
+                case dawn::VertexFormat::UInt3:
+                case dawn::VertexFormat::UInt4:
+                    return GL_UNSIGNED_INT;
+                case dawn::VertexFormat::Int:
+                case dawn::VertexFormat::Int2:
+                case dawn::VertexFormat::Int3:
+                case dawn::VertexFormat::Int4:
+                    return GL_INT;
                 default:
                     UNREACHABLE();
             }
@@ -70,8 +92,14 @@
 
         GLboolean VertexFormatIsNormalized(dawn::VertexFormat format) {
             switch (format) {
-                case dawn::VertexFormat::UnormR8G8B8A8:
-                case dawn::VertexFormat::UnormR8G8:
+                case dawn::VertexFormat::UChar2Norm:
+                case dawn::VertexFormat::UChar4Norm:
+                case dawn::VertexFormat::Char2Norm:
+                case dawn::VertexFormat::Char4Norm:
+                case dawn::VertexFormat::UShort2Norm:
+                case dawn::VertexFormat::UShort4Norm:
+                case dawn::VertexFormat::Short2Norm:
+                case dawn::VertexFormat::Short4Norm:
                     return GL_TRUE;
                 default:
                     return GL_FALSE;
diff --git a/src/dawn_native/vulkan/InputStateVk.cpp b/src/dawn_native/vulkan/InputStateVk.cpp
index 2e8b5f5..3e704ae 100644
--- a/src/dawn_native/vulkan/InputStateVk.cpp
+++ b/src/dawn_native/vulkan/InputStateVk.cpp
@@ -33,30 +33,66 @@
 
         VkFormat VulkanVertexFormat(dawn::VertexFormat format) {
             switch (format) {
-                case dawn::VertexFormat::FloatR32G32B32A32:
-                    return VK_FORMAT_R32G32B32A32_SFLOAT;
-                case dawn::VertexFormat::FloatR32G32B32:
-                    return VK_FORMAT_R32G32B32_SFLOAT;
-                case dawn::VertexFormat::FloatR32G32:
-                    return VK_FORMAT_R32G32_SFLOAT;
-                case dawn::VertexFormat::FloatR32:
-                    return VK_FORMAT_R32_SFLOAT;
-                case dawn::VertexFormat::IntR32G32B32A32:
-                    return VK_FORMAT_R32G32B32A32_SINT;
-                case dawn::VertexFormat::IntR32G32B32:
-                    return VK_FORMAT_R32G32B32_SINT;
-                case dawn::VertexFormat::IntR32G32:
-                    return VK_FORMAT_R32G32_SINT;
-                case dawn::VertexFormat::IntR32:
-                    return VK_FORMAT_R32_SINT;
-                case dawn::VertexFormat::UshortR16G16B16A16:
-                    return VK_FORMAT_R16G16B16A16_UINT;
-                case dawn::VertexFormat::UshortR16G16:
-                    return VK_FORMAT_R16G16_UINT;
-                case dawn::VertexFormat::UnormR8G8B8A8:
-                    return VK_FORMAT_R8G8B8A8_UNORM;
-                case dawn::VertexFormat::UnormR8G8:
+                case dawn::VertexFormat::UChar2:
+                    return VK_FORMAT_R8G8_UINT;
+                case dawn::VertexFormat::UChar4:
+                    return VK_FORMAT_R8G8B8A8_UINT;
+                case dawn::VertexFormat::Char2:
+                    return VK_FORMAT_R8G8_SINT;
+                case dawn::VertexFormat::Char4:
+                    return VK_FORMAT_R8G8B8A8_SINT;
+                case dawn::VertexFormat::UChar2Norm:
                     return VK_FORMAT_R8G8_UNORM;
+                case dawn::VertexFormat::UChar4Norm:
+                    return VK_FORMAT_R8G8B8A8_UNORM;
+                case dawn::VertexFormat::Char2Norm:
+                    return VK_FORMAT_R8G8_SNORM;
+                case dawn::VertexFormat::Char4Norm:
+                    return VK_FORMAT_R8G8B8A8_SNORM;
+                case dawn::VertexFormat::UShort2:
+                    return VK_FORMAT_R16G16_UINT;
+                case dawn::VertexFormat::UShort4:
+                    return VK_FORMAT_R16G16B16A16_UINT;
+                case dawn::VertexFormat::Short2:
+                    return VK_FORMAT_R16G16_SINT;
+                case dawn::VertexFormat::Short4:
+                    return VK_FORMAT_R16G16B16A16_SINT;
+                case dawn::VertexFormat::UShort2Norm:
+                    return VK_FORMAT_R16G16_UNORM;
+                case dawn::VertexFormat::UShort4Norm:
+                    return VK_FORMAT_R16G16B16A16_UNORM;
+                case dawn::VertexFormat::Short2Norm:
+                    return VK_FORMAT_R16G16_SNORM;
+                case dawn::VertexFormat::Short4Norm:
+                    return VK_FORMAT_R16G16B16A16_SNORM;
+                case dawn::VertexFormat::Half2:
+                    return VK_FORMAT_R16G16_SFLOAT;
+                case dawn::VertexFormat::Half4:
+                    return VK_FORMAT_R16G16B16A16_SFLOAT;
+                case dawn::VertexFormat::Float:
+                    return VK_FORMAT_R32_SFLOAT;
+                case dawn::VertexFormat::Float2:
+                    return VK_FORMAT_R32G32_SFLOAT;
+                case dawn::VertexFormat::Float3:
+                    return VK_FORMAT_R32G32B32_SFLOAT;
+                case dawn::VertexFormat::Float4:
+                    return VK_FORMAT_R32G32B32A32_SFLOAT;
+                case dawn::VertexFormat::UInt:
+                    return VK_FORMAT_R32_UINT;
+                case dawn::VertexFormat::UInt2:
+                    return VK_FORMAT_R32G32_UINT;
+                case dawn::VertexFormat::UInt3:
+                    return VK_FORMAT_R32G32B32_UINT;
+                case dawn::VertexFormat::UInt4:
+                    return VK_FORMAT_R32G32B32A32_UINT;
+                case dawn::VertexFormat::Int:
+                    return VK_FORMAT_R32_SINT;
+                case dawn::VertexFormat::Int2:
+                    return VK_FORMAT_R32G32_SINT;
+                case dawn::VertexFormat::Int3:
+                    return VK_FORMAT_R32G32B32_SINT;
+                case dawn::VertexFormat::Int4:
+                    return VK_FORMAT_R32G32B32A32_SINT;
                 default:
                     UNREACHABLE();
             }
diff --git a/src/tests/end2end/DestroyBufferTests.cpp b/src/tests/end2end/DestroyBufferTests.cpp
index 9226a73..6c2560a 100644
--- a/src/tests/end2end/DestroyBufferTests.cpp
+++ b/src/tests/end2end/DestroyBufferTests.cpp
@@ -34,7 +34,7 @@
         attribute.shaderLocation = 0;

         attribute.inputSlot = 0;

         attribute.offset = 0;

-        attribute.format = dawn::VertexFormat::FloatR32G32B32A32;

+        attribute.format = dawn::VertexFormat::Float4;

 

         dawn::InputState inputState =

             device.CreateInputStateBuilder().SetInput(&input).SetAttribute(&attribute).GetResult();

diff --git a/src/tests/end2end/DrawIndexedTests.cpp b/src/tests/end2end/DrawIndexedTests.cpp
index 9365349..8548d99 100644
--- a/src/tests/end2end/DrawIndexedTests.cpp
+++ b/src/tests/end2end/DrawIndexedTests.cpp
@@ -35,7 +35,7 @@
             attribute.shaderLocation = 0;
             attribute.inputSlot = 0;
             attribute.offset = 0;
-            attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+            attribute.format = dawn::VertexFormat::Float4;
 
             dawn::InputState inputState = device.CreateInputStateBuilder()
                                               .SetInput(&input)
diff --git a/src/tests/end2end/DrawTests.cpp b/src/tests/end2end/DrawTests.cpp
index 34c7315..073ebd3 100644
--- a/src/tests/end2end/DrawTests.cpp
+++ b/src/tests/end2end/DrawTests.cpp
@@ -35,7 +35,7 @@
         attribute.shaderLocation = 0;
         attribute.inputSlot = 0;
         attribute.offset = 0;
-        attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+        attribute.format = dawn::VertexFormat::Float4;
 
         dawn::InputState inputState =
             device.CreateInputStateBuilder().SetInput(&input).SetAttribute(&attribute).GetResult();
diff --git a/src/tests/end2end/IndexFormatTests.cpp b/src/tests/end2end/IndexFormatTests.cpp
index 3eda329..a62ee6e 100644
--- a/src/tests/end2end/IndexFormatTests.cpp
+++ b/src/tests/end2end/IndexFormatTests.cpp
@@ -40,7 +40,7 @@
             attribute.shaderLocation = 0;
             attribute.inputSlot = 0;
             attribute.offset = 0;
-            attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+            attribute.format = dawn::VertexFormat::Float4;
 
             dawn::InputState inputState = device.CreateInputStateBuilder()
                                               .SetInput(&input)
diff --git a/src/tests/end2end/InputStateTests.cpp b/src/tests/end2end/InputStateTests.cpp
index ffccd54..c205f5f 100644
--- a/src/tests/end2end/InputStateTests.cpp
+++ b/src/tests/end2end/InputStateTests.cpp
@@ -44,15 +44,15 @@
         bool ShouldComponentBeDefault(VertexFormat format, int component) {
             EXPECT_TRUE(component >= 0 && component < 4);
             switch (format) {
-                case VertexFormat::FloatR32G32B32A32:
-                case VertexFormat::UnormR8G8B8A8:
+                case VertexFormat::Float4:
+                case VertexFormat::UChar4Norm:
                     return component >= 4;
-                case VertexFormat::FloatR32G32B32:
+                case VertexFormat::Float3:
                     return component >= 3;
-                case VertexFormat::FloatR32G32:
-                case VertexFormat::UnormR8G8:
+                case VertexFormat::Float2:
+                case VertexFormat::UChar2Norm:
                     return component >= 2;
-                case VertexFormat::FloatR32:
+                case VertexFormat::Float:
                     return component >= 1;
                 default:
                     DAWN_UNREACHABLE();
@@ -221,11 +221,11 @@
     dawn::InputState inputState = MakeInputState({
             {0, 4 * sizeof(float), InputStepMode::Vertex}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Vertex}
+        {0, VertexFormat::Float4, InputStepMode::Vertex}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -244,11 +244,11 @@
     dawn::InputState inputState = MakeInputState({
             {0, 0, InputStepMode::Vertex}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 0, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Vertex}
+        {0, VertexFormat::Float4, InputStepMode::Vertex}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -267,11 +267,11 @@
         dawn::InputState inputState = MakeInputState({
                 {0, 0, InputStepMode::Vertex}
             }, {
-                {0, 0, 0, VertexFormat::FloatR32}
+                {0, 0, 0, VertexFormat::Float}
             }
         );
         dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 0, {
-            {0, VertexFormat::FloatR32, InputStepMode::Vertex}
+            {0, VertexFormat::Float, InputStepMode::Vertex}
         });
 
         dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -284,11 +284,11 @@
         dawn::InputState inputState = MakeInputState({
                 {0, 0, InputStepMode::Vertex}
             }, {
-                {0, 0, 0, VertexFormat::FloatR32G32}
+                {0, 0, 0, VertexFormat::Float2}
             }
         );
         dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 0, {
-            {0, VertexFormat::FloatR32G32, InputStepMode::Vertex}
+            {0, VertexFormat::Float2, InputStepMode::Vertex}
         });
 
         dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -301,11 +301,11 @@
         dawn::InputState inputState = MakeInputState({
                 {0, 0, InputStepMode::Vertex}
             }, {
-                {0, 0, 0, VertexFormat::FloatR32G32B32}
+                {0, 0, 0, VertexFormat::Float3}
             }
         );
         dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 0, {
-            {0, VertexFormat::FloatR32G32B32, InputStepMode::Vertex}
+            {0, VertexFormat::Float3, InputStepMode::Vertex}
         });
 
         dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -323,11 +323,11 @@
     dawn::InputState inputState = MakeInputState({
             {0, 8 * sizeof(float), InputStepMode::Vertex}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Vertex}
+        {0, VertexFormat::Float4, InputStepMode::Vertex}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -343,12 +343,12 @@
     dawn::InputState inputState = MakeInputState({
             {0, 8 * sizeof(float), InputStepMode::Vertex}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32},
-            {1, 0, 4  * sizeof(float), VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4},
+            {1, 0, 4  * sizeof(float), VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Vertex}
+        {0, VertexFormat::Float4, InputStepMode::Vertex}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -364,12 +364,12 @@
     dawn::InputState inputState = MakeInputState({
             {0, 8 * sizeof(float), InputStepMode::Instance}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32},
-            {1, 0, 4  * sizeof(float), VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4},
+            {1, 0, 4  * sizeof(float), VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Instance}
+        {0, VertexFormat::Float4, InputStepMode::Instance}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -385,11 +385,11 @@
     dawn::InputState inputState = MakeInputState({
             {0, 4 * sizeof(float), InputStepMode::Instance}
         }, {
-            {0, 0, 0, VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32G32B32A32, InputStepMode::Instance}
+        {0, VertexFormat::Float4, InputStepMode::Instance}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -408,17 +408,17 @@
             {0, 12 * sizeof(float), InputStepMode::Vertex},
             {1, 10 * sizeof(float), InputStepMode::Instance},
         }, {
-            {0, 0, 0, VertexFormat::FloatR32},
-            {1, 0, 6  * sizeof(float), VertexFormat::FloatR32G32},
-            {2, 1, 0, VertexFormat::FloatR32G32B32},
-            {3, 1, 5  * sizeof(float), VertexFormat::FloatR32G32B32A32}
+            {0, 0, 0, VertexFormat::Float},
+            {1, 0, 6  * sizeof(float), VertexFormat::Float2},
+            {2, 1, 0, VertexFormat::Float3},
+            {3, 1, 5  * sizeof(float), VertexFormat::Float4}
         }
     );
     dawn::RenderPipeline pipeline = MakeTestPipeline(inputState, 1, {
-        {0, VertexFormat::FloatR32, InputStepMode::Vertex},
-        {1, VertexFormat::FloatR32G32, InputStepMode::Vertex},
-        {2, VertexFormat::FloatR32G32B32, InputStepMode::Instance},
-        {3, VertexFormat::FloatR32G32B32A32, InputStepMode::Instance}
+        {0, VertexFormat::Float, InputStepMode::Vertex},
+        {1, VertexFormat::Float2, InputStepMode::Vertex},
+        {2, VertexFormat::Float3, InputStepMode::Instance},
+        {3, VertexFormat::Float4, InputStepMode::Instance}
     });
 
     dawn::Buffer buffer0 = MakeVertexBuffer<float>({
@@ -441,9 +441,9 @@
     // Instance input state, using slot 1
     dawn::InputState instanceInputState =
         MakeInputState({{1, 4 * sizeof(float), InputStepMode::Instance}},
-                       {{0, 1, 0, VertexFormat::FloatR32G32B32A32}});
+                       {{0, 1, 0, VertexFormat::Float4}});
     dawn::RenderPipeline instancePipeline = MakeTestPipeline(
-        instanceInputState, 1, {{0, VertexFormat::FloatR32G32B32A32, InputStepMode::Instance}});
+        instanceInputState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}});
 
     dawn::Buffer buffer = MakeVertexBuffer<float>({
         0, 1, 2, 3,
@@ -479,16 +479,16 @@
     // Basic input state, using slot 0
     dawn::InputState vertexInputState =
         MakeInputState({{0, 4 * sizeof(float), InputStepMode::Vertex}},
-                       {{0, 0, 0, VertexFormat::FloatR32G32B32A32}});
+                       {{0, 0, 0, VertexFormat::Float4}});
     dawn::RenderPipeline vertexPipeline = MakeTestPipeline(
-        vertexInputState, 1, {{0, VertexFormat::FloatR32G32B32A32, InputStepMode::Vertex}});
+        vertexInputState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}});
 
     // Instance input state, using slot 1
     dawn::InputState instanceInputState =
         MakeInputState({{1, 4 * sizeof(float), InputStepMode::Instance}},
-                       {{0, 1, 0, VertexFormat::FloatR32G32B32A32}});
+                       {{0, 1, 0, VertexFormat::Float4}});
     dawn::RenderPipeline instancePipeline = MakeTestPipeline(
-        instanceInputState, 1, {{0, VertexFormat::FloatR32G32B32A32, InputStepMode::Instance}});
+        instanceInputState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}});
 
     dawn::Buffer buffer = MakeVertexBuffer<float>({
         0, 1, 2, 3,
diff --git a/src/tests/end2end/PrimitiveTopologyTests.cpp b/src/tests/end2end/PrimitiveTopologyTests.cpp
index ff50737..2831c42 100644
--- a/src/tests/end2end/PrimitiveTopologyTests.cpp
+++ b/src/tests/end2end/PrimitiveTopologyTests.cpp
@@ -169,7 +169,7 @@
             attribute.shaderLocation = 0;
             attribute.inputSlot = 0;
             attribute.offset = 0;
-            attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
+            attribute.format = dawn::VertexFormat::Float4;
 
             dawn::VertexInputDescriptor input;
             input.inputSlot = 0;
diff --git a/src/tests/unittests/validation/InputStateValidationTests.cpp b/src/tests/unittests/validation/InputStateValidationTests.cpp
index 688cd2f..d0bfce3 100644
--- a/src/tests/unittests/validation/InputStateValidationTests.cpp
+++ b/src/tests/unittests/validation/InputStateValidationTests.cpp
@@ -68,13 +68,13 @@
     attribute1.shaderLocation = 0;
     attribute1.inputSlot = 0;
     attribute1.offset = 0;
-    attribute1.format = dawn::VertexFormat::FloatR32;
+    attribute1.format = dawn::VertexFormat::Float;
 
     dawn::VertexAttributeDescriptor attribute2;
     attribute2.shaderLocation = 1;
     attribute2.inputSlot = 0;
     attribute2.offset = sizeof(float);
-    attribute2.format = dawn::VertexFormat::FloatR32;
+    attribute2.format = dawn::VertexFormat::Float;
 
     dawn::VertexInputDescriptor input;
     input.inputSlot = 0;
@@ -126,7 +126,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = 128;
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
 
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
@@ -182,7 +182,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = 0;
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
 
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
@@ -204,7 +204,7 @@
     attribute.shaderLocation = kMaxVertexAttributes - 1;
     attribute.inputSlot = 0;
     attribute.offset = 0;
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
 
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
@@ -225,8 +225,8 @@
     dawn::VertexAttributeDescriptor attribute;
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
-    attribute.offset = kMaxVertexAttributeEnd - sizeof(dawn::VertexFormat::FloatR32);
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.offset = kMaxVertexAttributeEnd - sizeof(dawn::VertexFormat::Float);
+    attribute.format = dawn::VertexFormat::Float;
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
         .SetAttribute(&attribute)
@@ -246,7 +246,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = std::numeric_limits<uint32_t>::max();
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
     AssertWillBeError(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
         .SetAttribute(&attribute)
@@ -260,7 +260,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = 0;
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
 
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
@@ -282,7 +282,7 @@
     attribute.shaderLocation = 0;
     attribute.inputSlot = 0;
     attribute.offset = 0;
-    attribute.format = dawn::VertexFormat::FloatR32;
+    attribute.format = dawn::VertexFormat::Float;
 
     AssertWillBeSuccess(device.CreateInputStateBuilder())
         .SetInput(&kBaseInput)
diff --git a/src/tests/unittests/validation/VertexBufferValidationTests.cpp b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
index 4125c7b..06a0825 100644
--- a/src/tests/unittests/validation/VertexBufferValidationTests.cpp
+++ b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
@@ -71,7 +71,7 @@
             auto builder = device.CreateInputStateBuilder();
             dawn::VertexAttributeDescriptor attribute;
             attribute.offset = 0;
-            attribute.format = dawn::VertexFormat::FloatR32G32B32;
+            attribute.format = dawn::VertexFormat::Float3;
 
             dawn::VertexInputDescriptor input;
             input.stride = 0;