forked from pool/MozillaFirefox
Accepting request 779878 from mozilla:Factory
- big endian fixes - Fix build on aarch64/armv7 with: * mozilla-bmo1610814.patch (boo#1164845, bmo#1610814) OBS-URL: https://build.opensuse.org/request/show/779878 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox?expand=0&rev=306
This commit is contained in:
commit
93a3a001b0
@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 26 08:12:00 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
- big endian fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Feb 25 14:17:00 UTC 2020 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
||||||
|
|
||||||
|
- Fix build on aarch64/armv7 with:
|
||||||
|
* mozilla-bmo1610814.patch (boo#1164845, bmo#1610814)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Feb 20 13:40:59 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
Thu Feb 20 13:40:59 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
@ -7,7 +18,7 @@ Thu Feb 20 13:40:59 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
|||||||
* Fixed Firefox unexpectedly exiting when leaving Print Preview mode
|
* Fixed Firefox unexpectedly exiting when leaving Print Preview mode
|
||||||
(bmo#1611133)
|
(bmo#1611133)
|
||||||
* Fixed crashes when playing encrypted content on some Linux systems
|
* 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
|
- start in wayland mode when running under wayland session
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
@ -186,6 +186,7 @@ Patch19: mozilla-bmo1512162.patch
|
|||||||
Patch20: mozilla-fix-top-level-asm.patch
|
Patch20: mozilla-fix-top-level-asm.patch
|
||||||
Patch21: mozilla-bmo1504834-part4.patch
|
Patch21: mozilla-bmo1504834-part4.patch
|
||||||
Patch22: mozilla-bmo849632.patch
|
Patch22: mozilla-bmo849632.patch
|
||||||
|
Patch23: mozilla-bmo1610814.patch
|
||||||
# Firefox/browser
|
# Firefox/browser
|
||||||
Patch101: firefox-kde.patch
|
Patch101: firefox-kde.patch
|
||||||
Patch102: firefox-branded-icons.patch
|
Patch102: firefox-branded-icons.patch
|
||||||
@ -321,6 +322,7 @@ cd $RPM_BUILD_DIR/%{srcname}-%{orig_version}
|
|||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
|
%patch23 -p1
|
||||||
# Firefox
|
# Firefox
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
|
@ -23,7 +23,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
|||||||
+
|
+
|
||||||
void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst,
|
void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst,
|
||||||
bool aHasAlpha) {
|
bool aHasAlpha) {
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ int outputSize = mFilter->numValues();
|
+ int outputSize = mFilter->numValues();
|
||||||
+
|
+
|
||||||
+ // Input size isn't handed in, so we have to calculate it quickly
|
+ // 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);
|
SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha);
|
||||||
+
|
+
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ ByteSwapArray((uint8_t*)aSrc, inputSize);
|
+ ByteSwapArray((uint8_t*)aSrc, inputSize);
|
||||||
+ ByteSwapArray(aDst, outputSize);
|
+ ByteSwapArray(aDst, outputSize);
|
||||||
+#endif
|
+#endif
|
||||||
@ -52,7 +52,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
|||||||
auto filterValues =
|
auto filterValues =
|
||||||
mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
|
mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
|
||||||
+
|
+
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
||||||
+ // Skia only knows LE, so we have to swizzle the input
|
+ // Skia only knows LE, so we have to swizzle the input
|
||||||
+ ByteSwapArray(aSrc[filterY], aRowSize);
|
+ ByteSwapArray(aSrc[filterY], aRowSize);
|
||||||
@ -62,7 +62,7 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
|||||||
SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
|
SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
|
||||||
aHasAlpha);
|
aHasAlpha);
|
||||||
+
|
+
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ // After skia is finished, we swizzle back to BE, in case
|
+ // After skia is finished, we swizzle back to BE, in case
|
||||||
+ // the input is used again somewhere else
|
+ // the input is used again somewhere else
|
||||||
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
||||||
|
@ -17,7 +17,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
|
|||||||
SkCanvas::kPreserveLCDText_SaveLayerFlag |
|
SkCanvas::kPreserveLCDText_SaveLayerFlag |
|
||||||
(aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
|
(aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
|
||||||
|
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ // Pushing a layer where an aMask is defined produces wrong output.
|
+ // 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
|
+ // 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.
|
+ // Therefore I deactivate those layers in the meantime.
|
||||||
|
46
mozilla-bmo1610814.patch
Normal file
46
mozilla-bmo1610814.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User Andrew Osmond <aosmond@mozilla.com>
|
||||||
|
# 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<const uint16_t*>(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<uint16_t*>(dst), px);
|
||||||
|
+ vst1q_u8(dst, px);
|
||||||
|
src -= 4 * 3;
|
||||||
|
dst -= 4 * 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force instantiation of swizzle variants here.
|
||||||
|
template void UnpackRowRGB24_NEON<false>(const uint8_t*, uint8_t*, int32_t);
|
||||||
|
template void UnpackRowRGB24_NEON<true>(const uint8_t*, uint8_t*, int32_t);
|
||||||
|
|
@ -10,7 +10,7 @@ diff -r 6b017d3e9733 gfx/gl/GLContext.h
|
|||||||
BEFORE_GL_CALL;
|
BEFORE_GL_CALL;
|
||||||
mSymbols.fReadPixels(x, y, width, height, format, type, pixels);
|
mSymbols.fReadPixels(x, y, width, height, format, type, pixels);
|
||||||
OnSyncCall();
|
OnSyncCall();
|
||||||
+#if MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN()
|
||||||
+ uint8_t* itr = (uint8_t*)pixels;
|
+ uint8_t* itr = (uint8_t*)pixels;
|
||||||
+ for (GLsizei i = 0; i < width * height; i++) {
|
+ for (GLsizei i = 0; i < width * height; i++) {
|
||||||
+ NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1);
|
+ NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user