allow mixer to defer to a shader
- reverse sense of Blend mixer to be (dst, src, mode)
- change pipeline register convention to be (dst, src)
Bug: skia:
Change-Id: I1f1d990001ad941cb8d44e1488c5f14077e181f8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/201386
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index 0bc7e0e..38b1d86 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -1478,13 +1478,19 @@
return mad(to-from, t, from);
}
-// Lerp from dst-color to src-color
STAGE(lerp_1_float, const float* c) {
r = lerp(dr, r, *c);
g = lerp(dg, g, *c);
b = lerp(db, b, *c);
a = lerp(da, a, *c);
}
+STAGE(lerp_native, const float scales[]) {
+ auto c = unaligned_load<F>(scales);
+ r = lerp(dr, r, c);
+ g = lerp(dg, g, c);
+ b = lerp(db, b, c);
+ a = lerp(da, a, c);
+}
STAGE(lerp_u8, const SkRasterPipeline_MemoryCtx* ctx) {
auto ptr = ptr_at_xy<const uint8_t>(ctx, dx,dy);
@@ -3349,14 +3355,15 @@
// If a pipeline uses these stages, it'll boot it out of lowp into highp.
#define NOT_IMPLEMENTED(st) static void (*st)(void) = nullptr;
NOT_IMPLEMENTED(callback)
- NOT_IMPLEMENTED(load_src)
- NOT_IMPLEMENTED(store_src)
- NOT_IMPLEMENTED(load_dst)
- NOT_IMPLEMENTED(store_dst)
+ NOT_IMPLEMENTED(load_src) // TODO
+ NOT_IMPLEMENTED(store_src) // TODO
+ NOT_IMPLEMENTED(load_dst) // TODO
+ NOT_IMPLEMENTED(store_dst) // TODO
NOT_IMPLEMENTED(unbounded_set_rgb)
NOT_IMPLEMENTED(unbounded_uniform_color)
NOT_IMPLEMENTED(unpremul)
NOT_IMPLEMENTED(dither) // TODO
+ NOT_IMPLEMENTED(lerp_native) // TODO
NOT_IMPLEMENTED(from_srgb)
NOT_IMPLEMENTED(to_srgb)
NOT_IMPLEMENTED(load_f16)