diff --git a/dawn.json b/dawn.json index 7162078c9e..a36eafaafb 100644 --- a/dawn.json +++ b/dawn.json @@ -1914,36 +1914,68 @@ "vertex format": { "category": "enum", "values": [ - {"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"} + {"value": 0, "name": "undefined", "valid": false, "jsrepr": "undefined"}, + {"value": 1, "name": "uint8x2"}, + {"value": 2, "name": "uint8x4"}, + {"value": 3, "name": "sint8x2"}, + {"value": 4, "name": "sint8x4"}, + {"value": 5, "name": "unorm8x2"}, + {"value": 6, "name": "unorm8x4"}, + {"value": 7, "name": "snorm8x2"}, + {"value": 8, "name": "snorm8x4"}, + {"value": 9, "name": "uint16x2"}, + {"value": 10, "name": "uint16x4"}, + {"value": 11, "name": "sint16x2"}, + {"value": 12, "name": "sint16x4"}, + {"value": 13, "name": "unorm16x2"}, + {"value": 14, "name": "unorm16x4"}, + {"value": 15, "name": "snorm16x2"}, + {"value": 16, "name": "snorm16x4"}, + {"value": 17, "name": "float16x2"}, + {"value": 18, "name": "float16x4"}, + {"value": 19, "name": "float32"}, + {"value": 20, "name": "float32x2"}, + {"value": 21, "name": "float32x3"}, + {"value": 22, "name": "float32x4"}, + {"value": 23, "name": "uint32"}, + {"value": 24, "name": "uint32x2"}, + {"value": 25, "name": "uint32x3"}, + {"value": 26, "name": "uint32x4"}, + {"value": 27, "name": "sint32"}, + {"value": 28, "name": "sint32x2"}, + {"value": 29, "name": "sint32x3"}, + {"value": 30, "name": "sint32x4"}, + + {"value": 101, "name": "uChar2"}, + {"value": 102, "name": "uChar4"}, + {"value": 103, "name": "char2"}, + {"value": 104, "name": "char4"}, + {"value": 105, "name": "uChar2 norm"}, + {"value": 106, "name": "uChar4 norm"}, + {"value": 107, "name": "char2 norm"}, + {"value": 108, "name": "char4 norm"}, + {"value": 109, "name": "uShort2"}, + {"value": 110, "name": "uShort4"}, + {"value": 111, "name": "short2"}, + {"value": 112, "name": "short4"}, + {"value": 113, "name": "uShort2 norm"}, + {"value": 114, "name": "uShort4 norm"}, + {"value": 115, "name": "short2 norm"}, + {"value": 116, "name": "short4 norm"}, + {"value": 117, "name": "half2"}, + {"value": 118, "name": "half4"}, + {"value": 119, "name": "float"}, + {"value": 120, "name": "float2"}, + {"value": 121, "name": "float3"}, + {"value": 122, "name": "float4"}, + {"value": 123, "name": "uInt"}, + {"value": 124, "name": "uInt2"}, + {"value": 125, "name": "uInt3"}, + {"value": 126, "name": "uInt4"}, + {"value": 127, "name": "int"}, + {"value": 128, "name": "int2"}, + {"value": 129, "name": "int3"}, + {"value": 130, "name": "int4"} ] }, "ObjectType": { diff --git a/src/common/BUILD.gn b/src/common/BUILD.gn index 08b91a0e5e..ee6c218fb4 100644 --- a/src/common/BUILD.gn +++ b/src/common/BUILD.gn @@ -190,6 +190,8 @@ if (is_win || is_linux || is_chromeos || is_mac || is_fuchsia || is_android) { "TypeTraits.h", "TypedInteger.h", "UnderlyingType.h", + "VertexFormatUtils.cpp", + "VertexFormatUtils.h", "ityp_array.h", "ityp_bitset.h", "ityp_span.h", @@ -201,7 +203,10 @@ if (is_win || is_linux || is_chromeos || is_mac || is_fuchsia || is_android) { ] public_configs = [ ":dawn_internal" ] - deps = [ "${dawn_root}/src/dawn:dawn_headers" ] + deps = [ + "${dawn_root}/src/dawn:dawn_headers", + "${dawn_root}/src/dawn:dawncpp_headers", + ] if (dawn_enable_vulkan) { public_deps = [ "${dawn_root}/third_party/khronos:vulkan_headers" ] } diff --git a/src/common/VertexFormatUtils.cpp b/src/common/VertexFormatUtils.cpp new file mode 100644 index 0000000000..f39b792ec8 --- /dev/null +++ b/src/common/VertexFormatUtils.cpp @@ -0,0 +1,289 @@ +// Copyright 2021 The Dawn Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "VertexFormatUtils.h" + +#include "Assert.h" + +namespace dawn { + + namespace { + + static constexpr wgpu::VertexFormat kFirstDeprecatedVertexFormat = + wgpu::VertexFormat::UChar2; + static constexpr uint32_t kFirstDeprecatedVertexFormatValue = + static_cast(kFirstDeprecatedVertexFormat); + + } // namespace + + bool IsDeprecatedVertexFormat(wgpu::VertexFormat format) { + return format >= kFirstDeprecatedVertexFormat; + } + + wgpu::VertexFormat NormalizeVertexFormat(wgpu::VertexFormat format) { + // If the specified format is from the deprecated range return the corresponding + // non-deprecated format. + if (format >= kFirstDeprecatedVertexFormat) { + uint32_t formatValue = static_cast(format); + // Need to add one to account for the "undefined" enum with value 0 + return static_cast( + (formatValue - kFirstDeprecatedVertexFormatValue) + 1); + } + return format; + } + + uint32_t VertexFormatNumComponents(wgpu::VertexFormat format) { + format = NormalizeVertexFormat(format); + switch (format) { + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x4: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Snorm16x4: + case wgpu::VertexFormat::Float16x4: + case wgpu::VertexFormat::Float32x4: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Sint32x4: + return 4; + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Sint32x3: + return 3; + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Sint32x2: + return 2; + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Sint32: + return 1; + + case wgpu::VertexFormat::Undefined: + break; + + // Deprecated formats (should be unreachable after NormalizeVertexFormat call) + case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Int4: + break; + } + UNREACHABLE(); + } + + size_t VertexFormatComponentSize(wgpu::VertexFormat format) { + format = NormalizeVertexFormat(format); + switch (format) { + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Snorm8x4: + return sizeof(char); + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Snorm16x4: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float16x4: + return sizeof(uint16_t); + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Float32x4: + return sizeof(float); + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Sint32: + case wgpu::VertexFormat::Sint32x2: + case wgpu::VertexFormat::Sint32x3: + case wgpu::VertexFormat::Sint32x4: + return sizeof(int32_t); + + case wgpu::VertexFormat::Undefined: + break; + + // Deprecated formats (should be unreachable after NormalizeVertexFormat call) + case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Int4: + break; + } + UNREACHABLE(); + } + + size_t VertexFormatSize(wgpu::VertexFormat format) { + return VertexFormatNumComponents(format) * VertexFormatComponentSize(format); + } + + const char* GetWGSLVertexFormatType(wgpu::VertexFormat format) { + format = NormalizeVertexFormat(format); + switch (format) { + case wgpu::VertexFormat::Float32: + return "f32"; + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float32x2: + return "vec2"; + case wgpu::VertexFormat::Float32x3: + return "vec3"; + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x4: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Snorm16x4: + case wgpu::VertexFormat::Float16x4: + case wgpu::VertexFormat::Float32x4: + return "vec4"; + case wgpu::VertexFormat::Uint32: + return "u32"; + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint32x2: + return "vec2"; + case wgpu::VertexFormat::Uint32x3: + return "vec3"; + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Uint32x4: + return "vec4"; + case wgpu::VertexFormat::Sint32: + return "i32"; + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Sint32x2: + return "vec2"; + case wgpu::VertexFormat::Sint32x3: + return "vec3"; + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Sint32x4: + return "vec4"; + + case wgpu::VertexFormat::Undefined: + break; + + // Deprecated formats (should be unreachable after NormalizeVertexFormat call) + case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Int4: + break; + } + UNREACHABLE(); + } + +} // namespace dawn diff --git a/src/common/VertexFormatUtils.h b/src/common/VertexFormatUtils.h new file mode 100644 index 0000000000..632ca7fba7 --- /dev/null +++ b/src/common/VertexFormatUtils.h @@ -0,0 +1,65 @@ +// Copyright 2021 The Dawn Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DAWNNATIVE_VERTEX_FORMAT_UTILS_H_ +#define DAWNNATIVE_VERTEX_FORMAT_UTILS_H_ + +#include + +#include + +namespace dawn { + + static constexpr std::array kAllVertexFormats = { + wgpu::VertexFormat::Uint8x2, wgpu::VertexFormat::Uint8x4, wgpu::VertexFormat::Sint8x2, + wgpu::VertexFormat::Sint8x4, wgpu::VertexFormat::Unorm8x2, wgpu::VertexFormat::Unorm8x4, + wgpu::VertexFormat::Snorm8x2, wgpu::VertexFormat::Snorm8x4, wgpu::VertexFormat::Uint16x2, + wgpu::VertexFormat::Uint16x4, wgpu::VertexFormat::Unorm16x2, wgpu::VertexFormat::Unorm16x4, + wgpu::VertexFormat::Sint16x2, wgpu::VertexFormat::Sint16x4, wgpu::VertexFormat::Snorm16x2, + wgpu::VertexFormat::Snorm16x4, wgpu::VertexFormat::Float16x2, wgpu::VertexFormat::Float16x4, + wgpu::VertexFormat::Float32, wgpu::VertexFormat::Float32x2, wgpu::VertexFormat::Float32x3, + wgpu::VertexFormat::Float32x4, wgpu::VertexFormat::Uint32, wgpu::VertexFormat::Uint32x2, + wgpu::VertexFormat::Uint32x3, wgpu::VertexFormat::Uint32x4, wgpu::VertexFormat::Sint32, + wgpu::VertexFormat::Sint32x2, wgpu::VertexFormat::Sint32x3, wgpu::VertexFormat::Sint32x4, + }; + + static constexpr std::array kAllDeprecatedVertexFormats = { + wgpu::VertexFormat::UChar2, wgpu::VertexFormat::UChar4, + wgpu::VertexFormat::Char2, wgpu::VertexFormat::Char4, + wgpu::VertexFormat::UChar2Norm, wgpu::VertexFormat::UChar4Norm, + wgpu::VertexFormat::Char2Norm, wgpu::VertexFormat::Char4Norm, + wgpu::VertexFormat::UShort2, wgpu::VertexFormat::UShort4, + wgpu::VertexFormat::UShort2Norm, wgpu::VertexFormat::UShort4Norm, + wgpu::VertexFormat::Short2, wgpu::VertexFormat::Short4, + wgpu::VertexFormat::Short2Norm, wgpu::VertexFormat::Short4Norm, + wgpu::VertexFormat::Half2, wgpu::VertexFormat::Half4, + wgpu::VertexFormat::Float, wgpu::VertexFormat::Float2, + wgpu::VertexFormat::Float3, wgpu::VertexFormat::Float4, + wgpu::VertexFormat::UInt, wgpu::VertexFormat::UInt2, + wgpu::VertexFormat::UInt3, wgpu::VertexFormat::UInt4, + wgpu::VertexFormat::Int, wgpu::VertexFormat::Int2, + wgpu::VertexFormat::Int3, wgpu::VertexFormat::Int4, + }; + + bool IsDeprecatedVertexFormat(wgpu::VertexFormat format); + wgpu::VertexFormat NormalizeVertexFormat(wgpu::VertexFormat format); + uint32_t VertexFormatNumComponents(wgpu::VertexFormat format); + size_t VertexFormatComponentSize(wgpu::VertexFormat format); + size_t VertexFormatSize(wgpu::VertexFormat format); + + const char* GetWGSLVertexFormatType(wgpu::VertexFormat textureFormat); + +} // namespace dawn + +#endif \ No newline at end of file diff --git a/src/dawn_native/RenderPipeline.cpp b/src/dawn_native/RenderPipeline.cpp index 3840cee776..484d0bb663 100644 --- a/src/dawn_native/RenderPipeline.cpp +++ b/src/dawn_native/RenderPipeline.cpp @@ -15,6 +15,7 @@ #include "dawn_native/RenderPipeline.h" #include "common/BitSetIterator.h" +#include "common/VertexFormatUtils.h" #include "dawn_native/Commands.h" #include "dawn_native/Device.h" #include "dawn_native/ObjectContentHasher.h" @@ -27,19 +28,26 @@ namespace dawn_native { namespace { MaybeError ValidateVertexAttributeDescriptor( + DeviceBase* device, const VertexAttributeDescriptor* attribute, uint64_t vertexBufferStride, std::bitset* attributesSetMask) { DAWN_TRY(ValidateVertexFormat(attribute->format)); + if (dawn::IsDeprecatedVertexFormat(attribute->format)) { + device->EmitDeprecationWarning( + "Vertex formats have changed and the old types will be removed soon."); + } + if (attribute->shaderLocation >= kMaxVertexAttributes) { return DAWN_VALIDATION_ERROR("Setting attribute out of bounds"); } // No underflow is possible because the max vertex format size is smaller than // kMaxVertexBufferStride. - ASSERT(kMaxVertexBufferStride >= VertexFormatSize(attribute->format)); - if (attribute->offset > kMaxVertexBufferStride - VertexFormatSize(attribute->format)) { + ASSERT(kMaxVertexBufferStride >= dawn::VertexFormatSize(attribute->format)); + if (attribute->offset > + kMaxVertexBufferStride - dawn::VertexFormatSize(attribute->format)) { return DAWN_VALIDATION_ERROR("Setting attribute offset out of bounds"); } @@ -47,7 +55,8 @@ namespace dawn_native { // than kMaxVertexBufferStride. ASSERT(attribute->offset < kMaxVertexBufferStride); if (vertexBufferStride > 0 && - attribute->offset + VertexFormatSize(attribute->format) > vertexBufferStride) { + attribute->offset + dawn::VertexFormatSize(attribute->format) > + vertexBufferStride) { return DAWN_VALIDATION_ERROR("Setting attribute offset out of bounds"); } @@ -64,6 +73,7 @@ namespace dawn_native { } MaybeError ValidateVertexBufferLayoutDescriptor( + DeviceBase* device, const VertexBufferLayoutDescriptor* buffer, std::bitset* attributesSetMask) { DAWN_TRY(ValidateInputStepMode(buffer->stepMode)); @@ -77,7 +87,7 @@ namespace dawn_native { } for (uint32_t i = 0; i < buffer->attributeCount; ++i) { - DAWN_TRY(ValidateVertexAttributeDescriptor(&buffer->attributes[i], + DAWN_TRY(ValidateVertexAttributeDescriptor(device, &buffer->attributes[i], buffer->arrayStride, attributesSetMask)); } @@ -112,7 +122,7 @@ namespace dawn_native { uint32_t totalAttributesNum = 0; for (uint32_t i = 0; i < descriptor->vertexBufferCount; ++i) { - DAWN_TRY(ValidateVertexBufferLayoutDescriptor(&descriptor->vertexBuffers[i], + DAWN_TRY(ValidateVertexBufferLayoutDescriptor(device, &descriptor->vertexBuffers[i], attributesSetMask)); totalAttributesNum += descriptor->vertexBuffers[i].attributeCount; } @@ -212,88 +222,6 @@ namespace dawn_native { } } - uint32_t VertexFormatNumComponents(wgpu::VertexFormat format) { - switch (format) { - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char4Norm: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short4Norm: - case wgpu::VertexFormat::Half4: - case wgpu::VertexFormat::Float4: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::Int4: - return 4; - case wgpu::VertexFormat::Float3: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::Int3: - return 3; - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Float2: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::Int2: - return 2; - case wgpu::VertexFormat::Float: - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::Int: - return 1; - } - } - - size_t VertexFormatComponentSize(wgpu::VertexFormat format) { - switch (format) { - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::Char4Norm: - return sizeof(char); - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Short4Norm: - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Half4: - return sizeof(uint16_t); - case wgpu::VertexFormat::Float: - case wgpu::VertexFormat::Float2: - case wgpu::VertexFormat::Float3: - case wgpu::VertexFormat::Float4: - return sizeof(float); - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::Int: - case wgpu::VertexFormat::Int2: - case wgpu::VertexFormat::Int3: - case wgpu::VertexFormat::Int4: - return sizeof(int32_t); - } - } - - size_t VertexFormatSize(wgpu::VertexFormat format) { - return VertexFormatNumComponents(format) * VertexFormatComponentSize(format); - } - bool IsStripPrimitiveTopology(wgpu::PrimitiveTopology primitiveTopology) { return primitiveTopology == wgpu::PrimitiveTopology::LineStrip || primitiveTopology == wgpu::PrimitiveTopology::TriangleStrip; @@ -431,8 +359,9 @@ namespace dawn_native { mAttributeInfos[location].vertexBufferSlot = typedSlot; mAttributeInfos[location].offset = mVertexState.vertexBuffers[slot].attributes[i].offset; - mAttributeInfos[location].format = - mVertexState.vertexBuffers[slot].attributes[i].format; + + mAttributeInfos[location].format = dawn::NormalizeVertexFormat( + mVertexState.vertexBuffers[slot].attributes[i].format); } } diff --git a/src/dawn_native/RenderPipeline.h b/src/dawn_native/RenderPipeline.h index 812f7ec823..7d24b3f0db 100644 --- a/src/dawn_native/RenderPipeline.h +++ b/src/dawn_native/RenderPipeline.h @@ -32,9 +32,7 @@ namespace dawn_native { MaybeError ValidateRenderPipelineDescriptor(DeviceBase* device, const RenderPipelineDescriptor* descriptor); size_t IndexFormatSize(wgpu::IndexFormat format); - uint32_t VertexFormatNumComponents(wgpu::VertexFormat format); - size_t VertexFormatComponentSize(wgpu::VertexFormat format); - size_t VertexFormatSize(wgpu::VertexFormat format); + bool IsStripPrimitiveTopology(wgpu::PrimitiveTopology primitiveTopology); bool StencilTestEnabled(const DepthStencilStateDescriptor* mDepthStencilState); diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp index b04d8d144d..f1eabe8518 100644 --- a/src/dawn_native/ShaderModule.cpp +++ b/src/dawn_native/ShaderModule.cpp @@ -14,11 +14,13 @@ #include "dawn_native/ShaderModule.h" +#include "common/VertexFormatUtils.h" #include "dawn_native/BindGroupLayout.h" #include "dawn_native/Device.h" #include "dawn_native/ObjectContentHasher.h" #include "dawn_native/Pipeline.h" #include "dawn_native/PipelineLayout.h" +#include "dawn_native/RenderPipeline.h" #include "dawn_native/SpirvUtils.h" #include @@ -48,68 +50,106 @@ namespace dawn_native { #ifdef DAWN_ENABLE_WGSL tint::transform::VertexFormat ToTintVertexFormat(wgpu::VertexFormat format) { + format = dawn::NormalizeVertexFormat(format); switch (format) { - case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::Uint8x2: return tint::transform::VertexFormat::kVec2U8; - case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Uint8x4: return tint::transform::VertexFormat::kVec4U8; - case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Sint8x2: return tint::transform::VertexFormat::kVec2I8; - case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::Sint8x4: return tint::transform::VertexFormat::kVec4I8; - case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::Unorm8x2: return tint::transform::VertexFormat::kVec2U8Norm; - case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Unorm8x4: return tint::transform::VertexFormat::kVec4U8Norm; - case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Snorm8x2: return tint::transform::VertexFormat::kVec2I8Norm; - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Snorm8x4: return tint::transform::VertexFormat::kVec4I8Norm; - case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::Uint16x2: return tint::transform::VertexFormat::kVec2U16; - case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::Uint16x4: return tint::transform::VertexFormat::kVec4U16; - case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Sint16x2: return tint::transform::VertexFormat::kVec2I16; - case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Sint16x4: return tint::transform::VertexFormat::kVec4I16; - case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::Unorm16x2: return tint::transform::VertexFormat::kVec2U16Norm; - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Unorm16x4: return tint::transform::VertexFormat::kVec4U16Norm; - case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Snorm16x2: return tint::transform::VertexFormat::kVec2I16Norm; - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Snorm16x4: return tint::transform::VertexFormat::kVec4I16Norm; - case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Float16x2: return tint::transform::VertexFormat::kVec2F16; - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x4: return tint::transform::VertexFormat::kVec4F16; - case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float32: return tint::transform::VertexFormat::kF32; - case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float32x2: return tint::transform::VertexFormat::kVec2F32; - case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float32x3: return tint::transform::VertexFormat::kVec3F32; - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32x4: return tint::transform::VertexFormat::kVec4F32; - case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::Uint32: return tint::transform::VertexFormat::kU32; - case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::Uint32x2: return tint::transform::VertexFormat::kVec2U32; - case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::Uint32x3: return tint::transform::VertexFormat::kVec3U32; - case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Uint32x4: return tint::transform::VertexFormat::kVec4U32; - case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Sint32: return tint::transform::VertexFormat::kI32; - case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Sint32x2: return tint::transform::VertexFormat::kVec2I32; - case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Sint32x3: return tint::transform::VertexFormat::kVec3I32; - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Sint32x4: return tint::transform::VertexFormat::kVec4I32; + + case wgpu::VertexFormat::Undefined: + break; + + // Deprecated formats (should be unreachable after NormalizeVertexFormat call) + case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Int4: + break; } + UNREACHABLE(); } tint::transform::InputStepMode ToTintInputStepMode(wgpu::InputStepMode mode) { diff --git a/src/dawn_native/d3d12/RenderPipelineD3D12.cpp b/src/dawn_native/d3d12/RenderPipelineD3D12.cpp index eb3f2d1d43..3e39686ae8 100644 --- a/src/dawn_native/d3d12/RenderPipelineD3D12.cpp +++ b/src/dawn_native/d3d12/RenderPipelineD3D12.cpp @@ -31,66 +31,68 @@ namespace dawn_native { namespace d3d12 { namespace { DXGI_FORMAT VertexFormatType(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::Uint8x2: return DXGI_FORMAT_R8G8_UINT; - case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Uint8x4: return DXGI_FORMAT_R8G8B8A8_UINT; - case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Sint8x2: return DXGI_FORMAT_R8G8_SINT; - case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::Sint8x4: return DXGI_FORMAT_R8G8B8A8_SINT; - case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::Unorm8x2: return DXGI_FORMAT_R8G8_UNORM; - case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Unorm8x4: return DXGI_FORMAT_R8G8B8A8_UNORM; - case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Snorm8x2: return DXGI_FORMAT_R8G8_SNORM; - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Snorm8x4: return DXGI_FORMAT_R8G8B8A8_SNORM; - case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::Uint16x2: return DXGI_FORMAT_R16G16_UINT; - case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::Uint16x4: return DXGI_FORMAT_R16G16B16A16_UINT; - case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Sint16x2: return DXGI_FORMAT_R16G16_SINT; - case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Sint16x4: return DXGI_FORMAT_R16G16B16A16_SINT; - case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::Unorm16x2: return DXGI_FORMAT_R16G16_UNORM; - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Unorm16x4: return DXGI_FORMAT_R16G16B16A16_UNORM; - case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Snorm16x2: return DXGI_FORMAT_R16G16_SNORM; - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Snorm16x4: return DXGI_FORMAT_R16G16B16A16_SNORM; - case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Float16x2: return DXGI_FORMAT_R16G16_FLOAT; - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x4: return DXGI_FORMAT_R16G16B16A16_FLOAT; - case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float32: return DXGI_FORMAT_R32_FLOAT; - case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float32x2: return DXGI_FORMAT_R32G32_FLOAT; - case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float32x3: return DXGI_FORMAT_R32G32B32_FLOAT; - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32x4: return DXGI_FORMAT_R32G32B32A32_FLOAT; - case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::Uint32: return DXGI_FORMAT_R32_UINT; - case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::Uint32x2: return DXGI_FORMAT_R32G32_UINT; - case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::Uint32x3: return DXGI_FORMAT_R32G32B32_UINT; - case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Uint32x4: return DXGI_FORMAT_R32G32B32A32_UINT; - case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Sint32: return DXGI_FORMAT_R32_SINT; - case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Sint32x2: return DXGI_FORMAT_R32G32_SINT; - case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Sint32x3: return DXGI_FORMAT_R32G32B32_SINT; - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Sint32x4: return DXGI_FORMAT_R32G32B32A32_SINT; + default: + UNREACHABLE(); } } diff --git a/src/dawn_native/metal/RenderPipelineMTL.mm b/src/dawn_native/metal/RenderPipelineMTL.mm index 1f690b4cfe..bea3898cc5 100644 --- a/src/dawn_native/metal/RenderPipelineMTL.mm +++ b/src/dawn_native/metal/RenderPipelineMTL.mm @@ -14,6 +14,7 @@ #include "dawn_native/metal/RenderPipelineMTL.h" +#include "common/VertexFormatUtils.h" #include "dawn_native/metal/DeviceMTL.h" #include "dawn_native/metal/PipelineLayoutMTL.h" #include "dawn_native/metal/ShaderModuleMTL.h" @@ -25,66 +26,68 @@ namespace dawn_native { namespace metal { namespace { MTLVertexFormat VertexFormatType(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::Uint8x2: return MTLVertexFormatUChar2; - case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Uint8x4: return MTLVertexFormatUChar4; - case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Sint8x2: return MTLVertexFormatChar2; - case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::Sint8x4: return MTLVertexFormatChar4; - case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::Unorm8x2: return MTLVertexFormatUChar2Normalized; - case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Unorm8x4: return MTLVertexFormatUChar4Normalized; - case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Snorm8x2: return MTLVertexFormatChar2Normalized; - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Snorm8x4: return MTLVertexFormatChar4Normalized; - case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::Uint16x2: return MTLVertexFormatUShort2; - case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::Uint16x4: return MTLVertexFormatUShort4; - case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Sint16x2: return MTLVertexFormatShort2; - case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Sint16x4: return MTLVertexFormatShort4; - case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::Unorm16x2: return MTLVertexFormatUShort2Normalized; - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Unorm16x4: return MTLVertexFormatUShort4Normalized; - case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Snorm16x2: return MTLVertexFormatShort2Normalized; - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Snorm16x4: return MTLVertexFormatShort4Normalized; - case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Float16x2: return MTLVertexFormatHalf2; - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x4: return MTLVertexFormatHalf4; - case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float32: return MTLVertexFormatFloat; - case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float32x2: return MTLVertexFormatFloat2; - case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float32x3: return MTLVertexFormatFloat3; - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32x4: return MTLVertexFormatFloat4; - case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::Uint32: return MTLVertexFormatUInt; - case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::Uint32x2: return MTLVertexFormatUInt2; - case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::Uint32x3: return MTLVertexFormatUInt3; - case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Uint32x4: return MTLVertexFormatUInt4; - case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Sint32: return MTLVertexFormatInt; - case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Sint32x2: return MTLVertexFormatInt2; - case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Sint32x3: return MTLVertexFormatInt3; - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Sint32x4: return MTLVertexFormatInt4; + default: + UNREACHABLE(); } } @@ -458,8 +461,9 @@ namespace dawn_native { namespace metal { if (attrib.vertexBufferSlot != slot) { continue; } - maxArrayStride = std::max( - maxArrayStride, VertexFormatSize(attrib.format) + size_t(attrib.offset)); + maxArrayStride = + std::max(maxArrayStride, + dawn::VertexFormatSize(attrib.format) + size_t(attrib.offset)); } layoutDesc.stepFunction = MTLVertexStepFunctionConstant; layoutDesc.stepRate = 0; diff --git a/src/dawn_native/opengl/CommandBufferGL.cpp b/src/dawn_native/opengl/CommandBufferGL.cpp index e0c2f37d99..e78c68bf8b 100644 --- a/src/dawn_native/opengl/CommandBufferGL.cpp +++ b/src/dawn_native/opengl/CommandBufferGL.cpp @@ -14,6 +14,7 @@ #include "dawn_native/opengl/CommandBufferGL.h" +#include "common/VertexFormatUtils.h" #include "dawn_native/BindGroup.h" #include "dawn_native/BindGroupTracker.h" #include "dawn_native/CommandEncoder.h" @@ -49,57 +50,59 @@ namespace dawn_native { namespace opengl { GLenum VertexFormatType(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: return GL_UNSIGNED_BYTE; - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Snorm8x4: return GL_BYTE; - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: return GL_UNSIGNED_SHORT; - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Snorm16x4: return GL_SHORT; - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float16x4: return GL_HALF_FLOAT; - case wgpu::VertexFormat::Float: - case wgpu::VertexFormat::Float2: - case wgpu::VertexFormat::Float3: - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Float32x4: return GL_FLOAT; - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Uint32x4: return GL_UNSIGNED_INT; - case wgpu::VertexFormat::Int: - case wgpu::VertexFormat::Int2: - case wgpu::VertexFormat::Int3: - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Sint32: + case wgpu::VertexFormat::Sint32x2: + case wgpu::VertexFormat::Sint32x3: + case wgpu::VertexFormat::Sint32x4: return GL_INT; + default: + UNREACHABLE(); } } GLboolean VertexFormatIsNormalized(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::Char4Norm: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Snorm8x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Snorm16x4: return GL_TRUE; default: return GL_FALSE; @@ -108,22 +111,22 @@ namespace dawn_native { namespace opengl { bool VertexFormatIsInt(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::Int: - case wgpu::VertexFormat::Int2: - case wgpu::VertexFormat::Int3: - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Sint32: + case wgpu::VertexFormat::Sint32x2: + case wgpu::VertexFormat::Sint32x3: + case wgpu::VertexFormat::Sint32x4: return true; default: return false; @@ -175,7 +178,7 @@ namespace dawn_native { namespace opengl { uint64_t offset = mVertexBufferOffsets[slot]; const VertexBufferInfo& vertexBuffer = mLastPipeline->GetVertexBuffer(slot); - uint32_t components = VertexFormatNumComponents(attribute.format); + uint32_t components = dawn::VertexFormatNumComponents(attribute.format); GLenum formatType = VertexFormatType(attribute.format); GLboolean normalized = VertexFormatIsNormalized(attribute.format); diff --git a/src/dawn_native/vulkan/RenderPipelineVk.cpp b/src/dawn_native/vulkan/RenderPipelineVk.cpp index e50c34da63..2d9c627d57 100644 --- a/src/dawn_native/vulkan/RenderPipelineVk.cpp +++ b/src/dawn_native/vulkan/RenderPipelineVk.cpp @@ -38,66 +38,68 @@ namespace dawn_native { namespace vulkan { VkFormat VulkanVertexFormat(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2: + case wgpu::VertexFormat::Uint8x2: return VK_FORMAT_R8G8_UINT; - case wgpu::VertexFormat::UChar4: + case wgpu::VertexFormat::Uint8x4: return VK_FORMAT_R8G8B8A8_UINT; - case wgpu::VertexFormat::Char2: + case wgpu::VertexFormat::Sint8x2: return VK_FORMAT_R8G8_SINT; - case wgpu::VertexFormat::Char4: + case wgpu::VertexFormat::Sint8x4: return VK_FORMAT_R8G8B8A8_SINT; - case wgpu::VertexFormat::UChar2Norm: + case wgpu::VertexFormat::Unorm8x2: return VK_FORMAT_R8G8_UNORM; - case wgpu::VertexFormat::UChar4Norm: + case wgpu::VertexFormat::Unorm8x4: return VK_FORMAT_R8G8B8A8_UNORM; - case wgpu::VertexFormat::Char2Norm: + case wgpu::VertexFormat::Snorm8x2: return VK_FORMAT_R8G8_SNORM; - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Snorm8x4: return VK_FORMAT_R8G8B8A8_SNORM; - case wgpu::VertexFormat::UShort2: + case wgpu::VertexFormat::Uint16x2: return VK_FORMAT_R16G16_UINT; - case wgpu::VertexFormat::UShort4: + case wgpu::VertexFormat::Uint16x4: return VK_FORMAT_R16G16B16A16_UINT; - case wgpu::VertexFormat::Short2: + case wgpu::VertexFormat::Sint16x2: return VK_FORMAT_R16G16_SINT; - case wgpu::VertexFormat::Short4: + case wgpu::VertexFormat::Sint16x4: return VK_FORMAT_R16G16B16A16_SINT; - case wgpu::VertexFormat::UShort2Norm: + case wgpu::VertexFormat::Unorm16x2: return VK_FORMAT_R16G16_UNORM; - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Unorm16x4: return VK_FORMAT_R16G16B16A16_UNORM; - case wgpu::VertexFormat::Short2Norm: + case wgpu::VertexFormat::Snorm16x2: return VK_FORMAT_R16G16_SNORM; - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Snorm16x4: return VK_FORMAT_R16G16B16A16_SNORM; - case wgpu::VertexFormat::Half2: + case wgpu::VertexFormat::Float16x2: return VK_FORMAT_R16G16_SFLOAT; - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x4: return VK_FORMAT_R16G16B16A16_SFLOAT; - case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float32: return VK_FORMAT_R32_SFLOAT; - case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Float32x2: return VK_FORMAT_R32G32_SFLOAT; - case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float32x3: return VK_FORMAT_R32G32B32_SFLOAT; - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32x4: return VK_FORMAT_R32G32B32A32_SFLOAT; - case wgpu::VertexFormat::UInt: + case wgpu::VertexFormat::Uint32: return VK_FORMAT_R32_UINT; - case wgpu::VertexFormat::UInt2: + case wgpu::VertexFormat::Uint32x2: return VK_FORMAT_R32G32_UINT; - case wgpu::VertexFormat::UInt3: + case wgpu::VertexFormat::Uint32x3: return VK_FORMAT_R32G32B32_UINT; - case wgpu::VertexFormat::UInt4: + case wgpu::VertexFormat::Uint32x4: return VK_FORMAT_R32G32B32A32_UINT; - case wgpu::VertexFormat::Int: + case wgpu::VertexFormat::Sint32: return VK_FORMAT_R32_SINT; - case wgpu::VertexFormat::Int2: + case wgpu::VertexFormat::Sint32x2: return VK_FORMAT_R32G32_SINT; - case wgpu::VertexFormat::Int3: + case wgpu::VertexFormat::Sint32x3: return VK_FORMAT_R32G32B32_SINT; - case wgpu::VertexFormat::Int4: + case wgpu::VertexFormat::Sint32x4: return VK_FORMAT_R32G32B32A32_SINT; + default: + UNREACHABLE(); } } diff --git a/src/tests/end2end/BufferZeroInitTests.cpp b/src/tests/end2end/BufferZeroInitTests.cpp index 089fa5a7c0..93ef8b6bd2 100644 --- a/src/tests/end2end/BufferZeroInitTests.cpp +++ b/src/tests/end2end/BufferZeroInitTests.cpp @@ -231,7 +231,7 @@ class BufferZeroInitTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = vertexBufferCount; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = kColorAttachmentFormat; return device.CreateRenderPipeline(&descriptor); } diff --git a/src/tests/end2end/DeprecatedAPITests.cpp b/src/tests/end2end/DeprecatedAPITests.cpp index 545d5cb97d..f16c838aa9 100644 --- a/src/tests/end2end/DeprecatedAPITests.cpp +++ b/src/tests/end2end/DeprecatedAPITests.cpp @@ -20,9 +20,12 @@ #include "tests/DawnTest.h" #include "common/Constants.h" +#include "common/VertexFormatUtils.h" #include "utils/ComboRenderPipelineDescriptor.h" #include "utils/WGPUHelpers.h" +#include + class DeprecationTests : public DawnTest { protected: void SetUp() override { @@ -194,3 +197,79 @@ class BufferCopyViewDeprecationTests : public DeprecationTests { wgpu::Extent3D copySize = {1, 1, 1}; }; + +// Tests that deprecated vertex formats properly raise a deprecation warning when used +class VertexFormatDeprecationTests : public DeprecationTests { + protected: + // Runs the test + void DoTest(const wgpu::VertexFormat vertexFormat, bool deprecated) { + std::string attribute = "[[location(0)]] var a : "; + attribute += dawn::GetWGSLVertexFormatType(vertexFormat); + attribute += ";"; + + std::string attribAccess = dawn::VertexFormatNumComponents(vertexFormat) > 1 + ? "vec4(a.x, 0.0, 0.0, 1.0)" + : "vec4(a, 0.0, 0.0, 1.0)"; + + wgpu::ShaderModule vsModule = utils::CreateShaderModuleFromWGSL(device, (attribute + R"( + [[builtin(position)]] var Position : vec4; + + [[stage(vertex)]] fn main() -> void { + Position = )" + attribAccess + R"(; + return; + } + )") + .c_str()); + wgpu::ShaderModule fsModule = utils::CreateShaderModuleFromWGSL(device, R"( + [[location(0)]] var outColor : vec4; + + [[stage(fragment)]] fn main() -> void { + outColor = vec4(1.0, 1.0, 1.0, 1.0); + return; + } + )"); + + utils::ComboVertexStateDescriptor vertexState; + vertexState.vertexBufferCount = 1; + vertexState.cVertexBuffers[0].arrayStride = 32; + vertexState.cVertexBuffers[0].attributeCount = 1; + vertexState.cAttributes[0].format = vertexFormat; + vertexState.cAttributes[0].offset = 0; + vertexState.cAttributes[0].shaderLocation = 0; + + utils::ComboRenderPipelineDescriptor descriptor(device); + descriptor.vertexStage.module = vsModule; + descriptor.cFragmentStage.module = fsModule; + descriptor.primitiveTopology = wgpu::PrimitiveTopology::PointList; + descriptor.vertexState = &vertexState; + descriptor.cColorStates[0].format = utils::BasicRenderPass::kDefaultColorFormat; + + if (deprecated) { + EXPECT_DEPRECATION_WARNING(device.CreateRenderPipeline(&descriptor)); + } else { + device.CreateRenderPipeline(&descriptor); + } + } +}; + +TEST_P(VertexFormatDeprecationTests, NewVertexFormats) { + // Using the new vertex formats does not emit a warning. + for (auto& format : dawn::kAllVertexFormats) { + DoTest(format, false); + } +} + +TEST_P(VertexFormatDeprecationTests, DeprecatedVertexFormats) { + // Using deprecated vertex formats does emit a warning. + for (auto& format : dawn::kAllDeprecatedVertexFormats) { + DoTest(format, true); + } +} + +DAWN_INSTANTIATE_TEST(VertexFormatDeprecationTests, + D3D12Backend(), + MetalBackend(), + NullBackend(), + OpenGLBackend(), + OpenGLESBackend(), + VulkanBackend()); \ No newline at end of file diff --git a/src/tests/end2end/DestroyTests.cpp b/src/tests/end2end/DestroyTests.cpp index c29a456805..be95863e8a 100644 --- a/src/tests/end2end/DestroyTests.cpp +++ b/src/tests/end2end/DestroyTests.cpp @@ -47,7 +47,7 @@ class DestroyTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/DrawIndexedIndirectTests.cpp b/src/tests/end2end/DrawIndexedIndirectTests.cpp index 76127c8c1f..00007e968b 100644 --- a/src/tests/end2end/DrawIndexedIndirectTests.cpp +++ b/src/tests/end2end/DrawIndexedIndirectTests.cpp @@ -47,7 +47,7 @@ class DrawIndexedIndirectTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/DrawIndexedTests.cpp b/src/tests/end2end/DrawIndexedTests.cpp index b4d7d59ffe..e6ff190861 100644 --- a/src/tests/end2end/DrawIndexedTests.cpp +++ b/src/tests/end2end/DrawIndexedTests.cpp @@ -47,7 +47,7 @@ class DrawIndexedTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/DrawIndirectTests.cpp b/src/tests/end2end/DrawIndirectTests.cpp index e84b25502e..839e56bd77 100644 --- a/src/tests/end2end/DrawIndirectTests.cpp +++ b/src/tests/end2end/DrawIndirectTests.cpp @@ -47,7 +47,7 @@ class DrawIndirectTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/DrawTests.cpp b/src/tests/end2end/DrawTests.cpp index bb4a0e8476..185009090f 100644 --- a/src/tests/end2end/DrawTests.cpp +++ b/src/tests/end2end/DrawTests.cpp @@ -46,7 +46,7 @@ class DrawTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/FirstIndexOffsetTests.cpp b/src/tests/end2end/FirstIndexOffsetTests.cpp index 0e64de7624..18eb747f75 100644 --- a/src/tests/end2end/FirstIndexOffsetTests.cpp +++ b/src/tests/end2end/FirstIndexOffsetTests.cpp @@ -163,7 +163,7 @@ void FirstIndexOffsetTests::TestImpl(DrawMode mode, pipelineDesc.cVertexState.vertexBufferCount = 1; pipelineDesc.cVertexState.cVertexBuffers[0].arrayStride = kComponentsPerVertex * sizeof(float); pipelineDesc.cVertexState.cVertexBuffers[0].attributeCount = 1; - pipelineDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + pipelineDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; pipelineDesc.cColorStates[0].format = renderPass.colorFormat; wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pipelineDesc); diff --git a/src/tests/end2end/GpuMemorySynchronizationTests.cpp b/src/tests/end2end/GpuMemorySynchronizationTests.cpp index 522fb3e932..5f7fb35064 100644 --- a/src/tests/end2end/GpuMemorySynchronizationTests.cpp +++ b/src/tests/end2end/GpuMemorySynchronizationTests.cpp @@ -602,7 +602,7 @@ TEST_P(MultipleWriteThenMultipleReadTests, SeparateBuffers) { rpDesc.cVertexState.vertexBufferCount = 1; rpDesc.cVertexState.cVertexBuffers[0].arrayStride = kVertexBufferStride; rpDesc.cVertexState.cVertexBuffers[0].attributeCount = 1; - rpDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + rpDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; rpDesc.cColorStates[0].format = renderPass.colorFormat; wgpu::RenderPipeline rp = device.CreateRenderPipeline(&rpDesc); @@ -719,7 +719,7 @@ TEST_P(MultipleWriteThenMultipleReadTests, OneBuffer) { rpDesc.cVertexState.vertexBufferCount = 1; rpDesc.cVertexState.cVertexBuffers[0].arrayStride = kVertexBufferStride; rpDesc.cVertexState.cVertexBuffers[0].attributeCount = 1; - rpDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + rpDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; rpDesc.cColorStates[0].format = renderPass.colorFormat; wgpu::RenderPipeline rp = device.CreateRenderPipeline(&rpDesc); diff --git a/src/tests/end2end/IndexFormatTests.cpp b/src/tests/end2end/IndexFormatTests.cpp index 711a314965..334350e38e 100644 --- a/src/tests/end2end/IndexFormatTests.cpp +++ b/src/tests/end2end/IndexFormatTests.cpp @@ -59,7 +59,7 @@ class IndexFormatTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; return device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/MultisampledSamplingTests.cpp b/src/tests/end2end/MultisampledSamplingTests.cpp index 2191204265..263b98d78a 100644 --- a/src/tests/end2end/MultisampledSamplingTests.cpp +++ b/src/tests/end2end/MultisampledSamplingTests.cpp @@ -72,7 +72,7 @@ class MultisampledSamplingTest : public DawnTest { desc.cVertexState.vertexBufferCount = 1; desc.cVertexState.cVertexBuffers[0].attributeCount = 1; desc.cVertexState.cVertexBuffers[0].arrayStride = 2 * sizeof(float); - desc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float2; + desc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x2; desc.cDepthStencilState.format = kDepthFormat; desc.cDepthStencilState.depthWriteEnabled = true; diff --git a/src/tests/end2end/PrimitiveTopologyTests.cpp b/src/tests/end2end/PrimitiveTopologyTests.cpp index b103aab599..29769d7d0e 100644 --- a/src/tests/end2end/PrimitiveTopologyTests.cpp +++ b/src/tests/end2end/PrimitiveTopologyTests.cpp @@ -198,7 +198,7 @@ class PrimitiveTopologyTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/RenderBundleTests.cpp b/src/tests/end2end/RenderBundleTests.cpp index 55535629ae..27d5faf10c 100644 --- a/src/tests/end2end/RenderBundleTests.cpp +++ b/src/tests/end2end/RenderBundleTests.cpp @@ -56,7 +56,7 @@ class RenderBundleTest : public DawnTest { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cColorStates[0].format = renderPass.colorFormat; pipeline = device.CreateRenderPipeline(&descriptor); diff --git a/src/tests/end2end/SamplerFilterAnisotropicTests.cpp b/src/tests/end2end/SamplerFilterAnisotropicTests.cpp index d6fdcd0d67..6338b9c895 100644 --- a/src/tests/end2end/SamplerFilterAnisotropicTests.cpp +++ b/src/tests/end2end/SamplerFilterAnisotropicTests.cpp @@ -71,10 +71,10 @@ class SamplerFilterAnisotropicTest : public DawnTest { utils::ComboVertexStateDescriptor vertexState; vertexState.cVertexBuffers[0].attributeCount = 2; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; vertexState.cAttributes[1].shaderLocation = 1; vertexState.cAttributes[1].offset = 4 * sizeof(float); - vertexState.cAttributes[1].format = wgpu::VertexFormat::Float2; + vertexState.cAttributes[1].format = wgpu::VertexFormat::Float32x2; vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = 6 * sizeof(float); diff --git a/src/tests/end2end/VertexBufferRobustnessTests.cpp b/src/tests/end2end/VertexBufferRobustnessTests.cpp index d6b6f3adbd..821e35ab82 100644 --- a/src/tests/end2end/VertexBufferRobustnessTests.cpp +++ b/src/tests/end2end/VertexBufferRobustnessTests.cpp @@ -99,7 +99,7 @@ TEST_P(VertexBufferRobustnessTest, DetectInvalidValues) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(float); vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -116,7 +116,7 @@ TEST_P(VertexBufferRobustnessTest, FloatClamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(float); vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -133,7 +133,7 @@ TEST_P(VertexBufferRobustnessTest, IntClamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(int32_t); vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Int; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Sint32; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -150,7 +150,7 @@ TEST_P(VertexBufferRobustnessTest, UIntClamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(uint32_t); vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::UInt; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Uint32; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -167,7 +167,7 @@ TEST_P(VertexBufferRobustnessTest, Float2Clamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(float) * 2; vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float2; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x2; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -185,7 +185,7 @@ TEST_P(VertexBufferRobustnessTest, Float3Clamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(float) * 3; vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float3; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x3; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; @@ -203,7 +203,7 @@ TEST_P(VertexBufferRobustnessTest, Float4Clamp) { vertexState.vertexBufferCount = 1; vertexState.cVertexBuffers[0].arrayStride = sizeof(float) * 4; vertexState.cVertexBuffers[0].attributeCount = 1; - vertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + vertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; vertexState.cAttributes[0].offset = 0; vertexState.cAttributes[0].shaderLocation = 0; diff --git a/src/tests/end2end/VertexFormatTests.cpp b/src/tests/end2end/VertexFormatTests.cpp index 750f0e333c..c644d7c819 100644 --- a/src/tests/end2end/VertexFormatTests.cpp +++ b/src/tests/end2end/VertexFormatTests.cpp @@ -56,14 +56,14 @@ class VertexFormatTest : public DawnTest { bool IsNormalizedFormat(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::Char4Norm: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Short4Norm: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Snorm8x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Snorm16x4: return true; default: return false; @@ -72,18 +72,18 @@ class VertexFormatTest : public DawnTest { bool IsUnsignedFormat(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: return true; default: return false; @@ -92,12 +92,12 @@ class VertexFormatTest : public DawnTest { bool IsFloatFormat(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Half4: - case wgpu::VertexFormat::Float: - case wgpu::VertexFormat::Float2: - case wgpu::VertexFormat::Float3: - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float16x4: + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Float32x4: return true; default: return false; @@ -106,8 +106,8 @@ class VertexFormatTest : public DawnTest { bool IsHalfFormat(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float16x4: return true; default: return false; @@ -116,38 +116,38 @@ class VertexFormatTest : public DawnTest { uint32_t BytesPerComponents(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::Char4Norm: + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Snorm8x4: return 1; - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Short4Norm: - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Half4: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Snorm16x4: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float16x4: return 2; - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::Int: - case wgpu::VertexFormat::Float: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::Int2: - case wgpu::VertexFormat::Int3: - case wgpu::VertexFormat::Int4: - case wgpu::VertexFormat::Float2: - case wgpu::VertexFormat::Float3: - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Float32x4: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Sint32: + case wgpu::VertexFormat::Sint32x2: + case wgpu::VertexFormat::Sint32x3: + case wgpu::VertexFormat::Sint32x4: return 4; default: DAWN_UNREACHABLE(); @@ -156,39 +156,39 @@ class VertexFormatTest : public DawnTest { uint32_t ComponentCount(wgpu::VertexFormat format) { switch (format) { - case wgpu::VertexFormat::UInt: - case wgpu::VertexFormat::Int: - case wgpu::VertexFormat::Float: + case wgpu::VertexFormat::Float32: + case wgpu::VertexFormat::Uint32: + case wgpu::VertexFormat::Sint32: return 1; - case wgpu::VertexFormat::UChar2: - case wgpu::VertexFormat::UShort2: - case wgpu::VertexFormat::UInt2: - case wgpu::VertexFormat::Char2: - case wgpu::VertexFormat::Short2: - case wgpu::VertexFormat::Int2: - case wgpu::VertexFormat::UChar2Norm: - case wgpu::VertexFormat::Char2Norm: - case wgpu::VertexFormat::UShort2Norm: - case wgpu::VertexFormat::Short2Norm: - case wgpu::VertexFormat::Half2: - case wgpu::VertexFormat::Float2: + case wgpu::VertexFormat::Uint8x2: + case wgpu::VertexFormat::Sint8x2: + case wgpu::VertexFormat::Unorm8x2: + case wgpu::VertexFormat::Snorm8x2: + case wgpu::VertexFormat::Uint16x2: + case wgpu::VertexFormat::Sint16x2: + case wgpu::VertexFormat::Unorm16x2: + case wgpu::VertexFormat::Snorm16x2: + case wgpu::VertexFormat::Float16x2: + case wgpu::VertexFormat::Float32x2: + case wgpu::VertexFormat::Uint32x2: + case wgpu::VertexFormat::Sint32x2: return 2; - case wgpu::VertexFormat::Int3: - case wgpu::VertexFormat::UInt3: - case wgpu::VertexFormat::Float3: + case wgpu::VertexFormat::Float32x3: + case wgpu::VertexFormat::Uint32x3: + case wgpu::VertexFormat::Sint32x3: return 3; - case wgpu::VertexFormat::UChar4: - case wgpu::VertexFormat::UShort4: - case wgpu::VertexFormat::UInt4: - case wgpu::VertexFormat::Char4: - case wgpu::VertexFormat::Short4: - case wgpu::VertexFormat::Int4: - case wgpu::VertexFormat::UChar4Norm: - case wgpu::VertexFormat::Char4Norm: - case wgpu::VertexFormat::UShort4Norm: - case wgpu::VertexFormat::Short4Norm: - case wgpu::VertexFormat::Half4: - case wgpu::VertexFormat::Float4: + case wgpu::VertexFormat::Uint8x4: + case wgpu::VertexFormat::Sint8x4: + case wgpu::VertexFormat::Unorm8x4: + case wgpu::VertexFormat::Snorm8x4: + case wgpu::VertexFormat::Uint16x4: + case wgpu::VertexFormat::Sint16x4: + case wgpu::VertexFormat::Unorm16x4: + case wgpu::VertexFormat::Snorm16x4: + case wgpu::VertexFormat::Float16x4: + case wgpu::VertexFormat::Float32x4: + case wgpu::VertexFormat::Uint32x4: + case wgpu::VertexFormat::Sint32x4: return 4; default: DAWN_UNREACHABLE(); @@ -399,7 +399,7 @@ class VertexFormatTest : public DawnTest { } }; -TEST_P(VertexFormatTest, UChar2) { +TEST_P(VertexFormatTest, Uint8x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -423,10 +423,10 @@ TEST_P(VertexFormatTest, UChar2) { std::numeric_limits::max(), 0, std::numeric_limits::min(), 2, 200, 201, }; - DoVertexFormatTest(wgpu::VertexFormat::UChar2, vertexData, expectedData); + DoVertexFormatTest(wgpu::VertexFormat::Uint8x2, vertexData, expectedData); } -TEST_P(VertexFormatTest, UChar4) { +TEST_P(VertexFormatTest, Uint8x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -446,10 +446,10 @@ TEST_P(VertexFormatTest, UChar4) { 203, }; - DoVertexFormatTest(wgpu::VertexFormat::UChar4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint8x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Char2) { +TEST_P(VertexFormatTest, Sint8x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -473,10 +473,10 @@ TEST_P(VertexFormatTest, Char2) { std::numeric_limits::max(), 0, std::numeric_limits::min(), -2, 120, -121, }; - DoVertexFormatTest(wgpu::VertexFormat::Char2, vertexData, expectedData); + DoVertexFormatTest(wgpu::VertexFormat::Sint8x2, vertexData, expectedData); } -TEST_P(VertexFormatTest, Char4) { +TEST_P(VertexFormatTest, Sint8x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -496,10 +496,10 @@ TEST_P(VertexFormatTest, Char4) { -123, }; - DoVertexFormatTest(wgpu::VertexFormat::Char4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint8x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, UChar2Norm) { +TEST_P(VertexFormatTest, Unorm8x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -526,10 +526,10 @@ TEST_P(VertexFormatTest, UChar2Norm) { 200, 201}; - DoVertexFormatTest(wgpu::VertexFormat::UChar2Norm, vertexData, expectedData); + DoVertexFormatTest(wgpu::VertexFormat::Unorm8x2, vertexData, expectedData); } -TEST_P(VertexFormatTest, UChar4Norm) { +TEST_P(VertexFormatTest, Unorm8x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -547,10 +547,10 @@ TEST_P(VertexFormatTest, UChar4Norm) { 202, 203}; - DoVertexFormatTest(wgpu::VertexFormat::UChar4Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Unorm8x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Char2Norm) { +TEST_P(VertexFormatTest, Snorm8x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -579,10 +579,10 @@ TEST_P(VertexFormatTest, Char2Norm) { -121, }; - DoVertexFormatTest(wgpu::VertexFormat::Char2Norm, vertexData, expectedData); + DoVertexFormatTest(wgpu::VertexFormat::Snorm8x2, vertexData, expectedData); } -TEST_P(VertexFormatTest, Char4Norm) { +TEST_P(VertexFormatTest, Snorm8x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -600,10 +600,10 @@ TEST_P(VertexFormatTest, Char4Norm) { 102, -123}; - DoVertexFormatTest(wgpu::VertexFormat::Char4Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Snorm8x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, UShort2) { +TEST_P(VertexFormatTest, Uint16x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -615,10 +615,10 @@ TEST_P(VertexFormatTest, UShort2) { 65432, 4890}; - DoVertexFormatTest(wgpu::VertexFormat::UShort2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint16x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, UShort4) { +TEST_P(VertexFormatTest, Uint16x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -638,10 +638,10 @@ TEST_P(VertexFormatTest, UShort4) { 3467, }; - DoVertexFormatTest(wgpu::VertexFormat::UShort4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint16x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Short2) { +TEST_P(VertexFormatTest, Sint16x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -653,10 +653,10 @@ TEST_P(VertexFormatTest, Short2) { 3876, -3948}; - DoVertexFormatTest(wgpu::VertexFormat::Short2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint16x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, Short4) { +TEST_P(VertexFormatTest, Sint16x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -676,10 +676,10 @@ TEST_P(VertexFormatTest, Short4) { -2987, }; - DoVertexFormatTest(wgpu::VertexFormat::Short4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint16x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, UShort2Norm) { +TEST_P(VertexFormatTest, Unorm16x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -691,10 +691,10 @@ TEST_P(VertexFormatTest, UShort2Norm) { 3456, 6543}; - DoVertexFormatTest(wgpu::VertexFormat::UShort2Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Unorm16x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, UShort4Norm) { +TEST_P(VertexFormatTest, Unorm16x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -712,10 +712,10 @@ TEST_P(VertexFormatTest, UShort4Norm) { 2987, 2987}; - DoVertexFormatTest(wgpu::VertexFormat::UShort4Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Unorm16x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Short2Norm) { +TEST_P(VertexFormatTest, Snorm16x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -727,10 +727,10 @@ TEST_P(VertexFormatTest, Short2Norm) { 4987, -6789}; - DoVertexFormatTest(wgpu::VertexFormat::Short2Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Snorm16x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, Short4Norm) { +TEST_P(VertexFormatTest, Snorm16x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -748,10 +748,10 @@ TEST_P(VertexFormatTest, Short4Norm) { 20432, -2083}; - DoVertexFormatTest(wgpu::VertexFormat::Short4Norm, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Snorm16x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Half2) { +TEST_P(VertexFormatTest, Float16x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -759,10 +759,10 @@ TEST_P(VertexFormatTest, Half2) { std::vector vertexData = Float32ToFloat16(std::vector({14.8f, -0.0f, 22.5f, 1.3f, +0.0f, -24.8f})); - DoVertexFormatTest(wgpu::VertexFormat::Half2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float16x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, Half4) { +TEST_P(VertexFormatTest, Float16x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -770,34 +770,34 @@ TEST_P(VertexFormatTest, Half4) { std::vector vertexData = Float32ToFloat16(std::vector( {+0.0f, -16.8f, 18.2f, -0.0f, 12.5f, 1.3f, 14.8f, -12.4f, 22.5f, -48.8f, 47.4f, -24.8f})); - DoVertexFormatTest(wgpu::VertexFormat::Half4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float16x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Float) { +TEST_P(VertexFormatTest, Float32) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); std::vector vertexData = {1.3f, +0.0f, -0.0f}; - DoVertexFormatTest(wgpu::VertexFormat::Float, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float32, vertexData, vertexData); vertexData = std::vector{+1.0f, -1.0f, 18.23f}; - DoVertexFormatTest(wgpu::VertexFormat::Float, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float32, vertexData, vertexData); } -TEST_P(VertexFormatTest, Float2) { +TEST_P(VertexFormatTest, Float32x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); std::vector vertexData = {18.23f, -0.0f, +0.0f, +1.0f, 1.3f, -1.0f}; - DoVertexFormatTest(wgpu::VertexFormat::Float2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float32x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, Float3) { +TEST_P(VertexFormatTest, Float32x3) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -806,10 +806,10 @@ TEST_P(VertexFormatTest, Float3) { +0.0f, -1.0f, -0.0f, 1.0f, 1.3f, 99.45f, 23.6f, -81.2f, 55.0f, }; - DoVertexFormatTest(wgpu::VertexFormat::Float3, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float32x3, vertexData, vertexData); } -TEST_P(VertexFormatTest, Float4) { +TEST_P(VertexFormatTest, Float32x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -818,10 +818,10 @@ TEST_P(VertexFormatTest, Float4) { 19.2f, -19.3f, +0.0f, 1.0f, -0.0f, 1.0f, 1.3f, -1.0f, 13.078f, 21.1965f, -1.1f, -1.2f, }; - DoVertexFormatTest(wgpu::VertexFormat::Float4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Float32x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, UInt) { +TEST_P(VertexFormatTest, Uint32) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -830,10 +830,10 @@ TEST_P(VertexFormatTest, UInt) { std::numeric_limits::max(), std::numeric_limits::max()}; - DoVertexFormatTest(wgpu::VertexFormat::UInt, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint32, vertexData, vertexData); } -TEST_P(VertexFormatTest, UInt2) { +TEST_P(VertexFormatTest, Uint32x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -842,10 +842,10 @@ TEST_P(VertexFormatTest, UInt2) { std::numeric_limits::max(), 64, std::numeric_limits::max(), 128}; - DoVertexFormatTest(wgpu::VertexFormat::UInt2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint32x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, UInt3) { +TEST_P(VertexFormatTest, Uint32x3) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -854,10 +854,10 @@ TEST_P(VertexFormatTest, UInt3) { std::numeric_limits::max(), 164, 128, std::numeric_limits::max(), 1283, 256}; - DoVertexFormatTest(wgpu::VertexFormat::UInt3, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint32x3, vertexData, vertexData); } -TEST_P(VertexFormatTest, UInt4) { +TEST_P(VertexFormatTest, Uint32x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -866,10 +866,10 @@ TEST_P(VertexFormatTest, UInt4) { std::numeric_limits::max(), 164, 128, 0, std::numeric_limits::max(), 1283, 256, 4567}; - DoVertexFormatTest(wgpu::VertexFormat::UInt4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Uint32x4, vertexData, vertexData); } -TEST_P(VertexFormatTest, Int) { +TEST_P(VertexFormatTest, Sint32) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -878,10 +878,10 @@ TEST_P(VertexFormatTest, Int) { std::numeric_limits::min(), std::numeric_limits::max()}; - DoVertexFormatTest(wgpu::VertexFormat::Int, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint32, vertexData, vertexData); } -TEST_P(VertexFormatTest, Int2) { +TEST_P(VertexFormatTest, Sint32x2) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -891,10 +891,10 @@ TEST_P(VertexFormatTest, Int2) { std::numeric_limits::max(), std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::min()}; - DoVertexFormatTest(wgpu::VertexFormat::Int2, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint32x2, vertexData, vertexData); } -TEST_P(VertexFormatTest, Int3) { +TEST_P(VertexFormatTest, Sint32x3) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -904,10 +904,10 @@ TEST_P(VertexFormatTest, Int3) { std::numeric_limits::max(), std::numeric_limits::min(), 128, std::numeric_limits::max(), std::numeric_limits::min(), 256}; - DoVertexFormatTest(wgpu::VertexFormat::Int3, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint32x3, vertexData, vertexData); } -TEST_P(VertexFormatTest, Int4) { +TEST_P(VertexFormatTest, Sint32x4) { // TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue. // See http://crbug.com/dawn/259 DAWN_SKIP_TEST_IF(IsMetal() && IsIntel()); @@ -917,7 +917,7 @@ TEST_P(VertexFormatTest, Int4) { std::numeric_limits::max(), std::numeric_limits::min(), -128, 0, std::numeric_limits::max(), std::numeric_limits::min(), 256, -4567}; - DoVertexFormatTest(wgpu::VertexFormat::Int4, vertexData, vertexData); + DoVertexFormatTest(wgpu::VertexFormat::Sint32x4, vertexData, vertexData); } DAWN_INSTANTIATE_TEST(VertexFormatTest, diff --git a/src/tests/end2end/VertexStateTests.cpp b/src/tests/end2end/VertexStateTests.cpp index 160a287789..4584533c04 100644 --- a/src/tests/end2end/VertexStateTests.cpp +++ b/src/tests/end2end/VertexStateTests.cpp @@ -46,15 +46,15 @@ class VertexStateTest : public DawnTest { bool ShouldComponentBeDefault(VertexFormat format, int component) { EXPECT_TRUE(component >= 0 && component < 4); switch (format) { - case VertexFormat::Float4: - case VertexFormat::UChar4Norm: + case VertexFormat::Float32x4: + case VertexFormat::Unorm8x4: return component >= 4; - case VertexFormat::Float3: + case VertexFormat::Float32x3: return component >= 3; - case VertexFormat::Float2: - case VertexFormat::UChar2Norm: + case VertexFormat::Float32x2: + case VertexFormat::Unorm8x2: return component >= 2; - case VertexFormat::Float: + case VertexFormat::Float32: return component >= 1; default: DAWN_UNREACHABLE(); @@ -236,10 +236,10 @@ class VertexStateTest : public DawnTest { // Test compilation and usage of the fixture :) TEST_P(VertexStateTest, Basic) { utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{4 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float4}}}}, + MakeVertexState({{4 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -257,9 +257,9 @@ TEST_P(VertexStateTest, ZeroStride) { DAWN_SKIP_TEST_IF(IsLinux() && IsOpenGL()); utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float4}}}}, &vertexState); + MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); wgpu::Buffer buffer0 = MakeVertexBuffer({ 0, @@ -278,9 +278,10 @@ TEST_P(VertexStateTest, AttributeExpanding) { // R32F case { utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float}}}}, &vertexState); + MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float32}}}}, + &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float32, InputStepMode::Vertex}}); wgpu::Buffer buffer0 = MakeVertexBuffer({0, 1, 2, 3}); DoTestDraw(pipeline, 1, 1, {DrawVertexBuffer{0, &buffer0}}); @@ -288,9 +289,10 @@ TEST_P(VertexStateTest, AttributeExpanding) { // RG32F case { utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float2}}}}, &vertexState); + MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x2}}}}, + &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float2, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float32x2, InputStepMode::Vertex}}); wgpu::Buffer buffer0 = MakeVertexBuffer({0, 1, 2, 3}); DoTestDraw(pipeline, 1, 1, {DrawVertexBuffer{0, &buffer0}}); @@ -298,9 +300,10 @@ TEST_P(VertexStateTest, AttributeExpanding) { // RGB32F case { utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float3}}}}, &vertexState); + MakeVertexState({{0, InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x3}}}}, + &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float3, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 0, {{0, VertexFormat::Float32x3, InputStepMode::Vertex}}); wgpu::Buffer buffer0 = MakeVertexBuffer({0, 1, 2, 3}); DoTestDraw(pipeline, 1, 1, {DrawVertexBuffer{0, &buffer0}}); @@ -313,10 +316,10 @@ TEST_P(VertexStateTest, StrideLargerThanAttributes) { DAWN_SKIP_TEST_IF(IsLinux() && IsOpenGL()); utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{8 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float4}}}}, + MakeVertexState({{8 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -334,10 +337,10 @@ TEST_P(VertexStateTest, TwoAttributesAtAnOffsetVertex) { MakeVertexState( {{8 * sizeof(float), InputStepMode::Vertex, - {{0, 0, VertexFormat::Float4}, {1, 4 * sizeof(float), VertexFormat::Float4}}}}, + {{0, 0, VertexFormat::Float32x4}, {1, 4 * sizeof(float), VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -355,10 +358,10 @@ TEST_P(VertexStateTest, TwoAttributesAtAnOffsetInstance) { MakeVertexState( {{8 * sizeof(float), InputStepMode::Instance, - {{0, 0, VertexFormat::Float4}, {1, 4 * sizeof(float), VertexFormat::Float4}}}}, + {{0, 0, VertexFormat::Float32x4}, {1, 4 * sizeof(float), VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Instance}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -373,10 +376,11 @@ TEST_P(VertexStateTest, TwoAttributesAtAnOffsetInstance) { // Test a pure-instance input state TEST_P(VertexStateTest, PureInstance) { utils::ComboVertexStateDescriptor vertexState; - MakeVertexState({{4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float4}}}}, - &vertexState); + MakeVertexState( + {{4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float32x4}}}}, + &vertexState); wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Instance}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -396,17 +400,17 @@ TEST_P(VertexStateTest, MixedEverything) { MakeVertexState( {{12 * sizeof(float), InputStepMode::Vertex, - {{0, 0, VertexFormat::Float}, {1, 6 * sizeof(float), VertexFormat::Float2}}}, + {{0, 0, VertexFormat::Float32}, {1, 6 * sizeof(float), VertexFormat::Float32x2}}}, {10 * sizeof(float), InputStepMode::Instance, - {{2, 0, VertexFormat::Float3}, {3, 5 * sizeof(float), VertexFormat::Float4}}}}, + {{2, 0, VertexFormat::Float32x3}, {3, 5 * sizeof(float), VertexFormat::Float32x4}}}}, &vertexState); wgpu::RenderPipeline pipeline = MakeTestPipeline(vertexState, 1, - {{0, VertexFormat::Float, InputStepMode::Vertex}, - {1, VertexFormat::Float2, InputStepMode::Vertex}, - {2, VertexFormat::Float3, InputStepMode::Instance}, - {3, VertexFormat::Float4, InputStepMode::Instance}}); + {{0, VertexFormat::Float32, InputStepMode::Vertex}, + {1, VertexFormat::Float32x2, InputStepMode::Vertex}, + {2, VertexFormat::Float32x3, InputStepMode::Instance}, + {3, VertexFormat::Float32x4, InputStepMode::Instance}}); // clang-format off wgpu::Buffer buffer0 = MakeVertexBuffer({ @@ -429,11 +433,12 @@ TEST_P(VertexStateTest, MixedEverything) { TEST_P(VertexStateTest, UnusedVertexSlot) { // Instance input state, using slot 1 utils::ComboVertexStateDescriptor instanceVertexState; - MakeVertexState({{0, InputStepMode::Vertex, {}}, - {4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float4}}}}, - &instanceVertexState); + MakeVertexState( + {{0, InputStepMode::Vertex, {}}, + {4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float32x4}}}}, + &instanceVertexState); wgpu::RenderPipeline instancePipeline = MakeTestPipeline( - instanceVertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}}); + instanceVertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Instance}}); // clang-format off wgpu::Buffer buffer = MakeVertexBuffer({ @@ -469,18 +474,19 @@ TEST_P(VertexStateTest, UnusedVertexSlot) { TEST_P(VertexStateTest, MultiplePipelinesMixedVertexState) { // Basic input state, using slot 0 utils::ComboVertexStateDescriptor vertexVertexState; - MakeVertexState({{4 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float4}}}}, + MakeVertexState({{4 * sizeof(float), InputStepMode::Vertex, {{0, 0, VertexFormat::Float32x4}}}}, &vertexVertexState); - wgpu::RenderPipeline vertexPipeline = - MakeTestPipeline(vertexVertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + wgpu::RenderPipeline vertexPipeline = MakeTestPipeline( + vertexVertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); // Instance input state, using slot 1 utils::ComboVertexStateDescriptor instanceVertexState; - MakeVertexState({{0, InputStepMode::Instance, {}}, - {4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float4}}}}, - &instanceVertexState); + MakeVertexState( + {{0, InputStepMode::Instance, {}}, + {4 * sizeof(float), InputStepMode::Instance, {{0, 0, VertexFormat::Float32x4}}}}, + &instanceVertexState); wgpu::RenderPipeline instancePipeline = MakeTestPipeline( - instanceVertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Instance}}); + instanceVertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Instance}}); // clang-format off wgpu::Buffer buffer = MakeVertexBuffer({ @@ -525,10 +531,10 @@ TEST_P(VertexStateTest, LastAllowedVertexBuffer) { vertexState.cVertexBuffers[kBufferIndex].attributes = &vertexState.cAttributes[0]; vertexState.cAttributes[0].shaderLocation = 0; vertexState.cAttributes[0].offset = 0; - vertexState.cAttributes[0].format = VertexFormat::Float4; + vertexState.cAttributes[0].format = VertexFormat::Float32x4; wgpu::RenderPipeline pipeline = - MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float4, InputStepMode::Vertex}}); + MakeTestPipeline(vertexState, 1, {{0, VertexFormat::Float32x4, InputStepMode::Vertex}}); wgpu::Buffer buffer0 = MakeVertexBuffer({0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5}); DoTestDraw(pipeline, 1, 1, {DrawVertexBuffer{kMaxVertexBuffers - 1, &buffer0}}); @@ -543,10 +549,10 @@ TEST_P(VertexStateTest, OverlappingVertexAttributes) { InputStepMode::Vertex, { // "****" represents the bytes we'll actually read in the shader. - {0, 0 /* offset */, VertexFormat::Float4}, // |****|----|----|----| - {1, 4 /* offset */, VertexFormat::UInt2}, // |****|****| - {2, 8 /* offset */, VertexFormat::Half4}, // |-----****| - {3, 0 /* offset */, VertexFormat::Float}, // |****| + {0, 0 /* offset */, VertexFormat::Float32x4}, // |****|----|----|----| + {1, 4 /* offset */, VertexFormat::Uint32x2}, // |****|****| + {2, 8 /* offset */, VertexFormat::Float16x4}, // |-----****| + {3, 0 /* offset */, VertexFormat::Float32}, // |****| }}}, &vertexState); diff --git a/src/tests/perf_tests/DrawCallPerf.cpp b/src/tests/perf_tests/DrawCallPerf.cpp index 862af667fd..557ae2854c 100644 --- a/src/tests/perf_tests/DrawCallPerf.cpp +++ b/src/tests/perf_tests/DrawCallPerf.cpp @@ -355,7 +355,7 @@ void DrawCallPerf::SetUp() { renderPipelineDesc.cVertexState.vertexBufferCount = 1; renderPipelineDesc.cVertexState.cVertexBuffers[0].arrayStride = 4 * sizeof(float); renderPipelineDesc.cVertexState.cVertexBuffers[0].attributeCount = 1; - renderPipelineDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + renderPipelineDesc.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; renderPipelineDesc.depthStencilState = &renderPipelineDesc.cDepthStencilState; renderPipelineDesc.cDepthStencilState.format = wgpu::TextureFormat::Depth24PlusStencil8; renderPipelineDesc.cColorStates[0].format = wgpu::TextureFormat::RGBA8Unorm; diff --git a/src/tests/unittests/validation/RenderBundleValidationTests.cpp b/src/tests/unittests/validation/RenderBundleValidationTests.cpp index 5d946a5a6d..bb6af9fc25 100644 --- a/src/tests/unittests/validation/RenderBundleValidationTests.cpp +++ b/src/tests/unittests/validation/RenderBundleValidationTests.cpp @@ -106,7 +106,7 @@ namespace { descriptor->cVertexState.vertexBufferCount = 1; descriptor->cVertexState.cVertexBuffers[0].arrayStride = 2 * sizeof(float); descriptor->cVertexState.cVertexBuffers[0].attributeCount = 1; - descriptor->cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float2; + descriptor->cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x2; descriptor->cVertexState.cAttributes[0].shaderLocation = 0; } diff --git a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp index 6b4faa1e27..c36795755e 100644 --- a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp +++ b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp @@ -646,7 +646,7 @@ TEST_F(RenderPipelineValidationTest, VertexAttribCorrectEntryPoint) { descriptor.cVertexState.vertexBufferCount = 1; descriptor.cVertexState.cVertexBuffers[0].attributeCount = 1; descriptor.cVertexState.cVertexBuffers[0].arrayStride = 16; - descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float4; + descriptor.cVertexState.cAttributes[0].format = wgpu::VertexFormat::Float32x4; descriptor.cVertexState.cAttributes[0].offset = 0; // Success cases, the attribute used by the entryPoint is declared in the pipeline. diff --git a/src/tests/unittests/validation/VertexBufferValidationTests.cpp b/src/tests/unittests/validation/VertexBufferValidationTests.cpp index 3015774994..9439ec3c63 100644 --- a/src/tests/unittests/validation/VertexBufferValidationTests.cpp +++ b/src/tests/unittests/validation/VertexBufferValidationTests.cpp @@ -73,7 +73,7 @@ class VertexBufferValidationTest : public ValidationTest { descriptor.cVertexState.cVertexBuffers[i].attributes = &descriptor.cVertexState.cAttributes[i]; descriptor.cVertexState.cAttributes[i].shaderLocation = i; - descriptor.cVertexState.cAttributes[i].format = wgpu::VertexFormat::Float3; + descriptor.cVertexState.cAttributes[i].format = wgpu::VertexFormat::Float32x3; } descriptor.cVertexState.vertexBufferCount = bufferCount; diff --git a/src/tests/unittests/validation/VertexStateValidationTests.cpp b/src/tests/unittests/validation/VertexStateValidationTests.cpp index f36328635f..0ece5ea396 100644 --- a/src/tests/unittests/validation/VertexStateValidationTests.cpp +++ b/src/tests/unittests/validation/VertexStateValidationTests.cpp @@ -284,7 +284,7 @@ TEST_F(VertexStateTest, SetAttributeOffsetOutOfBounds) { utils::ComboVertexStateDescriptor state; state.vertexBufferCount = 1; state.cVertexBuffers[0].attributeCount = 1; - state.cAttributes[0].offset = kMaxVertexBufferStride - sizeof(wgpu::VertexFormat::Float); + state.cAttributes[0].offset = kMaxVertexBufferStride - sizeof(wgpu::VertexFormat::Float32); CreatePipeline(true, state, kDummyVertexShader); // Test attribute offset out of bounds @@ -321,6 +321,6 @@ TEST_F(VertexStateTest, VertexFormatLargerThanNonZeroStride) { state.vertexBufferCount = 1; state.cVertexBuffers[0].arrayStride = 4; state.cVertexBuffers[0].attributeCount = 1; - state.cAttributes[0].format = wgpu::VertexFormat::Float4; + state.cAttributes[0].format = wgpu::VertexFormat::Float32x4; CreatePipeline(false, state, kDummyVertexShader); } diff --git a/src/utils/ComboRenderPipelineDescriptor.cpp b/src/utils/ComboRenderPipelineDescriptor.cpp index 558fe78c00..73defe6ec4 100644 --- a/src/utils/ComboRenderPipelineDescriptor.cpp +++ b/src/utils/ComboRenderPipelineDescriptor.cpp @@ -28,7 +28,7 @@ namespace utils { wgpu::VertexAttributeDescriptor vertexAttribute; vertexAttribute.shaderLocation = 0; vertexAttribute.offset = 0; - vertexAttribute.format = wgpu::VertexFormat::Float; + vertexAttribute.format = wgpu::VertexFormat::Float32; for (uint32_t i = 0; i < kMaxVertexAttributes; ++i) { cAttributes[i] = vertexAttribute; }