1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2014 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef SkSurface_Gpu_DEFINED 9cb93a386Sopenharmony_ci#define SkSurface_Gpu_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/private/GrTypesPriv.h" 12cb93a386Sopenharmony_ci#include "src/image/SkSurface_Base.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci#if SK_SUPPORT_GPU 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ciclass GrBackendFormat; 17cb93a386Sopenharmony_cinamespace skgpu { class BaseDevice; } 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ciclass SkSurface_Gpu : public SkSurface_Base { 20cb93a386Sopenharmony_cipublic: 21cb93a386Sopenharmony_ci SkSurface_Gpu(sk_sp<skgpu::BaseDevice>); 22cb93a386Sopenharmony_ci ~SkSurface_Gpu() override; 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ci GrRecordingContext* onGetRecordingContext() override; 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci GrBackendTexture onGetBackendTexture(BackendHandleAccess) override; 27cb93a386Sopenharmony_ci GrBackendRenderTarget onGetBackendRenderTarget(BackendHandleAccess) override; 28cb93a386Sopenharmony_ci bool onReplaceBackendTexture(const GrBackendTexture&, GrSurfaceOrigin, ContentChangeMode, TextureReleaseProc, 29cb93a386Sopenharmony_ci ReleaseContext) override; 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci SkCanvas* onNewCanvas() override; 32cb93a386Sopenharmony_ci sk_sp<SkSurface> onNewSurface(const SkImageInfo&) override; 33cb93a386Sopenharmony_ci sk_sp<SkImage> onNewImageSnapshot(const SkIRect* subset) override; 34cb93a386Sopenharmony_ci void onWritePixels(const SkPixmap&, int x, int y) override; 35cb93a386Sopenharmony_ci void onAsyncRescaleAndReadPixels(const SkImageInfo& info, const SkIRect& srcRect, 36cb93a386Sopenharmony_ci RescaleGamma rescaleGamma, RescaleMode, 37cb93a386Sopenharmony_ci ReadPixelsCallback callback, 38cb93a386Sopenharmony_ci ReadPixelsContext context) override; 39cb93a386Sopenharmony_ci void onAsyncRescaleAndReadPixelsYUV420(SkYUVColorSpace yuvColorSpace, 40cb93a386Sopenharmony_ci sk_sp<SkColorSpace> dstColorSpace, 41cb93a386Sopenharmony_ci const SkIRect& srcRect, 42cb93a386Sopenharmony_ci const SkISize& dstSize, 43cb93a386Sopenharmony_ci RescaleGamma rescaleGamma, 44cb93a386Sopenharmony_ci RescaleMode, 45cb93a386Sopenharmony_ci ReadPixelsCallback callback, 46cb93a386Sopenharmony_ci ReadPixelsContext context) override; 47cb93a386Sopenharmony_ci bool onCopyOnWrite(ContentChangeMode) override; 48cb93a386Sopenharmony_ci void onDiscard() override; 49cb93a386Sopenharmony_ci GrSemaphoresSubmitted onFlush(BackendSurfaceAccess access, const GrFlushInfo& info, 50cb93a386Sopenharmony_ci const GrBackendSurfaceMutableState*) override; 51cb93a386Sopenharmony_ci bool onWait(int numSemaphores, const GrBackendSemaphore* waitSemaphores, 52cb93a386Sopenharmony_ci bool deleteSemaphoresAfterWait) override; 53cb93a386Sopenharmony_ci bool onCharacterize(SkSurfaceCharacterization*) const override; 54cb93a386Sopenharmony_ci bool onIsCompatible(const SkSurfaceCharacterization&) const override; 55cb93a386Sopenharmony_ci void onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkSamplingOptions&, 56cb93a386Sopenharmony_ci const SkPaint* paint) override; 57cb93a386Sopenharmony_ci bool onDraw(sk_sp<const SkDeferredDisplayList>, SkIPoint offset) override; 58cb93a386Sopenharmony_ci 59cb93a386Sopenharmony_ci skgpu::BaseDevice* getDevice(); 60cb93a386Sopenharmony_ci 61cb93a386Sopenharmony_ciprivate: 62cb93a386Sopenharmony_ci sk_sp<skgpu::BaseDevice> fDevice; 63cb93a386Sopenharmony_ci 64cb93a386Sopenharmony_ci using INHERITED = SkSurface_Base; 65cb93a386Sopenharmony_ci}; 66cb93a386Sopenharmony_ci 67cb93a386Sopenharmony_ci#endif // SK_SUPPORT_GPU 68cb93a386Sopenharmony_ci 69cb93a386Sopenharmony_ci#endif // SkSurface_Gpu_DEFINED 70