|
38 | 38 | #define WGPU_TARGET_LINUX_X11 2
|
39 | 39 | #define WGPU_TARGET_WINDOWS 3
|
40 | 40 | #define WGPU_TARGET_LINUX_WAYLAND 4
|
| 41 | +#define WGPU_TARGET_EMSCRIPTEN 5 |
41 | 42 |
|
42 |
| -#if defined(_WIN32) |
| 43 | +#if defined(__EMSCRIPTEN__) |
| 44 | +#define WGPU_TARGET WGPU_TARGET_EMSCRIPTEN |
| 45 | +#elif defined(_WIN32) |
43 | 46 | #define WGPU_TARGET WGPU_TARGET_WINDOWS
|
44 | 47 | #elif defined(__APPLE__)
|
45 | 48 | #define WGPU_TARGET WGPU_TARGET_MACOS
|
| 49 | +#elif defined(_GLFW_WAYLAND) |
| 50 | +#define WGPU_TARGET WGPU_TARGET_LINUX_WAYLAND |
46 | 51 | #else
|
47 | 52 | #define WGPU_TARGET WGPU_TARGET_LINUX_X11
|
48 | 53 | #endif
|
|
62 | 67 | #elif WGPU_TARGET == WGPU_TARGET_WINDOWS
|
63 | 68 | #define GLFW_EXPOSE_NATIVE_WIN32
|
64 | 69 | #endif
|
| 70 | + |
| 71 | +#if !defined(__EMSCRIPTEN__) |
65 | 72 | #include <GLFW/glfw3native.h>
|
| 73 | +#endif |
66 | 74 |
|
67 | 75 | WGPUSurface glfwGetWGPUSurface(WGPUInstance instance, GLFWwindow* window) {
|
68 | 76 | #if WGPU_TARGET == WGPU_TARGET_MACOS
|
@@ -152,6 +160,24 @@ WGPUSurface glfwGetWGPUSurface(WGPUInstance instance, GLFWwindow* window) {
|
152 | 160 | },
|
153 | 161 | });
|
154 | 162 | }
|
| 163 | +#elif WGPU_TARGET == WGPU_TARGET_EMSCRIPTEN |
| 164 | + { |
| 165 | + return wgpuInstanceCreateSurface( |
| 166 | + instance, |
| 167 | + &(WGPUSurfaceDescriptor){ |
| 168 | + .label = NULL, |
| 169 | + .nextInChain = |
| 170 | + (const WGPUChainedStruct*)&( |
| 171 | + WGPUSurfaceDescriptorFromCanvasHTMLSelector) { |
| 172 | + .chain = (WGPUChainedStruct){ |
| 173 | + .next = NULL, |
| 174 | + .sType = WGPUSType_SurfaceDescriptorFromCanvasHTMLSelector, |
| 175 | + }, |
| 176 | + .selector = "canvas", |
| 177 | + }, |
| 178 | + } |
| 179 | + ); |
| 180 | + } |
155 | 181 | #else
|
156 | 182 | #error "Unsupported WGPU_TARGET"
|
157 | 183 | #endif
|
|
0 commit comments