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;