| Index: src/opts/SkPMFloat_neon.h
|
| diff --git a/src/opts/SkPMFloat_neon.h b/src/opts/SkPMFloat_neon.h
|
| index 780981bd9555192961950dec0813aa19fee3f69b..e5b16f5e6f25f352c217c972cdea5e982a660f30 100644
|
| --- a/src/opts/SkPMFloat_neon.h
|
| +++ b/src/opts/SkPMFloat_neon.h
|
| @@ -26,10 +26,8 @@ inline SkPMFloat::SkPMFloat(SkPMColor c) {
|
| SkASSERT(this->isValid());
|
| }
|
|
|
| -inline SkPMColor SkPMFloat::get() const {
|
| - SkASSERT(this->isValid());
|
| - float32x4_t add_half = vaddq_f32(fColors, vdupq_n_f32(0.5f));
|
| - uint32x4_t fix8_32 = vcvtq_u32_f32(add_half); // vcvtq_u32_f32 truncates, so round manually
|
| +inline SkPMColor SkPMFloat::trunc() const {
|
| + uint32x4_t fix8_32 = vcvtq_u32_f32(fColors); // vcvtq_u32_f32 truncates
|
| uint16x4_t fix8_16 = vmovn_u32(fix8_32);
|
| uint8x8_t fix8 = vmovn_u16(vcombine_u16(fix8_16, vdup_n_u16(0)));
|
| SkPMColor c = vget_lane_u32((uint32x2_t)fix8, 0);
|
| @@ -37,6 +35,11 @@ inline SkPMColor SkPMFloat::get() const {
|
| return c;
|
| }
|
|
|
| +inline SkPMColor SkPMFloat::get() const {
|
| + SkASSERT(this->isValid());
|
| + return SkPMFloat(Sk4f(0.5f) + *this).trunc();
|
| +}
|
| +
|
| inline SkPMColor SkPMFloat::clamped() const {
|
| float32x4_t add_half = vaddq_f32(fColors, vdupq_n_f32(0.5f));
|
| uint32x4_t fix8_32 = vcvtq_u32_f32(add_half); // vcvtq_u32_f32 truncates, so round manually
|
|
|