From 1384e8b1631695443a30969e75aa442945b6b8d0 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Thu, 22 Jul 2021 08:57:29 +0000 Subject: [PATCH] Replace VertexFormatUtils with a dawn_native table of formats This replaces multiple switches with a single indexing into a data table, and also adds information about the VertexFormatBaseType for later validation. Bug: dawn:1008 Change-Id: Ic3f564b0dc571cc0008a54785613f962ce223452 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/59030 Reviewed-by: Jiawei Shao Commit-Queue: Jiawei Shao Auto-Submit: Corentin Wallez --- src/common/BUILD.gn | 2 - src/common/CMakeLists.txt | 2 - src/common/VertexFormatUtils.cpp | 162 ------------------ src/common/VertexFormatUtils.h | 48 ------ src/dawn_native/BUILD.gn | 2 + src/dawn_native/CMakeLists.txt | 2 + src/dawn_native/RenderPipeline.cpp | 13 +- src/dawn_native/ShaderModule.cpp | 1 - src/dawn_native/VertexFormat.cpp | 69 ++++++++ src/dawn_native/VertexFormat.h | 40 +++++ src/dawn_native/metal/RenderPipelineMTL.mm | 6 +- src/dawn_native/opengl/CommandBufferGL.cpp | 4 +- src/tests/end2end/DeprecatedAPITests.cpp | 1 - ...VertexAndIndexBufferOOBValidationTests.cpp | 9 +- 14 files changed, 126 insertions(+), 235 deletions(-) delete mode 100644 src/common/VertexFormatUtils.cpp delete mode 100644 src/common/VertexFormatUtils.h create mode 100644 src/dawn_native/VertexFormat.cpp create mode 100644 src/dawn_native/VertexFormat.h diff --git a/src/common/BUILD.gn b/src/common/BUILD.gn index d7daeaaf35..372ee1b415 100644 --- a/src/common/BUILD.gn +++ b/src/common/BUILD.gn @@ -202,8 +202,6 @@ 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", diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index c73410e69a..4bdeec4f60 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -54,8 +54,6 @@ target_sources(dawn_common PRIVATE "TypeTraits.h" "TypedInteger.h" "UnderlyingType.h" - "VertexFormatUtils.cpp" - "VertexFormatUtils.h" "ityp_array.h" "ityp_bitset.h" "ityp_span.h" diff --git a/src/common/VertexFormatUtils.cpp b/src/common/VertexFormatUtils.cpp deleted file mode 100644 index 082a6d41ca..0000000000 --- a/src/common/VertexFormatUtils.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// 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 { - - uint32_t VertexFormatNumComponents(wgpu::VertexFormat 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; - } - UNREACHABLE(); - } - - size_t VertexFormatComponentSize(wgpu::VertexFormat 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; - } - UNREACHABLE(); - } - - size_t VertexFormatSize(wgpu::VertexFormat format) { - return VertexFormatNumComponents(format) * VertexFormatComponentSize(format); - } - - const char* GetWGSLVertexFormatType(wgpu::VertexFormat 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; - } - UNREACHABLE(); - } - -} // namespace dawn diff --git a/src/common/VertexFormatUtils.h b/src/common/VertexFormatUtils.h deleted file mode 100644 index 1ef5e98d29..0000000000 --- a/src/common/VertexFormatUtils.h +++ /dev/null @@ -1,48 +0,0 @@ -// 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 - -// TODO(dawn:695): Remove the dawncpp_headers CMake dependency when VertexFormatUtils is deleted, -// assuming no other dependencies have been added in other project files. - -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, - }; - - 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/BUILD.gn b/src/dawn_native/BUILD.gn index 6fc4e3ae4a..f73bfe2425 100644 --- a/src/dawn_native/BUILD.gn +++ b/src/dawn_native/BUILD.gn @@ -300,6 +300,8 @@ source_set("dawn_native_sources") { "ToBackend.h", "Toggles.cpp", "Toggles.h", + "VertexFormat.cpp", + "VertexFormat.h", "dawn_platform.h", ] diff --git a/src/dawn_native/CMakeLists.txt b/src/dawn_native/CMakeLists.txt index c78798270d..84417d49b1 100644 --- a/src/dawn_native/CMakeLists.txt +++ b/src/dawn_native/CMakeLists.txt @@ -166,6 +166,8 @@ target_sources(dawn_native PRIVATE "ToBackend.h" "Toggles.cpp" "Toggles.h" + "VertexFormat.cpp" + "VertexFormat.h" "dawn_platform.h" ) target_link_libraries(dawn_native diff --git a/src/dawn_native/RenderPipeline.cpp b/src/dawn_native/RenderPipeline.cpp index 709fafb73a..3f59535964 100644 --- a/src/dawn_native/RenderPipeline.cpp +++ b/src/dawn_native/RenderPipeline.cpp @@ -15,12 +15,12 @@ #include "dawn_native/RenderPipeline.h" #include "common/BitSetIterator.h" -#include "common/VertexFormatUtils.h" #include "dawn_native/ChainUtils_autogen.h" #include "dawn_native/Commands.h" #include "dawn_native/Device.h" #include "dawn_native/ObjectContentHasher.h" #include "dawn_native/ValidationUtils_autogen.h" +#include "dawn_native/VertexFormat.h" #include @@ -33,6 +33,7 @@ namespace dawn_native { uint64_t vertexBufferStride, std::bitset* attributesSetMask) { DAWN_TRY(ValidateVertexFormat(attribute->format)); + const VertexFormatInfo& formatInfo = GetVertexFormatInfo(attribute->format); if (attribute->shaderLocation >= kMaxVertexAttributes) { return DAWN_VALIDATION_ERROR("Setting attribute out of bounds"); @@ -40,9 +41,8 @@ namespace dawn_native { // No underflow is possible because the max vertex format size is smaller than // kMaxVertexBufferArrayStride. - ASSERT(kMaxVertexBufferArrayStride >= dawn::VertexFormatSize(attribute->format)); - if (attribute->offset > - kMaxVertexBufferArrayStride - dawn::VertexFormatSize(attribute->format)) { + ASSERT(kMaxVertexBufferArrayStride >= formatInfo.byteSize); + if (attribute->offset > kMaxVertexBufferArrayStride - formatInfo.byteSize) { return DAWN_VALIDATION_ERROR("Setting attribute offset out of bounds"); } @@ -50,12 +50,11 @@ namespace dawn_native { // than kMaxVertexBufferArrayStride. ASSERT(attribute->offset < kMaxVertexBufferArrayStride); if (vertexBufferStride > 0 && - attribute->offset + dawn::VertexFormatSize(attribute->format) > - vertexBufferStride) { + attribute->offset + formatInfo.byteSize > vertexBufferStride) { return DAWN_VALIDATION_ERROR("Setting attribute offset out of bounds"); } - if (attribute->offset % dawn::VertexFormatComponentSize(attribute->format) != 0) { + if (attribute->offset % formatInfo.componentByteSize != 0) { return DAWN_VALIDATION_ERROR( "Attribute offset needs to be a multiple of the size format's components"); } diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp index 36d1c27eb6..9bd3b7e45d 100644 --- a/src/dawn_native/ShaderModule.cpp +++ b/src/dawn_native/ShaderModule.cpp @@ -16,7 +16,6 @@ #include "common/Constants.h" #include "common/HashUtils.h" -#include "common/VertexFormatUtils.h" #include "dawn_native/BindGroupLayout.h" #include "dawn_native/ChainUtils_autogen.h" #include "dawn_native/CompilationMessages.h" diff --git a/src/dawn_native/VertexFormat.cpp b/src/dawn_native/VertexFormat.cpp new file mode 100644 index 0000000000..b4bdfb7aab --- /dev/null +++ b/src/dawn_native/VertexFormat.cpp @@ -0,0 +1,69 @@ +// 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 "dawn_native/VertexFormat.h" + +#include "common/Assert.h" + +#include + +namespace dawn_native { + + static constexpr std::array sVertexFormatTable = {{ + // + {wgpu::VertexFormat::Undefined, 0, 0, 0, VertexFormatBaseType::Float}, + + {wgpu::VertexFormat::Uint8x2, 2, 2, 1, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Uint8x4, 4, 4, 1, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Sint8x2, 2, 2, 1, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Sint8x4, 4, 4, 1, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Unorm8x2, 2, 2, 1, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Unorm8x4, 4, 4, 1, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Snorm8x2, 2, 2, 1, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Snorm8x4, 4, 4, 1, VertexFormatBaseType::Float}, + + {wgpu::VertexFormat::Uint16x2, 4, 2, 2, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Uint16x4, 8, 4, 2, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Sint16x2, 4, 2, 2, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Sint16x4, 8, 4, 2, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Unorm16x2, 4, 2, 2, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Unorm16x4, 8, 4, 2, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Snorm16x2, 4, 2, 2, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Snorm16x4, 8, 4, 2, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Float16x2, 4, 2, 2, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Float16x4, 8, 4, 2, VertexFormatBaseType::Float}, + + {wgpu::VertexFormat::Float32, 4, 1, 4, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Float32x2, 8, 2, 4, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Float32x3, 12, 3, 4, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Float32x4, 16, 4, 4, VertexFormatBaseType::Float}, + {wgpu::VertexFormat::Uint32, 4, 1, 4, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Uint32x2, 8, 2, 4, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Uint32x3, 12, 3, 4, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Uint32x4, 16, 4, 4, VertexFormatBaseType::Uint}, + {wgpu::VertexFormat::Sint32, 4, 1, 4, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Sint32x2, 8, 2, 4, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Sint32x3, 12, 3, 4, VertexFormatBaseType::Sint}, + {wgpu::VertexFormat::Sint32x4, 16, 4, 4, VertexFormatBaseType::Sint}, + // + }}; + + const VertexFormatInfo& GetVertexFormatInfo(wgpu::VertexFormat format) { + ASSERT(format != wgpu::VertexFormat::Undefined); + ASSERT(static_cast(format) < sVertexFormatTable.size()); + ASSERT(sVertexFormatTable[static_cast(format)].format == format); + return sVertexFormatTable[static_cast(format)]; + } + +} // namespace dawn_native diff --git a/src/dawn_native/VertexFormat.h b/src/dawn_native/VertexFormat.h new file mode 100644 index 0000000000..582c95d1e7 --- /dev/null +++ b/src/dawn_native/VertexFormat.h @@ -0,0 +1,40 @@ +// 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_VERTEXFORMAT_H_ +#define DAWNNATIVE_VERTEXFORMAT_H_ + +#include "dawn_native/dawn_platform.h" + +namespace dawn_native { + + enum class VertexFormatBaseType { + Float, + Uint, + Sint, + }; + + struct VertexFormatInfo { + wgpu::VertexFormat format; + uint32_t byteSize; + uint32_t componentCount; + uint32_t componentByteSize; + VertexFormatBaseType baseType; + }; + + const VertexFormatInfo& GetVertexFormatInfo(wgpu::VertexFormat format); + +} // namespace dawn_native + +#endif // DAWNNATIVE_VERTEXFORMAT_H_ diff --git a/src/dawn_native/metal/RenderPipelineMTL.mm b/src/dawn_native/metal/RenderPipelineMTL.mm index 9ddcb56c85..4ddaa59135 100644 --- a/src/dawn_native/metal/RenderPipelineMTL.mm +++ b/src/dawn_native/metal/RenderPipelineMTL.mm @@ -14,7 +14,7 @@ #include "dawn_native/metal/RenderPipelineMTL.h" -#include "common/VertexFormatUtils.h" +#include "dawn_native/VertexFormat.h" #include "dawn_native/metal/DeviceMTL.h" #include "dawn_native/metal/PipelineLayoutMTL.h" #include "dawn_native/metal/ShaderModuleMTL.h" @@ -479,8 +479,8 @@ namespace dawn_native { namespace metal { continue; } maxArrayStride = - std::max(maxArrayStride, - dawn::VertexFormatSize(attrib.format) + size_t(attrib.offset)); + std::max(maxArrayStride, GetVertexFormatInfo(attrib.format).byteSize + + 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 ee8504b792..39bb465bb2 100644 --- a/src/dawn_native/opengl/CommandBufferGL.cpp +++ b/src/dawn_native/opengl/CommandBufferGL.cpp @@ -14,13 +14,13 @@ #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" #include "dawn_native/Commands.h" #include "dawn_native/ExternalTexture.h" #include "dawn_native/RenderBundle.h" +#include "dawn_native/VertexFormat.h" #include "dawn_native/opengl/BufferGL.h" #include "dawn_native/opengl/ComputePipelineGL.h" #include "dawn_native/opengl/DeviceGL.h" @@ -179,7 +179,7 @@ namespace dawn_native { namespace opengl { uint64_t offset = mVertexBufferOffsets[slot]; const VertexBufferInfo& vertexBuffer = mLastPipeline->GetVertexBuffer(slot); - uint32_t components = dawn::VertexFormatNumComponents(attribute.format); + uint32_t components = GetVertexFormatInfo(attribute.format).componentCount; GLenum formatType = VertexFormatType(attribute.format); GLboolean normalized = VertexFormatIsNormalized(attribute.format); diff --git a/src/tests/end2end/DeprecatedAPITests.cpp b/src/tests/end2end/DeprecatedAPITests.cpp index 4ab9ec1aee..fba4a295d0 100644 --- a/src/tests/end2end/DeprecatedAPITests.cpp +++ b/src/tests/end2end/DeprecatedAPITests.cpp @@ -20,7 +20,6 @@ #include "tests/DawnTest.h" #include "common/Constants.h" -#include "common/VertexFormatUtils.h" #include "utils/ComboRenderPipelineDescriptor.h" #include "utils/WGPUHelpers.h" diff --git a/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp b/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp index 8090a1c932..c1a427716a 100644 --- a/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp +++ b/src/tests/unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp @@ -15,8 +15,6 @@ #include "tests/unittests/validation/ValidationTest.h" #include "common/Constants.h" - -#include "common/VertexFormatUtils.h" #include "utils/ComboRenderPipelineDescriptor.h" #include "utils/WGPUHelpers.h" @@ -111,8 +109,7 @@ namespace { for (auto attr : buffer.attributes) { // [[location({shaderLocation})]] var_{id} : {typeString}, inputStringStream << "[[location(" << attr.shaderLocation << ")]] var_" - << attributeCount << " : " - << dawn::GetWGSLVertexFormatType(attr.format) << ", "; + << attributeCount << " : vec4,"; attributeCount++; } } @@ -171,9 +168,7 @@ namespace { // Create a render pipeline using only one vertex-step-mode Float32x4 buffer wgpu::RenderPipeline CreateBasicRenderPipeline(uint32_t bufferStride = kFloat32x4Stride) { - DAWN_ASSERT(bufferStride >= - dawn::VertexFormatNumComponents(wgpu::VertexFormat::Float32x4) * - dawn::VertexFormatComponentSize(wgpu::VertexFormat::Float32x4)); + DAWN_ASSERT(bufferStride >= kFloat32x4Stride); std::vector bufferDescList = { {bufferStride, wgpu::InputStepMode::Vertex, {{0, wgpu::VertexFormat::Float32x4}}},