Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
impeller::MultiArchShaderArchiveWriter Class Reference

#include <multi_arch_shader_archive_writer.h>

Public Member Functions

 MultiArchShaderArchiveWriter ()
 
 ~MultiArchShaderArchiveWriter ()
 
bool RegisterShaderArchive (ArchiveRenderingBackend backend, std::shared_ptr< const fml::Mapping > mapping)
 
std::shared_ptr< fml::MappingCreateMapping () const
 

Detailed Description

Definition at line 16 of file multi_arch_shader_archive_writer.h.

Constructor & Destructor Documentation

◆ MultiArchShaderArchiveWriter()

impeller::MultiArchShaderArchiveWriter::MultiArchShaderArchiveWriter ( )
default

◆ ~MultiArchShaderArchiveWriter()

impeller::MultiArchShaderArchiveWriter::~MultiArchShaderArchiveWriter ( )
default

Member Function Documentation

◆ CreateMapping()

std::shared_ptr< fml::Mapping > impeller::MultiArchShaderArchiveWriter::CreateMapping ( ) const

Definition at line 44 of file multi_arch_shader_archive_writer.cc.

45 {
46 fb::MultiArchShaderArchiveT multi_archive;
47 for (const auto& archive : archives_) {
48 auto archive_blob = std::make_unique<fb::ShaderArchiveBlobT>();
49 archive_blob->rendering_backend = ToRenderingBackend(archive.first);
50 archive_blob->mapping = {
51 archive.second->GetMapping(),
52 archive.second->GetMapping() + archive.second->GetSize()};
53 multi_archive.items.emplace_back(std::move(archive_blob));
54 }
55 auto builder = std::make_shared<flatbuffers::FlatBufferBuilder>();
56 builder->Finish(
57 fb::MultiArchShaderArchive::Pack(*builder.get(), &multi_archive),
58 fb::MultiArchShaderArchiveIdentifier());
59 return std::make_shared<fml::NonOwnedMapping>(builder->GetBufferPointer(),
60 builder->GetSize(),
61 [builder](auto, auto) {});
62}
constexpr fb::RenderingBackend ToRenderingBackend(ArchiveRenderingBackend backend)

◆ RegisterShaderArchive()

bool impeller::MultiArchShaderArchiveWriter::RegisterShaderArchive ( ArchiveRenderingBackend  backend,
std::shared_ptr< const fml::Mapping mapping 
)

Definition at line 16 of file multi_arch_shader_archive_writer.cc.

18 {
19 if (!mapping || mapping->GetMapping() == nullptr) {
20 return false;
21 }
22 if (archives_.find(backend) != archives_.end()) {
23 VALIDATION_LOG << "Multi-archive already has a shader library registered "
24 "for that backend.";
25 return false;
26 }
27 archives_[backend] = std::move(mapping);
28 return true;
29}
const char * backend
#define VALIDATION_LOG
Definition validation.h:73

The documentation for this class was generated from the following files: