9#include "flutter/fml/closure.h"
32 std::stringstream stream;
36 stream <<
"_unknown_";
42 stream <<
"_fragment_";
45 stream <<
"_compute_";
52ShaderLibraryGLES::ShaderLibraryGLES(
53 const std::vector<std::shared_ptr<fml::Mapping>>& shader_libraries) {
55 auto iterator = [&functions, library_id = library_id_](
auto type,
62 functions[ShaderKey{key_name, stage}] = std::shared_ptr<ShaderFunctionGLES>(
63 new ShaderFunctionGLES(library_id,
71 for (
auto library : shader_libraries) {
74 if (!gles_archive || !gles_archive->IsValid()) {
78 gles_archive->IterateAllShaders(iterator);
81 functions_ = functions;
95 std::string_view
name,
99 if (
auto found = functions_.find(
key); found != functions_.end()) {
100 return found->second;
108 std::shared_ptr<fml::Mapping> code,
115 code->GetMapping() ==
nullptr) {
121 if (functions_.count(
key) != 0) {
123 <<
" has already been registered.";
143 auto found = functions_.find(
key);
144 if (found == functions_.end()) {
146 <<
" was not found, so it couldn't be unregistered.";
150 functions_.erase(found);
Wraps a closure that is invoked in the destructor unless released by the caller.
static std::shared_ptr< ShaderArchive > CreateArchiveFromMapping(const std::shared_ptr< const fml::Mapping > &mapping, ArchiveRenderingBackend backend)
void RegisterFunction(std::string name, ShaderStage stage, std::shared_ptr< fml::Mapping > code, RegistrationCallback callback) override
~ShaderLibraryGLES() override
bool IsValid() const override
std::shared_ptr< const ShaderFunction > GetFunction(std::string_view name, ShaderStage stage) override
void UnregisterFunction(std::string name, ShaderStage stage) override
std::function< void(bool)> RegistrationCallback
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
#define FML_UNREACHABLE()
static std::string GLESShaderNameToShaderKeyName(const std::string &name, ShaderStage stage)
constexpr ShaderStage ToShaderStage(RuntimeShaderStage stage)
std::unordered_map< ShaderKey, std::shared_ptr< const ShaderFunction >, ShaderKey::Hash, ShaderKey::Equal > ShaderFunctionMap