Wonder-Technology/Wonder.js

View on GitHub
src/construct/domain_layer/domain/webgpu/core/service/LoadWebGPUDoService.res

Summary

Maintainability
Test Coverage
open WonderBsMost.Most

let load = window =>
  fromPromise(
    DpContainer.unsafeGetWebGPUCoreDp().gpu.requestAdapter(
      IWebGPUCoreDp.adapterDescriptor(~window, ~preferredBackend="Vulkan", ()),
    ),
  )->flatMap(
    adapter =>
      fromPromise(
        DpContainer.unsafeGetWebGPUCoreDp().adapter.requestDevice(
          {"extensions": ["ray_tracing"]},
          adapter,
        ),
      )->flatMap(device => {
        let context = DpContainer.unsafeGetWebGPUCoreDp().window.getContext(window)
        let queue = DpContainer.unsafeGetWebGPUCoreDp().device.getQueue(device)

        fromPromise(
          DpContainer.unsafeGetWebGPUCoreDp().context.getSwapChainPreferredFormat(device, context),
        )->map(swapChainFormat => (window, adapter, device, context, queue, swapChainFormat), _)
      }, _),
    _,
  )