8#include <GLES2/gl2ext.h>
12#include "third_party/skia/include/core/SkSurface.h"
13#include "third_party/skia/include/gpu/ganesh/GrBackendSurface.h"
14#include "third_party/skia/include/gpu/ganesh/GrDirectContext.h"
15#include "third_party/skia/include/gpu/ganesh/SkSurfaceGanesh.h"
16#include "third_party/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h"
17#include "third_party/skia/include/gpu/ganesh/gl/GrGLDirectContext.h"
18#include "third_party/skia/include/gpu/ganesh/gl/GrGLInterface.h"
19#include "third_party/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h"
20#include "third_party/skia/include/gpu/ganesh/gl/GrGLTypes.h"
29 SkiaRenderContext(
int sample_count,
int stencil)
30 : sample_count_(sample_count),
32 gr_context_(GrDirectContexts::MakeGL(GrGLInterfaces::MakeWebGL())),
33 fb_info_({0, GL_RGBA8_OES}) {
34 gr_context_->resetContext(kRenderTarget_GrGLBackendState |
35 kMisc_GrGLBackendState);
39 const sk_sp<flutter::DisplayList> display_list)
override {
41 canvas->drawColor(SK_ColorTRANSPARENT, SkBlendMode::kSrc);
44 dispatcher.drawDisplayList(display_list, 1.0f);
53 canvas->drawColor(SK_ColorTRANSPARENT, SkBlendMode::kSrc);
60 canvas->drawImage(
image->skia_image(), 0, -height_);
71 surface_ = SkSurfaces::WrapBackendRenderTarget(
72 gr_context_.get(),
target, kBottomLeft_GrSurfaceOrigin,
73 kRGBA_8888_SkColorType, SkColorSpace::MakeSRGB(),
nullptr);
78 gr_context_->setResourceCacheLimit(bytes);
82 sk_sp<GrDirectContext> gr_context_ =
nullptr;
84 GrGLFramebufferInfo fb_info_;
85 GrGLint sample_count_;
95 return std::make_unique<SkiaRenderContext>(sample_count, stencil);
virtual void RenderImage(flutter::DlImage *image, ImageByteFormat format)=0
virtual void RenderPicture(const sk_sp< flutter::DisplayList > display_list)=0
static std::unique_ptr< RenderContext > Make(int sample_count, int stencil)
virtual void Resize(int width, int height)=0
virtual void SetResourceCacheLimit(int bytes)=0
Represents an image whose allocation is (usually) resident on device memory.
Backend implementation of |DlOpReceiver| for |SkCanvas|.
FlutterVulkanImage * image
SKWASM_EXPORT bool skwasm_isWimp()