12 #include "impeller/blobcat/blob_flatbuffers.h"
18 case fb::Stage::kVertex:
20 case fb::Stage::kFragment:
22 case fb::Stage::kCompute:
29 : payload_(
std::move(payload)) {
30 if (!payload_ || payload_->GetMapping() ==
nullptr) {
35 if (!fb::BlobLibraryBufferHasIdentifier(payload_->GetMapping())) {
40 auto blob_library = fb::GetBlobLibrary(payload_->GetMapping());
45 if (
auto items = blob_library->items()) {
46 for (
auto i = items->begin(), end = items->end(); i != end; i++) {
48 key.name = i->name()->str();
50 blobs_[key] = std::make_shared<fml::NonOwnedMapping>(
51 i->mapping()->Data(), i->mapping()->size(),
52 [payload = payload_](
auto,
auto) {
75 std::string name)
const {
78 key.name = std::move(name);
79 auto found = blobs_.find(key);
80 return found == blobs_.end() ? nullptr : found->second;
85 const std::string& name,
86 const std::shared_ptr<fml::Mapping>& mapping)>&
92 for (
const auto& blob : blobs_) {
94 if (!callback(blob.first.type, blob.first.name, blob.second)) {