1
0

- big endian fixes

* mozilla-bmo1610814.patch (boo#1164845, bmo#1610814)
    (bmo#1614535, boo#1164646)

OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=807
This commit is contained in:
Wolfgang Rosenauer 2020-02-26 08:14:44 +00:00 committed by Git OBS Bridge
parent b72b8e1049
commit 0844347457
4 changed files with 13 additions and 8 deletions

View File

@ -1,8 +1,13 @@
-------------------------------------------------------------------
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> Tue Feb 25 14:17:00 UTC 2020 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix build on aarch64/armv7 with: - Fix build on aarch64/armv7 with:
* mozilla-bmo1610814.patch - boo#1164845 * 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>
@ -13,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
------------------------------------------------------------------- -------------------------------------------------------------------

View File

@ -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++) {

View File

@ -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.

View File

@ -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);