f
This commit is contained in:
parent
8813d61dec
commit
6b78fca0dd
1 changed files with 6 additions and 6 deletions
|
@ -56,13 +56,11 @@ proc toPremultipliedAlpha*(data: var seq[ColorRGBA | ColorRGBX]) {.raises: [].}
|
||||||
oddMask = mm_set1_epi16(cast[int16](0xff00))
|
oddMask = mm_set1_epi16(cast[int16](0xff00))
|
||||||
div255 = mm_set1_epi16(cast[int16](0x8081))
|
div255 = mm_set1_epi16(cast[int16](0x8081))
|
||||||
|
|
||||||
for j in countup(i, data.len - 4, 4):
|
for _ in countup(i, data.len - 4, 4):
|
||||||
var
|
var
|
||||||
color = mm_loadu_si128(data[j].addr)
|
color = mm_loadu_si128(data[i].addr)
|
||||||
alpha = mm_and_si128(color, alphaMask)
|
alpha = mm_and_si128(color, alphaMask)
|
||||||
|
if mm_movemask_epi8(mm_cmpeq_epi16(alpha, alphaMask)) != 0xffff:
|
||||||
let eqOpaque = mm_cmpeq_epi16(alpha, alphaMask)
|
|
||||||
if mm_movemask_epi8(eqOpaque) != 0xffff:
|
|
||||||
# If not all of the alpha values are 255, premultiply
|
# If not all of the alpha values are 255, premultiply
|
||||||
var
|
var
|
||||||
colorEven = mm_slli_epi16(color, 8)
|
colorEven = mm_slli_epi16(color, 8)
|
||||||
|
@ -81,8 +79,10 @@ proc toPremultipliedAlpha*(data: var seq[ColorRGBA | ColorRGBX]) {.raises: [].}
|
||||||
mm_and_si128(alpha, alphaMask), mm_and_si128(color, notAlphaMask)
|
mm_and_si128(alpha, alphaMask), mm_and_si128(color, notAlphaMask)
|
||||||
)
|
)
|
||||||
|
|
||||||
mm_storeu_si128(data[j].addr, color)
|
mm_storeu_si128(data[i].addr, color)
|
||||||
|
|
||||||
i += 4
|
i += 4
|
||||||
|
|
||||||
# Convert whatever is left
|
# Convert whatever is left
|
||||||
for j in i ..< data.len:
|
for j in i ..< data.len:
|
||||||
var c = data[j]
|
var c = data[j]
|
||||||
|
|
Loading…
Reference in a new issue