| // 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_COMPILER_RUNTIME_STAGE_DATA_H_ |
| #define FLUTTER_IMPELLER_COMPILER_RUNTIME_STAGE_DATA_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "flutter/fml/macros.h" |
| #include "flutter/fml/mapping.h" |
| #include "impeller/compiler/types.h" |
| #include "impeller/core/runtime_types.h" |
| #include "runtime_stage_types_flatbuffers.h" |
| #include "spirv_parser.hpp" |
| |
| namespace impeller { |
| namespace compiler { |
| |
| class RuntimeStageData { |
| public: |
| struct Shader { |
| Shader() = default; |
| |
| std::string entrypoint; |
| spv::ExecutionModel stage; |
| std::vector<UniformDescription> uniforms; |
| std::vector<InputDescription> inputs; |
| std::shared_ptr<fml::Mapping> shader; |
| RuntimeStageBackend backend; |
| |
| Shader(const Shader&) = delete; |
| Shader& operator=(const Shader&) = delete; |
| }; |
| |
| RuntimeStageData(); |
| |
| ~RuntimeStageData(); |
| |
| void AddShader(const std::shared_ptr<Shader>& data); |
| |
| std::unique_ptr<fb::RuntimeStageT> CreateStageFlatbuffer( |
| impeller::RuntimeStageBackend backend) const; |
| |
| std::unique_ptr<fb::RuntimeStagesT> CreateMultiStageFlatbuffer() const; |
| |
| std::shared_ptr<fml::Mapping> CreateJsonMapping() const; |
| |
| std::shared_ptr<fml::Mapping> CreateMapping() const; |
| |
| private: |
| std::map<RuntimeStageBackend, std::shared_ptr<Shader>> data_; |
| |
| RuntimeStageData(const RuntimeStageData&) = delete; |
| |
| RuntimeStageData& operator=(const RuntimeStageData&) = delete; |
| }; |
| |
| } // namespace compiler |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_COMPILER_RUNTIME_STAGE_DATA_H_ |