aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-03-20 19:06:18 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-21 12:46:37 +0000
commit4c55027dbf57d0701361b123e36b8fad46c341c3 (patch)
treea31d6c056c414b3336d02740c1558c5d65588e44 /src/opts
parenteb35f4dfaa10b9d751abbc9a1406456eb3b1649d (diff)
Add support for F32 sources to SkColorSpaceXform
This also subtlely allows clients to convert between F32 and F16. BUG=skia: CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ied5f2295fce00c69d8cf85730be899f3f8597915 Reviewed-on: https://skia-review.googlesource.com/9914 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/opts')
-rw-r--r--src/opts/SkRasterPipeline_opts.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index 07f1e5ab1c..3b15efac1e 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -149,7 +149,8 @@ SI void SK_VECTORCALL just_return(size_t, void**, SkNf, SkNf, SkNf, SkNf,
template <typename T>
SI SkNx<N,T> load(size_t tail, const T* src) {
if (tail) {
- T buf[8] = {0};
+ T buf[8];
+ memset(buf, 0, 8*sizeof(T));
switch (tail & (N-1)) {
case 7: buf[6] = src[6];
case 6: buf[5] = src[5];
@@ -574,6 +575,17 @@ STAGE_CTX(store_f16, uint64_t**) {
}
}
+STAGE_CTX(load_f32, const SkPM4f**) {
+ auto ptr = *ctx + x;
+
+ const void* src = ptr;
+ SkNx<N, SkPM4f> px;
+ if (tail) {
+ px = load(tail, ptr);
+ src = &px;
+ }
+ SkNf::Load4(src, &r, &g, &b, &a);
+}
STAGE_CTX(store_f32, SkPM4f**) {
auto ptr = *ctx + x;