Make CCPR optional
This can reduce code size where CCPR is not supported (e.g. WebGL 1.0)
Drops 130k uncompressed, 50k compressed.
Bug: skia:
Change-Id: I8af7e681e1f3520a18e0c0d55e318dcf88206584
Reviewed-on: https://skia-review.googlesource.com/c/161041
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index acc3b9d..1931761 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -34,6 +34,7 @@
skia_use_x11 = is_linux
skia_android_serial = ""
+ skia_enable_ccpr = true
skia_enable_discrete_gpu = true
skia_enable_effects = true
skia_enable_effects_imagefilters = true
@@ -587,6 +588,10 @@
public_deps = []
sources = skia_gpu_sources + skia_sksl_sources + skia_gpu_processor_outputs
+ if (!skia_enable_ccpr) {
+ sources -= skia_ccpr_sources
+ sources += [ "src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp" ]
+ }
# These paths need to be absolute to match the ones produced by shared_sources.gni.
sources -= get_path_info([ "src/gpu/gl/GrGLMakeNativeInterface_none.cpp" ],
diff --git a/experimental/canvaskit/compile.sh b/experimental/canvaskit/compile.sh
index b84634d..ff225ed 100755
--- a/experimental/canvaskit/compile.sh
+++ b/experimental/canvaskit/compile.sh
@@ -72,6 +72,7 @@
skia_use_vulkan=false \
skia_use_zlib=true \
\
+ skia_enable_ccpr=false \
skia_enable_gpu=true \
skia_enable_fontmgr_empty=false \
skia_enable_pdf=false"
diff --git a/gn/gpu.gni b/gn/gpu.gni
index 5c3ddbf..4f54eb1 100644
--- a/gn/gpu.gni
+++ b/gn/gpu.gni
@@ -295,41 +295,6 @@
"$_src/gpu/ops/GrTextureOp.cpp",
"$_src/gpu/ops/GrTextureOp.h",
- # coverage counting path renderer
- "$_src/gpu/ccpr/GrCCAtlas.cpp",
- "$_src/gpu/ccpr/GrCCAtlas.h",
- "$_src/gpu/ccpr/GrCCClipPath.cpp",
- "$_src/gpu/ccpr/GrCCClipProcessor.cpp",
- "$_src/gpu/ccpr/GrCCClipProcessor.h",
- "$_src/gpu/ccpr/GrCCConicShader.cpp",
- "$_src/gpu/ccpr/GrCCConicShader.h",
- "$_src/gpu/ccpr/GrCCCoverageProcessor.cpp",
- "$_src/gpu/ccpr/GrCCCoverageProcessor_GSImpl.cpp",
- "$_src/gpu/ccpr/GrCCCoverageProcessor_VSImpl.cpp",
- "$_src/gpu/ccpr/GrCCCoverageProcessor.h",
- "$_src/gpu/ccpr/GrCCCubicShader.cpp",
- "$_src/gpu/ccpr/GrCCCubicShader.h",
- "$_src/gpu/ccpr/GrCCDrawPathsOp.cpp",
- "$_src/gpu/ccpr/GrCCDrawPathsOp.h",
- "$_src/gpu/ccpr/GrCCFiller.cpp",
- "$_src/gpu/ccpr/GrCCFiller.h",
- "$_src/gpu/ccpr/GrCCFillGeometry.cpp",
- "$_src/gpu/ccpr/GrCCFillGeometry.h",
- "$_src/gpu/ccpr/GrCCPathCache.cpp",
- "$_src/gpu/ccpr/GrCCPathCache.h",
- "$_src/gpu/ccpr/GrCCPathProcessor.cpp",
- "$_src/gpu/ccpr/GrCCPathProcessor.h",
- "$_src/gpu/ccpr/GrCCPerFlushResources.cpp",
- "$_src/gpu/ccpr/GrCCPerFlushResources.h",
- "$_src/gpu/ccpr/GrCCQuadraticShader.cpp",
- "$_src/gpu/ccpr/GrCCQuadraticShader.h",
- "$_src/gpu/ccpr/GrCCStrokeGeometry.cpp",
- "$_src/gpu/ccpr/GrCCStrokeGeometry.h",
- "$_src/gpu/ccpr/GrCCStroker.cpp",
- "$_src/gpu/ccpr/GrCCStroker.h",
- "$_src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp",
- "$_src/gpu/ccpr/GrCoverageCountingPathRenderer.h",
-
"$_src/gpu/effects/GrAARectEffect.cpp",
"$_src/gpu/effects/GrAARectEffect.h",
"$_src/gpu/effects/GrAlphaThresholdFragmentProcessor.cpp",
@@ -552,6 +517,45 @@
"$_src/image/SkSurface_Gpu.cpp",
]
+skia_ccpr_sources = [
+ # coverage counting path renderer
+ "$_src/gpu/ccpr/GrCCAtlas.cpp",
+ "$_src/gpu/ccpr/GrCCAtlas.h",
+ "$_src/gpu/ccpr/GrCCClipPath.cpp",
+ "$_src/gpu/ccpr/GrCCClipProcessor.cpp",
+ "$_src/gpu/ccpr/GrCCClipProcessor.h",
+ "$_src/gpu/ccpr/GrCCConicShader.cpp",
+ "$_src/gpu/ccpr/GrCCConicShader.h",
+ "$_src/gpu/ccpr/GrCCCoverageProcessor.cpp",
+ "$_src/gpu/ccpr/GrCCCoverageProcessor_GSImpl.cpp",
+ "$_src/gpu/ccpr/GrCCCoverageProcessor_VSImpl.cpp",
+ "$_src/gpu/ccpr/GrCCCoverageProcessor.h",
+ "$_src/gpu/ccpr/GrCCCubicShader.cpp",
+ "$_src/gpu/ccpr/GrCCCubicShader.h",
+ "$_src/gpu/ccpr/GrCCDrawPathsOp.cpp",
+ "$_src/gpu/ccpr/GrCCDrawPathsOp.h",
+ "$_src/gpu/ccpr/GrCCFiller.cpp",
+ "$_src/gpu/ccpr/GrCCFiller.h",
+ "$_src/gpu/ccpr/GrCCFillGeometry.cpp",
+ "$_src/gpu/ccpr/GrCCFillGeometry.h",
+ "$_src/gpu/ccpr/GrCCPathCache.cpp",
+ "$_src/gpu/ccpr/GrCCPathCache.h",
+ "$_src/gpu/ccpr/GrCCPathProcessor.cpp",
+ "$_src/gpu/ccpr/GrCCPathProcessor.h",
+ "$_src/gpu/ccpr/GrCCPerFlushResources.cpp",
+ "$_src/gpu/ccpr/GrCCPerFlushResources.h",
+ "$_src/gpu/ccpr/GrCCQuadraticShader.cpp",
+ "$_src/gpu/ccpr/GrCCQuadraticShader.h",
+ "$_src/gpu/ccpr/GrCCStrokeGeometry.cpp",
+ "$_src/gpu/ccpr/GrCCStrokeGeometry.h",
+ "$_src/gpu/ccpr/GrCCStroker.cpp",
+ "$_src/gpu/ccpr/GrCCStroker.h",
+ "$_src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp",
+ "$_src/gpu/ccpr/GrCoverageCountingPathRenderer.h",
+]
+
+skia_gpu_sources += skia_ccpr_sources
+
skia_null_gpu_sources = []
skia_vk_sources = [
diff --git a/public.bzl b/public.bzl
index 2ce0abf..28d4a3f 100644
--- a/public.bzl
+++ b/public.bzl
@@ -243,6 +243,7 @@
# TODO(mtklein): Move to opts?
"src/pdf/SkDocument_PDF_None.cpp", # We use src/pdf/SkPDFDocument.cpp.
"src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
+ "src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp",
# Exclude files that don't compile everywhere.
"src/svg/**/*", # Depends on xml, SkJpegCodec, and SkPngCodec.
diff --git a/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp b/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp
new file mode 100644
index 0000000..ebc12da
--- /dev/null
+++ b/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp
@@ -0,0 +1,23 @@
+/*
+ * 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 "GrCoverageCountingPathRenderer.h"
+
+bool GrCoverageCountingPathRenderer::IsSupported(const GrCaps& caps) {
+ return false;
+}
+
+sk_sp<GrCoverageCountingPathRenderer> GrCoverageCountingPathRenderer::CreateIfSupported(
+ const GrCaps& caps, AllowCaching allowCaching) {
+ return nullptr;
+}
+
+std::unique_ptr<GrFragmentProcessor> GrCoverageCountingPathRenderer::makeClipProcessor(
+ uint32_t opListID, const SkPath& deviceSpacePath, const SkIRect& accessRect, int rtWidth,
+ int rtHeight, const GrCaps& caps) {
+ return nullptr;
+}