Go to file
mtklein a7627dc5cc SkPx: new approach to fixed-point SIMD
SkPx is like Sk4px, except each platform implementation of SkPx can declare
a different sweet spot of N pixels, with extra loads and stores to handle the
ragged edge of 0<n<N pixels.

In this case, _sse's sweet spot remains 4 pixels.   _neon jumps up to 8 so
we can now use NEON's transposing loads and stores, and _none is just 1.
This makes operations involving alpha considerably more efficient on NEON,
as alpha is its own distinct 8x8 bit plane that's easy to toss around.

This incorporates a few other improvements I've been wanting:
  - no requirement that we're dealing with SkPMColor.  SkColor works too.
  - no anonymous namespace hack to differentiate implementations.

Codegen and perf look good on Clang/x86-64 and GCC/ARMv7.
The NEON code looks very similar to the old NEON code, as intended.
No .skp or GM diffs on my laptop.  Don't expect any.

I intend this to replace Sk4px.  Plan after landing:
  - port SkXfermode_opts.h
  - port Color32 in SkBlitRow_D32.cpp (and move to SkBlitRow_opts.h like other
    SkOpts code)
  - delete all Sk4px-related code
  - clean up evolutionary dead ends in SkNx (Sk16b, Sk16h, Sk4i, Sk4d, etc.)
    leaving Sk2f, Sk4f (and Sk2s, Sk4s).
  - find a machine with AVX2 to work on, write SkPx_avx2.h handling 8 pixels
    at a time.

In the end we'll have Sk4f for float pixels, SkPx for fixed-point pixels.

BUG=skia:4117

Committed: https://skia.googlesource.com/skia/+/82c93b45ed6ac0b628adb8375389c202d1f586f9

CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;client.skia.compile:Build-Mac10.8-Clang-Arm7-Debug-Android-Trybot

Review URL: https://codereview.chromium.org/1317233005
2015-11-06 09:18:57 -08:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Rename SkBitmapRegionDecoder and Create function 2015-11-06 08:56:32 -08:00
bin bin/deps-and-gyp -> bin/sync-and-gyp 2015-11-03 12:07:47 -08:00
cmake Start making all .cpp files compile-able on all platforms. 2015-11-02 10:20:27 -08:00
debugger [SkDebugger] Remove unneeded SkDebuggerGUI includes 2015-11-02 09:32:54 -08:00
dm Rename SkBitmapRegionDecoder and Create function 2015-11-06 08:56:32 -08:00
example Move functions from SkGr to SkGrPriv.h 2015-10-09 13:36:42 -07:00
experimental Add test with GLFW framework 2015-10-09 13:27:34 -07:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm SkPDF: images support 32-but-not-N32 colortype 2015-11-06 07:27:23 -08:00
gyp Rename SkBitmapRegionDecoder and Create function 2015-11-06 08:56:32 -08:00
include Loosen requirements for mixed samples support 2015-11-06 07:09:43 -08:00
infra Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
platform_tools Wire up SDL on Android 2015-11-05 11:49:35 -08:00
resources SkPDF: fall back on paths for unembeddable fonts. 2015-10-12 13:05:04 -07:00
samplecode Create Sample that combines combose shader and coons patch 2015-11-05 13:09:08 -08:00
site Add docs on how to install iOS test tools 2015-10-16 11:47:37 -07:00
src SkPx: new approach to fixed-point SIMD 2015-11-06 09:18:57 -08:00
tests Revert of Update Layer Hoisting to store its atlas texture in the resource cache (patchset #6 id:100001 of https://codereview.chromium.org/1406013006/ ) 2015-11-06 05:59:14 -08:00
third_party Wire up SDL on Android 2015-11-05 11:49:35 -08:00
tools Rename SkBitmapRegionDecoder and Create function 2015-11-06 08:56:32 -08:00
.gitignore android/apps: Add CanvasProof App; 2015-09-23 12:40:34 -07:00
AUTHORS Add ifdef guard around gpu-specific code in native windows window. 2015-11-05 08:10:45 -08:00
BUILD.public Rename SkBitmapRegionDecoder and Create function 2015-11-06 08:56:32 -08:00
codereview.settings Automatically add a docs preview link and NOTRY=true when there are only docs changes. 2015-02-26 10:16:13 -08:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS DEPS: roll zlib: 20 new commits 2015-10-30 08:40:55 -07:00
Doxyfile Documentation: SkCanvas API 2015-05-19 10:21:29 -07:00
gyp_skia Support SKIA_OUT on Mac and ChromeOS 2015-05-04 08:04:28 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Include resources directory in google3 sync. 2015-10-20 13:00:48 -07:00
make.bat Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
make.py Fix make.py: BUILDTYPE 2015-08-05 11:30:28 -04:00
Makefile Remove experimental/PdfViewer 2015-08-04 14:08:44 -07:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py Automatically add TSAN bots to the CQ for changes affecting SkAtomics.h 2015-10-07 11:49:00 -07:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
skia.gyp Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
SKP_VERSION Update SKP version 2015-11-01 00:47:37 -07:00
whitespace.txt Whitespace change to test CQ waiting for l-g-t-m 2015-10-13 04:44:40 -07:00

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

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