Go to file
Michael Ludwig 3b923a880b Improve scissor state tracking in GrRTC
At a low level, this changes GrScissorState from a rect+bool to a rect+size.
The scissor test is considered enablebd if the rect does not fill the
device bounds rect specified by the size. This has a number of benefits:

1. We can always access the scissor rect and know that it will be
restricted to the render target dimensions.
2. It helps consolidate code that previously had to test the scissor rect
and render target bounds separately.
3. The clear operations can now match the proper backing store dimensions
of the render target.
4. It makes it easier to reason about scissors applying to the logical
dimensions of the render target vs. its backing store dimensions.

Originally, I was going to have the extra scissor guards for the logical
dimensions be added in a separate CL (with the cleanup for
attemptQuadOptimization). However, it became difficult to ensure correct
behavior respecting the vulkan render pass bounds without applying this
new logic at the same time.

So now, with this CL, GrAppliedClips are sized to the backing store
dimensions of the render target. GrOpsTasks also clip bounds to the
backing store dimensions instead of the logical dimensions (which seems
more correct since that's where the auto-clipping happens). Then when
we convert a GrClip to a GrAppliedClip, the GrRTC automatically enforces
the logical dimensions scissor if we have stencil settings (to ensure
the padded pixels don't get corrupted). It also may remove the scissor
if the draw was just a color buffer update.

Change-Id: I75671c9cc921f4696b1dd5231e02486090aa4282
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290654
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-06-04 18:44:46 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Revert "Allow printf-style formatting to be used in SK_ABORT." 2020-06-01 19:32:08 +00:00
bin roll GN 2020-04-01 17:02:23 +00:00
build/fuchsia Remove FIDL C bindings usages 2020-05-26 16:40:29 +00:00
build_overrides Use Dawn's BUILD.gn instead of defining another one for Skia. 2020-04-13 23:26:31 +00:00
client_utils/android Remove SkBitmapRegionDecoder and SkBRDAllocator 2020-06-01 20:56:29 +00:00
dm Update DDL test harness to better match OOP-R 2020-05-29 15:58:05 +00:00
docker Support specifying hash and patch_ref in skia-release & skia-wasm-release Dockerfiles 2020-05-06 20:39:04 +00:00
docs/examples Remove SkSurface::MakeFromBackendTextureAsRenderTarget from public API 2020-05-29 15:09:52 +00:00
example Revert "Revert "switch to new filltype for SkPath"" 2019-11-26 17:43:14 +00:00
experimental Upgrade to emscripten 1.39.16 2020-05-21 18:31:21 +00:00
fuzz Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +00:00
gm Improve scissor state tracking in GrRTC 2020-06-04 18:44:46 +00:00
gn Update GrFragmentProcessor::SwizzleOutput to use a child FP. 2020-06-04 17:31:46 +00:00
include Move addToAtlas to GrAtlasManager 2020-06-04 16:16:13 +00:00
infra Update Go Deps 2020-06-03 05:38:53 +00:00
modules Regularize SkFontMgr for CoreText build. 2020-06-04 16:45:09 +00:00
platform_tools Remove SkAtlasTextTarget 2020-06-04 03:52:35 +00:00
resources Runtime effect implementation of color cube filter 2020-05-28 15:45:48 +00:00
samplecode Regularize SkFontMgr for CoreText build. 2020-06-04 16:45:09 +00:00
site Fix markdown typo in the style guide 2020-05-29 16:24:57 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src Improve scissor state tracking in GrRTC 2020-06-04 18:44:46 +00:00
tests Improve scissor state tracking in GrRTC 2020-06-04 18:44:46 +00:00
third_party Hide ICU C++ API from Skia users. 2020-05-29 21:43:19 +00:00
tools Reland "Request specific ANGLE context versions." 2020-06-04 12:49:20 +00:00
.clang-format Disable BinPackParameters in .clang-format 2020-03-27 14:32:40 +00:00
.clang-tidy add google-build-namespaces to clang-tidy checks 2018-12-12 16:33:59 +00:00
.gitignore clean up some .gitignores 2019-05-15 19:55:45 +00:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS Fixing a bug in SkOpEdgeBuilder::walk that causes pathOps to fail when cubic segment is reducable 2020-04-21 16:56:54 +00:00
BUILD.gn refine __chkstk_darwin() workaround 2020-06-04 18:27:16 +00:00
codereview.settings Make uploading to Gerrit the default for Skia 2016-11-09 19:07:56 +00:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS Roll SwiftShader from 3ad285a60d82 to 0711869b5f20 (1 revision) 2020-06-04 05:19:19 +00:00
go.mod Update Go Deps 2020-06-04 05:34:59 +00:00
go.sum Update Go Deps 2020-06-04 05:34:59 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
OWNERS add OWNERS file 2017-12-01 19:50:19 +00:00
PRESUBMIT.py PRESUBMIT: Don't check formatting of deleted files 2020-04-08 10:36:09 +00:00
public.bzl Remove SkAtlasTextTarget 2020-06-04 03:52:35 +00:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
RELEASE_NOTES.txt [canvaskit] Make SkCanvas.drawColor/clear take SkColor4f 2020-06-03 16:03:38 +00:00
whitespace.txt Whitespace change to re-trigger Mac/iOS tests 2020-02-23 20:55:01 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.