Align scanline to multiple of 16, required for ASM
authorArmin Novak <armin.novak@thincast.com>
Wed, 15 Feb 2017 10:56:50 +0000 (11:56 +0100)
committerArmin Novak <armin.novak@thincast.com>
Wed, 15 Feb 2017 11:08:32 +0000 (12:08 +0100)
client/X11/xf_gfx.c

index 9b22905..1e47194 100644 (file)
@@ -176,8 +176,9 @@ UINT xf_OutputExpose(xfContext* xfc, UINT32 x, UINT32 y,
        return status;
 }
 
-static INLINE UINT32 x11_pad_scanline(UINT32 scanline, UINT32 inPad)
+UINT32 x11_pad_scanline(UINT32 scanline, UINT32 inPad)
 {
+       /* Ensure X11 alignment is met */
        if (inPad > 0)
        {
                const UINT32 align = inPad / 8;
@@ -187,6 +188,10 @@ static INLINE UINT32 x11_pad_scanline(UINT32 scanline, UINT32 inPad)
                        scanline += pad;
        }
 
+       /* 16 byte alingment is required for ASM optimized code */
+       if (scanline % 16)
+               scanline += 16 - scanline % 16;
+
        return scanline;
 }