| // 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_SHADER_ARCHIVE_MULTI_ARCH_SHADER_ARCHIVE_H_ |
| #define FLUTTER_IMPELLER_SHADER_ARCHIVE_MULTI_ARCH_SHADER_ARCHIVE_H_ |
| |
| #include <map> |
| #include <memory> |
| |
| #include "flutter/fml/macros.h" |
| #include "flutter/fml/mapping.h" |
| #include "impeller/shader_archive/shader_archive.h" |
| #include "impeller/shader_archive/shader_archive_types.h" |
| |
| namespace impeller { |
| |
| class MultiArchShaderArchive { |
| public: |
| static std::shared_ptr<ShaderArchive> CreateArchiveFromMapping( |
| const std::shared_ptr<const fml::Mapping>& mapping, |
| ArchiveRenderingBackend backend); |
| |
| explicit MultiArchShaderArchive( |
| const std::shared_ptr<const fml::Mapping>& mapping); |
| |
| ~MultiArchShaderArchive(); |
| |
| std::shared_ptr<const fml::Mapping> GetArchive( |
| ArchiveRenderingBackend backend) const; |
| |
| std::shared_ptr<ShaderArchive> GetShaderArchive( |
| ArchiveRenderingBackend backend) const; |
| |
| bool IsValid() const; |
| |
| private: |
| std::map<ArchiveRenderingBackend, std::shared_ptr<const fml::Mapping>> |
| backend_mappings_; |
| bool is_valid_ = false; |
| |
| MultiArchShaderArchive(const MultiArchShaderArchive&) = delete; |
| |
| MultiArchShaderArchive& operator=(const MultiArchShaderArchive&) = delete; |
| }; |
| |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_SHADER_ARCHIVE_MULTI_ARCH_SHADER_ARCHIVE_H_ |