Add SkBaseGpuDevice ...

between SkBaseDevice/SkClipStackDevice and SkGpuDevice/SkGpuDevice_nga

The idea is that SkCanvas will deal with SkBaseGpuDevices rather than SkGpuDevice*s

Change-Id: I1bffeccab44d2a2b73413f50d7c905fa2df8eedc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/407459
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This commit is contained in:
Robert Phillips 2021-05-12 11:56:47 -04:00 committed by Skia Commit-Bot
parent 4e9d5e2bdf
commit 09b2bcbb81
4 changed files with 54 additions and 22 deletions

View File

@ -541,6 +541,7 @@ skia_gpu_sources = [
"$_src/gpu/mock/GrMockTypes.cpp",
# Sk files
"$_src/gpu/SkBaseGpuDevice.h",
"$_src/gpu/SkGpuDevice.cpp",
"$_src/gpu/SkGpuDevice.h",
"$_src/gpu/SkGpuDevice_drawTexture.cpp",

45
src/gpu/SkBaseGpuDevice.h Normal file
View File

@ -0,0 +1,45 @@
/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkBaseGpuDevice_DEFINED
#define SkBaseGpuDevice_DEFINED
// NOTE: when not defined, SkGpuDevice extends SkBaseDevice directly and manages its clip stack
// using GrClipStack. When false, SkGpuDevice continues to extend SkClipStackDevice and uses
// SkClipStack and GrClipStackClip to manage the clip stack.
#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
// For staging purposes, disable this for Android Framework
#if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
#define SK_DISABLE_NEW_GR_CLIP_STACK
#endif
#endif
#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
#include "src/core/SkDevice.h"
#define BASE_DEVICE SkBaseDevice
#else
#include "src/core/SkClipStackDevice.h"
#define BASE_DEVICE SkClipStackDevice
#endif
class SkBaseGpuDevice : public BASE_DEVICE {
public:
SkBaseGpuDevice(const SkImageInfo& ii, const SkSurfaceProps& props)
: INHERITED(ii, props) {
}
// TODO: SkGpuDevice/SkGpuDevice_nga shared stuff goes here
protected:
private:
using INHERITED = BASE_DEVICE;
};
#undef BASE_DEVICE
#endif

View File

@ -14,39 +14,25 @@
#include "include/core/SkSurface.h"
#include "include/gpu/GrTypes.h"
#include "src/gpu/GrSurfaceDrawContext.h"
#include "src/gpu/SkBaseGpuDevice.h"
#include "src/gpu/SkGr.h"
class SkSpecialImage;
class SkSurface;
class SkVertices;
// NOTE: when not defined, SkGpuDevice extends SkBaseDevice directly and manages its clip stack
// using GrClipStack. When false, SkGpuDevice continues to extend SkClipStackDevice and uses
// SkClipStack and GrClipStackClip to manage the clip stack.
#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
// For staging purposes, disable this for Android Framework
#if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
#define SK_DISABLE_NEW_GR_CLIP_STACK
#endif
#endif
#if !defined(SK_DISABLE_NEW_GR_CLIP_STACK)
#include "src/core/SkDevice.h"
#include "src/gpu/GrClipStack.h"
#define BASE_DEVICE SkBaseDevice
#define GR_CLIP_STACK GrClipStack
#else
#include "src/core/SkClipStackDevice.h"
#include "src/gpu/GrClipStackClip.h"
#define BASE_DEVICE SkClipStackDevice
#define GR_CLIP_STACK GrClipStackClip
#endif
/**
* Subclass of SkBaseDevice, which directs all drawing to the GrGpu owned by the
* canvas.
* Subclass of SkBaseGpuDevice, which directs all drawing to the GrGpu owned by the canvas.
*/
class SkGpuDevice : public BASE_DEVICE {
class SkGpuDevice : public SkBaseGpuDevice {
public:
enum InitContents {
kClear_InitContents,
@ -221,10 +207,9 @@ private:
GrMipmapped);
friend class SkSurface_Gpu; // for access to surfaceProps
using INHERITED = BASE_DEVICE;
using INHERITED = SkBaseGpuDevice;
};
#undef BASE_DEVICE
#undef GR_CLIP_STACK
#endif

View File

@ -12,11 +12,12 @@
#ifdef SK_NGA
#include "src/core/SkDevice.h"
#include "src/gpu/SkBaseGpuDevice.h"
/**
* Subclass of SkBaseGpuDevice, which directs all drawing to the GrGpu owned by the canvas.
*/
class SkGpuDevice_nga : public SkBaseDevice {
class SkGpuDevice_nga : public SkBaseGpuDevice {
public:
~SkGpuDevice_nga() override;
@ -94,7 +95,7 @@ private:
sk_sp<GrRecordingContext> fContext;
using INHERITED = SkBaseDevice;
using INHERITED = SkBaseGpuDevice;
};
#endif // SK_NGA