98 {
99 fb::ShaderArchiveT shader_archive;
100 for (const auto& shader_description : shader_descriptions_) {
101 auto mapping = shader_description.mapping;
102 if (!mapping) {
103 return nullptr;
104 }
105 auto desc = std::make_unique<fb::ShaderBlobT>();
106 desc->name = shader_description.name;
108 desc->mapping = {mapping->GetMapping(),
109 mapping->GetMapping() + mapping->GetSize()};
110 shader_archive.items.emplace_back(std::move(desc));
111 }
112 auto builder = std::make_shared<flatbuffers::FlatBufferBuilder>();
113 builder->Finish(fb::ShaderArchive::Pack(*
builder.get(), &shader_archive),
114 fb::ShaderArchiveIdentifier());
115 return std::make_shared<fml::NonOwnedMapping>(
builder->GetBufferPointer(),
117 [builder](auto, auto) {});
118}
constexpr fb::Stage ToStage(ArchiveShaderType type)