Merges the GrStrokePathShader and GrFillPathShader classes together.
Creates a new base class called GrPathTessellationShader. Now they all
have a uniform color and can all be draw to stencil and color both.
This is necessary cleanup in general, but will also allow us to create
a convex tessellation op that bypasses the stencil buffer.
Bug: skia:10419
Change-Id: Ifc492c94d3de044a36bd9ea95b1d5aa22e007905
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413696
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This adds copy constructors / assignment operator, reset(), value(), and
has_value() to SkTOptional.
Change-Id: I564552a75a4c612685cdaa8e80e4359b394b64a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/414338
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Emscripten has a bug where its allocation do not align to
alignof(max_align_t). This is causing misalignment issues when
using SkParagraph in JavaScript.
Add the kAllocationAlignment to express this notion, and
us it when calculating additional memory allocation.
Change-Id: I62106d65333eca4d529b5f38a71b244b9192465e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/414396
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Jiulong Wang <jiulongw@vibe.us>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This was handled properly, but lacked a test.
Change-Id: I84adc7cb3d37ab85eef945c1e38fc43c6cd8aa01
Bug: skia:10932
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/414437
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This made it easier to confirm the missing intrinsics that we still need
to implement (`matrixCompMult` and `mix`), and is easier to read than
the previous code which was not really ordered in any logical way. I
also discovered that I had implemented a handful of intrinsics that
weren't strictly required for ES2 support.
Change-Id: I02cf3835e88417279335283c11a4dea2296d7107
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/414336
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Now that we know the minimum and maximum values of a given integer Type,
we can check for assigment statements or variable initial-values that
exceed those bounds and report it as an error. This check should work on
anything that can be optimized or folded down to an IntLiteral, but
isn't meant to be 100% exhaustive.
Change-Id: I4473b5b003e1b8e3385943ce60e303e95664e8ba
Bug: skia:10932
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413437
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
We need to be careful to distinguish cross(vec3, vec3)--a real built-in
intrinsic--from cross(vec2, vec2)--an inline function in sksl_gpu, but
not actually a legitimate GLSL intrinsic.
Change-Id: I7e78c99dadfcbb637ae55a2503acfb7e591c932e
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413440
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Convert existing RuntimeShaderActivity to use RuntimeSample, and add
a couple to the cube demo.
Change-Id: Ibc6056cd6c7939c13bd902ce848c49a211b9b334
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413737
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
The fuzzer found that it could overflow an int via a properly-crafted
constant-fold expression, leading to a UBSAN error. Constant-fold
expressions now guard against overflow (http://review.skia.org/413138)
and UBSAN is no longer triggered.
Change-Id: I07dba41e87bb9ceed37b84ec6b8922defbdc6550
Bug: oss-fuzz:32156, skia:12050
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413836
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This is one of the few compile-time constant functions with a variable
number of arguments, but it's otherwise pretty normal as intrinsics go.
$genType atan($genType y, $genType x);
$genHType atan($genHType y, $genHType x);
$genType atan($genType y_over_x);
$genHType atan($genHType y_over_x);
Change-Id: Ie852e10f37d73d53f69e806550872bc015f802d6
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413439
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Convert existing SkottieActivity to use a Skottie Sample, and also add
one to the cube demo.
Change-Id: I86193889d293ddd653b0cac7200e830fa873ea69
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413736
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
Introduce a Sample interface for abstracting out various demos/samples.
Implement a simple image shader sample for starters.
Update the cube demo to map samples to sides.
Change-Id: I9c9c70fa05634404ced7bd30739f6e884546b91d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413441
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
Update the cube sample to be centered and sized relative to the target
surface.
Also simplify projection handling:
- pre-compute a full view matrix in onSurfaceInitialized()
- set the origin to the surface center
- compute perspective and camera transforms in local coordinates
(instead of unit view cube)
Also fix (invert) fling Y direction.
Change-Id: I48a3d0b4547812fb3c9b49a9842fb18c0ed0d863
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413436
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
lua support was ripped out last September, this is unused
Change-Id: Icaddd042ceedd9261fe2f03ab581bb760b1b8fd9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412959
Commit-Queue: Eric Boren <borenet@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Change-Id: I2378ba6dbce1cf2371eec2dfcf73c3b9378ab832
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413456
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
163f6ac055..ce7d80bd43
2021-05-27 ynovikov@chromium.org Gold Tests: Fix batch uploading
2021-05-27 cclao@google.com Vulkan: Fine-grained depth stencil layout transition barrier
2021-05-27 cclao@google.com Vulkan: Disable shadowBuffers feature
2021-05-27 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from b6af002ef64a to 9e607ee51d46 (637 revisions)
2021-05-27 sugoi@google.com Mute MSAN false positive
2021-05-27 ynovikov@chromium.org Suppress new KHR-GLES32 test on Pixel 2
2021-05-27 cclao@google.com Vulkan: Improve generateMipmapsWithBlit barrier usage
2021-05-27 jmadill@chromium.org Roll VK-GL-CTS from 8010f59c7034 to ea6189a7a67e (4 revisions)
2021-05-27 cnorthrop@google.com Capture/Replay: Skip GLGetActiveUniformsiv
2021-05-27 cnorthrop@google.com Capture/Replay: Support GetUniformIndices
2021-05-27 cnorthrop@google.com Tests: Update capture_replay_test expectations
2021-05-27 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 89ab6280369d to 012f2ef00731 (4 revisions)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC jlavrova@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: jlavrova@google.com
Test: Test: Genshin Impact MEC
Change-Id: Ie42f72c159c461a6df59433a6813ce0e137ead7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413616
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bug: skia:12047
Change-Id: Id8c76bf33bcb5a0c3b6b09828d159db852379d2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413357
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Replaces this call with a usesMSAA() method that gets called before
finalize(), and usesStencil() which gets called after.
Bug: skia:12047
Change-Id: I860dc39e9af23a77f6ee1420d6bc648ab747b504
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413356
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Change-Id: Ia18badfdd174015b67ce09ae3ec3180df0481710
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413378
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This test confirms that our logic to derive the min and max value of a
given integer type actually matches reality.
Change-Id: I1cb5fba6bfb9ffdcf4972d8feed79cf71e11d0ca
Bug: skia:10932
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413376
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Expressions which would overflow/wrap the result type are now left
as-is.
Change-Id: I6a942f337e6e5761823f5c9dcd214fa58227a626
Bug: skia:10932, skia:12050
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413138
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I4e00edd2d1572c3e2c1fcb56824239c166253cbc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412958
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Setting the max tessellation segments to 5 for GpuTess caused some of
these backgrounds to incorrectly show up as red.
Change-Id: Ie6b7b44e5500e1dd23df2e7f6b3783bcabcc614d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412556
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Knowing the bit-width of a type is the first step towards knowing
whether a value can fit into a type.
In practice this data didn't take any extra space, as I was able to
replace the existing `fHighPrecision` field. The `highPrecision()` call
still exists, and just checks for bit widths of at least 32. All the
same, I spent a bit of time reorganizing and minimizing the Type fields
to save a bit of space. Values like `fRows` and `fPriority` which will
always be small now use int8_t, and the bools are packed into a byte.
Change-Id: Id13b577abd453299fc9998ee92a7271629274351
Bug: skia:10932, skia:12050
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413078
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This doesn't seem necessary. Its only purpose was to disable analytic
clips when there were user stencil settings, which seems like a
de-optimization. The ops that use stencil all seem to properly handle
clip processors in their color pass, so it should be fine to remove
this.
Bug: skia:12047
Change-Id: Ide0ae1004548d62b2feb73c6950bcbcaf6716cfd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413099
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Bug: skia:7722
Change-Id: I9e2a70ac67947900897f6bb9237d6c3af1d03b7c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413136
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
The fixed count stroke shader was executing a sort loop long enough to
handle 1024 parametric segments, when in reality it will never see
more than 48. This CL cuts the per-vertex sorting work nearly in half
by reducing the number of iterations from 10 to 6. (The indirect
tessellator continues to use 10 iterations.)
Bug: skia:10496
Change-Id: Idc21d6015d449f63915780972a8d487c9c6de6fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412496
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This minimal config was created by hand attmpting to set things the same
way they had been before expat_config.h was required.
Bug: skia:12052
Change-Id: I29f90851312a1a6f8866f8ea30e21c246b340276
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413077
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
These have been replaced by `sk try` and `sk release-branch`,
respectively.
Change-Id: Idc297dd7c84a87a09f69f310de495f91fcce36b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/409898
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
$squareMat inverse($squareMat m);
$squareHMat inverse($squareHMat m);
Change-Id: I1a2b067dd276bb999107712c38d0124811b95e39
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412937
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Expressions which would optimize to a non-finite value are now left
as-is.
Integer math still has problems with overflow, but that can be addressed
separately.
Change-Id: I363a2c42684989062f606186f48246b7ac5b585c
Bug: skia:12050
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412956
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
The primary color is always named sk_FragColor; both sides of the
ternary would return the same string.
Change-Id: I18b19a12e7568cdf7c5cbf5d8c488bbdff5b7a4d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412936
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>