DescriptionSk4px: alphas() and Load[24]Alphas()
alphas() extracts the 4 alphas from an existing Sk4px as another Sk4px.
LoadNAlphas() constructs an Sk4px from N packed alphas.
In both cases, we end up with 4x repeated alphas aligned with their pixels.
alphas()
A0 R0 G0 B0 A1 R1 G1 B1 A2 R2 G2 B2 A3 R3 G3 B3
->
A0 A0 A0 A0 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3
Load4Alphas()
A0 A1 A2 A3
->
A0 A0 A0 A0 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3
Load2Alphas()
A0 A1
->
A0 A0 A0 A0 A1 A1 A1 A1 0 0 0 0 0 0 0 0
This is a 5-10% speedup for AA on Intel, and wash on ARM.
AA is still mostly dominated by the final lerp.
alphas() isn't used yet, but it's similar enough to Load[24]Alphas()
that it was easier to write all at once.
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/8a90edc2a58a4f8a4b4da73eb08e943be09538c0
Patch Set 1 #Patch Set 2 : Splat -> Load4Alphas / Load2Alphas #Patch Set 3 : Splat -> Load4Alphas / Load2Alphas #Patch Set 4 : Alpha #Patch Set 5 : comment #Patch Set 6 : tidy #Patch Set 7 : NEON impl #Patch Set 8 : Already have byte constructor #Patch Set 9 : _none #Patch Set 10 : better SSE2 #Patch Set 11 : neon too #
Messages
Total messages: 16 (7 generated)
|