Setup WebGPU logging

This commit is contained in:
Nikita Lisitsa 2024-05-18 21:13:43 +03:00
parent cb4a8e836f
commit 6581143837
3 changed files with 61 additions and 0 deletions

View file

@ -8,6 +8,7 @@
#include <psemek/gfx/init.hpp>
#elif defined(PSEMEK_SDL2_WEBGPU)
#include <psemek/wgpu/instance.hpp>
#include <psemek/wgpu/logging.hpp>
#endif
#include <SDL2/SDL_syswm.h>
@ -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;

View file

@ -0,0 +1,10 @@
#pragma once
#include <psemek/log/level.hpp>
namespace psemek::wgpu
{
void setup_logging(log::level level);
}

View file

@ -0,0 +1,48 @@
#include <psemek/wgpu/logging.hpp>
#include <psemek/wgpu/external/wgpu.h>
#include <psemek/log/log.hpp>
#include <psemek/util/enum.hpp>
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);
}
}