/* * Copyright 2014 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkSurface_Gpu_DEFINED #define SkSurface_Gpu_DEFINED #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "src/image/SkSurface_Base.h" #if SK_SUPPORT_GPU class GrBackendFormat; namespace skgpu::v1 { class Device; } class SkSurface_Gpu : public SkSurface_Base { public: SkSurface_Gpu(sk_sp); ~SkSurface_Gpu() override; GrRecordingContext* onGetRecordingContext() override; GrBackendTexture onGetBackendTexture(BackendHandleAccess) override; GrBackendRenderTarget onGetBackendRenderTarget(BackendHandleAccess) override; bool onReplaceBackendTexture(const GrBackendTexture&, GrSurfaceOrigin, ContentChangeMode, TextureReleaseProc, ReleaseContext) override; SkCanvas* onNewCanvas() override; sk_sp onNewSurface(const SkImageInfo&) override; sk_sp onNewImageSnapshot(const SkIRect* subset) override; void onWritePixels(const SkPixmap&, int x, int y) override; void onAsyncRescaleAndReadPixels(const SkImageInfo& info, const SkIRect& srcRect, RescaleGamma rescaleGamma, RescaleMode, ReadPixelsCallback callback, ReadPixelsContext context) override; void onAsyncRescaleAndReadPixelsYUV420(SkYUVColorSpace yuvColorSpace, sk_sp dstColorSpace, const SkIRect& srcRect, const SkISize& dstSize, RescaleGamma rescaleGamma, RescaleMode, ReadPixelsCallback callback, ReadPixelsContext context) override; bool onCopyOnWrite(ContentChangeMode) override; void onDiscard() override; void onResolveMSAA() override; GrSemaphoresSubmitted onFlush(BackendSurfaceAccess access, const GrFlushInfo& info, const GrBackendSurfaceMutableState*) override; bool onWait(int numSemaphores, const GrBackendSemaphore* waitSemaphores, bool deleteSemaphoresAfterWait) override; bool onCharacterize(SkSurfaceCharacterization*) const override; bool onIsCompatible(const SkSurfaceCharacterization&) const override; void onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkSamplingOptions&, const SkPaint* paint) override; bool onDraw(sk_sp, SkIPoint offset) override; sk_sp onCapabilities() override; skgpu::v1::Device* getDevice(); private: sk_sp fDevice; using INHERITED = SkSurface_Base; }; #endif // SK_SUPPORT_GPU #endif // SkSurface_Gpu_DEFINED