// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef GPU_COMMAND_BUFFER_SERVICE_DAWN_INSTANCE_H_
#define GPU_COMMAND_BUFFER_SERVICE_DAWN_INSTANCE_H_

#include <dawn/native/DawnNative.h>
#include <dawn/platform/DawnPlatform.h>

#include <memory>

namespace dawn::platform {
class Platform;
}  // namespace dawn::platform

namespace gpu {

struct GpuPreferences;

namespace webgpu {

enum class SafetyLevel {
  // Enables stable features that are safe to use from unprivileged processes.
  kSafe,
  // Enables experimental features that are safe to use from unprivileged
  // processes.
  kSafeExperimental,
  // Enables all the features, including ones that might not be secure yet and
  // could allow
  // compromising the GPU process.
  kUnsafe,
};

class DawnInstance : public dawn::native::Instance {
 public:
  static std::unique_ptr<DawnInstance> Create(
      dawn::platform::Platform* platform,
      const GpuPreferences& gpu_preferences,
      SafetyLevel safety,
      dawn::native::DawnInstanceDescriptor* dawn_instance_descriptor = nullptr);

 private:
  using dawn::native::Instance::Instance;
};

}  // namespace webgpu
}  // namespace gpu

#endif  // GPU_COMMAND_BUFFER_SERVICE_DAWN_INSTANCE_H_
