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;
