Remove BackendBinding and its implementations.
These were helpers for implementation-based swapchains that are getting
removed.
Bug: dawn:269
Change-Id: I44b0f9a9d221b9370c3eb2625c68e540b6e2ef46
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/126420
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/samples/BUILD.gn b/src/dawn/samples/BUILD.gn
index f78498e..adc7fc5 100644
--- a/src/dawn/samples/BUILD.gn
+++ b/src/dawn/samples/BUILD.gn
@@ -39,7 +39,6 @@
"${dawn_root}/src/dawn/glfw",
"${dawn_root}/src/dawn/native",
"${dawn_root}/src/dawn/utils",
- "${dawn_root}/src/dawn/utils:bindings",
"${dawn_root}/src/dawn/wire",
]
public_configs = [ "${dawn_root}/src/dawn/common:internal_config" ]
diff --git a/src/dawn/samples/SampleUtils.cpp b/src/dawn/samples/SampleUtils.cpp
index cda7839..d2a61d4 100644
--- a/src/dawn/samples/SampleUtils.cpp
+++ b/src/dawn/samples/SampleUtils.cpp
@@ -27,7 +27,6 @@
#include "dawn/common/Platform.h"
#include "dawn/common/SystemUtils.h"
#include "dawn/dawn_proc.h"
-#include "dawn/dawn_wsi.h"
#include "dawn/native/DawnNative.h"
#include "dawn/utils/TerribleCommandBuffer.h"
#include "dawn/wire/WireClient.h"
diff --git a/src/dawn/samples/SampleUtils.h b/src/dawn/samples/SampleUtils.h
index 59528bd..2ff351c 100644
--- a/src/dawn/samples/SampleUtils.h
+++ b/src/dawn/samples/SampleUtils.h
@@ -15,7 +15,6 @@
#ifndef SRC_DAWN_SAMPLES_SAMPLEUTILS_H_
#define SRC_DAWN_SAMPLES_SAMPLEUTILS_H_
-#include "dawn/dawn_wsi.h"
#include "dawn/webgpu_cpp.h"
bool InitSample(int argc, const char** argv);
diff --git a/src/dawn/utils/BUILD.gn b/src/dawn/utils/BUILD.gn
index 02820bb..3467ae6 100644
--- a/src/dawn/utils/BUILD.gn
+++ b/src/dawn/utils/BUILD.gn
@@ -85,58 +85,3 @@
public_deps = [ "${dawn_root}/include/dawn:cpp_headers" ]
}
-
-###############################################################################
-# Dawn samples, only in standalone builds
-###############################################################################
-
-if (dawn_standalone) {
- # Library to handle the interaction of Dawn with GLFW windows in samples
- static_library("bindings") {
- configs += [ "${dawn_root}/src/dawn/common:internal_config" ]
-
- sources = [
- "BackendBinding.cpp",
- "BackendBinding.h",
- ]
-
- public_deps = [ "${dawn_root}/include/dawn:headers" ]
-
- deps = [
- "${dawn_root}/src/dawn/common",
- "${dawn_root}/src/dawn/glfw",
- "${dawn_root}/src/dawn/native",
- ]
- libs = []
- frameworks = []
-
- if (dawn_enable_d3d12) {
- sources += [ "D3D12Binding.cpp" ]
- }
-
- if (dawn_enable_metal) {
- sources += [ "MetalBinding.mm" ]
- frameworks += [
- "Metal.framework",
- "QuartzCore.framework",
- ]
-
- # Suppress warnings that Metal isn't in the deployment target of Chrome
- if (is_mac) {
- cflags_objcc = [ "-Wno-unguarded-availability" ]
- }
- }
-
- if (dawn_enable_null) {
- sources += [ "NullBinding.cpp" ]
- }
-
- if (dawn_enable_opengl) {
- sources += [ "OpenGLBinding.cpp" ]
- }
-
- if (dawn_enable_vulkan) {
- sources += [ "VulkanBinding.cpp" ]
- }
- }
-}
diff --git a/src/dawn/utils/BackendBinding.cpp b/src/dawn/utils/BackendBinding.cpp
deleted file mode 100644
index 2aaa047..0000000
--- a/src/dawn/utils/BackendBinding.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2017 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/utils/BackendBinding.h"
-
-#include "dawn/common/Compiler.h"
-
-namespace utils {
-
-#if defined(DAWN_ENABLE_BACKEND_D3D12)
-BackendBinding* CreateD3D12Binding(GLFWwindow* window, WGPUDevice device);
-#endif
-#if defined(DAWN_ENABLE_BACKEND_METAL)
-BackendBinding* CreateMetalBinding(GLFWwindow* window, WGPUDevice device);
-#endif
-#if defined(DAWN_ENABLE_BACKEND_NULL)
-BackendBinding* CreateNullBinding(GLFWwindow* window, WGPUDevice device);
-#endif
-#if defined(DAWN_ENABLE_BACKEND_OPENGL)
-BackendBinding* CreateOpenGLBinding(GLFWwindow* window, WGPUDevice device);
-#endif
-#if defined(DAWN_ENABLE_BACKEND_VULKAN)
-BackendBinding* CreateVulkanBinding(GLFWwindow* window, WGPUDevice device);
-#endif
-
-BackendBinding::BackendBinding(GLFWwindow* window, WGPUDevice device)
- : mWindow(window), mDevice(device) {}
-
-BackendBinding* CreateBinding(wgpu::BackendType type, GLFWwindow* window, WGPUDevice device) {
- switch (type) {
-#if defined(DAWN_ENABLE_BACKEND_D3D12)
- case wgpu::BackendType::D3D12:
- return CreateD3D12Binding(window, device);
-#endif
-
-#if defined(DAWN_ENABLE_BACKEND_METAL)
- case wgpu::BackendType::Metal:
- return CreateMetalBinding(window, device);
-#endif
-
-#if defined(DAWN_ENABLE_BACKEND_NULL)
- case wgpu::BackendType::Null:
- return CreateNullBinding(window, device);
-#endif
-
-#if defined(DAWN_ENABLE_BACKEND_DESKTOP_GL)
- case wgpu::BackendType::OpenGL:
- return CreateOpenGLBinding(window, device);
-#endif
-
-#if defined(DAWN_ENABLE_BACKEND_OPENGLES)
- case wgpu::BackendType::OpenGLES:
- return CreateOpenGLBinding(window, device);
-#endif
-
-#if defined(DAWN_ENABLE_BACKEND_VULKAN)
- case wgpu::BackendType::Vulkan:
- return CreateVulkanBinding(window, device);
-#endif
-
- default:
- return nullptr;
- }
-}
-
-} // namespace utils
diff --git a/src/dawn/utils/BackendBinding.h b/src/dawn/utils/BackendBinding.h
deleted file mode 100644
index 7871934..0000000
--- a/src/dawn/utils/BackendBinding.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2017 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 SRC_DAWN_UTILS_BACKENDBINDING_H_
-#define SRC_DAWN_UTILS_BACKENDBINDING_H_
-
-#include "dawn/native/DawnNative.h"
-#include "dawn/webgpu_cpp.h"
-
-struct GLFWwindow;
-
-namespace utils {
-
-class BackendBinding {
- public:
- virtual ~BackendBinding() = default;
-
- virtual uint64_t GetSwapChainImplementation() = 0;
- virtual WGPUTextureFormat GetPreferredSwapChainTextureFormat() = 0;
-
- protected:
- BackendBinding(GLFWwindow* window, WGPUDevice device);
-
- GLFWwindow* mWindow = nullptr;
- WGPUDevice mDevice = nullptr;
-};
-
-void DiscoverAdapter(dawn::native::Instance* instance, GLFWwindow* window, wgpu::BackendType type);
-BackendBinding* CreateBinding(wgpu::BackendType type, GLFWwindow* window, WGPUDevice device);
-
-} // namespace utils
-
-#endif // SRC_DAWN_UTILS_BACKENDBINDING_H_
diff --git a/src/dawn/utils/CMakeLists.txt b/src/dawn/utils/CMakeLists.txt
index eddbbbe..a4e8eed 100644
--- a/src/dawn/utils/CMakeLists.txt
+++ b/src/dawn/utils/CMakeLists.txt
@@ -68,33 +68,3 @@
if (DAWN_ENABLE_METAL)
target_link_libraries(dawn_utils PRIVATE "-framework Metal")
endif()
-
-if(DAWN_SUPPORTS_GLFW_FOR_WINDOWING)
- target_sources(dawn_utils PRIVATE
- "BackendBinding.cpp"
- "BackendBinding.h"
- )
- target_link_libraries(dawn_utils PRIVATE glfw)
-
- if (DAWN_ENABLE_D3D12)
- target_sources(dawn_utils PRIVATE "D3D12Binding.cpp")
- endif()
-
- if (DAWN_ENABLE_METAL)
- target_sources(dawn_utils PRIVATE
- "MetalBinding.mm"
- )
- endif()
-
- if (DAWN_ENABLE_NULL)
- target_sources(dawn_utils PRIVATE "NullBinding.cpp")
- endif()
-
- if (DAWN_ENABLE_OPENGL)
- target_sources(dawn_utils PRIVATE "OpenGLBinding.cpp")
- endif()
-
- if (DAWN_ENABLE_VULKAN)
- target_sources(dawn_utils PRIVATE "VulkanBinding.cpp")
- endif()
-endif()
diff --git a/src/dawn/utils/D3D12Binding.cpp b/src/dawn/utils/D3D12Binding.cpp
deleted file mode 100644
index bdf44fe..0000000
--- a/src/dawn/utils/D3D12Binding.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 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 <memory>
-
-#include "dawn/utils/BackendBinding.h"
-
-#include "dawn/common/Assert.h"
-#include "dawn/native/D3D12Backend.h"
-
-#include "GLFW/glfw3.h"
-#define GLFW_EXPOSE_NATIVE_WIN32
-#include "GLFW/glfw3native.h"
-
-namespace utils {
-
-class D3D12Binding : public BackendBinding {
- public:
- D3D12Binding(GLFWwindow* window, WGPUDevice device) : BackendBinding(window, device) {}
-
- uint64_t GetSwapChainImplementation() override {
- if (mSwapchainImpl.userData == nullptr) {
- HWND win32Window = glfwGetWin32Window(mWindow);
- mSwapchainImpl = dawn::native::d3d12::CreateNativeSwapChainImpl(mDevice, win32Window);
- }
- return reinterpret_cast<uint64_t>(&mSwapchainImpl);
- }
-
- WGPUTextureFormat GetPreferredSwapChainTextureFormat() override {
- ASSERT(mSwapchainImpl.userData != nullptr);
- return dawn::native::d3d12::GetNativeSwapChainPreferredFormat(&mSwapchainImpl);
- }
-
- private:
- DawnSwapChainImplementation mSwapchainImpl = {};
-};
-
-BackendBinding* CreateD3D12Binding(GLFWwindow* window, WGPUDevice device) {
- return new D3D12Binding(window, device);
-}
-
-} // namespace utils
diff --git a/src/dawn/utils/MetalBinding.mm b/src/dawn/utils/MetalBinding.mm
deleted file mode 100644
index ef34361..0000000
--- a/src/dawn/utils/MetalBinding.mm
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2017 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/utils/BackendBinding.h"
-
-#include "dawn/common/Assert.h"
-#include "dawn/common/SwapChainUtils.h"
-#include "dawn/native/MetalBackend.h"
-
-#define GLFW_EXPOSE_NATIVE_COCOA
-#include "GLFW/glfw3.h"
-#include "GLFW/glfw3native.h"
-
-#import <QuartzCore/CAMetalLayer.h>
-
-namespace utils {
-class SwapChainImplMTL {
- public:
- using WSIContext = DawnWSIContextMetal;
-
- SwapChainImplMTL(id nsWindow) : mNsWindow(nsWindow) {}
-
- ~SwapChainImplMTL() {
- [mCurrentTexture release];
- [mCurrentDrawable release];
- }
-
- void Init(DawnWSIContextMetal* ctx) {
- mMtlDevice = ctx->device;
- mCommandQueue = ctx->queue;
- }
-
- DawnSwapChainError Configure(WGPUTextureFormat format,
- WGPUTextureUsage usage,
- uint32_t width,
- uint32_t height) {
- if (format != WGPUTextureFormat_BGRA8Unorm) {
- return "unsupported format";
- }
- ASSERT(width > 0);
- ASSERT(height > 0);
-
- NSView* contentView = [mNsWindow contentView];
- [contentView setWantsLayer:YES];
-
- CGSize size = {};
- size.width = width;
- size.height = height;
-
- mLayer = [CAMetalLayer layer];
- [mLayer setDevice:mMtlDevice];
- [mLayer setPixelFormat:MTLPixelFormatBGRA8Unorm];
- [mLayer setDrawableSize:size];
-
- constexpr uint32_t kFramebufferOnlyTextureUsages =
- WGPUTextureUsage_RenderAttachment | WGPUTextureUsage_Present;
- bool hasOnlyFramebufferUsages = !(usage & (~kFramebufferOnlyTextureUsages));
- if (hasOnlyFramebufferUsages) {
- [mLayer setFramebufferOnly:YES];
- }
-
- [contentView setLayer:mLayer];
-
- return DAWN_SWAP_CHAIN_NO_ERROR;
- }
-
- DawnSwapChainError GetNextTexture(DawnSwapChainNextTexture* nextTexture) {
- [mCurrentDrawable release];
- mCurrentDrawable = [mLayer nextDrawable];
- [mCurrentDrawable retain];
-
- [mCurrentTexture release];
- mCurrentTexture = mCurrentDrawable.texture;
- [mCurrentTexture retain];
-
- nextTexture->texture.ptr = reinterpret_cast<void*>(mCurrentTexture);
-
- return DAWN_SWAP_CHAIN_NO_ERROR;
- }
-
- DawnSwapChainError Present() {
- id<MTLCommandBuffer> commandBuffer = [mCommandQueue commandBuffer];
- [commandBuffer presentDrawable:mCurrentDrawable];
- [commandBuffer commit];
-
- return DAWN_SWAP_CHAIN_NO_ERROR;
- }
-
- private:
- id mNsWindow = nil;
- id<MTLDevice> mMtlDevice = nil;
- id<MTLCommandQueue> mCommandQueue = nil;
-
- CAMetalLayer* mLayer = nullptr;
- id<CAMetalDrawable> mCurrentDrawable = nil;
- id<MTLTexture> mCurrentTexture = nil;
-};
-
-class MetalBinding : public BackendBinding {
- public:
- MetalBinding(GLFWwindow* window, WGPUDevice device) : BackendBinding(window, device) {}
-
- uint64_t GetSwapChainImplementation() override {
- if (mSwapchainImpl.userData == nullptr) {
- mSwapchainImpl =
- CreateSwapChainImplementation(new SwapChainImplMTL(glfwGetCocoaWindow(mWindow)));
- }
- return reinterpret_cast<uint64_t>(&mSwapchainImpl);
- }
-
- WGPUTextureFormat GetPreferredSwapChainTextureFormat() override {
- return WGPUTextureFormat_BGRA8Unorm;
- }
-
- private:
- DawnSwapChainImplementation mSwapchainImpl = {};
-};
-
-BackendBinding* CreateMetalBinding(GLFWwindow* window, WGPUDevice device) {
- return new MetalBinding(window, device);
-}
-} // namespace utils
diff --git a/src/dawn/utils/NullBinding.cpp b/src/dawn/utils/NullBinding.cpp
deleted file mode 100644
index cddc0e6..0000000
--- a/src/dawn/utils/NullBinding.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2017 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 <memory>
-
-#include "dawn/utils/BackendBinding.h"
-
-#include "dawn/common/Assert.h"
-#include "dawn/native/NullBackend.h"
-
-namespace utils {
-
-class NullBinding : public BackendBinding {
- public:
- NullBinding(GLFWwindow* window, WGPUDevice device) : BackendBinding(window, device) {}
-
- uint64_t GetSwapChainImplementation() override {
- if (mSwapchainImpl.userData == nullptr) {
- mSwapchainImpl = dawn::native::null::CreateNativeSwapChainImpl();
- }
- return reinterpret_cast<uint64_t>(&mSwapchainImpl);
- }
- WGPUTextureFormat GetPreferredSwapChainTextureFormat() override {
- return WGPUTextureFormat_RGBA8Unorm;
- }
-
- private:
- DawnSwapChainImplementation mSwapchainImpl = {};
-};
-
-BackendBinding* CreateNullBinding(GLFWwindow* window, WGPUDevice device) {
- return new NullBinding(window, device);
-}
-
-} // namespace utils
diff --git a/src/dawn/utils/OpenGLBinding.cpp b/src/dawn/utils/OpenGLBinding.cpp
deleted file mode 100644
index 9d75255..0000000
--- a/src/dawn/utils/OpenGLBinding.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2017 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 <cstdio>
-
-#include "dawn/utils/BackendBinding.h"
-
-#include "dawn/common/Assert.h"
-#include "dawn/common/Platform.h"
-#include "dawn/common/SwapChainUtils.h"
-#include "dawn/dawn_wsi.h"
-#include "dawn/native/OpenGLBackend.h"
-
-#include "GLFW/glfw3.h"
-
-namespace utils {
-
-class OpenGLBinding : public BackendBinding {
- public:
- OpenGLBinding(GLFWwindow* window, WGPUDevice device) : BackendBinding(window, device) {}
-
- uint64_t GetSwapChainImplementation() override {
- if (mSwapchainImpl.userData == nullptr) {
- mSwapchainImpl = dawn::native::opengl::CreateNativeSwapChainImpl(
- mDevice,
- [](void* userdata) { glfwSwapBuffers(static_cast<GLFWwindow*>(userdata)); },
- mWindow);
- }
- return reinterpret_cast<uint64_t>(&mSwapchainImpl);
- }
-
- WGPUTextureFormat GetPreferredSwapChainTextureFormat() override {
- return dawn::native::opengl::GetNativeSwapChainPreferredFormat(&mSwapchainImpl);
- }
-
- private:
- DawnSwapChainImplementation mSwapchainImpl = {};
-};
-
-BackendBinding* CreateOpenGLBinding(GLFWwindow* window, WGPUDevice device) {
- return new OpenGLBinding(window, device);
-}
-
-} // namespace utils
diff --git a/src/dawn/utils/VulkanBinding.cpp b/src/dawn/utils/VulkanBinding.cpp
deleted file mode 100644
index 1736de8..0000000
--- a/src/dawn/utils/VulkanBinding.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2017 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 <memory>
-
-#include "dawn/utils/BackendBinding.h"
-
-#include "dawn/common/Assert.h"
-#include "dawn/native/VulkanBackend.h"
-
-// Include GLFW after VulkanBackend so that it declares the Vulkan-specific functions
-#include "GLFW/glfw3.h"
-
-namespace utils {
-
-class VulkanBinding : public BackendBinding {
- public:
- VulkanBinding(GLFWwindow* window, WGPUDevice device) : BackendBinding(window, device) {}
-
- uint64_t GetSwapChainImplementation() override {
- if (mSwapchainImpl.userData == nullptr) {
- VkSurfaceKHR surface = VK_NULL_HANDLE;
- if (glfwCreateWindowSurface(dawn::native::vulkan::GetInstance(mDevice), mWindow,
- nullptr, &surface) != VK_SUCCESS) {
- ASSERT(false);
- }
-
- mSwapchainImpl = dawn::native::vulkan::CreateNativeSwapChainImpl(mDevice, surface);
- }
- return reinterpret_cast<uint64_t>(&mSwapchainImpl);
- }
- WGPUTextureFormat GetPreferredSwapChainTextureFormat() override {
- ASSERT(mSwapchainImpl.userData != nullptr);
- return dawn::native::vulkan::GetNativeSwapChainPreferredFormat(&mSwapchainImpl);
- }
-
- private:
- DawnSwapChainImplementation mSwapchainImpl = {};
-};
-
-BackendBinding* CreateVulkanBinding(GLFWwindow* window, WGPUDevice device) {
- return new VulkanBinding(window, device);
-}
-
-} // namespace utils