12 if (data ==
nullptr || data->GetSize() == 0) {
19 VALIDATION_LOG <<
"Failed to decode runtime stages: " << stages.status();
23 for (
const auto& stage : stages.value()) {
24 if (
auto data = stage.second) {
25 stages_[stage.first] = std::move(data);
29 if (stages_.empty()) {
30 VALIDATION_LOG <<
"No valid runtime stages present in fragment program.";
44 const std::set<RuntimeStageBackend>& stages) {
45 std::stringstream stream;
47 for (
const auto& stage : stages) {
50 if (count != stages.size()) {
62 auto found = stages_.find(backend);
63 if (found == stages_.end()) {
66 <<
". Shaders were packaged for "
68 <<
". Check your shader compiler options.";
90 std::set<RuntimeStageBackend> FragmentProgram::GetAvailableStages()
const {
91 std::set<RuntimeStageBackend> stages;
92 for (
const auto& stage : stages_) {
93 stages.insert(stage.first);
static absl::StatusOr< Map > DecodeRuntimeStages(const std::shared_ptr< fml::Mapping > &payload)
std::shared_ptr< RuntimeStage > FindRuntimeStage(RuntimeStageBackend backend) const
FragmentProgram(const std::shared_ptr< fml::Mapping > &mapping)
const char * RuntimeStageBackendToString(RuntimeStageBackend backend)
static std::string AvailableStagesAsString(const std::set< RuntimeStageBackend > &stages)