diff -r a9cd24eaa361 -r 7fa561e5d7c7 mozilla-bmo1610814.patch --- a/mozilla-bmo1610814.patch Sat Mar 07 09:48:10 2020 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - -# HG changeset patch -# User Andrew Osmond -# Date 1579706360 0 -# Node ID b3d8b08265b800165d684281d19ac845a8ff9a66 -# Parent 50c371b37a9fcd994a5866db73bd0d078e19f95d -Bug 1610814 - Fix NEON compile error with gcc and RGB unpacking. r=lsalzman - -This patch makes us use the correct intrinsic for loading a uint8x16 -register. It is not entirely clear why clang accepts this without -complaint but beyond the types, it should be equivalent. - -Differential Revision: https://phabricator.services.mozilla.com/D60667 - -diff --git a/gfx/2d/SwizzleNEON.cpp b/gfx/2d/SwizzleNEON.cpp ---- a/gfx/2d/SwizzleNEON.cpp -+++ b/gfx/2d/SwizzleNEON.cpp -@@ -407,25 +407,25 @@ void UnpackRowRGB24_NEON(const uint8_t* - } - - uint8x16_t alpha = vreinterpretq_u8_u32(vdupq_n_u32(0xFF000000)); - - // Process all 4-pixel chunks as one vector. - src -= 4 * 3; - dst -= 4 * 4; - while (src >= aSrc) { -- uint8x16_t px = vld1q_u16(reinterpret_cast(src)); -+ uint8x16_t px = vld1q_u8(src); - // G2R2B1G1 R1B0G0R0 -> X1R1G1B1 X0R0G0B0 - uint8x8_t pxlo = vtbl1_u8(vget_low_u8(px), masklo); - // B3G3R3B2 G2R2B1G1 -> X3R3G3B3 X2R2G2B2 - uint8x8_t pxhi = - vtbl1_u8(vext_u8(vget_low_u8(px), vget_high_u8(px), 4), maskhi); - px = vcombine_u8(pxlo, pxhi); - px = vorrq_u8(px, alpha); -- vst1q_u16(reinterpret_cast(dst), px); -+ vst1q_u8(dst, px); - src -= 4 * 3; - dst -= 4 * 4; - } - } - - // Force instantiation of swizzle variants here. - template void UnpackRowRGB24_NEON(const uint8_t*, uint8_t*, int32_t); - template void UnpackRowRGB24_NEON(const uint8_t*, uint8_t*, int32_t); -