skia2/gn
Michael Ludwig 6d1c0d4196 Avoid use of SkMatrixImageFilter to handle CTM for backdrop filtering
The DrawDeviceWithFilter function used to rely on SkImageFilter's
applyCTMForBackdrop, which would create a new DAG and use an
SkMatrixImageFilter node to account for the transformation. However,
that filter is really meant to perform a transformation prior to the
CTM matrix. Abusing matrix math to instead have it map the backdrop
contents back into the CTM local space grossly inflated the size of the
temporary images needed when under many perspective transforms.

This CL instead takes over control of the CTM decomposition and draws
the backdrop (src) content into a temporary layer directly, and then
feeds that through the image filtering. The code is somewhat cumbersome
to follow because of the combination of coordinate spaces and need to
make everything relative to the top left corner of the images.

When the rest of my image filter refactor is more underway, I believe that
a lot of the coordinate space math and image origin accounting will
be much cleaner, but the overall backdrop filtering strategy would remain
similar to this new implementation.

Bug: skia:9074
Change-Id: Ibd2995e81d2b308c74b2d298da5e38daa74c8677
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/239108
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-09-05 16:35:18 +00:00
..
toolchain [gn] Add pool for dsymutil 2019-09-03 14:08:09 +00:00
__init__.py Make gn directory importable in python 2017-03-20 17:40:30 +00:00
ar.py GN: quiet alink spam on Mac 2016-11-07 14:19:32 +00:00
bench.gni Add a colortype conversion bench 2019-08-26 15:41:54 +00:00
BUILD.gn remove MSRTC bots and GN support 2019-08-26 17:49:28 +00:00
BUILDCONFIG.gn remove MSRTC bots and GN support 2019-08-26 17:49:28 +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_ib_files.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
compile_processors.py moved files generated from .fp files into generated/ directories 2019-04-10 18:02:02 +00:00
core.gni Remove SkRemoteGlyphCacheImpl.h 2019-08-15 21:20:09 +00:00
cp.py GN: get Angle compiling on Windows. 2016-10-17 16:16:16 +00:00
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 Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
effects.gni Add SkShaderMaskFilter.h to public header list 2019-06-21 14:40:25 +00:00
find_headers.py rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
find_ios_sysroot.py Add iOS simulator support in GN. 2017-03-13 17:21:43 +00:00
find_msvc.py documentation/build, BUILDCONFIG: Visual Studio Build Tools 2019 2019-07-12 14:17:16 +00:00
flutter_defines.gni Define SK_GL in Flutter. 2019-05-28 13:13:46 +00:00
fuchsia_defines.gni remove legacy hinting-enum guards 2018-11-28 20:15:03 +00:00
gen_plist_ios.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
gm.gni Don't use AA convex path renderer if direction can't be determined 2019-09-02 01:57:03 +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 SkQP: split make_apk script into create_apk and make_apk 2019-08-20 15:08:03 +00:00
gn_to_bp.py documentation/build, BUILDCONFIG: Visual Studio Build Tools 2019 2019-07-12 14:17:16 +00:00
gn_to_cmake.py Fix building Metal backend with CMake 2019-07-13 03:05:11 +00:00
gpu.gni Rename GrGLIRect to GrNativeRect 2019-09-05 15:46:18 +00:00
highest_version_dir.py Filter Windows SDK and Compiler directories 2017-12-11 20:26:08 +00:00
is_clang.py GN: match shell behavior for cc and cxx in is_clang.py 2016-09-27 09:29:24 -07:00
make_gm_gni.py GMs: re-sort gni, script to regenerate gni, file name convention 2019-05-02 20:08:37 +00:00
opts.gni clean up SkBitmapProcState::platformProcs() 2018-12-03 21:24:31 +00:00
pdf.gni SkPDF: move type1 font code into single file 2019-04-18 21:01:58 +00:00
push_to_android.py skia_android_serial = "auto" 2017-01-12 16:30:17 +00:00
run_sksllex.py Revert "Revert "SkSL now supports null child processors"" 2019-02-22 17:50:30 +00:00
samples.gni Avoid use of SkMatrixImageFilter to handle CTM for backdrop filtering 2019-09-05 16:35:18 +00:00
shared_sources.gni remove empty skia_for_chromium_defines 2019-01-17 17:37:01 +00:00
skia.gni gn: try again to fix fuchsia 2019-09-04 14:33:42 +00:00
sksl.gni SkSL sample() now permits specification of coordinates 2019-08-30 15:29:13 +00:00
tests.gni Reland: Enable YCbCr sampler support on platforms other than Android 2019-08-12 14:21:01 +00:00
utils.gni Use COM_DECLSPEC_NOTHROW STDMETHODIMP 2019-08-14 17:14:03 +00:00
xps.gni GN: split out skia_*_public from skia_*_sources 2019-03-15 18:29:19 +00:00