diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index e266e0a..4d2274d 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Wed Feb 26 08:12:00 UTC 2020 - Wolfgang Rosenauer + +- big endian fixes + +------------------------------------------------------------------- +Tue Feb 25 14:17:00 UTC 2020 - Guillaume GARDET + +- Fix build on aarch64/armv7 with: + * mozilla-bmo1610814.patch (boo#1164845, bmo#1610814) + ------------------------------------------------------------------- Thu Feb 20 13:40:59 UTC 2020 - Wolfgang Rosenauer @@ -7,7 +18,7 @@ Thu Feb 20 13:40:59 UTC 2020 - Wolfgang Rosenauer * Fixed Firefox unexpectedly exiting when leaving Print Preview mode (bmo#1611133) * Fixed crashes when playing encrypted content on some Linux systems - (bmo#1614535) + (bmo#1614535, boo#1164646) - start in wayland mode when running under wayland session ------------------------------------------------------------------- diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index 7c4b21a..b35095f 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -186,6 +186,7 @@ Patch19: mozilla-bmo1512162.patch Patch20: mozilla-fix-top-level-asm.patch Patch21: mozilla-bmo1504834-part4.patch Patch22: mozilla-bmo849632.patch +Patch23: mozilla-bmo1610814.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-branded-icons.patch @@ -321,6 +322,7 @@ cd $RPM_BUILD_DIR/%{srcname}-%{orig_version} %patch20 -p1 %patch21 -p1 %patch22 -p1 +%patch23 -p1 # Firefox %patch101 -p1 %patch102 -p1 diff --git a/mozilla-bmo1504834-part2.patch b/mozilla-bmo1504834-part2.patch index 1b13b21..9fe1b56 100644 --- a/mozilla-bmo1504834-part2.patch +++ b/mozilla-bmo1504834-part2.patch @@ -23,7 +23,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp + void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst, bool aHasAlpha) { -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + int outputSize = mFilter->numValues(); + + // Input size isn't handed in, so we have to calculate it quickly @@ -40,7 +40,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp + SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha); + -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + ByteSwapArray((uint8_t*)aSrc, inputSize); + ByteSwapArray(aDst, outputSize); +#endif @@ -52,7 +52,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp auto filterValues = mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); + -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + for (int filterY = 0; filterY < filterLength; filterY++) { + // Skia only knows LE, so we have to swizzle the input + ByteSwapArray(aSrc[filterY], aRowSize); @@ -62,7 +62,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst, aHasAlpha); + -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + // After skia is finished, we swizzle back to BE, in case + // the input is used again somewhere else + for (int filterY = 0; filterY < filterLength; filterY++) { diff --git a/mozilla-bmo1504834-part4.patch b/mozilla-bmo1504834-part4.patch index be11964..6bc8c2b 100644 --- a/mozilla-bmo1504834-part4.patch +++ b/mozilla-bmo1504834-part4.patch @@ -17,7 +17,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp SkCanvas::kPreserveLCDText_SaveLayerFlag | (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + // Pushing a layer where an aMask is defined produces wrong output. + // We _should_ endian swap the data, but I couldn't find a workable way to do so + // Therefore I deactivate those layers in the meantime. diff --git a/mozilla-bmo1610814.patch b/mozilla-bmo1610814.patch new file mode 100644 index 0000000..7bba079 --- /dev/null +++ b/mozilla-bmo1610814.patch @@ -0,0 +1,46 @@ + +# 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); + diff --git a/mozilla-bmo849632.patch b/mozilla-bmo849632.patch index f6dc2c7..76380b5 100644 --- a/mozilla-bmo849632.patch +++ b/mozilla-bmo849632.patch @@ -10,7 +10,7 @@ diff -r 6b017d3e9733 gfx/gl/GLContext.h BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); -+#if MOZ_BIG_ENDIAN ++#if MOZ_BIG_ENDIAN() + uint8_t* itr = (uint8_t*)pixels; + for (GLsizei i = 0; i < width * height; i++) { + NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1);