Go to file
Mike Klein 7b1620f366 refactor skvx min/max
Implement min and max using if_then_else(y<x,...) on vectors
rather than recursing to std::min/std::max applied to scalars.

But actually, factor out and use naive_if_then_else(), which Clang can
reason through better than it can our specialized if_then_else().  This
lets every min() or max() I've looked at compile down to ideal codegen,
vmaxps, vpminsw, etc, where if you use if_then_else() you'd see the
literal comparison and blend as written.

I've been looking at q14x2 codegen in the interpreter, and most things
were already good, unexpectedly even uavg_q14x2.  The biggest surprise
was how bad the min/max codegen was, and looking back, even the min_f32
and max_f32 codegen is super bad.  This CL fixes all that, leaving us
with the ideal codegen using the specific instruction you'd want,
replacing a giant mess of code that recursed down to scalars.

mul_q14x2 is still bad, but an easy follow up.

Change-Id: I77b5d7c9aa20a9a2f5ceb3e40f1e18ace2a1b5c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317310
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-09-16 17:10:18 +00:00
animations
bazel bazel baby steps 2020-09-14 15:18:32 +00:00
bench SkSL optimization now happens in convertProgram rather than being a 2020-09-14 16:34:47 +00:00
bin bin/try: automatically set 'git cl issue' when not found 2020-06-25 17:44:01 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides Port to ANGLE's GN files 2020-09-11 15:22:34 +00:00
client_utils/android Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
demos.skia.org Add path rendering performance demo to demos.skia.org 2020-08-11 19:57:08 +00:00
dm Reland "Add idea of DataType to SkYUVAPixmapInfo." 2020-09-03 18:05:17 +00:00
docker [canvaskit,pathkit] Update to emsdk 2.0 2020-08-20 14:55:50 +00:00
docs/examples Only expose isConvex on path publicly. 2020-08-28 16:56:29 +00:00
example Clean up GrContext references in the src/gpu 2020-07-16 14:14:08 +00:00
experimental Add a method of returning the list of commands that use an image 2020-09-16 15:57:40 +00:00
fuzz [fuzz] Make libfuzzer defines backwards compatible for roll 2020-09-14 17:43:00 +00:00
gm Add a quadratic cusp to trickycubicstrokes 2020-09-16 15:12:47 +00:00
gn moved BinaryExpression's data into IRNode 2020-09-16 17:10:17 +00:00
include refactor skvx min/max 2020-09-16 17:10:18 +00:00
infra Generate SkSL golden output files from test inputs during the build. 2020-09-14 14:54:12 +00:00
modules Fix cube map demo 2020-09-15 17:50:10 +00:00
platform_tools add SurfaceView support for skottie on android 2020-08-21 13:24:30 +00:00
resources [skottie] Add support for invert/YIQ 2020-09-11 14:55:44 +00:00
samplecode Add support for plumbing GrDstSampleType through Ops and Pipeline creation. 2020-09-11 14:42:34 +00:00
site Fix cube map demo 2020-09-15 17:50:10 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src refactor skvx min/max 2020-09-16 17:10:18 +00:00
tests add another q14x2 test 2020-09-16 16:17:47 +00:00
third_party Roll skcms from b1f9041ffe31 to 069b8f699b59 (1 revision) 2020-09-14 17:25:17 +00:00
tools in fm_bot, use -foo to remove a source 2020-09-16 16:38:08 +00:00
.bazelignore bazel baby steps 2020-09-14 15:18:32 +00:00
.clang-format Disable BinPackParameters in .clang-format 2020-03-27 14:32:40 +00:00
.clang-tidy Disable ClangTidy namespace comments for short blocks. 2020-08-24 14:01:22 +00:00
.gitignore bazel baby steps 2020-09-14 15:18:32 +00:00
.gn
AUTHORS Search ICU data on Windows relative to the current module. 2020-08-20 14:51:42 +00:00
BUILD.bazel bazel baby steps 2020-09-14 15:18:32 +00:00
BUILD.gn [fuzz] Add libfuzzer binaries to BUILD.gn 2020-09-15 14:52:02 +00:00
codereview.settings
CONTRIBUTING
CQ_COMMITTERS
DEPS Roll ANGLE from 183a454b9d54 to 4d3a0f602852 (29 revisions) 2020-09-16 04:49:16 +00:00
go.mod Update Go Deps 2020-07-25 05:33:32 +00:00
go.sum Update Go Deps 2020-07-25 05:33:32 +00:00
LICENSE
OWNERS
PRESUBMIT.py Generate SkSL golden output files from test inputs during the build. 2020-09-14 14:54:12 +00:00
public.bzl remove unused (and bit-rotting) Lua support 2020-09-09 14:33:32 +00:00
README
README.chromium
RELEASE_NOTES.txt Revert "Enable novel GrClipStack on bots, disable elsewhere" 2020-09-16 16:55:49 +00:00
whitespace.txt
WORKSPACE.bazel bazel baby steps 2020-09-14 15:18:32 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.