Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(721)

Unified Diff: src/opts/SkColorCubeFilter_opts.h

Issue 1308903003: Templatize SkPMFloat to support both 1 and 255 biases. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: pump the loops for Android Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/opts/SkColorCubeFilter_opts.h
diff --git a/src/opts/SkColorCubeFilter_opts.h b/src/opts/SkColorCubeFilter_opts.h
index 41d2525b5a387a8df89bf017f0e22a59eb3bbae6..fb403a72bdd22fa2f8cd8cc794ecc5ccde636c8f 100644
--- a/src/opts/SkColorCubeFilter_opts.h
+++ b/src/opts/SkColorCubeFilter_opts.h
@@ -51,7 +51,10 @@ void color_cube_filter_span(const SkPMColor src[],
const int i10 = (colorToIndex[1][g] + colorToIndex[0][b] * dim) * dim;
const int i11 = (colorToIndex[1][g] + colorToIndex[1][b] * dim) * dim;
- SkPMFloat color(0,0,0,0);
+ // We don't care which SkPMFloat bias we use here, so we'll pick 255,
+ // which makes FromOpaqueColor() and round() a little faster.
+ typedef SkPMFloat<255> PMFloat;
+ PMFloat color(0,0,0,0);
for (int x = 0; x < 2; ++x) {
const int ix = colorToIndex[x][r];
@@ -61,16 +64,16 @@ void color_cube_filter_span(const SkPMColor src[],
const SkColor lutColor10 = colorCube[ix + i10];
const SkColor lutColor11 = colorCube[ix + i11];
- Sk4f sum = SkPMFloat::FromOpaqueColor(lutColor00) * g0b0;
- sum = sum + SkPMFloat::FromOpaqueColor(lutColor01) * g0b1;
- sum = sum + SkPMFloat::FromOpaqueColor(lutColor10) * g1b0;
- sum = sum + SkPMFloat::FromOpaqueColor(lutColor11) * g1b1;
+ Sk4f sum = PMFloat::FromOpaqueColor(lutColor00) * g0b0;
+ sum = sum + PMFloat::FromOpaqueColor(lutColor01) * g0b1;
+ sum = sum + PMFloat::FromOpaqueColor(lutColor10) * g1b0;
+ sum = sum + PMFloat::FromOpaqueColor(lutColor11) * g1b1;
color = color + sum * Sk4f((float)colorToFactors[x][r]);
}
if (a != 255) {
- color = color * Sk4f(a * 1.0f/255);
+ color = color * Sk4f(a * (1.0f/255));
}
dst[i] = color.round();

Powered by Google App Engine
This is Rietveld 408576698