Skip to content

example_glfw_wgpu does not compile with Dawn #8567

Open
@brccabral

Description

@brccabral

Version/Branch of Dear ImGui:

Version 1.92.0, Branch: master

Back-ends:

imgui_impl_wgpu.cpp + imgui_impl_glfw.cpp

Compiler, OS:

Linux + /usr/bin/c++

Full config/build information:

git clone --depth 1 https://dawn.googlesource.com/dawn $HOME/dawn.d
cd imgui/examples/example_glfw_wgpu
mkdir build
cd build
cmake -DIMGUI_DAWN_DIR=$HOME/dawn.d ..
cmake --build . --target example_glfw_wgpu -j10

Details:

The example_glfw_wgpu does not compile with Dawn, with Emscripten it works fine, but as Dawn is suggested in the CMakeLists.txt I tried it.

Is Dawn supported?

Screenshots/Video:

No response

Minimal, Complete and Verifiable Example code:

The examples/example_glfw_wgpu/main.cpp without any modifications.

Dawn compiles libwebgpu_dawn.so, imgui backends compiles, but examples/example_glfw_wgpu/main.cpp fails.

Is Dawn supported?

[100%] Built target dawn_native_objects
[100%] Building CXX object dawn/src/dawn/native/CMakeFiles/webgpu_dawn.dir/__/__/__/gen/src/dawn/native/webgpu_dawn_native_proc.cpp.o
[100%] Building CXX object dawn/src/dawn/native/CMakeFiles/webgpu_dawn.dir/null/NullBackend.cpp.o
[100%] Building CXX object dawn/src/dawn/native/CMakeFiles/webgpu_dawn.dir/opengl/OpenGLBackend.cpp.o
[100%] Building CXX object dawn/src/dawn/native/CMakeFiles/webgpu_dawn.dir/DawnNative.cpp.o
[100%] Building CXX object dawn/src/dawn/native/CMakeFiles/webgpu_dawn.dir/vulkan/VulkanBackend.cpp.o
[100%] Linking CXX shared library libwebgpu_dawn.so
[100%] Built target webgpu_dawn
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/main.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/imgui.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/imgui_draw.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/backends/imgui_impl_glfw.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/imgui_tables.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/imgui_widgets.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/backends/imgui_impl_wgpu.cpp.o
[100%] Building CXX object CMakeFiles/example_glfw_wgpu.dir/mnt/HDExtra/CPP_Projects/imgui/imgui_demo.cpp.o
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:38:8: error: ‘WGPUSwapChain’ does not name a type
   38 | static WGPUSwapChain     wgpu_swap_chain = nullptr;
      |        ^~~~~~~~~~~~~
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘void wgpu_error_callback(WGPUErrorType, const char*, void*)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:59:10: error: ‘WGPUErrorType_DeviceLost’ was not declared in this scope; did you mean ‘WGPUErrorType_Force32’?
   59 |     case WGPUErrorType_DeviceLost:  error_type_lbl = "Device lost"; break;
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
      |          WGPUErrorType_Force32
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘int main(int, char**)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:225:69: error: ‘wgpu_swap_chain’ was not declared in this scope; did you mean ‘wgpu_swap_chain_width’?
  225 |         color_attachments.view = wgpuSwapChainGetCurrentTextureView(wgpu_swap_chain);
      |                                                                     ^~~~~~~~~~~~~~~
      |                                                                     wgpu_swap_chain_width
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:225:34: error: ‘wgpuSwapChainGetCurrentTextureView’ was not declared in this scope; did you mean ‘wgpuSurfaceGetCurrentTexture’?
  225 |         color_attachments.view = wgpuSwapChainGetCurrentTextureView(wgpu_swap_chain);
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                  wgpuSurfaceGetCurrentTexture
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:245:9: error: ‘wgpuSwapChainPresent’ was not declared in this scope; did you mean ‘wgpuSurfacePresent’?
  245 |         wgpuSwapChainPresent(wgpu_swap_chain);
      |         ^~~~~~~~~~~~~~~~~~~~
      |         wgpuSurfacePresent
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘WGPUAdapterImpl* RequestAdapter(WGPUInstance)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:279:51: error: could not convert ‘onAdapterRequestEnded’ from ‘RequestAdapter(WGPUInstance)::<lambda(WGPURequestAdapterStatus, WGPUAdapter, const char*, void*)>’ to ‘WGPURequestAdapterCallbackInfo’
  279 |     wgpuInstanceRequestAdapter(instance, nullptr, onAdapterRequestEnded, (void*)&adapter);
      |                                                   ^~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   RequestAdapter(WGPUInstance)::<lambda(WGPURequestAdapterStatus, WGPUAdapter, const char*, void*)>
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘WGPUDeviceImpl* RequestDevice(WGPUAdapterImpl*&)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:293:48: error: could not convert ‘onDeviceRequestEnded’ from ‘RequestDevice(WGPUAdapterImpl*&)::<lambda(WGPURequestDeviceStatus, WGPUDevice, const char*, void*)>’ to ‘WGPURequestDeviceCallbackInfo’
  293 |     wgpuAdapterRequestDevice(adapter, nullptr, onDeviceRequestEnded, (void*)&device);
      |                                                ^~~~~~~~~~~~~~~~~~~~
      |                                                |
      |                                                RequestDevice(WGPUAdapterImpl*&)::<lambda(WGPURequestDeviceStatus, WGPUDevice, const char*, void*)>
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘bool InitWGPU(GLFWwindow*)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:332:5: error: ‘wgpuDeviceSetUncapturedErrorCallback’ was not declared in this scope; did you mean ‘WGPUUncapturedErrorCallback’?
  332 |     wgpuDeviceSetUncapturedErrorCallback(wgpu_device, wgpu_error_callback, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     WGPUUncapturedErrorCallback
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp: In function ‘void CreateSwapChain(int, int)’:
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:339:9: error: ‘wgpu_swap_chain’ was not declared in this scope; did you mean ‘wgpu_swap_chain_width’?
  339 |     if (wgpu_swap_chain)
      |         ^~~~~~~~~~~~~~~
      |         wgpu_swap_chain_width
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:340:9: error: ‘wgpuSwapChainRelease’ was not declared in this scope; did you mean ‘wgpuSurfaceRelease’?
  340 |         wgpuSwapChainRelease(wgpu_swap_chain);
      |         ^~~~~~~~~~~~~~~~~~~~
      |         wgpuSurfaceRelease
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:343:5: error: ‘WGPUSwapChainDescriptor’ was not declared in this scope; did you mean ‘WGPUSurfaceDescriptor’?
  343 |     WGPUSwapChainDescriptor swap_chain_desc = {};
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     WGPUSurfaceDescriptor
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:344:5: error: ‘swap_chain_desc’ was not declared in this scope
  344 |     swap_chain_desc.usage = WGPUTextureUsage_RenderAttachment;
      |     ^~~~~~~~~~~~~~~
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:349:5: error: ‘wgpu_swap_chain’ was not declared in this scope; did you mean ‘wgpu_swap_chain_width’?
  349 |     wgpu_swap_chain = wgpuDeviceCreateSwapChain(wgpu_device, wgpu_surface, &swap_chain_desc);
      |     ^~~~~~~~~~~~~~~
      |     wgpu_swap_chain_width
/mnt/HDExtra/CPP_Projects/imgui/examples/example_glfw_wgpu/main.cpp:349:23: error: ‘wgpuDeviceCreateSwapChain’ was not declared in this scope; did you mean ‘wgpuDeviceCreateSampler’?
  349 |     wgpu_swap_chain = wgpuDeviceCreateSwapChain(wgpu_device, wgpu_surface, &swap_chain_desc);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                       wgpuDeviceCreateSampler
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-nullability-extension’ may have been intended to silence earlier diagnostics
cc1plus: note: unrecognized command-line option ‘-Wno-unreachable-code-break’ may have been intended to silence earlier diagnostics
cc1plus: note: unrecognized command-line option ‘-Wno-gcc-compat’ may have been intended to silence earlier diagnostics
gmake[3]: *** [CMakeFiles/example_glfw_wgpu.dir/build.make:76: CMakeFiles/example_glfw_wgpu.dir/main.cpp.o] Error 1
gmake[3]: *** Waiting for unfinished jobs....
gmake[2]: *** [CMakeFiles/Makefile2:1447: CMakeFiles/example_glfw_wgpu.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:1454: CMakeFiles/example_glfw_wgpu.dir/rule] Error 2
gmake: *** [Makefile:124: example_glfw_wgpu] Error 2

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions