• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 The Dawn Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef DAWNNATIVE_BACKENDCONNECTION_H_
16 #define DAWNNATIVE_BACKENDCONNECTION_H_
17 
18 #include "dawn_native/Adapter.h"
19 #include "dawn_native/DawnNative.h"
20 
21 #include <memory>
22 
23 namespace dawn_native {
24 
25     // An common interface for all backends. Mostly used to create adapters for a particular
26     // backend.
27     class BackendConnection {
28       public:
29         BackendConnection(InstanceBase* instance, wgpu::BackendType type);
30         virtual ~BackendConnection() = default;
31 
32         wgpu::BackendType GetType() const;
33         InstanceBase* GetInstance() const;
34 
35         // Returns all the adapters for the system that can be created by the backend, without extra
36         // options (such as debug adapters, custom driver libraries, etc.)
37         virtual std::vector<std::unique_ptr<AdapterBase>> DiscoverDefaultAdapters() = 0;
38 
39         // Returns new adapters created with the backend-specific options.
40         virtual ResultOrError<std::vector<std::unique_ptr<AdapterBase>>> DiscoverAdapters(
41             const AdapterDiscoveryOptionsBase* options);
42 
43       private:
44         InstanceBase* mInstance = nullptr;
45         wgpu::BackendType mType;
46     };
47 
48 }  // namespace dawn_native
49 
50 #endif  // DAWNNATIVE_BACKENDCONNECTION_H_
51