Go to file
Matteo Franchin a132c3869f Faster and more accurate blit_row_s32a_opaque for ARM
Change ARM implementation of alpha blending to work on 8 pixels at a
time (using NEON). Also improve the accuracy of alpha blending by using
a formula based on SkMulDiv255Round rather than SkPMSrcOver.

Note that a number of variations of this code were considered. Here are
some notes:

- A 16 pixels at a time version was considered. This performs well for
  the case of extreme alpha (all-opaque or all-transparent pixels), but
  performs worst than the 8 pixels version when there are frequent
  transitions of alpha. Also gcc 6.2.1 seems to have troubles with
  register pressure when using this version.

- If the branch to detect the fully-opaque or fully-transparent cases
  is removed, then the performance increases significantly for images
  which are all partially transparent (especially on ARM Cortex A72),
  but can significantly decrease for images that are almost fully
  opaque or fully transparent.

This implementation is a compromise to the effects described above.
This patch produces a ~10% improvement on the nanobench's sub-scores
repeatTile_BGRA_8888_A, constXTile_MM_filter_trans, constXTile_CC_trans,
constXTile_RR_filter_trans when running on ARM Cortex A72. Improvements
of greater magnitude (20% to 30%) are observed when running on ARM
Cortex A53.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
Change-Id: I1f0c9f549057613bbffd26e6651f3beeb0019af9
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/16520
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-05-26 19:02:11 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Reland of SkShaderBase 2017-05-25 14:59:07 +00:00
bin bin/fetch-clang-format 2017-03-08 16:43:49 +00:00
debugger Get Debugger app compiling again 2017-01-06 16:18:27 +00:00
dm Tag CodecSrc bitmaps with standard color spaces 2017-05-26 18:14:34 +00:00
example Revert "Revert "Plumb the use of GrBackendRenderTarget throughout Skia"" 2017-05-01 14:14:50 +00:00
experimental Reland of SkShaderBase 2017-05-25 14:59:07 +00:00
fuzz move files out of private, and fix up callers to IWYU 2017-05-16 21:29:03 +00:00
gm Reland of SkShaderBase 2017-05-25 14:59:07 +00:00
gn rasterpipeline: 2017-05-26 18:19:37 +00:00
include Add method to GrContext to purge unlocked resources. 2017-05-26 18:14:33 +00:00
infra Create blacklist for new SKP repository 2017-05-26 16:59:03 +00:00
platform_tools Enable ios on Raspberry Pi 2017-04-25 16:56:41 +00:00
resources Add ship.png for DrawShip sample 2017-05-23 20:35:17 +00:00
samplecode Add cumulative fps to SampleApp 2017-05-24 15:38:17 +00:00
site Fix resource and skp paths in Android viewer 2017-05-26 18:29:48 +00:00
src Faster and more accurate blit_row_s32a_opaque for ARM 2017-05-26 19:02:11 +00:00
tests Add method to GrContext to purge unlocked resources. 2017-05-26 18:14:33 +00:00
third_party Reduce absolute paths in generated ninja files in skia 2017-05-24 20:16:55 +00:00
tools Fix resource and skp paths in Android viewer 2017-05-26 18:29:48 +00:00
.clang-format Mark flatennable macros as block beginning/ending in .clang-format 2017-01-09 15:31:36 +00:00
.gitignore Refactor Vulkan support to support Fuchsia 2017-04-05 17:32:09 +00:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS Added support for building for tvOS 2017-03-14 22:55:04 +00:00
BUILD.gn Revert "Relocate shaders to own dir" 2017-05-25 22:30:19 +00:00
codereview.settings Make uploading to Gerrit the default for Skia 2016-11-09 19:07:56 +00: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 Update build tools to newer gn. 2017-03-17 17:38:58 +00:00
Doxyfile Make the housekeeper upload doxygen to a newer bucket 2016-10-04 13:23:57 -07:00
LICENSE BUG=skia:5602 2016-09-02 11:19:34 -07:00
PRESUBMIT.py Use Gerrit style format for footers in Presubmit 2017-05-23 20:44:36 +00:00
public.bzl Revert "Relocate shaders to own dir" 2017-05-25 22:30:19 +00: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
whitespace.txt Marker for Win AMD driver update. 2017-05-22 17:21:14 +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.