diff --git a/libs/sdl2/source/window.cpp b/libs/sdl2/source/window.cpp index f5f99f32..2b1b48a4 100644 --- a/libs/sdl2/source/window.cpp +++ b/libs/sdl2/source/window.cpp @@ -8,6 +8,7 @@ #include #elif defined(PSEMEK_SDL2_WEBGPU) #include +#include #endif #include @@ -61,6 +62,8 @@ namespace psemek::sdl2 gfx::init(); #elif defined(PSEMEK_SDL2_WEBGPU) + wgpu::setup_logging(log::level::error); + auto instance = wgpu::instance::create({}); SDL_SysWMinfo wminfo; diff --git a/libs/wgpu/include/psemek/wgpu/logging.hpp b/libs/wgpu/include/psemek/wgpu/logging.hpp new file mode 100644 index 00000000..4c1e7f5a --- /dev/null +++ b/libs/wgpu/include/psemek/wgpu/logging.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include + +namespace psemek::wgpu +{ + + void setup_logging(log::level level); + +} diff --git a/libs/wgpu/source/logging.cpp b/libs/wgpu/source/logging.cpp new file mode 100644 index 00000000..265197c2 --- /dev/null +++ b/libs/wgpu/source/logging.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include + +namespace psemek::wgpu +{ + + namespace + { + + log::level to_psemek_log_level(WGPULogLevel level) + { + switch (level) + { + case WGPULogLevel_Off: return log::level::error; + case WGPULogLevel_Error: return log::level::error; + case WGPULogLevel_Warn: return log::level::warning; + case WGPULogLevel_Info: return log::level::info; + case WGPULogLevel_Debug: return log::level::debug; + case WGPULogLevel_Trace: return log::level::debug; + default: return log::level::error; + } + } + + WGPULogLevel to_wgpu_log_level(log::level level) + { + switch (level) + { + case log::level::debug: return WGPULogLevel_Debug; + case log::level::info: return WGPULogLevel_Info; + case log::level::warning: return WGPULogLevel_Warn; + case log::level::error: return WGPULogLevel_Error; + default: return WGPULogLevel_Error; + } + } + + } + + void setup_logging(log::level level) + { + wgpuSetLogLevel(to_wgpu_log_level(level)); + wgpuSetLogCallback([](WGPULogLevel level, char const * message, void * /* userdata */){ + log::log(to_psemek_log_level(level)) << "WebGPU: " << message; + }, nullptr); + } + +}