skia2/gn
Michael Ludwig 5820b0c3f3 Use specialized quad lists in rectangle ops
Hopefully reduces memory footprint of GrFillRectOp and GrTextureOp

The original rect code (GrAAFillRectOp) stored 2 SkMatrices (18 floats), 2
SkRects (8 floats) an SkPMColor4f (4 floats) and a flag (1 int) for a total
of 124 bytes per quad that was stored in the op.

The first pass at the rectangle consolidation switched to storing device and
local quads as GrPerspQuads (32 floats), an SkPMColor4f (4 floats) and a flag
(1 int) for a total of 148 bytes per quad. After landing, several memory
regressions appeared in Chrome and our perf monitor.

Several intertwined approaches are taken here. First, GrPerspQuad no longer
caches 1/w, which makes a quad 12 floats instead of 16. Second, a specialized
list type is defined that allows storing the x, y, and extra metadata together
for quads, but keeps the w components separate. When the quad type isn't
perspective, w is not stored at all since it is implicitly 1 and can be
reconstituted at tessellation time. This brings the total per quad to either
84 or 116 bytes, depending on if the op list needs perspective information.

Bug: chromium:915025
Bug: chromium:917242
Change-Id: If37ee122847b0c32604bb45dc2a1326b544f9cf6
Reviewed-on: https://skia-review.googlesource.com/c/180644
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-03 21:31:52 +00:00
..
toolchain Fix PATH and EXE quoting for Windows ARM64 builds 2018-12-10 15:54:18 +00:00
__init__.py
ar.py
bench.gni use drawSimpleText 2019-01-03 18:27:23 +00:00
BUILD.gn use ghash linking on Windows 2018-12-27 13:31:03 +00:00
BUILDCONFIG.gn Fix PATH when running MSVC for ARM64 target 2018-12-07 21:06:25 +00:00
call.py Add gn plumbing for mdbviz tool 2017-09-05 13:57:44 +00:00
checkdir.py Bundle resources and skps directories into iOS app. 2017-11-29 17:06:25 +00:00
codesign_ios.py Allow different identities for iOS code signing 2017-12-07 20:42:00 +00:00
compile_processors.py switched to infra version of clang-format for skslc 2017-07-27 20:28:50 +00:00
core.gni fold _utils.h into _matrixProcs.cpp 2018-12-18 15:21:06 +00:00
cp.py
create_sksl_enums.py Create sksl_enums.inc with UNIX line endings (even on Windows) 2018-02-09 15:13:11 +00:00
effects_imagefilters.gni Reland "simplify disabling effect deserialization" 2018-11-08 14:26:52 +00:00
effects.gni Remove all old gpu gradient code 2018-09-14 22:21:56 +00:00
find_headers.py Add 'public' headers support to find_headers.py 2018-05-30 18:00:09 +00:00
find_ios_sysroot.py
flutter_defines.gni rm SK_SUPPORT_LEGACY_TEXTBLOBBUILD_WITH_PAINT from fluter 2018-11-28 15:59:15 +00:00
fuchsia_defines.gni remove legacy hinting-enum guards 2018-11-28 20:15:03 +00:00
gen_plist_ios.py Add create_bundle support for GN 2017-11-28 15:29:07 +00:00
gm.gni Add new GM to verify Plots marked correctly during regenerate. 2018-12-18 16:32:42 +00:00
gn_meta_sln.py Decorate project names with their relative path in the meta SLN 2018-06-01 19:22:08 +00:00
gn_to_bp_utils.py Generate Android Framework host-side Skia (linux) 2018-11-19 17:51:32 +00:00
gn_to_bp.py Simplify gn_args in gn_to_bp.py 2018-12-04 16:04:02 +00:00
gn_to_cmake.py Improve CMakeLists.txt auto regeneration. 2018-06-26 20:33:29 +00:00
gpu.gni Move GrVkSecondaryCBDrawContext header into src to hide it. 2019-01-02 22:58:58 +00:00
highest_version_dir.py Filter Windows SDK and Compiler directories 2017-12-11 20:26:08 +00:00
is_clang.py
opts.gni clean up SkBitmapProcState::platformProcs() 2018-12-03 21:24:31 +00:00
pdf.gni SkPDF: pull out SkPDFSubsetFont code to another file. 2018-11-15 19:45:35 +00:00
push_to_android.py
run_sksllex.py Re-land "converted OverdrawColorFilter to SkSL" 2017-10-26 14:58:27 +00:00
samples.gni use drawSimpleText 2019-01-03 18:27:23 +00:00
shared_sources.gni Remove SK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS from Skia's Chromium GN 2018-11-13 20:44:01 +00:00
sksl.gni Revert "converted AARectEffect to new FP system" 2018-10-15 20:43:26 +00:00
tests.gni Use specialized quad lists in rectangle ops 2019-01-03 21:31:52 +00:00
utils.gni add textutils 2018-10-25 17:50:20 +00:00
xps.gni SkDocument: Factories now located in SkPDFDocument.h and SkXPSDocument.h 2018-09-20 18:21:07 +00:00