Descriptorize SwapChain.
This also makes SwapChain support WebGPU-style error handling.
BUG=dawn:8
Change-Id: I5a142ae58600445f0f44f6dbe419cb7c3cdc9464
Reviewed-on: https://dawn-review.googlesource.com/c/4660
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index 095fb0a..8a45075 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -220,8 +220,14 @@
return result;
}
- SwapChainBuilder* DeviceBase::CreateSwapChainBuilder() {
- return new SwapChainBuilder(this);
+ SwapChainBase* DeviceBase::CreateSwapChain(const SwapChainDescriptor* descriptor) {
+ SwapChainBase* result = nullptr;
+
+ if (ConsumedError(CreateSwapChainInternal(&result, descriptor))) {
+ return SwapChainBase::MakeError(this);
+ }
+
+ return result;
}
TextureBase* DeviceBase::CreateTexture(const TextureDescriptor* descriptor) {
TextureBase* result = nullptr;
@@ -337,6 +343,13 @@
return {};
}
+ MaybeError DeviceBase::CreateSwapChainInternal(SwapChainBase** result,
+ const SwapChainDescriptor* descriptor) {
+ DAWN_TRY(ValidateSwapChainDescriptor(this, descriptor));
+ DAWN_TRY_ASSIGN(*result, CreateSwapChainImpl(descriptor));
+ return {};
+ }
+
MaybeError DeviceBase::CreateTextureInternal(TextureBase** result,
const TextureDescriptor* descriptor) {
DAWN_TRY(ValidateTextureDescriptor(this, descriptor));