Commit Graph

24993 Commits

Author SHA1 Message Date
Mike Klein
4f275cfe0e pass more information to shaders
If we're going to write an image shader, we're going to need to know the
matrix and some bits of the paint.

Instead of all possible information, I decided to pass just what the
image shader needs for now, and will pass along more as I go.

I've added a stub implementation of SkImageFilter as a way to make sure
I'm threading everything it'll need through.

Change-Id: I98de1724056dbc0902a34fc31da8ec6bdf38dc34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261801
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-12-31 00:00:57 +00:00
Brian Osman
107c66669d Make it safe to include SkRuntimeEffect.h from client code
Bundling the pipeline stage arguments also simplifies the code in
several spots.

Change-Id: I85e81b436a39378f753cc9404b6eeb27fe055525
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261778
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-12-30 21:06:56 +00:00
Mike Klein
60b69ecc8d clarify that there's no kMedium here
Reword to make it clearer we're only handling kNone, kLow, and kHigh;
kMedium has been transformed into kLow or kHigh already at this point.

I think it's particularly easy to be confused by the line

    if (quality > kLow_SkFilterQuality) { ... }

Change-Id: If78cb6e946e26d08f5acd807d32e0446c69061b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261765
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-12-30 21:04:46 +00:00
Mike Klein
4311f19158 refresh image shader cs/at logic
Was working on SkVM versions of these when I noticed the existing
SkRasterPipeline code wasn't terribly tidy.  The main gist here is that
we can let SkColorSpaceXformSteps::apply() handle almost all the
final transformation on the way out of the shader.

I remain a little puzzled why I got a few significant diffs when I tried
leaving the A8 color unpremul, letting the steps handle matching the
alpha types instead of me manually with SkRasterPipeline::premul.  For
now I've left that as-is.

Similarly I think we could transform that A8 color ahead of time rather
than doing that over and over at runtime.  This is something I've left
as a TODO, largely because I don't care enough about coloring A8 to
investigate right now.

I've inlined all the logic of explaining src-is-normalized into this
shader (which is its only user).  That makes it clearer that we can
always set that bit when bicubic sampling, since we're clamping anyway.
This causes some invisible diffs when switching to the optimized sRGB
transfer function stages, which we may or may not be able to get away
with without guarding...

Change-Id: Ie6670c6ca5c69958f41aac88324341a10eb3bee1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261763
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-12-30 20:58:16 +00:00
Brian Osman
82d49704ce More SkRuntimeEffect tests
- 'in' variables can't be arrays (applies to all SkSL)
- 'in' and 'uniform' variables are restricted to a fixed
  list of types.

Change-Id: I957ce1ad33aaf6b5970ca7204c568bb533bc86d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261436
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-12-30 19:26:06 +00:00
Mike Klein
c65d0069ec streamline ReadOpAndSize()
Inlining SkPicturePlayback::ReadOpAndSize() simplifies it, as does
removing support for the old op encoding, which was the "old format"
even back in 2014.

Change-Id: I304a777618403667b7b6c11110e3a781a5a29df3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261594
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-12-30 17:31:46 +00:00
Mike Klein
ad28486cef range check before casting to DrawType
Bug: oss-fuzz:19583
Change-Id: I656e8ddd5699cfc4998f3f424a1a46380f310c63
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261591
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-12-30 17:21:16 +00:00
Mike Reed
1fb6aed9ba simplify normalizePerspective -- don't compute type, precheck corner value
Before
min	median	mean	max	bench
163µs	167µs	169µs	183µs	canvas_matrix_3x3
250µs	265µs	261µs	280µs	canvas_matrix_2x3
227µs	264µs	250µs	269µs	canvas_matrix_scale
187µs	190µs	190µs	194µs	canvas_matrix_trans

After
min	median	mean	max	bench
168µs	177µs	180µs	207µs	canvas_matrix_3x3
200µs	220µs	222µs	245µs	canvas_matrix_2x3
173µs	182µs	179µs	186µs	canvas_matrix_scale
138µs	148µs	147µs	166µs	canvas_matrix_trans

Change-Id: Iba884c64a53c4c6d4a53a72fe9de783ebef21bf4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261741
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-30 16:49:56 +00:00
Brian Salomon
115ca68b6b Remove TecnoSpark adv. blend workaround.
This workaround has not stopped long shaders from randomly failing
to compile on TecnoSpark Pro 3. It just stops us from generating some
shaders that fail to compile in unit tests.

Also, it reveals rendering issue when framebuffer fetch is used with
MSAA on this device (instead of adv. blending).

Change-Id: I8026ded6d0d75743dc2c508df5c4ffc207d8b5a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261736
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-12-30 16:18:36 +00:00
Mike Reed
fe2d3c7334 SkBlurMaskFilter.h is only needed for (deprecated) emboss
Change-Id: I1308d29470e8127e65a9f2c33ca68a613e077a6e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261737
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-30 15:40:46 +00:00
Florin Malita
460b6c1dd8 Revert "Clean up GrSimpleTextureEffect."
This reverts commit 4d745d62e3.

Reason for revert: broke Chromium tests

Original change's description:
> Clean up GrSimpleTextureEffect.
> 
> Make it look human written instead of machine generated.
> 
> Use perspective texturing builtin sample() when coords are three component
> rather than dividing to make them 2d.
> 
> Change-Id: I9694857beaf35733077d0472d1eae43b5da933d0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261677
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

TBR=bsalomon@google.com,brianosman@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I8d7a5c5553434528785aa3dd2e5538f893c1cc40
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261679
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2019-12-29 19:32:15 +00:00
Chris Dalton
460ce96dca Stir the random number pot so TecnoSpark quits crashing on GLPrograms
TBR=bsalomon@google.com

Change-Id: I5583dee8fee95a3273732909739e5deb560087f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261699
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-12-28 06:18:23 +00:00
Chris Dalton
8dae7eb2cf Disable tessellation on Qualcomm
TBR=bsalomon@google.com

Bug: skia:9740
Change-Id: Ia6b701d83e1ca20697f45e32b013ae95a5897ac3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261698
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-12-28 06:12:53 +00:00
Chris Dalton
5a2f962313 Add back door support for GLSL tessellation shaders
Implements tessellation support at the Ganesh level, and adds back
door methods for supplying raw GLSL strings directly to the OpenGL
driver. Adds a new gm to verify tessellation is works in GL.

Change-Id: Idfc285b955cbe5e8e6bf0475be8b518b0cc6ed2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261196
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-12-27 22:34:10 +00:00
Brian Osman
93de162dc2 Add SkRuntimeEffect::makeShader
This makes the effect *be* the factory, so we can get rid of
SkRuntimeShaderFactory (and later, SkColorFilterFactory).

Change-Id: I2cd95f1380a0ec1e65fe5a18b1226c042598a8bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261439
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-12-27 21:50:20 +00:00
Brian Salomon
4d745d62e3 Clean up GrSimpleTextureEffect.
Make it look human written instead of machine generated.

Use perspective texturing builtin sample() when coords are three component
rather than dividing to make them 2d.

Change-Id: I9694857beaf35733077d0472d1eae43b5da933d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261677
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-12-27 21:37:20 +00:00
Brian Osman
5e976be7f0 Workaround MSVC 2019 code-gen bug in lighting image filter
Change-Id: Ia189fa2bec80093ddd6e2db35054db31c56106d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261676
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-12-27 19:40:19 +00:00
Herb Derby
a56a1d7c69 Move updating a single texture coordinate to SubRun
Change-Id: I116c14f69066b20eab145e3210af65ea446cfc25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261551
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-12-27 17:59:14 +00:00
Florin Malita
565fb9d1a6 Revert "GrGLMakeNativeInterface_{iOS,mac,win}: clean up"
This reverts commit a423802d40.

Reason for revert: Mac test/perf failures

Original change's description:
> GrGLMakeNativeInterface_{iOS,mac,win}: clean up
> 
> Change-Id: Ie4aad36164352dcb4ae364b3cfbabfc5f1493447
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261538
> Commit-Queue: Brian Osman <brianosman@google.com>
> Auto-Submit: Hal Canary <halcanary@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=halcanary@google.com,brianosman@google.com

Change-Id: I129c9861ee0d0d196ad9545c7edc71a0f0824ad5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261553
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2019-12-27 17:38:53 +00:00
Herb Derby
df2c1ee4f2 Simplify color and translate updates
Close over all the fields for updating the color and translation. Remove unneeded
accessors. Simplify the calculation of the translation.

Change-Id: I144b61af446b48a32786da8618aea4714e4dd62a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261545
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-12-27 16:49:24 +00:00
Hal Canary
a423802d40 GrGLMakeNativeInterface_{iOS,mac,win}: clean up
Change-Id: Ie4aad36164352dcb4ae364b3cfbabfc5f1493447
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261538
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-27 16:47:24 +00:00
Herb Derby
6ca4f31896 Do vertex color adjustment before atlas calculations
The atlas calculations and the color adjustment are do not interact, and
this has to happen no matter how many times the atlas is adjusted.

Change-Id: I571ca4bf18b133bea390787e5f58aef6334bdedb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261543
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-26 21:40:12 +00:00
Herb Derby
91fd46a0f9 Move vertex translation into SubRun
In addition, hoist the calculation to run once at the very beginning because
this translation is always done to each vertex regardless of the atlas changes.

Change-Id: I8001d02140c05fd8b2cd530f75ee2f58073374e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261539
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-12-26 21:20:42 +00:00
Herb Derby
05eb83be17 Remove hasW() from SubRun API
Change-Id: If0c11ea94f6035442a6f4fcbc3a9bd16ab1e2e70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261443
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-24 13:51:34 +00:00
Herb Derby
3d3150c89c Internalize color offset calculation to SubRun
Change-Id: I76f57a11c66c708462e4c91cc5cf8967d60b78c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261442
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-24 00:55:53 +00:00
Herb Derby
a2d7225c0f Internalize vertexStride calculation to SubRun
Change-Id: I58e5c192ae81b4464b74e02655a43008da9e36f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261441
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-23 21:08:16 +00:00
Herb Derby
7cf4a2e19a Remove unneeded refStrike() from SubRun
Change-Id: Idcd4f2f45791cdfef81d2894f68fe4119fd42296
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261440
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-23 20:20:25 +00:00
Mike Reed
6ec826085b Reland "make clipIsWideOpen virtual, so device's don't have to rely on regions"
This reverts commit ebf5fd11de.

Reason for revert: didn't help flutter roll -- relanding

Original change's description:
> Revert "make clipIsWideOpen virtual, so device's don't have to rely on regions"
> 
> This reverts commit af203a677a.
> 
> Reason for revert: breaking the flutter roll?
> 
> Original change's description:
> > make clipIsWideOpen virtual, so device's don't have to rely on regions
> > 
> > Change-Id: I362e641f3cf6ae31fac8ffc5980148f43874f6dd
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261285
> > Reviewed-by: Florin Malita <fmalita@chromium.org>
> > Commit-Queue: Mike Reed <reed@google.com>
> 
> TBR=bsalomon@google.com,fmalita@chromium.org,reed@google.com,michaelludwig@google.com
> 
> Change-Id: I13f4dd4419a3b30961c61834faf6198ff7dc3619
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261378
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=bsalomon@google.com,fmalita@chromium.org,reed@google.com,michaelludwig@google.com

Change-Id: I5dd4c079fa131c58f565246c66b0edfbb7f6316a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261379
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-21 13:43:20 +00:00
Mike Reed
ebf5fd11de Revert "make clipIsWideOpen virtual, so device's don't have to rely on regions"
This reverts commit af203a677a.

Reason for revert: breaking the flutter roll?

Original change's description:
> make clipIsWideOpen virtual, so device's don't have to rely on regions
> 
> Change-Id: I362e641f3cf6ae31fac8ffc5980148f43874f6dd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261285
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=bsalomon@google.com,fmalita@chromium.org,reed@google.com,michaelludwig@google.com

Change-Id: I13f4dd4419a3b30961c61834faf6198ff7dc3619
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261378
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-21 11:34:00 +00:00
Mike Reed
af203a677a make clipIsWideOpen virtual, so device's don't have to rely on regions
Change-Id: I362e641f3cf6ae31fac8ffc5980148f43874f6dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261285
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-21 02:16:09 +00:00
Khushal Sagar
988db63351 gpu: Disable dual source blending support on buggy driver versions.
R=bsalomon@google.com

Bug:1027981
Change-Id: I1f0704451fadcd845a0f8845d728f4b8986d88ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261211
Auto-Submit: Khushal Sagar <khushalsagar@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Khushal Sagar <khushalsagar@chromium.org>
2019-12-20 22:56:19 +00:00
Brian Salomon
9c4ee9c79a Disable advanced blend equations on Imagination driver 1.10 and earlier
Causes shader compilation to fail in Programs test on Tecno Spark 3 Pro.

Hopefully this doesn't affect performance as this GPU has framebuffer
fetch support.

Also reduce the effect depth limit in ProgramsTest.

Change-Id: I1fa5b8a670b3a074808cdba09c2ac97492067d33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261192
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-12-20 22:17:09 +00:00
Robert Phillips
8f259a0329 Add BC1_RGB8_UNORM support
This is working in the GL and Vulkan back ends. MacOS only supports the RGBA8 variants.
For mobile devices, probably only nVidia GPUs will support this.

Bug: skia:9680
Change-Id: I9d886b72232a031603e93e46059a97a8aa288b3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261093
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-12-20 21:41:09 +00:00
Michael Ludwig
28b0c5d4b3 Pass Arenas* to GrOpsTask and GrOps instead of multiple pointers to each pool type
Change-Id: I47ac0b069334cb9702473b1bb923f585712f38ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261087
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-12-20 21:02:49 +00:00
Chris Dalton
34280e29cf Shorten argument lists in GrMesh::SendToGpuImpl
Replaces several of the arguments with a single GrMesh object. The
call signatures were a bit unruly, and would have become more so with
extra required arguments for tessellation.

Change-Id: I4834b03d9c107dd233a91019c0a3189030e52bef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260977
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-12-20 21:01:39 +00:00
Mike Reed
aebe4390af move clip-stencil function into GpuDevice
Will follow-up with a change that doesn't use SkRegions!

Note:

The previous code flow gathered a region for all devices (in the canvas method).
However, it only tried to draw into the top device. The new code just focuses on
the top device, which ought to give the same results.

Change-Id: Ic5ed47e7908d646700c09b10faa538415522c645
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261283
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-12-20 20:31:08 +00:00
Mike Reed
c15afe488b move SkClipStack::asPath into PDFUtils
bug: skia:9734
Change-Id: I115c990c1532ab6852fe23956591878a04b3edc6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261282
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-12-20 19:27:26 +00:00
Michael Ludwig
2c316bdbfe Arenas struct for GrRecordingContext
Change-Id: If05370b0970af5daf976d60e1fc97f2fab3c213e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261082
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-12-20 19:26:36 +00:00
Mike Reed
2fad846c0b simplify asClipRgn to not rely on pathops
bug: skia:9734
Change-Id: I7beb45ac26192f0fbc4643e64309536673ae0630
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261281
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-12-20 18:17:16 +00:00
Ethan Nicholas
b47eb188cc No longer using default Globals constructor in Metal shader code
Bug: skia:9736
Change-Id: If572ddae3c6aa42faa498b2fe3bf2fa25fd00bf1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261276
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-12-20 16:34:46 +00:00
Robert Phillips
9f744f7ece Change GrGpu::onCreateCompressedTexture signature
In the previous form there was some duplication between the backend format and the SkImage::CompressionType being passed around.

Bug: skia:9680
Change-Id: I04455b7a4289bec83d87be17b75b4e9d4d6ef2e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261184
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-12-20 15:37:26 +00:00
Jim Van Verth
52b6de6678 Reland "Generate small path SDFs directly from path."
This is a reland of 4407acb144

Original change's description:
> Generate small path SDFs directly from path.
> 
> Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

Change-Id: I03017386edde55501c76a383e2f0cedfe6dcb199
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261193
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-12-20 15:06:21 +00:00
Greg Daniel
bfa19c4e76 Add factories to GrSurfaceContext and clean up creation flow.
This CL updates all callers that ending up in GrDrawingManager::makeSurfaceContext
to use the new factory or directly call ctors.

A follow on change will get the rest of the calls which go to
GrDrawingManager::makeRenderTargetContext

Change-Id: I662da654a1ec8b8972c50fe9ce45a9185d4c3dc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260901
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-12-20 15:05:56 +00:00
Noah Lavine
334d0ba9d7 Optimize SkSL xor where one argument is constant
Change-Id: I9ea41625fd80433f7f6480fe539321d8df7b7930
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/258877
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-12-20 14:50:46 +00:00
Brian Salomon
3a09a3770b Ungenerate GrSimpleTextureEffect
There is no change to the code (yet).

Change-Id: I1997d7ac070691a3384441028503f6dc8565bbf8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261182
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-20 14:18:56 +00:00
Brian Osman
088913a63b Start adding unit tests of SkRuntimeEffect
- Change SkRuntimeEffect::Make so *it* can fail, and returns
  [Effect, ErrorText].
- Initial tests just test for expected failure conditions.
  Next steps are to add tests for effects that should work,
  and to validate results on CPU and GPU.

Change-Id: Ibac8c3046104577434034263e9e4a4b177e89129
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261095
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-12-20 14:15:06 +00:00
Mike Klein
7e2dea5682 SkColorFilter::onProgram()
Before we write too many of these, let's get a program() / onProgram()
wrapper in place for SkColorFilter.  When a filter claims it doesn't
change alpha, we can skip any work it might do to "calculate" that
unchanged alpha (e.g. 0*r + 0*g + 0*b + 1*a + 0) and instead just
save and restore the orignal alpha.

SkShader already has this same program() / onProgram() setup, and uses
it similarly to force any shader that claims to be opaque to be opaque,
replacing any math (or sometimes even memory loads) that shader may have
done to produce alpha with a simple splat(1.0f).

Change-Id: Ica916926506df3a48b4d718545ea64dd95b457af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261134
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-12-19 22:09:48 +00:00
Brian Salomon
87e9ddb675 GrGLSLShaderBuilder::appendTextureLookupAndBlend
Change-Id: Ifbc80e31a7a56cd40734cb174b77a5860a94a323
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254682
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-12-19 22:04:18 +00:00
Jim Van Verth
9ff61ab33c Revert "Generate small path SDFs directly from path."
This reverts commit 4407acb144.

Reason for revert: Causing issues with colorcomposefilter_wacky

Original change's description:
> Generate small path SDFs directly from path.
> 
> Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

TBR=jvanverth@google.com,bsalomon@google.com

Change-Id: I331e855c3198febcd8ca9ef0c5e6fe1ddc5ad8cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261177
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-12-19 21:13:11 +00:00
Jim Van Verth
4407acb144 Generate small path SDFs directly from path.
Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-12-19 20:29:45 +00:00