I think this is good to go.
Originally I had been careful to treat nullptr dst as gamma=2, but then
seeing the GPU impl treating all colorspaces as gamma=2 made me realize
it's can't be that important to preserve pixel-exact results here. It's
not possible with a single codebase... in many situations the existing
CPU and GPU backends draw differently with identical settings.
Beyond that sort of obvious intentional difference, I've also tried to
port as few bugs forward from the old implementations as possible. The
one I notice most clearly is in the GPU code,
@if (invertBrightness) {
color = half4(1) - color;
}
which I think probably should be `color.rgb = 1 - color.rgb`, leaving
alpha alone.
Change-Id: I098cdced4772445c70ce4577bdd1c93c2e42824c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368276
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Uses the pipeline-stage callback mechanism. It mangles the type name
(with a test to verify that this works), and then calls defineStruct
with the entire SkSL struct definition string.
Bug: skia:10939
Change-Id: If14cf1b11faaa80ad8d4086cdacf68532bac43fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368809
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
This avoids creating a Setting object (only to then
replace it during optimization). More importantly,
it makes it possible to disable optimization without
leaving un-resolved settings in the IR.
Settings in the pre-load modules are still loaded
as Setting objects, and those are resolved during
the one-time optimization pass of those modules,
whether or not per-program optimization is run.
Change-Id: Idf560a49f936edc683463dc8a60771d0624b45d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369325
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This will make it easier to add "dynamic" attribs like stroke width or
color.
Bug: chromium:1172543
Bug: skia:10419
Change-Id: Ia8326c80fb2fe3ab630b03e9bfdc6368385176b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368956
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Also deletes the old header under the deprecated name.
Bug: skia:11230
Change-Id: Iac42d2b980d3306a544077719ca62903a673210a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368242
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This also adds the relevant Start() / End() calls so that the DSL
is put into the correct state.
Change-Id: I844b0ab5dff06e3f7b0a69458bf4442a5da0f33e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/364857
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
https://docs.google.com/document/d/1z9ZODlZX4XXbfOjh2t1-1Z7FJcCCcOfbrEjiFzPE4vg/edit?usp=sharing&resourcekey=0-Io-07D1zm1yKMQN2UAiYBw
This approach lets us write color filters that want to work in
particular color spaces and alpha formats and adapt them to our normal
pipeline. It should work with pre-canned and runtime effects, and we
can do the same sort of thing for shaders too.
Some features are designed for using this with the high-contrast filter:
- ability to change working tf and gamut separately: as written the
HC effect only wants to work in linear space without changing
gamut, which is I bet will be a common desired mode. But other
effects may want to fully change the working color space, e.g. to
sRGB or XYZ.
- adapting the alpha type to unpremul is mostly a flourish: you could
do it yourself in sksl, but we might as well do it if doing other
transforms anyway (it's cheaper this way than doing it yourself),
and this may make it easier to adapt non-runtime effects.
(I bet most color filters actually want to be unpremul.)
I briefly also included a knob to control how this effect treats a
nullptr dst color space, but I've come back around to that not being a
parameter. I think this is a situation where we know best.
New GM to demo.
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I420e3a2aa648f314c019a98bfdcd44e810a3dac6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368336
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Stores it on the ResolveLevelCounter instead. This will allow
different paths to have different stroke widths.
Bug: chromium:1172543
Bug: skia:10419
Change-Id: I0ff68b7287027a22d9374826b3c57290192489bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368937
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
On batch failure we're rerunning every source in the batch, while we
really only need to rerun sources that we don't know succeeded.
If for example we run sources "foo", "bar", and "baz", and foo produces
a known hash, then bar crashes, we only need to rerun bar and baz. The
batch run was enough to demonstrate foo's good.
Change-Id: I17634a6095906bcc2ad0bd33bb78eba000654b5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369456
Reviewed-by: Eric Boren <borenet@google.com>
The optimization which replaces unnecessarily nested constructors is
creating a new constructor from whole cloth, obliterating the original
constructor and its arguments. This can invalidate the definition map.
For now, this is fixed by forcing a rescan when this optimization is
applied.
Change-Id: I8a46bccf3b6422282eaf95409cd4fa50b8ad3187
Bug: oss-fuzz:29994
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369324
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Change-Id: I80652861841ec4f049336f1759c1c26a934c309a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369261
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Move definition of Work struct until just before it's used,
and show one of the sources as an example at kickoff-level step.
These are just cosmetic/refactors.
Change-Id: Ib23b9379683b9867e097c8d68ef8736013719cee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369356
Reviewed-by: Eric Boren <borenet@google.com>
60ba8fe9e7..54c5ad5c92
Includes changes required for COLR v1 support.
No changes to ftoption.h or ftmodule.h.
Change-Id: Id7fff0437144ad4e8318d8b462470bb0c4d6c02d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369336
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Previously we were ignoring the conic weight and using the regular
quadratic Wang's formula for conic segments. This CL uses the new
specialized formula for conics.
Bug: skia:10419
Change-Id: I2929135decc539b9ecf27516a0d9d231be3f7494
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/366405
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
Fixes some bugs in both classes as well.
Bug: skia:10585
Change-Id: I97c4cf0a7eeb9dff8262909a4c5ef25b1e3e0d4f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368817
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Bug: skia:11230
Change-Id: I966d9511d6124627308146f1b5f9e18f5d7fb4d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368241
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This was being set to zero instead of one by mistake. Interestingly,
this was undetected by the CPU backend, but appears to matter sometimes
on the GPU side.
Change-Id: If827863f69c140f933696c6ff55c8a7095620c29
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368858
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Skia linking fails in GOLD because of missing instanciation of kNoCropRect
in SkImageFilters::CropRect. This breaks compilation of skia_renderer
service. More details of this kind of issue in GOLD can be seen in
https://chromium-review.googlesource.com/c/chromium/src/+/2436824
To workaround this, we move the declaration from being a member of
a struct to a namespace constexpr.
bug: chromium:819294
Change-Id: I52e98be440d05236df886b6ff83b84f29cbe7edd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/335537
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
0f74ae58ed..cffe90b44a
2021-02-11 ianelliott@google.com Vulkan: Update documentation for enabling debug markers
2021-02-11 ianelliott@google.com Android: Create a new ANGLE APK package name for AGI
2021-02-11 syoussefi@chromium.org Vulkan: Use a dirty bit to start the render pass
2021-02-11 timvp@google.com Vulkan: Clear mCurrentGraphicsPipeline after createPipelineLayout()
2021-02-10 geofflang@google.com EGL: Trim requested config parameters to EGL.
2021-02-10 jmadill@chromium.org infra: Add trace tests to CQ conditionally.
2021-02-10 penghuang@chromium.org Fix crash in gl::Context::unMakeCurrent()
2021-02-10 jmadill@chromium.org Move Frame Capture to capture/ folder.
2021-02-10 jmadill@chromium.org infra: Fixes to main.star.
2021-02-10 jonahr@google.com GL: Cache the results of glGetString
2021-02-10 jmadill@chromium.org Vulkan: Support y-flip with no driver support.
2021-02-10 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 9d35d544ce96 to 673a7fe5c3ff (10 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 borenet@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: borenet@google.com
Change-Id: If5cb80252bddc01edd3ad49bb01c55b5444da5b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369259
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This is just like mul(F32,F32) but optimizes 0*x == 0.
Use it in SkSLVMGenerator; sksl already applies this optimization.
PS2 has a sneaky version using % as a fast_mul() operator, and
PS3 has a sneakier version using ** instead.
We could of course write this all out using fast_mul() the long way,
but I found that quickly became difficult to read.
Change-Id: Iae35ce54411abc00e7729e178eb6a10f151a5304
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368838
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Leave the code to support it in place until we know if this causes
a regression.
Change-Id: Ic9f6a42cb83cc82a33a534d3f98cb9aaf11f813f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356998
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
These renames need to be staged so we can update chrome which has their
own implementation of GrVkMemoryAllocator.
Bug: skia:11207
Change-Id: Ic68927217fe0314cdba1b1aa7ffd80261cb5e646
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368856
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Fixes another instance of anglebug.com/2098 with advanced blend
functions.
Change-Id: I91863723d8b4c33ab2f5a527fe0374e8947bba16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368813
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Plumb lighting props and implement a Phong lighting model.
This is ~40% slower with the SW backend - to mitigate, construct two
runtime effects and only apply fancy lighting when needed.
Change-Id: If6f71253e7adc148f6d5cf5fbde2c1dff977f669
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368246
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
For the specific fuzz in question the viewMatrix is:
0 0 0
0 0 0
0 0 1
Bug:1174637
Change-Id: Ia07fe7255de7aff3df0c8cc11da7e90434392f29
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368668
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Bug: skia:11102
Change-Id: I4ed9e44099cd780c5cdede3eb179c0e6a92d3ce5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/345219
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Chris Bracken <cbracken@google.com>
Disabled on Adreno 5xx/6xx as the tests do not pass on those GPUs:
http://screen/3Dkgs9syj37cjBV
Change-Id: Ib935d01e8f06dbfe7decd5cc4e52e0688b48be08
Bug: skia:11306, skia:11308
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368805
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
The fuzzer test case was:
-15,-11 ------> huge,-11
^ |
| v
-15,5000 <------ huge,5000
where the 'huge' x-value caused the accumulated perimeter to overflow.
Bug:1175370, skia:11307
Change-Id: Ic6760d38c29c440d2d4fcb225a5c556e56a992f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368317
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Change-Id: Iafa06188478991896269aa10f4a681a27e55d24e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368811
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
If this works out i.e. no regressions, we can cut down the
resource allocator API before rejiggering it for budget estimation
(dry run).
Bug: skia:10877
Change-Id: Ic6388cffc688789592ff3d6a946e5176dc4fd052
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368806
Auto-Submit: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
- is_float: Calling `type.columns()` on an arbitrary type isn't safe; it
will assert if the passed-in type is not a scalar/vector/matrix/array.
This was asserting when being passed an enum type. Additionally, this
code would have returned true for arrays of float but that does not
appear to be the intent.
- is_signed: This now returns true for enum types, as these boil down to
int for our purposes.
- is_unsigned/is_bool: Updated structurally to match is_float and
is_signed, but behaviorally unchanged.
- getActualType: now treats enum types as int. This prevents us from
declaring the "OpTypeInt, 32, 1" type twice, which triggers a validator
error: "Duplicate non-aggregate type declarations are not allowed."
These changes are necessary to properly compile Enum.sksl in SPIR-V with
optimizations disabled.
Change-Id: Ib7ae00239c9f87c1a9463e0c8745622743e62cf6
Bug: skia:11304
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368576
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>