[canvaskit] Slice out SkPicture
Removes about 120k uncompressed, 40k gzipped
Bug: skia:
Change-Id: I7e0b404f18fc3c6d4ff6b01d2c9bcd657b7d5e07
Reviewed-on: https://skia-review.googlesource.com/c/163246
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index b0e9191..37d22a6 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -47,6 +47,7 @@
skia_enable_gpu = true
skia_enable_pdf = true
skia_enable_spirv_validation = is_skia_dev_build && is_debug
+ skia_enable_skpicture = true
skia_enable_tools = is_skia_dev_build
skia_enable_vulkan_debug_layers = is_skia_dev_build && is_debug
skia_vulkan_header = "" # temporary as we remove the use from clients
@@ -383,6 +384,9 @@
skia_effects_sources + [ "src/ports/SkGlobalInitialization_default.cpp" ]
if (skia_enable_effects_imagefilters) {
sources += skia_effects_imagefilter_sources
+ if (!skia_enable_skpicture) {
+ sources -= [ "//src/effects/imagefilters/SkPictureImageFilter.cpp" ]
+ }
} else {
sources += [ "src/ports/SkGlobalInitialization_none_imagefilters.cpp" ]
}
@@ -903,6 +907,13 @@
"third_party/gif/SkGifImageReader.cpp",
]
+ defines = []
+ if (!skia_enable_skpicture) {
+ defines = [ "SK_DISABLE_SKPICTURE" ]
+ sources -= skia_skpicture_sources
+ sources += [ "src/core/SkPicture_none.cpp" ]
+ }
+
libs = []
if (is_win) {
diff --git a/experimental/canvaskit/compile.sh b/experimental/canvaskit/compile.sh
index 2ce256c..5036565 100755
--- a/experimental/canvaskit/compile.sh
+++ b/experimental/canvaskit/compile.sh
@@ -112,6 +112,7 @@
\
skia_enable_ccpr=false \
skia_enable_nvpr=false \
+ skia_enable_skpicture=false \
${GN_GPU} \
skia_enable_fontmgr_empty=false \
skia_enable_pdf=false"
diff --git a/gn/core.gni b/gn/core.gni
index f6f8852..f7341a3 100644
--- a/gn/core.gni
+++ b/gn/core.gni
@@ -25,7 +25,6 @@
"$_src/core/SkAutoPixmapStorage.cpp",
"$_src/core/SkBBHFactory.cpp",
"$_src/core/SkBBoxHierarchy.h",
- "$_src/core/SkBigPicture.cpp",
"$_src/core/SkBitmap.cpp",
"$_src/core/SkBitmapCache.cpp",
"$_src/core/SkBitmapController.cpp",
@@ -190,7 +189,6 @@
"$_src/core/SkMiniRecorder.cpp",
"$_src/core/SkMiniRecorder.h",
"$_src/core/SkModeColorFilter.cpp",
- "$_src/core/SkMultiPictureDraw.cpp",
"$_src/core/SkNextID.h",
"$_src/core/SkLatticeIter.cpp",
"$_src/core/SkLatticeIter.h",
@@ -217,18 +215,6 @@
"$_src/core/SkPathMeasure.cpp",
"$_src/core/SkPathPriv.h",
"$_src/core/SkPathRef.cpp",
- "$_src/core/SkPicture.cpp",
- "$_src/core/SkPictureCommon.h",
- "$_src/core/SkPictureData.cpp",
- "$_src/core/SkPictureData.h",
- "$_src/core/SkPictureFlat.cpp",
- "$_src/core/SkPictureFlat.h",
- "$_src/core/SkPictureImageGenerator.cpp",
- "$_src/core/SkPicturePlayback.cpp",
- "$_src/core/SkPicturePlayback.h",
- "$_src/core/SkPictureRecord.cpp",
- "$_src/core/SkPictureRecord.h",
- "$_src/core/SkPictureRecorder.cpp",
"$_src/core/SkPixelRef.cpp",
"$_src/core/SkPixmap.cpp",
"$_src/core/SkPoint.cpp",
@@ -249,8 +235,6 @@
"$_src/core/SkRecordOpts.cpp",
"$_src/core/SkRecordOpts.h",
"$_src/core/SkRecordPattern.h",
- "$_src/core/SkRecordedDrawable.cpp",
- "$_src/core/SkRecorder.cpp",
"$_src/core/SkRect.cpp",
"$_src/core/SkRegion.cpp",
"$_src/core/SkRegionPriv.h",
@@ -371,8 +355,6 @@
"$_src/shaders/SkLightingShader.h",
"$_src/shaders/SkLocalMatrixShader.cpp",
"$_src/shaders/SkLocalMatrixShader.h",
- "$_src/shaders/SkPictureShader.cpp",
- "$_src/shaders/SkPictureShader.h",
"$_src/shaders/SkShader.cpp",
"$_src/shaders/SkShaderBase.h",
@@ -407,14 +389,11 @@
"$_include/core/SkMatrix.h",
"$_include/core/SkMatrix44.h",
"$_include/core/SkMetaData.h",
- "$_include/core/SkMultiPictureDraw.h",
"$_include/core/SkOverdrawCanvas.h",
"$_include/core/SkPaint.h",
"$_include/core/SkPath.h",
"$_include/core/SkPathEffect.h",
"$_include/core/SkPathMeasure.h",
- "$_include/core/SkPicture.h",
- "$_include/core/SkPictureRecorder.h",
"$_include/core/SkPixelRef.h",
"$_include/core/SkPoint.h",
"$_include/core/SkPoint3.h",
@@ -546,6 +525,31 @@
"$_src/pathops/SkReduceOrder.h",
]
+skia_skpicture_sources = [
+ "$_include/core/SkMultiPictureDraw.h",
+ "$_include/core/SkPicture.h",
+ "$_include/core/SkPictureRecorder.h",
+ "$_src/core/SkBigPicture.cpp",
+ "$_src/core/SkMultiPictureDraw.cpp",
+ "$_src/core/SkPicture.cpp",
+ "$_src/core/SkPictureCommon.h",
+ "$_src/core/SkPictureData.cpp",
+ "$_src/core/SkPictureData.h",
+ "$_src/core/SkPictureFlat.cpp",
+ "$_src/core/SkPictureFlat.h",
+ "$_src/core/SkPictureImageGenerator.cpp",
+ "$_src/core/SkPicturePlayback.cpp",
+ "$_src/core/SkPicturePlayback.h",
+ "$_src/core/SkPictureRecord.cpp",
+ "$_src/core/SkPictureRecord.h",
+ "$_src/core/SkPictureRecorder.cpp",
+ "$_src/core/SkRecordedDrawable.cpp",
+ "$_src/core/SkRecorder.cpp",
+ "$_src/shaders/SkPictureShader.cpp",
+ "$_src/shaders/SkPictureShader.h",
+]
+
skia_core_sources += skia_pathops_sources
+skia_core_sources += skia_skpicture_sources
skia_core_defines = [] # Used to be used by Chromium, but no longer.
diff --git a/public.bzl b/public.bzl
index 49ba83a..93855d4 100644
--- a/public.bzl
+++ b/public.bzl
@@ -240,7 +240,7 @@
"src/utils/win/**/*",
# Exclude multiple definitions.
- # TODO(mtklein): Move to opts?
+ "src/core/SkPicture_none.cpp"
"src/gpu/GrPathRendering_none.cpp",
"src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp",
"src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index b988b7c..d8482f6 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2732,7 +2732,13 @@
}
///////////////////////////////////////////////////////////////////////////////
+#ifdef SK_DISABLE_SKPICTURE
+void SkCanvas::drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint) {}
+
+void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix,
+ const SkPaint* paint) {}
+#else
/**
* This constant is trying to balance the speed of ref'ing a subpicture into a parent picture,
* against the playback cost of recursing into the subpicture to get at its actual ops.
@@ -2775,6 +2781,7 @@
SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect());
picture->playback(this);
}
+#endif
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkPictureFlat.cpp b/src/core/SkPictureFlat.cpp
index 0ea8ee2..075f1a2 100644
--- a/src/core/SkPictureFlat.cpp
+++ b/src/core/SkPictureFlat.cpp
@@ -15,8 +15,6 @@
///////////////////////////////////////////////////////////////////////////////
-SkTypefacePlayback::~SkTypefacePlayback() {}
-
void SkTypefacePlayback::setCount(size_t count) {
fCount = count;
fArray.reset(new sk_sp<SkTypeface>[count]);
diff --git a/src/core/SkPictureFlat.h b/src/core/SkPictureFlat.h
index b461dcc..ddf3b8d 100644
--- a/src/core/SkPictureFlat.h
+++ b/src/core/SkPictureFlat.h
@@ -157,7 +157,7 @@
class SkTypefacePlayback {
public:
SkTypefacePlayback() : fCount(0), fArray(nullptr) {}
- ~SkTypefacePlayback();
+ ~SkTypefacePlayback() = default;
void setCount(size_t count);
diff --git a/src/core/SkPicture_none.cpp b/src/core/SkPicture_none.cpp
new file mode 100644
index 0000000..b042600
--- /dev/null
+++ b/src/core/SkPicture_none.cpp
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkCanvas.h"
+#include "SkData.h"
+#include "SkDrawable.h"
+#include "SkImageGenerator.h"
+#include "SkPicture.h"
+#include "SkPictureData.h"
+#include "SkPictureImageFilter.h"
+#include "SkPicturePlayback.h"
+#include "SkPicturePriv.h"
+#include "SkPictureRecorder.h"
+#include "SkPictureShader.h"
+#include "SkRecordedDrawable.h"
+#include "SkTypes.h"
+
+SkPicture::SkPicture() : fUniqueID(0) {}
+
+
+sk_sp<SkPicture> SkPicturePriv::MakeFromBuffer(SkReadBuffer& buffer) {
+ return nullptr;
+}
+
+void SkPicturePriv::Flatten(const sk_sp<const SkPicture> picture, SkWriteBuffer& buffer) {}
+
+
+SkPictureRecorder::SkPictureRecorder() {}
+
+SkPictureRecorder::~SkPictureRecorder() {}
+
+SkCanvas* SkPictureRecorder::beginRecording(const SkRect& userCullRect,
+ SkBBHFactory* bbhFactory /* = nullptr */,
+ uint32_t recordFlags /* = 0 */) {
+ return nullptr;
+}
+
+SkCanvas* SkPictureRecorder::getRecordingCanvas() {
+ return nullptr;
+}
+
+sk_sp<SkPicture> SkPictureRecorder::finishRecordingAsPicture(uint32_t finishFlags) {
+ return nullptr;
+}
+
+sk_sp<SkPicture> SkPictureRecorder::finishRecordingAsPictureWithCull(const SkRect& cullRect,
+ uint32_t finishFlags) {
+ return nullptr;
+}
+
+void SkPictureRecorder::partialReplay(SkCanvas* canvas) const {}
+
+sk_sp<SkDrawable> SkPictureRecorder::finishRecordingAsDrawable(uint32_t finishFlags) {
+ return nullptr;
+}
+
+
+SkPictureData* SkPictureData::CreateFromStream(SkStream* stream,
+ const SkPictInfo& info,
+ const SkDeserialProcs& procs,
+ SkTypefacePlayback* topLevelTFPlayback) {
+ return nullptr;
+}
+
+SkPictureData* SkPictureData::CreateFromBuffer(SkReadBuffer& buffer,
+ const SkPictInfo& info) {
+ return nullptr;
+}
+
+
+sk_sp<SkFlattenable> SkPictureShader::CreateProc(SkReadBuffer& buffer) {
+ return nullptr;
+}
+
+void SkPictureShader::flatten(SkWriteBuffer& buffer) const {}
+
+
+void SkPicturePlayback::draw(SkCanvas* canvas,
+ SkPicture::AbortCallback* callback,
+ SkReadBuffer* buffer) {}
+
+
+std::unique_ptr<SkImageGenerator>
+SkImageGenerator::MakeFromPicture(const SkISize& size, sk_sp<SkPicture> picture,
+ const SkMatrix* matrix, const SkPaint* paint,
+ SkImage::BitDepth bitDepth, sk_sp<SkColorSpace> colorSpace) {
+ return nullptr;
+}
+
+void SkRecordedDrawable::flatten(SkWriteBuffer& buffer) const {}
+
+sk_sp<SkFlattenable> SkRecordedDrawable::CreateProc(SkReadBuffer& buffer) {
+ return nullptr;
+}
+
+
+sk_sp<SkFlattenable> SkPictureImageFilter::CreateProc(SkReadBuffer& buffer) {
+ return nullptr;
+}