aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/gradients
Commit message (Collapse)AuthorAge
* Add helper to create random AsFPArgs for Ganesh unit testsGravatar Brian Osman2016-10-19
| | | | | | | | | | | | | | Reduces copy-paste and eases maintenance. I'll be adding another field to AsFPArgs soon, and this is going to streamline that change. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3639 Change-Id: I6372ed5dce50a5ba9d73039bd4714e34502a1f75 Reviewed-on: https://skia-review.googlesource.com/3639 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* Refactored SkColorSpace and added in a Lab PCS GMGravatar raftias2016-10-18
| | | | | | | | | | | | | | | | | | | | The refactoring breaks off A2B0 tag support into a separate subclass of SkColorSpace_Base, while keeping the current (besides CLUT) functionality in a XYZTRC subclass. ICC profile loading is now aware of this and creates the A2B0 subclass when SkColorSpace::NewICC() is called on a profile in need of the A2B0 functionality. The LabPCSDemo GM loads a .icc profile containing a LAB PCS and then runs a Lab->XYZ conversion on an image using it so we can display it and test out the A2B0 SkColorSpace functionality, sans a/b/m-curves, as well as the Lab->XYZ conversion code. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2389983002 Review-Url: https://codereview.chromium.org/2389983002
* Include 4f variants of random gradients during testingGravatar Brian Osman2016-10-18
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3538 Change-Id: Ieee6e49cb830b6aab87b0ecd7865c65ffb90dfe8 Reviewed-on: https://skia-review.googlesource.com/3538 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
* Faster 4f gradient premul pathGravatar fmalita2016-10-14
| | | | | | | | | | | | | | Similar to https://codereview.chromium.org/2409583003/, perform the premul in 4f. It turns out it's even faster to avoid the 255 load multiplication in this case. Also includes some template plumbing because DstTraits<>::load now needs to be premul-aware (previously it wasn't). R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2416233002 Review-Url: https://codereview.chromium.org/2416233002
* added SkSL support for mustForceNegatedAtanParamToFloat capGravatar ethannicholas2016-10-14
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2413363002 Review-Url: https://codereview.chromium.org/2413363002
* Slightly generalize GPU hard stop gradient implementation.Gravatar Brian Salomon2016-10-13
| | | | | | | | | | | | | | With this CL we handle single off-center hardstop gradients. BUG=chromium:543625 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3303 Change-Id: Ic754e87469475ce15865c54055b8ed492e1d826d Reviewed-on: https://skia-review.googlesource.com/3303 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Update comment, move constant inside helper structGravatar Brian Osman2016-10-10
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3109 Change-Id: Ife8a2434ff591bd77be1cd0fbcce50430e18c86c Reviewed-on: https://skia-review.googlesource.com/3109 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
* Convert gradient params test helper to a structGravatar Brian Osman2016-10-10
| | | | | | | | | | | | | | Much less copy-pasted code, fewer implementation details leaking out, and going to be easier to extend for 4f and color space testing. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2900 Change-Id: Icc468c606aa35fbe82c64bcc398e7e348e0faa20 Reviewed-on: https://skia-review.googlesource.com/2900 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
* Harden degenerate gradient context handlingGravatar fmalita2016-10-05
| | | | | | | | | | | | | Certain inputs produce degenerate values at context creation time only. Detect such cases after context creation, and abort drawing by returning a null shader context instead. BUG=skia:5821 R=reed@google.com,brianosman@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2397473003 Review-Url: https://codereview.chromium.org/2397473003
* Remove option to make GrCoordTransforms apply to device positions.Gravatar Brian Salomon2016-10-03
| | | | | | | | | | | Adds a device space texture decal effect to use for clipping. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2870 Change-Id: Ifcc7617ea87f5a86e301995cba9dfc30a4b0e2c5 Reviewed-on: https://skia-review.googlesource.com/2870 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Supply random dst color space to asFP in unit testsGravatar Brian Osman2016-10-03
| | | | | | | | | | | | | | | TBR=bsalomon@google.com (Testing-only API change) BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2876 Change-Id: I0ca26da0307848cdfc8ffaac2d042601663ab00b Reviewed-on: https://skia-review.googlesource.com/2876 Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Gradients are serialized (and can be constructed) as SkColor4f + SkColorSpaceGravatar brianosman2016-09-28
| | | | | | | | | | | | | | | | | | | | Added gradient shader factories that take SkColor4f + SkColorSpace. Modified Descriptor to only store SkColor4f + SkColorSpace. Existing factories make use of helper code to convert SkColor and forward to the new factories. Bumped SKP version to handle new gradient serialization format. I was toying with using half-float when serializing SkColor4f, despite my aggressive packing of flags, this format is significantly bigger. Also added GM to use 4f factories. This GM should (and does) look identical to the existing gradients GM. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2370063002 Review-Url: https://codereview.chromium.org/2370063002
* Added kSRGBLinear_Named color space, along with testsGravatar brianosman2016-09-27
| | | | | | | | | | | | Gradients (and other shaders) are going to end up serializing this particular color space very frequently, so we want a shorthand way of writing it out. I think it's also helpful to have a clearer way of creating it (vs. NewNamed(kSRGB_Named)->makeLinearGamma()). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2377763002 Review-Url: https://codereview.chromium.org/2377763002
* Stop aggregating texture/buffer access objects in GrFragmentProcessor parents.Gravatar bsalomon2016-09-26
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349243002 Review-Url: https://codereview.chromium.org/2365943003
* It is possible to try and draw to an unsupported format. Let this go.Gravatar brianosman2016-09-22
| | | | | | | | | Squelches assert firing in gradient code on low-end Android bots. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2365703002 Review-Url: https://codereview.chromium.org/2365703002
* Support for color-spaces with multi-stop (texture) gradientsGravatar brianosman2016-09-22
| | | | | | | | | | | | | Texture is F16 linear, unless that's not supported. In that case, we pack down to sRGB. Added more test patches to the gamut GM with many stops, to test this case. Now they render correctly. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343253002 Review-Url: https://codereview.chromium.org/2343253002
* Harden LinearGradient4fContextGravatar fmalita2016-09-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Three distinct issues exposed by Fuzzer: 1) truncating the flags to 8 bits may trip the assert in SkToU8 Since clients can pass in any garbage, we cannot assume it fits in 8 bits. Just static_cast<> instead. 2) vertical gradients with dx == -0.0 don't trigger interval inversion. For dx < 0 we want reversed intervals. But, alas, -0.0 < 0 == false (thanks, Ob^WIEEE 754!). Use signbit() instead. 3) half closed range checking needs to be inverted for reversed intervals. Normally we check for [p0, p1), but for reversed intervals (p1 < p0) we want to check for [p1, p0), and not (p1, p0]. Adjust the logic accordingly. BUG=skia:5647 R=reed@google.com,kjlubick@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349153004 Review-Url: https://codereview.chromium.org/2349153004
* Improve ColorStopOptimizer safetyGravatar tomhudson2016-09-16
| | | | | | | | | | Could potentially access uninitialized memory. BUG=647481 R=brianosman@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345343002 Review-Url: https://codereview.chromium.org/2345343002
* Add storage and computation of SkColor4f version of gradient stops.Gravatar brianosman2016-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For now, we still only have the SkColor factory, but the Descriptor can now carry either an SkColor or SkColor4f specified gradient. Base class constructor automatically populates both forms of color, so that legacy raster backend will continue to work, and new backend work can operate directly from the float4 version. On the GPU side, we have similar logic, but GrGradientEffect only keeps one version of colors around: SkColor if the destination is legacy, and SkColor4f (with an optional gamut xform) if the destination is gamma correct. The 4f colors are already linear, and we gamut xform them in setData, so gradients are now fully color-correct in sRGB and F16 modes... ... unless there are more than three stops. Then we use a texture, and that code path isn't handled yet. We have a few choices here (do we use an 8-bit sRGB atlas, or just always use F16 linear atlas so we can share it among both sRGB and wide-gamut rendering). In any case, I'd like to defer that to a second CL. This change does fix the non-texture gradients in the gamut GM. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2337313002 Review-Url: https://codereview.chromium.org/2337313002
* Remove the unused 16-bit gradient cacheGravatar brianosman2016-09-15
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343863002 Review-Url: https://codereview.chromium.org/2343863002
* Bundle common arguments to GrGradientEffect creationGravatar brianosman2016-09-15
| | | | | | | | | | | I'm going to be adding more (to deal with color spaces), so trying to fix this before it gets out of control. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2332213007 Committed: https://skia.googlesource.com/skia/+/f605c16a030d791a37f589e6bddd7158ba5d62cd Review-Url: https://codereview.chromium.org/2332213007
* Revert of Bundle common arguments to GrGradientEffect creation (patchset #2 ↵Gravatar djsollen2016-09-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:20001 of https://codereview.chromium.org/2332213007/ ) Reason for revert: This seems to be causing the autoroll into Chromium to fail. https://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/builds/69618/steps/compile/logs/stdio Original issue's description: > Bundle common arguments to GrGradientEffect creation > > I'm going to be adding more (to deal with color spaces), so trying to fix > this before it gets out of control. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2332213007 > > Committed: https://skia.googlesource.com/skia/+/f605c16a030d791a37f589e6bddd7158ba5d62cd TBR=bsalomon@google.com,robertphillips@google.com,brianosman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2343703003
* Bundle common arguments to GrGradientEffect creationGravatar brianosman2016-09-14
| | | | | | | | | | I'm going to be adding more (to deal with color spaces), so trying to fix this before it gets out of control. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2332213007 Review-Url: https://codereview.chromium.org/2332213007
* Remove unneeded GrGLSLTransformedCoordsArray typeGravatar bsalomon2016-09-12
| | | | | | | Rename GrGLSLFragmentBuilder::ensureFSCoords2D to ensureCoords2D and make it take an arbitrary GrShaderVar. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2324663004 Review-Url: https://codereview.chromium.org/2324663004
* Make GrTextureStripAtlas flush pending IO on newly acquired textureGravatar ajuma2016-08-24
| | | | | | | | | | | GrTextureStripAtlas uses its own lock counts to protect against overwriting its own earlier writes, but that doesn't protect against IO that was pending when a texture was first acquired. BUG=chromium:637678 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2262233002 Review-Url: https://codereview.chromium.org/2262233002
* Flush denorm half floats to zero.Gravatar mtklein2016-08-22
| | | | | | | | | | | | | | | | | | I think we convinced ourselves that denorms, while a good chunk of half floats, cover a rather small fraction of the representable range, which is always close enough to zero to flush. This makes both paths of the conversion to or from float considerably simpler. These functions now work for zero-or-normal half floats (excluding infinite, NaN). I'm not aware of a term for this class so I've called them "ordinary". A handful of GMs and SKPs draw differently in --config f16, but all imperceptibly. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256023002 Review-Url: https://codereview.chromium.org/2256023002
* Simplify the gradient color stop optimizerGravatar fmalita2016-08-22
| | | | | | | | | | We're just discarding the leftmost/rightmost stops -- this can be achieved by simply adjusting the start offset and count. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2265803002 Review-Url: https://codereview.chromium.org/2265803002
* Implement gradient simplification for 0,0,1 and 0,1,1 gradientsGravatar fmenozzi2016-08-19
| | | | | | | | | Depends on https://codereview.chromium.org/2259823005/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256843004 Review-Url: https://codereview.chromium.org/2256843004
* Return color shader instead of 2-color gradient when color count is 1Gravatar fmenozzi2016-08-19
| | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259823005 Committed: https://skia.googlesource.com/skia/+/da082a5767d7edfd3abe74fc683392422565a606 Review-Url: https://codereview.chromium.org/2259823005
* Revert of Return color shader instead of 2-color gradient when color count ↵Gravatar reed2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | is 1 (patchset #3 id:40001 of https://codereview.chromium.org/2259823005/ ) Reason for revert: breaks 2-pt-conical, which can sometimes not draw anything Original issue's description: > Return color shader instead of 2-color gradient when color count is 1 > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259823005 > > Committed: https://skia.googlesource.com/skia/+/da082a5767d7edfd3abe74fc683392422565a606 TBR=fmenozzi@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2257993002
* Return color shader instead of 2-color gradient when color count is 1Gravatar fmenozzi2016-08-18
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259823005 Review-Url: https://codereview.chromium.org/2259823005
* Reducing number of calls to GLSL mix() from two to one reduces frame render ↵Gravatar fmenozzi2016-08-16
| | | | | | | | | time by 21% BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2247113003 Review-Url: https://codereview.chromium.org/2247113003
* Add specialized code for hard stop gradients on GPUGravatar fmenozzi2016-08-15
| | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 Committed: https://skia.googlesource.com/skia/+/0c63006b88a16e3418d92852a62771615799839d Committed: https://skia.googlesource.com/skia/+/99818d69372d29a139935cfe5c379e491432931b Committed: https://skia.googlesource.com/skia/+/2a4959181fc98d5d7ee862e7cd1c7993b3343be6 Review-Url: https://codereview.chromium.org/2223203003
* Revert of Exact Ganesh Gradients for Special Cases (patchset #9 id:160001 of ↵Gravatar halcanary2016-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2223203003/ ) Reason for revert: specualtive revert to fix valgrind bot Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind Original issue's description: > Remove generalized gradient code > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 > > Committed: https://skia.googlesource.com/skia/+/0c63006b88a16e3418d92852a62771615799839d > Committed: https://skia.googlesource.com/skia/+/99818d69372d29a139935cfe5c379e491432931b > Committed: https://skia.googlesource.com/skia/+/2a4959181fc98d5d7ee862e7cd1c7993b3343be6 TBR=bsalomon@google.com,fmenozzi@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2245533005
* Remove generalized gradient codeGravatar fmenozzi2016-08-12
| | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 Committed: https://skia.googlesource.com/skia/+/0c63006b88a16e3418d92852a62771615799839d Committed: https://skia.googlesource.com/skia/+/99818d69372d29a139935cfe5c379e491432931b Review-Url: https://codereview.chromium.org/2223203003
* Revert of Exact Ganesh Gradients for Special Cases (patchset #8 id:140001 of ↵Gravatar halcanary2016-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2223203003/ ) Reason for revert: Chrome iOS build break https://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device/builds/50777/steps/compile/logs/stdio error: unused function 'close_to_one_half' Original issue's description: > Remove generalized gradient code > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 > > Committed: https://skia.googlesource.com/skia/+/0c63006b88a16e3418d92852a62771615799839d > Committed: https://skia.googlesource.com/skia/+/99818d69372d29a139935cfe5c379e491432931b TBR=bsalomon@google.com,fmenozzi@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2241483003
* Remove generalized gradient codeGravatar fmenozzi2016-08-11
| | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 Committed: https://skia.googlesource.com/skia/+/0c63006b88a16e3418d92852a62771615799839d Review-Url: https://codereview.chromium.org/2223203003
* Revert "Remove generalized gradient code"Gravatar fmenozzi2016-08-10
| | | | | | | | | | This reverts commit 0c63006b88a16e3418d92852a62771615799839d. BUG=skia: NOTREECHECKS=true GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2235953003 Review-Url: https://codereview.chromium.org/2235953003
* SkGradientShader.cpp: fix build when SK_SUPPORT_GPU=0Gravatar halcanary2016-08-10
| | | | | | | NOTRY=true GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2235863002 Review-Url: https://codereview.chromium.org/2235863002
* Remove generalized gradient codeGravatar fmenozzi2016-08-10
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223203003 Review-Url: https://codereview.chromium.org/2223203003
* Prevent degenerate linear gradient instantiationGravatar fmalita2016-08-10
| | | | | | | | | | If the point distance exceeds SkScalar, nasty things tend to happen. R=reed@google.com BUG=636194 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2234663002 Review-Url: https://codereview.chromium.org/2234663002
* Refactor various gradient effect classesGravatar fmenozzi2016-08-09
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221133002 Review-Url: https://codereview.chromium.org/2221133002
* Add destination color space to AsFPArgs. Eliminates last XFORMTODO.Gravatar brianosman2016-07-25
| | | | | | | | | | | | This is going to be needed in many more places as I finish connecting the dots. Even better - I'd like to switch to a world where SkColorSpace != nullptr is the only signal we use for gamma-correct rendering, so I can eliminate SkSourceGammaTreatment and SkSurfaceProps::isGammaCorrect. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2180503002 Review-Url: https://codereview.chromium.org/2180503002
* Bundle SkShader::asFragmentProcessor arguments in a structGravatar brianosman2016-07-22
| | | | | | | | | | The signature of this thing keeps changing (and is about to change again). This just makes maintenance much easier. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2175563003 Review-Url: https://codereview.chromium.org/2175563003
* Correct sRGB <-> linear everywhere.Gravatar mtklein2016-07-20
| | | | | | | | | | | | | | | | | | | | | | This trims the SkPM4fPriv methods down to just foolproof methods. (Anything trying to build these itself is probably wrong.) Things like Sk4f srgb_to_linear(Sk4f) can't really exist anymore, at least not efficiently, so this refactor is somewhat more invasive than you might think. Generally this means things using to_4f() are also making a misstep... that's gone too. It also does not make sense to try to play games with linear floats with 255 bias any more. That hack can't work with real sRGB coding. Rather than update them, I've removed a couple of L32 xfermode fast paths. I'd even rather drop it entirely... BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2163683002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2163683002
* Clarify GrGradientEffect key enumGravatar fmenozzi2016-07-19
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2158323003 Review-Url: https://codereview.chromium.org/2158323003
* Improve naive SkColorXform to half floatsGravatar msarett2016-07-19
| | | | | | | | | | | | | | | | | | | | | | | | This should give us a good baseline to explore using SkRasterPipeline. A particular colorxform to half float drops from 425us to 282us on my desktop. Color Xform to Half Float (HP z620) Original 425us Trans16 (not 32) 355us Vector Trans16 378us Trans16 + Keep Halfs in Vector 335us Vector Trans16 + Keep Halfs in Vector 282us Final 282us Color Xform to Half Float (Nexus 5X) Original 556us Final 472us BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2159993003 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2159993003
* Expand _01 half<->float limitation to _finite. Simplify.Gravatar mtklein2016-07-15
| | | | | | | | | | | | | | | | | | | | | | | It's become clear we need to sometimes deal with values <0 or >1. I'm not yet convinced we care about NaN or +-inf. We had some fairly clever tricks and optimizations here for NEON and SSE. I've thrown them out in favor of a single implementation. If we find the specializations mattered, we can certainly figure out how to extend them to this new range/domain. This happens to add a vectorized float -> half for ARMv7, which was missing from the _01 version. (The SSE strategy was not portable to platforms that flush denorm floats to zero.) I've tested the full float range for FloatToHalf on my desktop and a 5x. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145663003 CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast-Trybot Committed: https://skia.googlesource.com/skia/+/3296bee70d074bb8094b3229dbe12fa016657e90 Review-Url: https://codereview.chromium.org/2145663003
* Revert of Expand _01 half<->float limitation to _finite. Simplify. ↵Gravatar mtklein2016-07-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #7 id:120001 of https://codereview.chromium.org/2145663003/ ) Reason for revert: Unit tests fail on Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast Original issue's description: > Expand _01 half<->float limitation to _finite. Simplify. > > It's become clear we need to sometimes deal with values <0 or >1. > I'm not yet convinced we care about NaN or +-inf. > > We had some fairly clever tricks and optimizations here for NEON > and SSE. I've thrown them out in favor of a single implementation. > If we find the specializations mattered, we can certainly figure out > how to extend them to this new range/domain. > > This happens to add a vectorized float -> half for ARMv7, which was > missing from the _01 version. (The SSE strategy was not portable to > platforms that flush denorm floats to zero.) > > I've tested the full float range for FloatToHalf on my desktop and a 5x. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145663003 > CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast-Trybot > > Committed: https://skia.googlesource.com/skia/+/3296bee70d074bb8094b3229dbe12fa016657e90 TBR=msarett@google.com,mtklein@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2151023003
* Expand _01 half<->float limitation to _finite. Simplify.Gravatar mtklein2016-07-14
| | | | | | | | | | | | | | | | | | | | | | It's become clear we need to sometimes deal with values <0 or >1. I'm not yet convinced we care about NaN or +-inf. We had some fairly clever tricks and optimizations here for NEON and SSE. I've thrown them out in favor of a single implementation. If we find the specializations mattered, we can certainly figure out how to extend them to this new range/domain. This happens to add a vectorized float -> half for ARMv7, which was missing from the _01 version. (The SSE strategy was not portable to platforms that flush denorm floats to zero.) I've tested the full float range for FloatToHalf on my desktop and a 5x. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145663003 CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2145663003