Merge pull request #327 from guzba/master
float32 hit pos, faster simd unpackAlphaValues
Before ![]() (image error) Size: 4.6 KiB After ![]() (image error) Size: 4.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 5.9 KiB After ![]() (image error) Size: 5.9 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 18 KiB After ![]() (image error) Size: 18 KiB ![]() ![]() |
Before ![]() (image error) Size: 42 KiB After ![]() (image error) Size: 42 KiB ![]() ![]() |
|
@ -166,9 +166,7 @@ proc SetSat(C: Color, s: float32): Color {.inline.} =
|
||||||
result = (C - min([C.r, C.g, C.b])) * s / satC
|
result = (C - min([C.r, C.g, C.b])) * s / satC
|
||||||
|
|
||||||
proc blendNormal(backdrop, source: ColorRGBX): ColorRGBX =
|
proc blendNormal(backdrop, source: ColorRGBX): ColorRGBX =
|
||||||
if backdrop.a == 0:
|
if backdrop.a == 0 or source.a == 255:
|
||||||
return source
|
|
||||||
if source.a == 255:
|
|
||||||
return source
|
return source
|
||||||
if source.a == 0:
|
if source.a == 0:
|
||||||
return backdrop
|
return backdrop
|
||||||
|
|
|
@ -105,18 +105,7 @@ when defined(amd64) and not defined(pixieNoSimd):
|
||||||
|
|
||||||
proc unpackAlphaValues*(v: M128i): M128i {.inline, raises: [].} =
|
proc unpackAlphaValues*(v: M128i): M128i {.inline, raises: [].} =
|
||||||
## Unpack the first 32 bits into 4 rgba(0, 0, 0, value)
|
## Unpack the first 32 bits into 4 rgba(0, 0, 0, value)
|
||||||
let mask = cast[M128i]([uint8.high.uint64, 0])
|
let
|
||||||
|
a = mm_unpacklo_epi8(v, mm_setzero_si128())
|
||||||
var
|
b = mm_unpacklo_epi8(a, mm_setzero_si128())
|
||||||
i = mm_and_si128(v, mask)
|
result = mm_slli_epi32(b, 24) # Shift the values to uint32 `a`
|
||||||
j = mm_and_si128(v, mm_slli_si128(mask, 1))
|
|
||||||
k = mm_and_si128(v, mm_slli_si128(mask, 2))
|
|
||||||
l = mm_and_si128(v, mm_slli_si128(mask, 3))
|
|
||||||
|
|
||||||
# Shift the values to uint32 `a`
|
|
||||||
i = mm_slli_si128(i, 3)
|
|
||||||
j = mm_slli_si128(j, 6)
|
|
||||||
k = mm_slli_si128(k, 9)
|
|
||||||
l = mm_slli_si128(l, 12)
|
|
||||||
|
|
||||||
result = mm_or_si128(mm_or_si128(i, j), mm_or_si128(k, l))
|
|
||||||
|
|
|
@ -1247,7 +1247,7 @@ proc computeCoverage(
|
||||||
if entry.m == 0:
|
if entry.m == 0:
|
||||||
entry.b
|
entry.b
|
||||||
else:
|
else:
|
||||||
(yLine - entry.b) / entry.m
|
(yLine.float32 - entry.b) / entry.m
|
||||||
|
|
||||||
hits[numHits] = (min(x, width), entry.winding)
|
hits[numHits] = (min(x, width), entry.winding)
|
||||||
inc numHits
|
inc numHits
|
||||||
|
|
Before ![]() (image error) Size: 2.7 KiB After ![]() (image error) Size: 2.7 KiB ![]() ![]() |
Before ![]() (image error) Size: 260 KiB After ![]() (image error) Size: 260 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 8.8 KiB After ![]() (image error) Size: 8.8 KiB ![]() ![]() |
Before ![]() (image error) Size: 26 KiB After ![]() (image error) Size: 26 KiB ![]() ![]() |
Before ![]() (image error) Size: 24 KiB After ![]() (image error) Size: 24 KiB ![]() ![]() |
Before ![]() (image error) Size: 13 KiB After ![]() (image error) Size: 13 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 23 KiB After ![]() (image error) Size: 23 KiB ![]() ![]() |
Before ![]() (image error) Size: 2.4 MiB After ![]() (image error) Size: 2.4 MiB ![]() ![]() |
Before ![]() (image error) Size: 280 KiB After ![]() (image error) Size: 280 KiB ![]() ![]() |
Before ![]() (image error) Size: 644 KiB After ![]() (image error) Size: 644 KiB ![]() ![]() |
Before ![]() (image error) Size: 783 KiB After ![]() (image error) Size: 783 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.3 MiB After ![]() (image error) Size: 3.3 MiB ![]() ![]() |
Before ![]() (image error) Size: 357 KiB After ![]() (image error) Size: 357 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 14 KiB After ![]() (image error) Size: 14 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 28 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 24 KiB After ![]() (image error) Size: 24 KiB ![]() ![]() |
Before ![]() (image error) Size: 37 KiB After ![]() (image error) Size: 37 KiB ![]() ![]() |
Before ![]() (image error) Size: 29 KiB After ![]() (image error) Size: 29 KiB ![]() ![]() |
Before ![]() (image error) Size: 1.4 MiB After ![]() (image error) Size: 1.4 MiB ![]() ![]() |
Before ![]() (image error) Size: 610 KiB After ![]() (image error) Size: 610 KiB ![]() ![]() |
Before ![]() (image error) Size: 519 KiB After ![]() (image error) Size: 519 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.9 MiB After ![]() (image error) Size: 3.9 MiB ![]() ![]() |
Before ![]() (image error) Size: 43 KiB After ![]() (image error) Size: 43 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 33 KiB After ![]() (image error) Size: 33 KiB ![]() ![]() |
Before ![]() (image error) Size: 33 KiB After ![]() (image error) Size: 33 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 32 KiB After ![]() (image error) Size: 32 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.5 KiB After ![]() (image error) Size: 6.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 7.5 KiB After ![]() (image error) Size: 7.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 17 KiB After ![]() (image error) Size: 17 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 84 KiB After ![]() (image error) Size: 84 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 30 KiB After ![]() (image error) Size: 30 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 27 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 27 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 30 KiB After ![]() (image error) Size: 30 KiB ![]() ![]() |
Before ![]() (image error) Size: 30 KiB After ![]() (image error) Size: 30 KiB ![]() ![]() |
Before ![]() (image error) Size: 8.5 KiB After ![]() (image error) Size: 8.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 8.1 KiB After ![]() (image error) Size: 8.1 KiB ![]() ![]() |
Before ![]() (image error) Size: 47 KiB After ![]() (image error) Size: 47 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 38 KiB After ![]() (image error) Size: 38 KiB ![]() ![]() |
Before ![]() (image error) Size: 38 KiB After ![]() (image error) Size: 38 KiB ![]() ![]() |
Before ![]() (image error) Size: 34 KiB After ![]() (image error) Size: 34 KiB ![]() ![]() |
Before ![]() (image error) Size: 35 KiB After ![]() (image error) Size: 35 KiB ![]() ![]() |
Before ![]() (image error) Size: 36 KiB After ![]() (image error) Size: 36 KiB ![]() ![]() |
Before ![]() (image error) Size: 36 KiB After ![]() (image error) Size: 36 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.9 KiB After ![]() (image error) Size: 6.9 KiB ![]() ![]() |