5 #ifndef FLUTTER_IMPELLER_RUNTIME_STAGE_RUNTIME_STAGE_H_
6 #define FLUTTER_IMPELLER_RUNTIME_STAGE_RUNTIME_STAGE_H_
12 #include "flutter/fml/mapping.h"
16 #include "runtime_stage_types_flatbuffers.h"
17 #include "third_party/abseil-cpp/absl/status/statusor.h"
25 using Map = std::map<RuntimeStageBackend, std::shared_ptr<RuntimeStage>>;
27 const std::shared_ptr<fml::Mapping>& payload);
30 const std::shared_ptr<fml::Mapping>& payload);
39 const std::vector<RuntimeUniformDescription>&
GetUniforms()
const;
54 std::shared_ptr<fml::Mapping> payload_;
56 std::string entrypoint_;
57 std::shared_ptr<fml::Mapping> code_mapping_;
58 std::vector<RuntimeUniformDescription> uniforms_;
59 std::vector<DescriptorSetLayout> descriptor_set_layouts_;
60 bool is_valid_ =
false;
61 bool is_dirty_ =
true;
65 static std::unique_ptr<RuntimeStage> RuntimeStageIfPresent(
66 const fb::RuntimeStage* runtime_stage,
67 const std::shared_ptr<fml::Mapping>& payload);
RuntimeStage(RuntimeStage &&)
const std::string & GetEntrypoint() const
RuntimeStage & operator=(RuntimeStage &&)
const std::vector< RuntimeUniformDescription > & GetUniforms() const
const RuntimeUniformDescription * GetUniform(const std::string &name) const
std::map< RuntimeStageBackend, std::shared_ptr< RuntimeStage > > Map
static const char * kVulkanUBOName
const std::shared_ptr< fml::Mapping > & GetCodeMapping() const
const std::vector< DescriptorSetLayout > & GetDescriptorSetLayouts() const
static absl::StatusOr< Map > DecodeRuntimeStages(const std::shared_ptr< fml::Mapping > &payload)
RuntimeShaderStage GetShaderStage() const
RuntimeStage(const fb::RuntimeStage *runtime_stage, const std::shared_ptr< fml::Mapping > &payload)