1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef GPU_SupportedFeatures_H_
7 #define GPU_SupportedFeatures_H_
9 #include "nsWrapperCache.h"
10 #include "ObjectModel.h"
12 #include <unordered_set>
17 enum class GPUFeatureName
: uint8_t;
19 } // namespace mozilla
21 namespace mozilla::webgpu
{
24 class SupportedFeatures final
: public nsWrapperCache
, public ChildOf
<Adapter
> {
26 GPU_DECL_CYCLE_COLLECTION(SupportedFeatures
)
27 GPU_DECL_JS_WRAP(SupportedFeatures
)
29 explicit SupportedFeatures(Adapter
* const aParent
);
31 void Add(dom::GPUFeatureName
, ErrorResult
&);
32 const auto& Features() const { return mFeatures
; }
35 ~SupportedFeatures() = default;
38 std::unordered_set
<dom::GPUFeatureName
> mFeatures
;
41 } // namespace mozilla::webgpu
43 #endif // GPU_SupportedFeatures_H_