This was just acting like a pair of SkPaint, GrColor. But,
had an additional pointer to a color space. I changed
everything to just pass the pair around.
BUG=chromium:864564
Change-Id: I9858556b8bca0d5359d4d6e9784d63ff8c4f467b
Reviewed-on: https://skia-review.googlesource.com/146381
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Change-Id: I3742cbf3b636f10bb2006e0c86390661deb9f9b8
Reviewed-on: https://skia-review.googlesource.com/146164
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Bug: skia:
Change-Id: Ie88c16ddb2b072d8bdd7efc3acabc1d9ad89012f
Reviewed-on: https://skia-review.googlesource.com/146526
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change uses of RunPaint and Paint to uses of SkPaint and a GrColor.
Change-Id: I44d4c41a53e570f316e10dee26754c21d9593de0
Reviewed-on: https://skia-review.googlesource.com/145962
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Portions of this API will be updated again to support decode-to-dst, but
I want to clean up the old API first. I left a bunch of TODO breadcrumbs
for that work.
Change-Id: I25a29ccc14aa568e5ea84747d74244874afab9d9
Reviewed-on: https://skia-review.googlesource.com/146380
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Move the GPU glyph drawing code into the glyph run drawing translation
unit. Inline the per glyph/path functions. This results in about 15%
speedup.
There was a compile error where a static function was used
in a template. This caused some compilers to freak.
Change-Id: I9619e538875edd989f129450dc9fc12ba7be9560
Reviewed-on: https://skia-review.googlesource.com/146340
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
also fixed the fact that we were actually creating managed buffers at times.
Bug: skia:
Change-Id: I7ffe12b5decc8bceee30d671e1ab3cc30f7fad99
Reviewed-on: https://skia-review.googlesource.com/146170
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This reverts commit c7ef517875.
Reason for revert: GCC clang differences
Original change's description:
> Performance: Move GPU code to GlyphRun and inline - v2
>
> Move the GPU glyph drawing code into the glyph run drawing translation
> unit. Inline the per glyph/path functions. This results in about 15%
> speedup.i
>
> There was a compile error where a static function was used
> in a template. This caused some compilers to freak.
>
> Change-Id: I4dbcea5d4a7ef97f38c95772076736d6ec92c535
> Reviewed-on: https://skia-review.googlesource.com/146169
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I785759e86ffaad76937c9aaa60b19abbbce226c2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/146241
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Uses GrPipeline::DynamicStateArrays to allow per-mesh GP textures when
drawing an array of GrMeshes.
Uses this along with op-chaining to make drawing multiple TextureOps
with different textures faster.
Change-Id: Iec4da1b72a13d0e0c94c8a8568fe4221c539dfcf
Reviewed-on: https://skia-review.googlesource.com/145960
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Move the GPU glyph drawing code into the glyph run drawing translation
unit. Inline the per glyph/path functions. This results in about 15%
speedup.i
There was a compile error where a static function was used
in a template. This caused some compilers to freak.
Change-Id: I4dbcea5d4a7ef97f38c95772076736d6ec92c535
Reviewed-on: https://skia-review.googlesource.com/146169
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I8953036d61b4ea4989c8722f536db9cd520a1e24
Reviewed-on: https://skia-review.googlesource.com/146167
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This allows GrOp subclasses to chain themselves together in linked
lists. The GrOp head instance is able to iterate over the ops in
the chain. The head op of the list draws the contents of all the
chained ops. GrRenderTargetOpList is updated to use this chaining
and to skip non-head ops when preparing/executing ops.
With this change no op uses the new chaining facility. That will come
in subsequent changes.
Change-Id: I7fe99252ad7e23a9ea80c9ed1fc4d060700da2e0
Reviewed-on: https://skia-review.googlesource.com/145899
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 0c5b0b1dd6.
Reason for revert: compilation woes
Original change's description:
> Performance: Move GPU code to GlyphRun and inline
>
> Move the GPU glyph drawing code into the glyph run drawing translation
> unit. Inline the per glyph/path functions. This results in about 15%
> speedup.
>
> Change-Id: Iee98140d668bb3cbcb77dd5a1fb2f83778f79d12
> Reviewed-on: https://skia-review.googlesource.com/145889
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I517a7ea4105e8cee0abfb2b1c1a53d630587859d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/146240
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Move the GPU glyph drawing code into the glyph run drawing translation
unit. Inline the per glyph/path functions. This results in about 15%
speedup.
Change-Id: Iee98140d668bb3cbcb77dd5a1fb2f83778f79d12
Reviewed-on: https://skia-review.googlesource.com/145889
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
push -> push_back
add some aliases to match std::vector: count, reserve, ...
Bug: skia:
Change-Id: I1921c31d0d6e5ed3d622a0def6054c697be2d02f
Reviewed-on: https://skia-review.googlesource.com/145884
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
Currently we only support coherent advanced blends
Bug: skia:
Change-Id: I3d0d7d19313dc55aed57c79585c0ee870f6981a7
Reviewed-on: https://skia-review.googlesource.com/145888
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
We need to handle all the possible ways a client is allowed to initialize
features on Vulkan.
Bug: skia:
Change-Id: I98b1dee2efa2c22c26ce093c590c7ccd0b626969
Reviewed-on: https://skia-review.googlesource.com/145530
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Change-Id: I6f5ff3d73ce68c351a019ca467b0eebc7054921c
Reviewed-on: https://skia-review.googlesource.com/145887
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: I62fcaef94570982d46e678b8e128b02e2514a96a
Reviewed-on: https://skia-review.googlesource.com/145528
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit fdf05f4ff4.
Reason for revert: Android fixed after removing multitexture support from TextureOp.
Original change's description:
> Revert "Move GrGeometryProcessor's textures out of classes and into"
>
> This reverts commit af87483873.
>
> Revert "GrGeometryProcessor derives from GrNonAtomicRef not GrProgramElement."
>
> This reverts commit 607be37e3d.
>
> Revert "Store GrMeshDrawOps' meshes in GrOpFlushState's arena."
>
> This reverts commit b948572c78.
>
> Revert "Remove multitexturing support from GrTextureOp."
>
> This reverts commit 986f64c601.
>
> Revert "Make result of GrOp::combineIfPossible be an enum."
>
> This reverts commit 641ac7daa8.
>
> Bug: b/112244393
> Change-Id: I579491a3f2f2f2093f1e2a6141fa1e4cc7b760a4
> Reviewed-on: https://skia-review.googlesource.com/145646
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com
Change-Id: I1d41c2ecf7862e31fb025a7a00bb07bae9d83a47
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/112244393
Reviewed-on: https://skia-review.googlesource.com/145780
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This is pulled out of: https://skia-review.googlesource.com/c/skia/+/143113 (Reduce arbitrary opList splitting when sorting (take 3)) and is necessary for incremental tological sorting of opLists.
Change-Id: I080cee2c54f5a61dceea67037242f6c6b3e01b8d
Reviewed-on: https://skia-review.googlesource.com/145641
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This reverts commit af87483873.
Revert "GrGeometryProcessor derives from GrNonAtomicRef not GrProgramElement."
This reverts commit 607be37e3d.
Revert "Store GrMeshDrawOps' meshes in GrOpFlushState's arena."
This reverts commit b948572c78.
Revert "Remove multitexturing support from GrTextureOp."
This reverts commit 986f64c601.
Revert "Make result of GrOp::combineIfPossible be an enum."
This reverts commit 641ac7daa8.
Bug: b/112244393
Change-Id: I579491a3f2f2f2093f1e2a6141fa1e4cc7b760a4
Reviewed-on: https://skia-review.googlesource.com/145646
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Remove the drawPosText code stack, and all supporting code.
Change-Id: Ie6ee64d012d390911faeb3c486d66cac40497744
Reviewed-on: https://skia-review.googlesource.com/145533
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This is to prepare for a third value that requests that ops be linked
together so that the first op may do the work for multiple linked ops
without actually merging the GrOp objects.
Change-Id: Ib6e012a89be5edd054aee69d8475bea612331852
Reviewed-on: https://skia-review.googlesource.com/145522
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
This turned out to be an optimization mostly for draws with small device
space areas. Moreover, to be an optimization rather than deoptimization
requires complicated per-GPU tuning where even different devices within
the same architecture require different tuning and tuning is different
between GL and VK.
We've decided to go another direction where we *don't* coalesce draws
but rather make it possible to switch textures quickly from within an
op. This should be a GPU-independent optimization that is also
independent of device space area covered.
Replaces the multitexturing benchmarks with a pair of benchmarks.
composting_images* simulates a layered tile-based compositor.
image_cycle draws tiny images N times each such that they can be
batched. This is to catch a particular possible regression in a
planned change to GrTextureOp where it will use "dynamic state" to
batch across textures. We want to catch a slowdown that might result
from putting draws that use the same texture into the same op but no
longer batching the actual GL level draws and instead using the dynamic
state to "switch" textures between draws.
Change-Id: Ib1cc437525b0b0d56969c30dcb66bb1effb42dc5
Reviewed-on: https://skia-review.googlesource.com/145423
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I0e6279d13850ade877a232644ecbc09c4d3e5462
Reviewed-on: https://skia-review.googlesource.com/145260
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Change-Id: I6960b775f92b1013e0a826ac6aa1f8464ebf99f8
Reviewed-on: https://skia-review.googlesource.com/145000
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Remove late draw consolidation in GrOpFlushState. Rarely did anything
and doesn't work with new allocation strategy. Ops can use GrMesh arrays
to acheive the same thing. (Each Op that cared to would have to implement
but it isn't applicable to most Ops).
Modify GrMeshDrawOp::Target::draw() to take array of meshes, with single
mesh as a special case.
Change-Id: I552677de47b9ffd2fcaf55af85f70f290e5aa9c7
Reviewed-on: https://skia-review.googlesource.com/145426
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Many of the other extensions in Vulkan rely on these some just want to
get these landed so we can start building on top of them.
Bug: skia:
Change-Id: Icef82c169cd50ff51b97fe065923531ef2940319
Reviewed-on: https://skia-review.googlesource.com/145362
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Now, regenerateGlyphRunList is making all the rendering
position, and cache choice decisions. Mostly.
Change-Id: Ib946e2ef2f422c915b324ac93459c65bf559f608
Reviewed-on: https://skia-review.googlesource.com/144905
Auto-Submit: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
It probably doesn't need to be ref counted at all and should be stored
in GrOpFlushState's arena but that's a larger change for another day.
Change-Id: I5f593fb426b8e7794f2ca81194f5a8d9e0f0a072
Reviewed-on: https://skia-review.googlesource.com/145332
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
GrPipeline::FixedDynamicState.
This will allow specification of different textures for different
GrMeshes using GrPipeline::DynamicStateArrays in a future change.
Change-Id: I4a7897df33a84e4072151149e5d586dca074393f
Reviewed-on: https://skia-review.googlesource.com/145264
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Because we outset the planes by 1/2 pixel, the intersection of those
planes could extend well past the center of the circle. To fix this (and
cut down on fill-rate), do a geometric clip of the vertices against the
perpendicular diameter of the circle (while still leaving a half-pixel
for the coverage to fade out).
Bug: b/112018278
Change-Id: Icfb38ecfe57aad823c49fc4cadd0538a37dc1b7b
Reviewed-on: https://skia-review.googlesource.com/145326
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 6de0fca928.
Reason for revert: Busted some GMs, e.g., largeglyphblur and mixedtextblobs.
Original change's description:
> Hoist path check
>
> Hoist path check up one level in on the way to
> moving it to regenerateGlyphRunList.
>
> Change-Id: I77d24c1d80daf72ddd3e9f09dd264c1e9d504573
> Reviewed-on: https://skia-review.googlesource.com/144902
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Auto-Submit: Herb Derby <herb@google.com>
TBR=jvanverth@google.com,herb@google.com
Change-Id: Idf1ea5818f6a97989c520b93804627af385b5045
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/145327
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Hoist path check up one level in on the way to
moving it to regenerateGlyphRunList.
Change-Id: I77d24c1d80daf72ddd3e9f09dd264c1e9d504573
Reviewed-on: https://skia-review.googlesource.com/144902
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Herb Derby <herb@google.com>