| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_IMPELLER_SCENE_PIPELINE_KEY_H_ |
| #define FLUTTER_IMPELLER_SCENE_PIPELINE_KEY_H_ |
| |
| #include "flutter/fml/hash_combine.h" |
| |
| namespace impeller { |
| namespace scene { |
| |
| enum class GeometryType { |
| kUnskinned = 0, |
| kSkinned = 1, |
| kLastType = kSkinned, |
| }; |
| enum class MaterialType { |
| kUnlit = 0, |
| kLastType = kUnlit, |
| }; |
| |
| struct PipelineKey { |
| GeometryType geometry_type = GeometryType::kUnskinned; |
| MaterialType material_type = MaterialType::kUnlit; |
| |
| struct Hash { |
| constexpr std::size_t operator()(const PipelineKey& o) const { |
| return fml::HashCombine(o.geometry_type, o.material_type); |
| } |
| }; |
| |
| struct Equal { |
| constexpr bool operator()(const PipelineKey& lhs, |
| const PipelineKey& rhs) const { |
| return lhs.geometry_type == rhs.geometry_type && |
| lhs.material_type == rhs.material_type; |
| } |
| }; |
| }; |
| |
| } // namespace scene |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_SCENE_PIPELINE_KEY_H_ |