mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-09 22:56:06 +00:00
This CL adds missing constructors and destructors. Others are moved from the header file to implementation files. Bug: dawn:1405 Change-Id: I06657d4a4faa437ca5a95a0067a8f9f9bbc89d12 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/89181 Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Austin Eng <enga@chromium.org>
86 lines
2.6 KiB
C++
86 lines
2.6 KiB
C++
// Copyright 2019 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef SRC_DAWN_NATIVE_FEATURES_H_
|
|
#define SRC_DAWN_NATIVE_FEATURES_H_
|
|
|
|
#include <bitset>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
#include "dawn/common/ityp_bitset.h"
|
|
#include "dawn/native/DawnNative.h"
|
|
#include "dawn/webgpu_cpp.h"
|
|
|
|
namespace dawn::native {
|
|
|
|
enum class Feature {
|
|
TextureCompressionBC,
|
|
TextureCompressionETC2,
|
|
TextureCompressionASTC,
|
|
ShaderFloat16,
|
|
PipelineStatisticsQuery,
|
|
TimestampQuery,
|
|
DepthClamping,
|
|
Depth24UnormStencil8,
|
|
Depth32FloatStencil8,
|
|
|
|
// Dawn-specific
|
|
DawnInternalUsages,
|
|
MultiPlanarFormats,
|
|
DawnNative,
|
|
|
|
EnumCount,
|
|
InvalidEnum = EnumCount,
|
|
FeatureMin = TextureCompressionBC,
|
|
};
|
|
|
|
// A wrapper of the bitset to store if an feature is enabled or not. This wrapper provides the
|
|
// convenience to convert the enums of enum class Feature to the indices of a bitset.
|
|
struct FeaturesSet {
|
|
std::bitset<static_cast<size_t>(Feature::EnumCount)> featuresBitSet;
|
|
|
|
void EnableFeature(Feature feature);
|
|
void EnableFeature(wgpu::FeatureName feature);
|
|
bool IsEnabled(Feature feature) const;
|
|
bool IsEnabled(wgpu::FeatureName feature) const;
|
|
// Returns |count|, the number of features. Writes out all |count| values if |features| is
|
|
// non-null.
|
|
size_t EnumerateFeatures(wgpu::FeatureName* features) const;
|
|
std::vector<const char*> GetEnabledFeatureNames() const;
|
|
void InitializeDeviceProperties(WGPUDeviceProperties* properties) const;
|
|
};
|
|
|
|
wgpu::FeatureName FeatureEnumToAPIFeature(Feature feature);
|
|
|
|
class FeaturesInfo {
|
|
public:
|
|
FeaturesInfo();
|
|
~FeaturesInfo();
|
|
|
|
// Used to query the details of an feature. Return nullptr if featureName is not a valid
|
|
// name of an feature supported in Dawn
|
|
const FeatureInfo* GetFeatureInfo(wgpu::FeatureName feature) const;
|
|
Feature FeatureNameToEnum(const char* featureName) const;
|
|
wgpu::FeatureName FeatureNameToAPIEnum(const char* featureName) const;
|
|
|
|
private:
|
|
std::unordered_map<std::string, Feature> mFeatureNameToEnumMap;
|
|
};
|
|
|
|
} // namespace dawn::native
|
|
|
|
#endif // SRC_DAWN_NATIVE_FEATURES_H_
|