blob: 9699b01e0547adce312b42a8832e18bb3281dd45 [file] [log] [blame]
robertphillips7b9e8a42014-12-11 08:20:31 -08001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkSurface_Gpu_DEFINED
9#define SkSurface_Gpu_DEFINED
10
11#include "SkSurface_Base.h"
12
13#if SK_SUPPORT_GPU
14
15class SkGpuDevice;
16
17class SkSurface_Gpu : public SkSurface_Base {
18public:
robertphillips24e91282016-04-29 06:46:36 -070019 SkSurface_Gpu(sk_sp<SkGpuDevice>);
Brian Salomond3b65972017-03-22 12:05:03 -040020 ~SkSurface_Gpu() override;
robertphillips7b9e8a42014-12-11 08:20:31 -080021
Robert Phillipsd5f9cdd2018-01-31 09:29:48 -050022 // This is an internal-only factory
23 static sk_sp<SkSurface> MakeWrappedRenderTarget(GrContext*, sk_sp<GrRenderTargetContext>);
24
joshualitt81793412015-07-08 12:54:04 -070025 GrBackendObject onGetTextureHandle(BackendHandleAccess) override;
26 bool onGetRenderTargetHandle(GrBackendObject*, BackendHandleAccess) override;
mtklein36352bf2015-03-25 18:17:31 -070027 SkCanvas* onNewCanvas() override;
reede8f30622016-03-23 18:59:25 -070028 sk_sp<SkSurface> onNewSurface(const SkImageInfo&) override;
Robert Phillipsac6b1fa2017-03-20 08:38:50 -040029 sk_sp<SkImage> onNewImageSnapshot() override;
Mike Reed4c790bd2018-02-08 14:10:40 -050030 void onWritePixels(const SkPixmap&, int x, int y) override;
mtklein36352bf2015-03-25 18:17:31 -070031 void onCopyOnWrite(ContentChangeMode) override;
32 void onDiscard() override;
Greg Daniel51316782017-08-02 15:10:09 +000033 GrSemaphoresSubmitted onFlush(int numSemaphores,
34 GrBackendSemaphore signalSemaphores[]) override;
Greg Danielc64ee462017-06-15 16:59:49 -040035 bool onWait(int numSemaphores, const GrBackendSemaphore* waitSemaphores) override;
Robert Phillipsad8a43f2017-08-30 12:06:35 -040036 bool onCharacterize(SkSurfaceCharacterization*) const override;
37 bool isCompatible(const SkSurfaceCharacterization&) const;
Robert Phillipsd5f9cdd2018-01-31 09:29:48 -050038 bool onDraw(const SkDeferredDisplayList*) override;
robertphillips7b9e8a42014-12-11 08:20:31 -080039
robertphillips24e91282016-04-29 06:46:36 -070040 SkGpuDevice* getDevice() { return fDevice.get(); }
robertphillips7b9e8a42014-12-11 08:20:31 -080041
brianosman0e22eb82016-08-30 07:07:59 -070042 static bool Valid(const SkImageInfo&);
43 static bool Valid(GrContext*, GrPixelConfig, SkColorSpace*);
44
robertphillips7b9e8a42014-12-11 08:20:31 -080045private:
robertphillips24e91282016-04-29 06:46:36 -070046 sk_sp<SkGpuDevice> fDevice;
robertphillips7b9e8a42014-12-11 08:20:31 -080047
48 typedef SkSurface_Base INHERITED;
49};
50
51#endif // SK_SUPPORT_GPU
52
53#endif // SkSurface_Gpu_DEFINED