From 79411a04051d1a4d0abd79755fa36be9c69c8cc2 Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 23 Mar 2026 16:12:39 +0100 Subject: [PATCH] Backends, Examples: WebGPU: fixed warnings + scale initial surface height for native. --- backends/imgui_impl_wgpu.cpp | 4 ++-- examples/example_glfw_wgpu/main.cpp | 8 +++++--- examples/example_sdl2_wgpu/main.cpp | 6 +++++- examples/example_sdl3_wgpu/main.cpp | 6 +++++- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/backends/imgui_impl_wgpu.cpp b/backends/imgui_impl_wgpu.cpp index 2b7edb0ba..acd8ae11e 100644 --- a/backends/imgui_impl_wgpu.cpp +++ b/backends/imgui_impl_wgpu.cpp @@ -436,8 +436,8 @@ void ImGui_ImplWGPU_RenderDrawData(ImDrawData* draw_data, WGPURenderPassEncoder } int64_t vb_write_size = MEMALIGN((char*)vtx_dst - (char*)fr->VertexBufferHost, 4); int64_t ib_write_size = MEMALIGN((char*)idx_dst - (char*)fr->IndexBufferHost, 4); - wgpuQueueWriteBuffer(bd->defaultQueue, fr->VertexBuffer, 0, fr->VertexBufferHost, vb_write_size); - wgpuQueueWriteBuffer(bd->defaultQueue, fr->IndexBuffer, 0, fr->IndexBufferHost, ib_write_size); + wgpuQueueWriteBuffer(bd->defaultQueue, fr->VertexBuffer, 0, fr->VertexBufferHost, (size_t)vb_write_size); + wgpuQueueWriteBuffer(bd->defaultQueue, fr->IndexBuffer, 0, fr->IndexBufferHost, (size_t)ib_write_size); // Setup desired render state ImGui_ImplWGPU_SetupRenderState(draw_data, pass_encoder, fr); diff --git a/examples/example_glfw_wgpu/main.cpp b/examples/example_glfw_wgpu/main.cpp index 54dfc6908..cae04ac42 100644 --- a/examples/example_glfw_wgpu/main.cpp +++ b/examples/example_glfw_wgpu/main.cpp @@ -65,8 +65,8 @@ int main(int, char**) // Create window float main_scale = ImGui_ImplGlfw_GetContentScaleForMonitor(glfwGetPrimaryMonitor()); // Valid on GLFW 3.3+ only - wgpu_surface_width *= main_scale; - wgpu_surface_height *= main_scale; + wgpu_surface_width = (int)(wgpu_surface_width * main_scale); + wgpu_surface_height = (int)(wgpu_surface_height * main_scale); GLFWwindow* window = glfwCreateWindow(wgpu_surface_width, wgpu_surface_height, "Dear ImGui GLFW+WebGPU example", nullptr, nullptr); if (window == nullptr) return 1; @@ -343,6 +343,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter #elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestAdapterStatus_Success) { WGPUAdapter* extAdapter = (WGPUAdapter*)userdata1; @@ -356,6 +357,7 @@ static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter static void handle_request_device(WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestDeviceStatus_Success) { WGPUDevice* extDevice = (WGPUDevice*)userdata1; @@ -549,7 +551,7 @@ WGPUSurface CreateWGPUSurface(const WGPUInstance& instance, GLFWwindow* window) } #else #error "Unsupported WebGPU native platform!" -#endif return nullptr; +#endif } #endif // #ifndef __EMSCRIPTEN__ diff --git a/examples/example_sdl2_wgpu/main.cpp b/examples/example_sdl2_wgpu/main.cpp index 8d7c5a107..85f8b39e4 100644 --- a/examples/example_sdl2_wgpu/main.cpp +++ b/examples/example_sdl2_wgpu/main.cpp @@ -53,6 +53,8 @@ int main(int, char**) // Create window with graphics context float main_scale = ImGui_ImplSDL2_GetContentScaleForDisplay(0); + wgpu_surface_width = (int)(wgpu_surface_width * main_scale); + wgpu_surface_height = (int)(wgpu_surface_height * main_scale); SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+WebGPU example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, wgpu_surface_width, wgpu_surface_height, window_flags); if (window == nullptr) @@ -327,6 +329,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter #elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestAdapterStatus_Success) { WGPUAdapter* extAdapter = (WGPUAdapter*)userdata1; @@ -340,6 +343,7 @@ static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter static void handle_request_device(WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestDeviceStatus_Success) { WGPUDevice* extDevice = (WGPUDevice*)userdata1; @@ -514,7 +518,7 @@ WGPUSurface CreateWGPUSurface(const WGPUInstance& instance, SDL_Window* window) } #else #error "Unsupported WebGPU native platform!" -#endif return nullptr; +#endif } #endif // #ifndef __EMSCRIPTEN__ diff --git a/examples/example_sdl3_wgpu/main.cpp b/examples/example_sdl3_wgpu/main.cpp index 523d62156..939cdfcab 100644 --- a/examples/example_sdl3_wgpu/main.cpp +++ b/examples/example_sdl3_wgpu/main.cpp @@ -61,6 +61,8 @@ int main(int, char**) // Create SDL window graphics context float main_scale = SDL_GetDisplayContentScale(SDL_GetPrimaryDisplay()); SDL_WindowFlags window_flags = SDL_WINDOW_RESIZABLE; + wgpu_surface_width = (int)(wgpu_surface_width * main_scale); + wgpu_surface_height = (int)(wgpu_surface_height * main_scale); SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL3+WebGPU example", wgpu_surface_width, wgpu_surface_height, window_flags); if (window == nullptr) { @@ -338,6 +340,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter #elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestAdapterStatus_Success) { WGPUAdapter* extAdapter = (WGPUAdapter*)userdata1; @@ -351,6 +354,7 @@ static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter static void handle_request_device(WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message, void* userdata1, void* userdata2) { + IM_UNUSED(userdata2); if (status == WGPURequestDeviceStatus_Success) { WGPUDevice* extDevice = (WGPUDevice*)userdata1; @@ -526,7 +530,7 @@ WGPUSurface CreateWGPUSurface(const WGPUInstance& instance, SDL_Window* window) } #else #error "Unsupported WebGPU native platform!" -#endif return nullptr; +#endif } #endif // #ifndef __EMSCRIPTEN__