10 #include "impeller/runtime_stage/runtime_stage_flatbuffers.h"
48 case fb::Stage::kVertex:
50 case fb::Stage::kFragment:
52 case fb::Stage::kCompute:
54 case fb::Stage::kTessellationControl:
56 case fb::Stage::kTessellationEvaluation:
63 : payload_(
std::move(payload)) {
64 if (payload_ ==
nullptr || !payload_->GetMapping()) {
67 if (!fb::RuntimeStageBufferHasIdentifier(payload_->GetMapping())) {
70 auto runtime_stage = fb::GetRuntimeStage(payload_->GetMapping());
76 entrypoint_ = runtime_stage->entrypoint()->str();
78 auto* uniforms = runtime_stage->uniforms();
80 for (
auto i = uniforms->begin(), end = uniforms->end(); i != end; i++) {
82 desc.
name = i->name()->str();
86 static_cast<size_t>(i->rows()),
static_cast<size_t>(i->columns())};
89 uniforms_.emplace_back(std::move(desc));
93 code_mapping_ = std::make_shared<fml::NonOwnedMapping>(
94 runtime_stage->shader()->data(),
95 runtime_stage->shader()->size(),
96 [payload = payload_](
auto,
auto) {}
99 sksl_mapping_ = std::make_shared<fml::NonOwnedMapping>(
100 runtime_stage->sksl()->data(),
101 runtime_stage->sksl()->size(),
102 [payload = payload_](
auto,
auto) {}
117 return code_mapping_;
121 return sksl_mapping_;
130 const std::string& name)
const {
131 for (
const auto& uniform : uniforms_) {
132 if (uniform.name == name) {