From 98b8f01fbaed604fae0d67a86c6220e43f339c80 Mon Sep 17 00:00:00 2001 From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com> Date: Fri, 8 Mar 2024 16:09:21 -0500 Subject: [PATCH] WebGPU: Fix undefined member for emscripten < 3.1.54 --- Rendering/WebGPU/vtkWebGPUActor.cxx | 9 +++++++-- Rendering/WebGPU/vtkWebGPURenderWindow.cxx | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Rendering/WebGPU/vtkWebGPUActor.cxx b/Rendering/WebGPU/vtkWebGPUActor.cxx index 63aa4d5ede1..f609a91e697 100644 --- a/Rendering/WebGPU/vtkWebGPUActor.cxx +++ b/Rendering/WebGPU/vtkWebGPUActor.cxx @@ -15,6 +15,10 @@ #include <algorithm> +#if defined(__EMSCRIPTEN__) +#include "emscripten/version.h" +#endif + VTK_ABI_NAMESPACE_BEGIN //------------------------------------------------------------------------------ @@ -79,8 +83,9 @@ wgpu::RenderBundle vtkWebGPUActor::RenderToBundle(vtkRenderer* ren, vtkMapper* m const int sampleCount = wgpuRenWin->GetMultiSamples() ? wgpuRenWin->GetMultiSamples() : 1; wgpu::RenderBundleEncoderDescriptor bundleEncDesc; -#if __EMSCRIPTEN__ - // FIXME: Update this after emscripten webgpu updates to colorFormatCount +#if defined(__EMSCRIPTEN__) && \ + ((__EMSCRIPTEN_major__ < 3) || ((__EMSCRIPTEN_major__ <= 3) && (__EMSCRIPTEN_minor__ < 1)) || \ + ((__EMSCRIPTEN_major__ <= 3) && (__EMSCRIPTEN_minor__ <= 1) && (__EMSCRIPTEN_tiny__ < 54))) bundleEncDesc.colorFormatsCount = 1; #else bundleEncDesc.colorFormatCount = 1; diff --git a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx index 63a1d36fb6e..648a38564a4 100644 --- a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx +++ b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx @@ -19,6 +19,10 @@ #include <exception> #include <sstream> +#if defined(__EMSCRIPTEN__) +#include "emscripten/version.h" +#endif + VTK_ABI_NAMESPACE_BEGIN namespace @@ -1198,8 +1202,14 @@ void vtkWebGPURenderWindow::WaitForCompletion() { bool done = false; this->Device.GetQueue().OnSubmittedWorkDone( - 0u, [](WGPUQueueWorkDoneStatus, void* userdata) { *static_cast<bool*>(userdata) = true; }, - &done); +#if defined(__EMSCRIPTEN__) && \ + ((__EMSCRIPTEN_major__ < 3) || ((__EMSCRIPTEN_major__ <= 3) && (__EMSCRIPTEN_minor__ < 1)) || \ + ((__EMSCRIPTEN_major__ <= 3) && (__EMSCRIPTEN_minor__ <= 1) && (__EMSCRIPTEN_tiny__ < 54))) + // https://github.com/emscripten-core/emscripten/commit/6daa18bc5ab19730421d2d63b69ddf41f11f1e85 + // removed unused signalValue argument from 3.1.54 onwards. + 0u, +#endif + [](WGPUQueueWorkDoneStatus, void* userdata) { *static_cast<bool*>(userdata) = true; }, &done); while (!done) { vtkWGPUContext::WaitABit(); -- GitLab