7 #include "impeller/shader_archive/multi_arch_shader_archive_flatbuffers.h"
12 fb::RenderingBackend backend) {
14 case fb::RenderingBackend::kOpenGLES:
16 case fb::RenderingBackend::kVulkan:
18 case fb::RenderingBackend::kMetal:
25 const std::shared_ptr<const fml::Mapping>& mapping,
28 auto multi_archive = std::make_shared<MultiArchShaderArchive>(mapping);
29 if (multi_archive->IsValid()) {
30 return multi_archive->GetShaderArchive(backend);
36 if (single_archive->IsValid()) {
37 return single_archive;
44 const std::shared_ptr<const fml::Mapping>& mapping) {
49 if (!fb::MultiArchShaderArchiveBufferHasIdentifier(mapping->GetMapping())) {
53 const auto* multi_arch = fb::GetMultiArchShaderArchive(mapping->GetMapping());
59 if (
auto archives = multi_arch->items()) {
60 for (
auto i = archives->begin(), end = archives->end(); i != end; i++) {
64 std::make_shared<fml::NonOwnedMapping>(i->mapping()->Data(),
66 [mapping](
auto,
auto) {
83 auto found = backend_mappings_.find(backend);
84 if (found == backend_mappings_.end()) {
97 std::shared_ptr<ShaderArchive>(
new ShaderArchive(std::move(archive)));
98 if (!shader_archive->IsValid()) {
101 return shader_archive;