blob: aa385fa363972c8334559367066ffaf8df4ff4f8 [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
Robert Phillipsc2132ea2021-05-17 14:32:29 -040031class GrImageInfo;
32
Robert Phillips09b2bcb2021-05-12 11:56:47 -040033class SkBaseGpuDevice : public BASE_DEVICE {
34public:
35 SkBaseGpuDevice(const SkImageInfo& ii, const SkSurfaceProps& props)
36 : INHERITED(ii, props) {
37 }
38
39 // TODO: SkGpuDevice/SkGpuDevice_nga shared stuff goes here
Robert Phillipsc2132ea2021-05-17 14:32:29 -040040 virtual GrSurfaceProxyView readSurfaceView() = 0;
41 GrRenderTargetProxy* targetProxy() {
42 return this->readSurfaceView().asRenderTargetProxy();
43 }
44 virtual GrImageInfo grImageInfo() const = 0;
Robert Phillips09b2bcb2021-05-12 11:56:47 -040045
46protected:
47
48private:
49 using INHERITED = BASE_DEVICE;
50};
51
52#undef BASE_DEVICE
53
54#endif