#include <shader_archive_writer.h>
Definition at line 17 of file shader_archive_writer.h.
◆ ShaderArchiveWriter()
impeller::ShaderArchiveWriter::ShaderArchiveWriter |
( |
| ) |
|
|
default |
◆ ~ShaderArchiveWriter()
impeller::ShaderArchiveWriter::~ShaderArchiveWriter |
( |
| ) |
|
|
default |
◆ AddShader()
Definition at line 74 of file shader_archive_writer.cc.
76 {
77 if (
name.empty() || !mapping || mapping->GetMapping() ==
nullptr) {
78 return false;
79 }
80
81 shader_descriptions_.emplace_back(
82 ShaderDescription{
type, std::move(
name), std::move(mapping)});
83 return true;
84}
DEF_SWITCHES_START aot vmservice shared library name
◆ AddShaderAtPath()
bool impeller::ShaderArchiveWriter::AddShaderAtPath |
( |
const std::string & |
path | ) |
|
Definition at line 31 of file shader_archive_writer.cc.
31 {
33
34 if (
path.stem().empty()) {
36 return false;
37 }
38
39 if (
path.extension() !=
".gles" &&
path.extension() !=
".vkspv") {
40 FML_LOG(
ERROR) <<
"File path doesn't have a known shader extension "
42 return false;
43 }
44
45
47
49
50 if (!shader_type.has_value()) {
51 FML_LOG(
ERROR) <<
"Could not infer shader type from file extension: "
52 <<
path.extension().string();
53 return false;
54 }
55
56
58
59 const auto shader_name =
path.stem().string();
60 if (shader_name.empty()) {
62 return false;
63 }
64
66 if (!file_mapping) {
68 return false;
69 }
70
71 return AddShader(shader_type.value(), shader_name, std::move(file_mapping));
72}
static std::unique_ptr< FileMapping > CreateReadOnly(const std::string &path)
bool AddShader(ArchiveShaderType type, std::string name, std::shared_ptr< fml::Mapping > mapping)
#define FML_LOG(severity)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
std::optional< ArchiveShaderType > InferShaderTypefromFileExtension(const std::filesystem::path &path)
◆ CreateMapping()
std::shared_ptr< fml::Mapping > impeller::ShaderArchiveWriter::CreateMapping |
( |
| ) |
const |
Definition at line 98 of file shader_archive_writer.cc.
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>();
114 fb::ShaderArchiveIdentifier());
115 return std::make_shared<fml::NonOwnedMapping>(
builder->GetBufferPointer(),
118}
static void * Pack(const T &ctx, SkArenaAlloc *alloc)
constexpr fb::Stage ToStage(ArchiveShaderType type)
The documentation for this class was generated from the following files: