28 static sk_sp<DlDeferredImageGPUSkia>
Make(
29 const SkImageInfo& image_info,
30 sk_sp<DisplayList> display_list,
36 const SkImageInfo& image_info,
37 std::unique_ptr<LayerTree> layer_tree,
72 std::optional<std::string>
get_error()
const override;
80 class ImageWrapper final :
public std::enable_shared_from_this<ImageWrapper>,
83 static std::shared_ptr<ImageWrapper> Make(
84 const SkImageInfo& image_info,
85 sk_sp<DisplayList> display_list,
90 static std::shared_ptr<ImageWrapper> MakeFromLayerTree(
91 const SkImageInfo& image_info,
92 std::unique_ptr<LayerTree> layer_tree,
97 const SkImageInfo image_info()
const {
return image_info_; }
98 const GrBackendTexture&
texture()
const {
return texture_; }
99 bool isTextureBacked()
const;
100 std::optional<std::string> get_error();
101 sk_sp<SkImage> CreateSkiaImage()
const;
103 void DeleteTexture();
106 const SkImageInfo image_info_;
107 sk_sp<DisplayList> display_list_;
111 std::shared_ptr<TextureRegistry> texture_registry_;
113 mutable std::mutex error_mutex_;
114 std::optional<std::string> error_;
116 GrBackendTexture texture_;
117 sk_sp<GrDirectContext> context_;
119 sk_sp<SkImage> image_;
122 const SkImageInfo& image_info,
123 sk_sp<DisplayList> display_list,
132 void SnapshotDisplayList(std::unique_ptr<LayerTree> layer_tree =
nullptr);
135 void OnGrContextCreated()
override;
138 void OnGrContextDestroyed()
override;
141 const std::shared_ptr<ImageWrapper> image_wrapper_;
145 DlDeferredImageGPUSkia(std::shared_ptr<ImageWrapper> image_wrapper,
static sk_sp< DlDeferredImageGPUSkia > Make(const SkImageInfo &image_info, sk_sp< DisplayList > display_list, fml::TaskRunnerAffineWeakPtr< SnapshotDelegate > snapshot_delegate, const fml::RefPtr< fml::TaskRunner > &raster_task_runner, fml::RefPtr< SkiaUnrefQueue > unref_queue)
static sk_sp< DlDeferredImageGPUSkia > MakeFromLayerTree(const SkImageInfo &image_info, std::unique_ptr< LayerTree > layer_tree, fml::TaskRunnerAffineWeakPtr< SnapshotDelegate > snapshot_delegate, const fml::RefPtr< fml::TaskRunner > &raster_task_runner, fml::RefPtr< SkiaUnrefQueue > unref_queue)