This commit is contained in:
Ryan Oldenburg 2021-02-11 14:40:30 -06:00
parent 50a4687d67
commit abbcc717cd

View file

@ -668,21 +668,22 @@ proc drawUber(
else:
var x = xMin
when defined(amd64) and not defined(pixieNoSimd):
if dx.y == 0 and dy.x == 0 and blendMode.hasSimdBlender():
# Check we are not rotated before using SIMD blends
let blenderSimd = blendMode.blenderSimd()
for _ in countup(x, xMax - 4, 4):
let
srcPos = p + dx * x.float32 + dy * y.float32
sx = srcPos.x.int
sy = srcPos.y.int
backdrop = mm_loadu_si128(a.data[a.dataIndex(x, y)].addr)
source = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr)
mm_storeu_si128(
a.data[a.dataIndex(x, y)].addr,
blenderSimd(backdrop, source)
)
x += 4
if blendMode.hasSimdBlender():
if dx.x == 1 and dx.y == 0 and dy.x == 0 and dy.y == 1:
# Check we are not rotated before using SIMD blends
let blenderSimd = blendMode.blenderSimd()
for _ in countup(x, xMax - 4, 4):
let
srcPos = p + dx * x.float32 + dy * y.float32
sx = srcPos.x.int
sy = srcPos.y.int
backdrop = mm_loadu_si128(a.data[a.dataIndex(x, y)].addr)
source = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr)
mm_storeu_si128(
a.data[a.dataIndex(x, y)].addr,
blenderSimd(backdrop, source)
)
x += 4
for _ in x ..< xMax:
let