| // 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_ |