blob: f4ef10cedbe7b226f6421102d4e9f95f9dcdf745 [file] [log] [blame]
Robert Phillips09b2bcb2021-05-12 11:56:47 -04001/*
2 * Copyright 2021 Google LLC
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 SkBaseGpuDevice_DEFINED
9#define SkBaseGpuDevice_DEFINED
10
Robert Phillipsc2132ea2021-05-17 14:32:29 -040011#include "src/gpu/GrSurfaceProxyView.h"
12
Robert Phillips09b2bcb2021-05-12 11:56:47 -040013// NOTE: when not defined, SkGpuDevice extends SkBaseDevice directly and manages its clip stack
14// using GrClipStack. When false, SkGpuDevice continues to extend SkClipStackDevice and uses
15// SkClipStack and GrClipStackClip to manage the clip stack.
16#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
17 // For staging purposes, disable this for Android Framework
18 #if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
19 #define SK_DISABLE_NEW_GR_CLIP_STACK
20 #endif
21#endif
22
23#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
24 #include "src/core/SkDevice.h"
25 #define BASE_DEVICE SkBaseDevice
26#else
27 #include "src/core/SkClipStackDevice.h"
28 #define BASE_DEVICE SkClipStackDevice
29#endif
30
31class SkBaseGpuDevice : public BASE_DEVICE {
32public:
Robert Phillips54c878e2021-05-20 13:22:52 -040033 enum InitContents {
34 kClear_InitContents,
35 kUninit_InitContents
36 };
37
Robert Phillips42754922021-06-01 13:12:51 -040038 SkBaseGpuDevice(sk_sp<GrRecordingContext> rContext,
39 const SkImageInfo& ii,
40 const SkSurfaceProps& props)
41 : INHERITED(ii, props)
42 , fContext(std::move(rContext)) {
Robert Phillips09b2bcb2021-05-12 11:56:47 -040043 }
44
Robert Phillipsc2132ea2021-05-17 14:32:29 -040045 virtual GrSurfaceProxyView readSurfaceView() = 0;
46 GrRenderTargetProxy* targetProxy() {
47 return this->readSurfaceView().asRenderTargetProxy();
48 }
Robert Phillips09b2bcb2021-05-12 11:56:47 -040049
Robert Phillips42754922021-06-01 13:12:51 -040050 GrRecordingContext* recordingContext() const override { return fContext.get(); }
51
Robert Phillips0095fcb2021-05-24 14:34:01 -040052 virtual bool wait(int numSemaphores,
53 const GrBackendSemaphore* waitSemaphores,
54 bool deleteSemaphoresAfterWait) = 0;
55
Robert Phillips09b2bcb2021-05-12 11:56:47 -040056protected:
Robert Phillips42754922021-06-01 13:12:51 -040057 sk_sp<GrRecordingContext> fContext;
Robert Phillips09b2bcb2021-05-12 11:56:47 -040058
59private:
60 using INHERITED = BASE_DEVICE;
61};
62
63#undef BASE_DEVICE
64
65#endif