diff --git a/libs/sdl2/source/window.cpp b/libs/sdl2/source/window.cpp index d8559a9f..d2f2bf9b 100644 --- a/libs/sdl2/source/window.cpp +++ b/libs/sdl2/source/window.cpp @@ -81,11 +81,7 @@ namespace psemek::sdl2 wgpu::adapter::request_options adapter_request_options; adapter_request_options.compatible_surface = wgpu_surface_; -#if defined(_WIN32) - adapter_request_options.backend_type = wgpu::backend_type::d3d12; -#else - adapter_request_options.backend_type = wgpu::backend_type::vulkan; -#endif + adapter_request_options.backend_type = wgpu::backend_type::undefined; instance.request_adapter(adapter_request_options, [this](wgpu::adapter::request_status status, wgpu::adapter adapter_in, std::string const & message) { diff --git a/libs/wgpu/source/instance.cpp b/libs/wgpu/source/instance.cpp index 163c9594..6d6233f1 100644 --- a/libs/wgpu/source/instance.cpp +++ b/libs/wgpu/source/instance.cpp @@ -1,13 +1,33 @@ #include #include +#include namespace psemek::wgpu { + namespace + { + + struct extras + {}; + + detail::chained_struct_ptr to_chained_struct(extras const &) + { + WGPUInstanceExtras chained = {}; + chained.chain.sType = (WGPUSType)WGPUSType_InstanceExtras; + chained.backends = WGPUInstanceBackend_Primary; + return detail::make_chained_struct(chained); + } + + } + instance instance::create(descriptor const & desc) { + std::vector chain = desc.chain; + chain.push_back(extras{}); + WGPUInstanceDescriptor descriptor = {}; - descriptor.nextInChain = (WGPUChainedStruct const *)detail::fill_chain(desc.chain); + descriptor.nextInChain = (WGPUChainedStruct const *)detail::fill_chain(chain); return instance(wgpuCreateInstance(&descriptor)); }