aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
Commit message (Collapse)AuthorAge
* add device-clipping to gpudeviceGravatar Mike Reed2017-02-16
| | | | | | | | | BUG=skia: Change-Id: Id8c8994d4bddf591e1205ed9d591f4fce7d3af99 Reviewed-on: https://skia-review.googlesource.com/8531 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Mike Reed <reed@google.com>
* GrTessellator (AA): Performance tweaks and cleanup.Gravatar Stephen White2017-02-16
| | | | | | | | | | | | | | | | | | | The SkArenaAlloc destructor was showing up as hot in profiling, especially on Linux. The reason is that it was being used incorrectly: the size estimate was being used as the chunk size. It turns out that the best performance seems to be achieved with no initial allocations and a fixed chunk size of 16K, as the CPU path renderer does. Also, allocate the bisectors used for edge inversions on the stack, not the heap. And remove some unused code. BUG=skia: Change-Id: I754531c753c9e602713bf2c8bb5a0eaf174bb962 Reviewed-on: https://skia-review.googlesource.com/8560 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Stephen White <senorblanco@chromium.org>
* Fix DistanceFieldPathRenderer assert.Gravatar Jim Van Verth2017-02-16
| | | | | | | | | | | | If there's a reflection in the matrix, the scales could be negative. BUG=chromium:682918 Change-Id: Ifde42c3bc8b1f2938009b47d3a8380cf871448e9 Reviewed-on: https://skia-review.googlesource.com/8541 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Use SDF path miplevels based on the original path's sizeGravatar Jim Van Verth2017-02-16
| | | | | | | | | | | | | | Should produce sharper results than arbitrary fixed sizes. Adds a new test to pathfill GM. Was: https://skia-review.googlesource.com/c/8328/ BUG=chromium:682918, skia:6238 Change-Id: Ia62ea5ce6b4a5ac2b8b51d06d57dc951d6c340b8 Reviewed-on: https://skia-review.googlesource.com/8384 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Check that coverage FPs are compatible with alpha as coverageGravatar Brian Salomon2017-02-15
| | | | | | | Change-Id: Ic3b6a02248d571e82f6729827c199d358fb75114 Reviewed-on: https://skia-review.googlesource.com/8508 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Tighten up GrSurfaceProxy typingGravatar Robert Phillips2017-02-15
| | | | | | | | | This may reduce the number of "why not GrTextureProxy" issues Change-Id: I9e0e5042f5801ba9a933b697a380cb0cb54b4522 Reviewed-on: https://skia-review.googlesource.com/8510 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* Add GrMakeCachedBitmapProxyGravatar Robert Phillips2017-02-15
| | | | | | | | | This is split out of https://skia-review.googlesource.com/c/7889/ (Remove SkSpecialImage's GrTexture-based ctors) to allow focusing on the caching/subsetting changes. Change-Id: Ic2af7a0d03e88941ab5b6cdfcecbbdefe3578eda Reviewed-on: https://skia-review.googlesource.com/8456 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* GrTessellator (AA): null GrGeometryProcessor crash fix.Gravatar Stephen White2017-02-15
| | | | | | | | | | | | | | | Add a null-check on geometry processor creation. Add a test which exercises it: AA tessellator, with a non-invertible matrix and a fragment processor which needs local coords (e.g., linear gradient). BUG=691902 Change-Id: I005b893aed58d3ad2500c41501045ac94b0b4b95 Reviewed-on: https://skia-review.googlesource.com/8462 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Stephen White <senorblanco@chromium.org>
* Clarify when tweak alpha for coverage optimizaton can occur.Gravatar Brian Salomon2017-02-15
| | | | | | | | | Also refer to it directly rather than using the term "modulate" Change-Id: Ifa44a4d46e1be11b567943f58ead24e38f10d03b Reviewed-on: https://skia-review.googlesource.com/8488 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Remove GL asserts for geo shaders to not have uniformsGravatar csmartdalton2017-02-15
| | | | | | | | | | BUG=skia: Change-Id: I51468c808f8a2e6593c237b4c4368df2f6729dff Reviewed-on: https://skia-review.googlesource.com/8421 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Make GrPipelineInput::setToSolidCoverage set the opaque bit.Gravatar Brian Salomon2017-02-15
| | | | | | | Change-Id: I3580a9bf1b40c46ac642157f50e09b1fab40c3d3 Reviewed-on: https://skia-review.googlesource.com/8485 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Rename SkConfig8888/SkPixelInfo to SkConvertPixelsGravatar Matt Sarett2017-02-15
| | | | | | | | | BUG=skia: Change-Id: I4f3c6370b3ef4247aa446716c7c154899925d089 Reviewed-on: https://skia-review.googlesource.com/8442 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* GrContext option to prevent GPU based YUV -> RGBGravatar Brian Osman2017-02-14
| | | | | | | | | | | | | | | | | | | Rob and I spent a long time debugging why this wasn't working for Flutter - doing the more complex operations on the loading thread produces a blank texture when it's used later on the drawing thread. Limiting ourselves to just creating and uploading RGBA data fixes that. We need to debug what's going wrong, but in the meantime, this lets Flutter use Skia APIs to manage GPU uploading and lifetime of texture-backed images, while still doing those uploads on their IO thread. BUG=skia: Change-Id: Ibf5c37f2439814544beab8c93c2a646f7a9e779d Reviewed-on: https://skia-review.googlesource.com/8443 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Remove component flags from GrPipelineInput.Gravatar Brian Salomon2017-02-14
| | | | | | | | | We don't use these anywhere downstream except to check for opaqueness. Change-Id: I897137135d69004ed45c0f4c1e7297183f49fc6d Reviewed-on: https://skia-review.googlesource.com/8402 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Remove component flags from GrXPFactory output analysis.Gravatar Brian Salomon2017-02-14
| | | | | | | Change-Id: Ieb8dab564e6e593dca2e092d352756052dadfd90 Reviewed-on: https://skia-review.googlesource.com/8354 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* SkScalarMul is deprecatedGravatar Mike Reed2017-02-14
| | | | | | | | | BUG=skia: Change-Id: I88ecfe9d4c72506f6b1a0e0dfadd2a5c171a6cb6 Reviewed-on: https://skia-review.googlesource.com/8353 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
* Move the rt adjust uniform into GP EmitArgsGravatar csmartdalton2017-02-13
| | | | | | | | | | | | | The GP will likely require this value when dealing with a geometry shader. In the future we may wish to either switch to device-space geometry shaders, or else put this value in an "sk_" builtin. BUG=skia: Change-Id: I8dff88fc219feef84d39fb7bbd08f3b5686f53d2 Reviewed-on: https://skia-review.googlesource.com/8362 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* GrTessellator (AA): fix "Canvas Arcs" coverage artifact.Gravatar Stephen White2017-02-13
| | | | | | | | | | | | | | | | | When sanitizing contours, if the first and last vertices coincide, continue with the previous vertex, not the next vertex, since we may otherwise exit prematurely. Also, round the last vertex before entering the loop, just in case it coincides with the first. Add a test case to exercise the above, and another one which exercises the intruding-vertex workaround. BUG=691593 Change-Id: Ic28a9308a21164d185edef0ee6fbc29b40742149 Reviewed-on: https://skia-review.googlesource.com/8364 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Stephen White <senorblanco@chromium.org>
* Move GrTessellator from SkChunckAlloc to SkArenaAlloc.Gravatar Herb Derby2017-02-13
| | | | | | | | | TBR=ethannicholas@google.com Change-Id: I2efcbe540a2bdc42b8c2f0a675a42fe9e9ed717d Reviewed-on: https://skia-review.googlesource.com/8383 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Herb Derby <herb@google.com>
* Add preserves premul and modulate optimization to compose fragment processors.Gravatar Brian Salomon2017-02-13
| | | | | | | | | Fixes out of range colors produced by matrix convolution and dither effects. Adds modulate optimization to matrix convolution. Change-Id: I8424250a52e864f4b5feaf4474293695c26039d8 Reviewed-on: https://skia-review.googlesource.com/8351 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Remove GrFragmentProcessor::computeInvariantOutputGravatar Brian Salomon2017-02-13
| | | | | | | Change-Id: If475730103052c6097eb91be06808fb723b70bf8 Reviewed-on: https://skia-review.googlesource.com/8330 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Replaced all calls to fragmentPosition() with sk_FragCoordGravatar Ethan Nicholas2017-02-13
| | | | | | | Change-Id: I2ed4558aea74b3ae7ee11dfe4736cdbcb16ae49e Reviewed-on: https://skia-review.googlesource.com/8278 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
* Remove unused/barely-supported compressed GrPixelConfigsGravatar Robert Phillips2017-02-13
| | | | | | | Change-Id: Ie7b813c8b0523ae53cf9f2328645ddf4c5af49a8 Reviewed-on: https://skia-review.googlesource.com/8326 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Add GrGLSLShaderBuilder::declareGlobalGravatar csmartdalton2017-02-10
| | | | | | | | | BUG=skia: Change-Id: I75eeb7cbd1bf157c463e5e80b4560a953b7883e8 Reviewed-on: https://skia-review.googlesource.com/8245 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Re-enable ProcessorOptimizationValidationTest on iOS.Gravatar Brian Salomon2017-02-10
| | | | | | | Change-Id: I05aae2e86cd7a219ab98e882bb6041263b4aca71 Reviewed-on: https://skia-review.googlesource.com/8318 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Revert "Use SDF path miplevels based on the original path's size."Gravatar Jim Van Verth2017-02-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6e83b13c226246041a33dc7bf0e92626581b5e79. Reason for revert: Fractional path sizes are causing asserts on the bots. Original change's description: > Use SDF path miplevels based on the original path's size. > > Should produce sharper results than arbitrary fixed sizes. > Adds a new test to pathfill GM. > > BUG=chromium:682918 > > Change-Id: I5a394098665d01e995a244fde278236f1471e6c9 > Reviewed-on: https://skia-review.googlesource.com/8328 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Jim Van Verth <jvanverth@google.com> > TBR=jvanverth@google.com,bsalomon@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:682918 Change-Id: I4a52df808ef3f769d0e6f75785148d46936a6747 Reviewed-on: https://skia-review.googlesource.com/8342 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com>
* Use SDF path miplevels based on the original path's size.Gravatar Jim Van Verth2017-02-10
| | | | | | | | | | | | Should produce sharper results than arbitrary fixed sizes. Adds a new test to pathfill GM. BUG=chromium:682918 Change-Id: I5a394098665d01e995a244fde278236f1471e6c9 Reviewed-on: https://skia-review.googlesource.com/8328 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Use new fragment processor optimization queries.Gravatar Brian Salomon2017-02-10
| | | | | | | | | | | This doesn't yet delete the old virtuals. It still uses the color and component flags model for the pipeline input and blended output but I'm planning to change those as well. Change-Id: I64e2ec0fe9ed9fae3aabf1ca8c9bc0582fc7565a Reviewed-on: https://skia-review.googlesource.com/7760 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Add support for RG float texturesGravatar csmartdalton2017-02-10
| | | | | | | | | | | | | | Adds kRG_float_GrPixelConfig. Also removes default labels from switches on GrPixelConfig, in order to help guide future enumerals to handle them properly. BUG=skia: Change-Id: Ie80b9413b4002b666df3ef1a7a8ea4c9c29ce43b Reviewed-on: https://skia-review.googlesource.com/8226 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Fix GrRenderTargetContext::drawArc's abandoned Context handlingGravatar Robert Phillips2017-02-10
| | | | | | | | | This was causing a crash in --preAbandonGpuContext mode Change-Id: Ifbd8eea05402d4db2f06c48f31aa53bce09d0c07 Reviewed-on: https://skia-review.googlesource.com/8310 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Make header files self-sufficientGravatar Hal Canary2017-02-10
| | | | | | | Change-Id: Ice7d761b1023da77e50e5d6aa597964f7d9aa1d8 Reviewed-on: https://skia-review.googlesource.com/8302 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Mike Reed <reed@google.com>
* Refactor pixel conversion: premul and unpremulGravatar Matt Sarett2017-02-09
| | | | | | | | | | | Just going for simpler and more code sharing. BUG=skia: Change-Id: I84c20cd4dbb6950f7b4d0bc659c4b3b5a2af201c Reviewed-on: https://skia-review.googlesource.com/8287 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* re-land of skslc type constructor cleanupsGravatar Ethan Nicholas2017-02-09
| | | | | | | | | BUG=skia: Change-Id: I953be07e2389dd4a9e7dcce0ddfd7505b309bda1 Reviewed-on: https://skia-review.googlesource.com/8265 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
* Re-enable processor optimization test with some fixes.Gravatar Brian Salomon2017-02-09
| | | | | | | | | Enables on GL (for now) Change-Id: I5f5a38632963dd705f8434e8627eb33446e8f027 Reviewed-on: https://skia-review.googlesource.com/7721 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Remove last use of ktx.hGravatar Herb Derby2017-02-09
| | | | | | | | | | | If this breaks something in Google3, revert it. Change-Id: Id719a87b6ca95c41d06f44f05ee1fdd430d4e0a2 Reviewed-on: https://skia-review.googlesource.com/8262 Commit-Queue: Herb Derby <herb@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* Don't batch circles and circular rrects beyond index limitGravatar Jim Van Verth2017-02-09
| | | | | | | | | | BUG=skia:6158, chromium:690144, chromium:688582, chromium:684112 Change-Id: I7a6d1fb73cbe6cb4328848acd153ff2505b5fea2 Reviewed-on: https://skia-review.googlesource.com/8256 Reviewed-by: Florin Malita <fmalita@chromium.org> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Revert "skslc type constructor cleanups"Gravatar Ethan Nicholas2017-02-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6f223283661c1ddc4a5334d2464804c6b6ba3ffa. Reason for revert: bot breakage Original change's description: > skslc type constructor cleanups > > BUG=skia: > > Change-Id: I87108b5e107419d99c996ef032eda512a68451ab > Reviewed-on: https://skia-review.googlesource.com/8117 > Commit-Queue: Greg Daniel <egdaniel@google.com> > Commit-Queue: Ethan Nicholas <ethannicholas@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> > TBR=egdaniel@google.com,ethannicholas@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Change-Id: I1c9a8c4c62c7dd0f724f22000507112641d25e3b Reviewed-on: https://skia-review.googlesource.com/8259 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
* skslc type constructor cleanupsGravatar Ethan Nicholas2017-02-09
| | | | | | | | | | BUG=skia: Change-Id: I87108b5e107419d99c996ef032eda512a68451ab Reviewed-on: https://skia-review.googlesource.com/8117 Commit-Queue: Greg Daniel <egdaniel@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Add integer vectors to GrSLTypeGravatar csmartdalton2017-02-08
| | | | | | | | | BUG=skia: Change-Id: I4a4a50e214f2240d83f6f0b02cf43e695c067933 Reviewed-on: https://skia-review.googlesource.com/8122 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Add a basic constructor to GrPipelineGravatar csmartdalton2017-02-08
| | | | | | | | | | | | Adds a simple constructor for when we just need to set up basic internal rendering. BUG=skia: Change-Id: Ib046c62e9a759aa7d0a3345e16ccf6e6af9342ea Reviewed-on: https://skia-review.googlesource.com/8121 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Remove exec bit from source files.Gravatar Ben Wagner2017-02-08
| | | | | | | | | | | | Ran: find src include \( -name '*.cpp' -o -name '*.h' \) -executable -exec chmod -x {} \; BUG=skia: Change-Id: I04a4adbfcea9fd9860ab83d43734dc5158d3a884 Reviewed-on: https://skia-review.googlesource.com/8220 Commit-Queue: Ben Wagner <benjaminwagner@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com>
* Revert "Remove asTextureRef from SkSpecialImage & update effects accordingly"Gravatar Robert Phillips2017-02-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit e88cf6b7aa5deaeaa9dab18ada7d9d11e1e4be12. Reason for revert: See if breaking DEPS roll Original change's description: > Remove asTextureRef from SkSpecialImage & update effects accordingly > > This CL also renames SkSpecialImage::asTextureProxy to asTextureProxyRef > > Change-Id: I5ed8e475bb9688453b825ae4500ed0e8d324b5ac > Reviewed-on: https://skia-review.googlesource.com/7995 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Robert Phillips <robertphillips@google.com> > TBR=bsalomon@google.com,robertphillips@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I227cbd5fcaf7e2f86e858331d9ec7ff7a5f203ca Reviewed-on: https://skia-review.googlesource.com/8184 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Remove asTextureRef from SkSpecialImage & update effects accordinglyGravatar Robert Phillips2017-02-07
| | | | | | | | | This CL also renames SkSpecialImage::asTextureProxy to asTextureProxyRef Change-Id: I5ed8e475bb9688453b825ae4500ed0e8d324b5ac Reviewed-on: https://skia-review.googlesource.com/7995 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* SkColorSpace: remove named API, add gamut APIGravatar Matt Sarett2017-02-07
| | | | | | | | | | | Reland from: https://skia-review.googlesource.com/c/8021/ BUG=skia: Change-Id: I18985f130587b15fccbc86b76b2bb5c49ba5ba8a Reviewed-on: https://skia-review.googlesource.com/8136 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Revert "SkColorSpace: remove named API, add gamut API"Gravatar Matt Sarett2017-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ecaaf6f1c156e5690200322fc2636380c1f63dd8. Reason for revert: Breaks everything Original change's description: > SkColorSpace: remove named API, add gamut API > > BUG=skia: > > Change-Id: I01c5e1874c9a034febc64e25b3aaafb5050393a6 > Reviewed-on: https://skia-review.googlesource.com/8021 > Reviewed-by: Brian Osman <brianosman@google.com> > Reviewed-by: Mike Reed <reed@google.com> > Commit-Queue: Matt Sarett <msarett@google.com> > TBR=msarett@google.com,brianosman@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Change-Id: Ief5a0a4eeabe75a21f7512e23fc15309151066c4 Reviewed-on: https://skia-review.googlesource.com/8127 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* SkColorSpace: remove named API, add gamut APIGravatar Matt Sarett2017-02-07
| | | | | | | | | | BUG=skia: Change-Id: I01c5e1874c9a034febc64e25b3aaafb5050393a6 Reviewed-on: https://skia-review.googlesource.com/8021 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Add a fast case for copying vertices in GrDrawVerticesOp.Gravatar Brian Salomon2017-02-07
| | | | | | | | | | | Uses Sk2f to apply a translation-only matrix when the vertex attributes contain only positions and colors. We should look at how to generalize this for other draw vertices cases and other ops. Change-Id: I5eb692982dc216b1c0a71209c969672b0562143c Reviewed-on: https://skia-review.googlesource.com/8103 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Fix rounding error with tiled bitmap drawsGravatar Brian Osman2017-02-06
| | | | | | | | | | | | | | | We were snapping the top-left of the destination rectangle to integers, but using the original (fractional) size. This led to us losing rows or columns of pixels at the first tile boundary. Also added a GM that demonstrates the bug (now renders correctly). BUG=skia: Change-Id: I50629dab9dd90fedad2c7e3393a1b1d1c7a8d45e Reviewed-on: https://skia-review.googlesource.com/8102 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* GrTessellator (AA): improve antialiasing of thin shapes.Gravatar Stephen White2017-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Long description, but actually quite a small change.) This is the first change inspired by the "straight skeleton" algorithm. This algorithm gives us a mental model to describe the edge-antialiasing problem: consider the shape as walls of a house, the outer alpha geometry is a 45-degree "roof" up to a flat top at a height of 1.0 (the filled interior). The faces of the sloping roof join at the bisectors between the inner and outer points. When the shape being drawn is sufficiently thin, there should be no flat roof, and the sloping roof meets at an edge (the straight skeleton). This patch detects cases where an edge inverts on stroking, which indicates that the flat roof has turned inside out, and should be reduced to a point instead. The model above describes what to do: follow down the "roof" along the bisectors to their intersection. This is the point to which an inverted edge should be collapsed. Fortunately, the bisector edges are easy to compute: they're the connector edges joining inner and outer points. Linearly interpolating the distance from the top to the bottom point gives the alpha we should use to approximate coverage. Now that we are correctly handling inversions, bevelling outer edges is no longer necesary, since pointy outer edges won't cause nasty opaque artifacts. A couple of other quality improvements: on intersection, always lerp the alpha of connector edge, even if the opposite edge is an inner edge (later, when these edges are collapsed, we need this value to compute the correct alpha). Fix the case where an intruding outer vertex intersects exactly with an inner edge by maxing its alpha with the computed value in check_for_intersection(). Finally, we also no longer round off the intersections produced by Line::intersect(), since it introduces a loss of quality with no measurable performance benefit. Change-Id: I6fd93df3a57fffc0895e8cb68adbdba626ded0f1 Reviewed-on: https://skia-review.googlesource.com/8028 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Stephan White <senorblanco@chromium.org>
* Make workaround for std::unique_ptr<const T[]> bug in old libstdc++ work.Gravatar Brian Salomon2017-02-06
| | | | | | | | | | BUG=skia: Change-Id: I58a07d4ce35bdd03e7edcf50e88d9982b3885546 Reviewed-on: https://skia-review.googlesource.com/8101 Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>