Expose wgpu instance in app context
This commit is contained in:
parent
46f672599d
commit
b1255f7a14
4 changed files with 9 additions and 3 deletions
|
|
@ -3,6 +3,7 @@
|
|||
#include <psemek/app/event_handler.hpp>
|
||||
|
||||
#if defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
#include <psemek/wgpu/instance.hpp>
|
||||
#include <psemek/wgpu/adapter.hpp>
|
||||
#include <psemek/wgpu/surface.hpp>
|
||||
#include <psemek/wgpu/device.hpp>
|
||||
|
|
@ -42,6 +43,7 @@ namespace psemek::app
|
|||
std::function<void(bool)> vsync;
|
||||
#endif
|
||||
#if defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
wgpu::instance instance;
|
||||
wgpu::adapter adapter;
|
||||
wgpu::surface surface;
|
||||
wgpu::device device;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <psemek/app/application.hpp>
|
||||
|
||||
#if defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
#include <psemek/wgpu/instance.hpp>
|
||||
#include <psemek/wgpu/surface.hpp>
|
||||
#include <psemek/wgpu/adapter.hpp>
|
||||
#include <psemek/wgpu/device.hpp>
|
||||
|
|
@ -28,6 +29,7 @@ namespace psemek::sdl2
|
|||
void windowed(bool on);
|
||||
|
||||
#if defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
wgpu::instance wgpu_instance() const { return wgpu_instance_; }
|
||||
wgpu::adapter wgpu_adapter() const { return wgpu_adapter_; }
|
||||
wgpu::surface wgpu_surface() const { return wgpu_surface_; }
|
||||
wgpu::device wgpu_device() const { return wgpu_device_; }
|
||||
|
|
@ -40,6 +42,7 @@ namespace psemek::sdl2
|
|||
#if defined(PSEMEK_GRAPHICS_API_OPENGL)
|
||||
SDL_GLContext gl_context_ = nullptr;
|
||||
#elif defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
wgpu::instance wgpu_instance_;
|
||||
wgpu::adapter wgpu_adapter_;
|
||||
wgpu::surface wgpu_surface_;
|
||||
wgpu::device wgpu_device_;
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ int main(int argc, char ** argv) try
|
|||
#endif
|
||||
|
||||
#if defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
context.instance = window.wgpu_instance();
|
||||
context.adapter = window.wgpu_adapter();
|
||||
context.surface = window.wgpu_surface();
|
||||
context.device = window.wgpu_device();
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ namespace psemek::sdl2
|
|||
#elif defined(PSEMEK_GRAPHICS_API_WEBGPU)
|
||||
wgpu::setup_logging(log::level::error);
|
||||
|
||||
auto instance = wgpu::instance::create({});
|
||||
wgpu_instance_ = wgpu::instance::create({});
|
||||
|
||||
SDL_SysWMinfo wminfo;
|
||||
SDL_VERSION(&wminfo.version);
|
||||
|
|
@ -89,14 +89,14 @@ namespace psemek::sdl2
|
|||
#else
|
||||
surface_descriptor.chain = {wgpu::surface::from_xlib_window{ .display = wminfo.info.x11.display, .window = wminfo.info.x11.window }};
|
||||
#endif
|
||||
wgpu_surface_ = instance.create_surface(surface_descriptor);
|
||||
wgpu_surface_ = wgpu_instance_.create_surface(surface_descriptor);
|
||||
|
||||
wgpu::adapter::request_options adapter_request_options;
|
||||
// adapter_request_options.feature_level = wgpu::feature_level::compatibility;
|
||||
adapter_request_options.compatible_surface = wgpu_surface_;
|
||||
adapter_request_options.backend_type = wgpu::backend_type::undefined;
|
||||
|
||||
instance.request_adapter(wgpu::callback_mode::allow_process_events, adapter_request_options, [this](wgpu::adapter::request_status status, wgpu::adapter adapter_in, std::string_view message)
|
||||
wgpu_instance_.request_adapter(wgpu::callback_mode::allow_process_events, adapter_request_options, [this](wgpu::adapter::request_status status, wgpu::adapter adapter_in, std::string_view message)
|
||||
{
|
||||
if (status != wgpu::adapter::request_status::success)
|
||||
throw std::runtime_error("Failed to request WebGPU adapter: " + std::string(message));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue