dawn/native: Simplify the ApiSeq helpers.
They didn't need to be inline nor return a potential error. Also take
mutable parameters by pointer.
Bug: None
Change-Id: If3c71b43e08390020265d71c26c0c382afc01712
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/194600
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/Surface.cpp b/src/dawn/native/Surface.cpp
index 7e5f268..811fec7 100644
--- a/src/dawn/native/Surface.cpp
+++ b/src/dawn/native/Surface.cpp
@@ -523,12 +523,12 @@
[&capabilities](const PhysicalDeviceSurfaceCapabilities& caps) -> MaybeError {
capabilities->nextInChain = nullptr;
capabilities->usages = caps.usages;
- DAWN_TRY(utils::AllocateApiSeqFromStdVector(capabilities->formats,
- capabilities->formatCount, caps.formats));
- DAWN_TRY(utils::AllocateApiSeqFromStdVector(
- capabilities->presentModes, capabilities->presentModeCount, caps.presentModes));
- DAWN_TRY(utils::AllocateApiSeqFromStdVector(
- capabilities->alphaModes, capabilities->alphaModeCount, caps.alphaModes));
+ utils::AllocateApiSeqFromStdVector(&capabilities->formats, &capabilities->formatCount,
+ caps.formats);
+ utils::AllocateApiSeqFromStdVector(&capabilities->presentModes,
+ &capabilities->presentModeCount, caps.presentModes);
+ utils::AllocateApiSeqFromStdVector(&capabilities->alphaModes,
+ &capabilities->alphaModeCount, caps.alphaModes);
return {};
}));
@@ -536,9 +536,9 @@
}
void APISurfaceCapabilitiesFreeMembers(WGPUSurfaceCapabilities capabilities) {
- utils::FreeApiSeq(capabilities.formats, capabilities.formatCount);
- utils::FreeApiSeq(capabilities.presentModes, capabilities.presentModeCount);
- utils::FreeApiSeq(capabilities.alphaModes, capabilities.alphaModeCount);
+ utils::FreeApiSeq(&capabilities.formats, &capabilities.formatCount);
+ utils::FreeApiSeq(&capabilities.presentModes, &capabilities.presentModeCount);
+ utils::FreeApiSeq(&capabilities.alphaModes, &capabilities.alphaModeCount);
}
MaybeError Surface::GetCurrentTexture(SurfaceTexture* surfaceTexture) const {
diff --git a/src/dawn/native/utils/WGPUHelpers.h b/src/dawn/native/utils/WGPUHelpers.h
index ae18e3f..c501fd7 100644
--- a/src/dawn/native/utils/WGPUHelpers.h
+++ b/src/dawn/native/utils/WGPUHelpers.h
@@ -146,26 +146,25 @@
// Given a std vector, allocate an equivalent array that can be returned in an API's foos/fooCount
// pair of fields. The apiData must eventually be freed using FreeApiSeq.
template <typename T>
-inline MaybeError AllocateApiSeqFromStdVector(const T*& apiData,
- size_t& apiSize,
- const std::vector<T>& vector) {
- apiSize = vector.size();
- if (apiSize > 0) {
- T* mutableData = new T[apiSize];
- memcpy(mutableData, vector.data(), apiSize * sizeof(T));
- apiData = mutableData;
+void AllocateApiSeqFromStdVector(const T** apiData, size_t* apiSize, const std::vector<T>& vector) {
+ size_t size = vector.size();
+ *apiSize = size;
+
+ if (size > 0) {
+ T* mutableData = new T[size];
+ memcpy(mutableData, vector.data(), size * sizeof(T));
+ *apiData = mutableData;
} else {
- apiData = nullptr;
+ *apiData = nullptr;
}
- return {};
}
// Free an API sequence that was allocated by AllocateApiSeqFromStdVector
template <typename T>
-inline void FreeApiSeq(T*& apiData, size_t& apiSize) {
- delete[] apiData;
- apiData = nullptr;
- apiSize = 0;
+void FreeApiSeq(T** apiData, size_t* apiSize) {
+ delete[] *apiData;
+ *apiData = nullptr;
+ *apiSize = 0;
}
} // namespace dawn::native::utils