Dawn: implement sk_app window contexts for all backends.
Implement Window contexts for D3D12, Metal and Vulkan, as well as
a base class for all of them (DawnWindowContext).
Implement WSI, swap chains and external textures for all backends.
Add Dawn support to Viewer app.
Change-Id: I9368eae8d43594821aa1edd9fd559c8a9ba30066
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228060
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 263313d..0a87f3c 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -2314,6 +2314,10 @@
]
libs = []
+ if (skia_use_dawn) {
+ sources += [ "tools/sk_app/DawnWindowContext.cpp" ]
+ }
+
if (is_android) {
sources += [
"tools/sk_app/android/GLWindowContext_android.cpp",
@@ -2331,6 +2335,13 @@
"tools/sk_app/unix/keysym2ucs.c",
"tools/sk_app/unix/main_unix.cpp",
]
+ if (skia_use_dawn) {
+ if (dawn_enable_vulkan) {
+ sources += [ "tools/sk_app/unix/DawnVulkanWindowContext_unix.cpp" ]
+ defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
+ libs += [ "X11-xcb" ]
+ }
+ }
libs += [
"GL",
"X11",
@@ -2345,6 +2356,11 @@
if (skia_use_angle) {
sources += [ "tools/sk_app/win/ANGLEWindowContext_win.cpp" ]
}
+ if (skia_use_dawn) {
+ if (dawn_enable_d3d12) {
+ sources += [ "tools/sk_app/win/DawnD3D12WindowContext_win.cpp" ]
+ }
+ }
} else if (is_mac) {
sources += [
"tools/sk_app/mac/GLWindowContext_mac.mm",
@@ -2352,6 +2368,11 @@
"tools/sk_app/mac/Window_mac.mm",
"tools/sk_app/mac/main_mac.mm",
]
+ if (skia_use_dawn) {
+ if (dawn_enable_metal) {
+ sources += [ "tools/sk_app/mac/DawnMTLWindowContext_mac.mm" ]
+ }
+ }
libs += [
"QuartzCore.framework",
"Cocoa.framework",