* mozilla-bmo1504834-part1.patch
* mozilla-bmo1504834-part2.patch * mozilla-bmo1504834-part3.patch * mozilla-bmo1512162.patch OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=766
This commit is contained in:
parent
0c3a6afdc4
commit
c460d1e56f
@ -36,13 +36,14 @@ Thu Sep 5 13:02:39 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
|||||||
Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
- added a bunch of patches mainly for big endian platforms
|
- added a bunch of patches mainly for big endian platforms
|
||||||
* mozilla-bmo1504834-part1.patch (currently unused as it breaks LE)
|
* mozilla-bmo1504834-part1.patch
|
||||||
* mozilla-bmo1504834-part2.patch (currently unused as it breaks LE)
|
* mozilla-bmo1504834-part2.patch
|
||||||
* mozilla-bmo1504834-part3.patch (currently unused as it breaks LE)
|
* mozilla-bmo1504834-part3.patch
|
||||||
* mozilla-bmo1511604.patch
|
* mozilla-bmo1511604.patch
|
||||||
* mozilla-bmo1554971.patch
|
* mozilla-bmo1554971.patch
|
||||||
* mozilla-bmo1573381.patch
|
* mozilla-bmo1573381.patch
|
||||||
* mozilla-nestegg-big-endian.patch
|
* mozilla-nestegg-big-endian.patch
|
||||||
|
* mozilla-bmo1512162.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 30 20:49:11 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
Fri Aug 30 20:49:11 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
@ -83,7 +83,7 @@ BuildRequires: makeinfo
|
|||||||
BuildRequires: mozilla-nspr-devel >= 4.21
|
BuildRequires: mozilla-nspr-devel >= 4.21
|
||||||
BuildRequires: mozilla-nss-devel >= 3.45
|
BuildRequires: mozilla-nss-devel >= 3.45
|
||||||
BuildRequires: nasm >= 2.13
|
BuildRequires: nasm >= 2.13
|
||||||
BuildRequires: nodejs >= 8.11
|
BuildRequires: nodejs8 >= 8.11
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel
|
||||||
BuildRequires: python2-xml
|
BuildRequires: python2-xml
|
||||||
BuildRequires: python3 >= 3.5
|
BuildRequires: python3 >= 3.5
|
||||||
@ -137,7 +137,7 @@ License: MPL-2.0
|
|||||||
Group: Productivity/Networking/Web/Browsers
|
Group: Productivity/Networking/Web/Browsers
|
||||||
Url: http://www.mozilla.org/
|
Url: http://www.mozilla.org/
|
||||||
%if !%{with only_print_mozconfig}
|
%if !%{with only_print_mozconfig}
|
||||||
Source: http://ftp.mozilla.org/pub/firefox/releases/%{version}%{orig_suffix}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz
|
Source: http://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz
|
||||||
Source1: MozillaFirefox.desktop
|
Source1: MozillaFirefox.desktop
|
||||||
Source2: MozillaFirefox-rpmlintrc
|
Source2: MozillaFirefox-rpmlintrc
|
||||||
Source3: mozilla.sh.in
|
Source3: mozilla.sh.in
|
||||||
@ -184,6 +184,7 @@ Patch19: mozilla-bmo1504834-part3.patch
|
|||||||
Patch20: mozilla-bmo1511604.patch
|
Patch20: mozilla-bmo1511604.patch
|
||||||
Patch21: mozilla-bmo1554971.patch
|
Patch21: mozilla-bmo1554971.patch
|
||||||
Patch22: mozilla-nestegg-big-endian.patch
|
Patch22: mozilla-nestegg-big-endian.patch
|
||||||
|
Patch23: mozilla-bmo1512162.patch
|
||||||
# Firefox/browser
|
# Firefox/browser
|
||||||
Patch101: firefox-kde.patch
|
Patch101: firefox-kde.patch
|
||||||
Patch102: firefox-branded-icons.patch
|
Patch102: firefox-branded-icons.patch
|
||||||
@ -305,7 +306,7 @@ cd $RPM_BUILD_DIR/%{source_prefix}
|
|||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
%ifarch s390x
|
%ifarch s390x ppc64
|
||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
@ -313,12 +314,13 @@ cd $RPM_BUILD_DIR/%{source_prefix}
|
|||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
#%patch17 -p1
|
%patch17 -p1
|
||||||
#%patch18 -p1
|
%patch18 -p1
|
||||||
#%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
|
%patch23 -p1
|
||||||
# Firefox
|
# Firefox
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
@ -446,7 +448,7 @@ ac_add_options --with-arch=armv7-a
|
|||||||
ac_add_options --disable-webrtc
|
ac_add_options --disable-webrtc
|
||||||
%endif
|
%endif
|
||||||
# mitigation/workaround for bmo#1512162
|
# mitigation/workaround for bmo#1512162
|
||||||
%ifarch ppc64le
|
%ifarch ppc64le s390x
|
||||||
ac_add_options --enable-optimize="-O1"
|
ac_add_options --enable-optimize="-O1"
|
||||||
%endif
|
%endif
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
@ -485,7 +487,7 @@ make -C browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
|
|||||||
grep amazondotcom dist/firefox/browser/omni.ja
|
grep amazondotcom dist/firefox/browser/omni.ja
|
||||||
# copy tree into RPM_BUILD_ROOT
|
# copy tree into RPM_BUILD_ROOT
|
||||||
mkdir -p %{buildroot}%{progdir}
|
mkdir -p %{buildroot}%{progdir}
|
||||||
cp -rf $RPM_BUILD_DIR/obj/dist/firefox/* %{buildroot}%{progdir}
|
cp -rf $RPM_BUILD_DIR/obj/dist/%{progname}/* %{buildroot}%{progdir}
|
||||||
mkdir -p %{buildroot}%{progdir}/distribution/extensions
|
mkdir -p %{buildroot}%{progdir}/distribution/extensions
|
||||||
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
|
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
|
||||||
# install gre prefs
|
# install gre prefs
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
# HG changeset patch
|
# HG changeset patch
|
||||||
# Parent 548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
|
# Parent 6fa4b62427433e8f445d05c557e5db096667d880
|
||||||
Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla)
|
Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla)
|
||||||
has no interest in maintaining big endian.
|
has no interest in maintaining big endian.
|
||||||
So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes
|
So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes
|
||||||
out again, we transform back to BE.
|
out again, we transform back to BE.
|
||||||
|
|
||||||
diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
|
diff --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp
|
||||||
--- a/gfx/2d/ConvolutionFilter.cpp Mon Jul 22 16:57:54 2019 +0200
|
--- a/gfx/2d/ConvolutionFilter.cpp
|
||||||
+++ b/gfx/2d/ConvolutionFilter.cpp Thu Jul 25 14:27:59 2019 +0200
|
+++ b/gfx/2d/ConvolutionFilter.cpp
|
||||||
@@ -35,9 +35,38 @@
|
@@ -30,32 +30,79 @@ bool ConvolutionFilter::GetFilterOffsetA
|
||||||
|
int32_t* aResultLength) {
|
||||||
|
if (aRowIndex >= mFilter->numValues()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,7 +28,7 @@ diff -r 548d0a2f3a22 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) {
|
||||||
+#ifdef 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,19 +45,23 @@ diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
|
|||||||
+
|
+
|
||||||
SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha);
|
SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha);
|
||||||
+
|
+
|
||||||
+#ifdef 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
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst,
|
void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst,
|
||||||
@@ -49,8 +78,26 @@
|
int32_t aRowIndex, int32_t aRowSize,
|
||||||
|
bool aHasAlpha) {
|
||||||
|
MOZ_ASSERT(aRowIndex < mFilter->numValues());
|
||||||
|
|
||||||
|
int32_t filterOffset;
|
||||||
int32_t filterLength;
|
int32_t filterLength;
|
||||||
auto filterValues =
|
auto filterValues =
|
||||||
mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
|
mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
|
||||||
+
|
+
|
||||||
+#ifdef 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 +71,7 @@ diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
|
|||||||
SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
|
SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
|
||||||
aHasAlpha);
|
aHasAlpha);
|
||||||
+
|
+
|
||||||
+#ifdef 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++) {
|
||||||
@ -74,10 +83,20 @@ diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
|
/* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
|
||||||
diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
|
* SkBitmapScaler/SkResizeFilter::computeFactors. It is governed by Skia's
|
||||||
--- a/gfx/skia/skia/include/core/SkPreConfig.h Mon Jul 22 16:57:54 2019 +0200
|
* BSD-style license (see gfx/skia/LICENSE) and the following copyright:
|
||||||
+++ b/gfx/skia/skia/include/core/SkPreConfig.h Thu Jul 25 14:27:59 2019 +0200
|
* Copyright (c) 2015 Google Inc.
|
||||||
@@ -73,7 +73,7 @@
|
*/
|
||||||
|
bool ConvolutionFilter::ComputeResizeFilter(ResizeMethod aResizeMethod,
|
||||||
|
diff --git a/gfx/skia/skia/include/core/SkPreConfig.h b/gfx/skia/skia/include/core/SkPreConfig.h
|
||||||
|
--- a/gfx/skia/skia/include/core/SkPreConfig.h
|
||||||
|
+++ b/gfx/skia/skia/include/core/SkPreConfig.h
|
||||||
|
@@ -68,17 +68,17 @@
|
||||||
|
#define SK_CPU_BENDIAN
|
||||||
|
#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||||
|
#define SK_CPU_LENDIAN
|
||||||
|
#elif defined(__sparc) || defined(__sparc__) || \
|
||||||
|
defined(_POWER) || defined(__powerpc__) || \
|
||||||
defined(__ppc__) || defined(__hppa) || \
|
defined(__ppc__) || defined(__hppa) || \
|
||||||
defined(__PPC__) || defined(__PPC64__) || \
|
defined(__PPC__) || defined(__PPC64__) || \
|
||||||
defined(_MIPSEB) || defined(__ARMEB__) || \
|
defined(_MIPSEB) || defined(__ARMEB__) || \
|
||||||
@ -86,3 +105,8 @@ diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
|
|||||||
(defined(__sh__) && defined(__BIG_ENDIAN__)) || \
|
(defined(__sh__) && defined(__BIG_ENDIAN__)) || \
|
||||||
(defined(__ia64) && defined(__BIG_ENDIAN__))
|
(defined(__ia64) && defined(__BIG_ENDIAN__))
|
||||||
#define SK_CPU_BENDIAN
|
#define SK_CPU_BENDIAN
|
||||||
|
#else
|
||||||
|
#define SK_CPU_LENDIAN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -3,36 +3,42 @@
|
|||||||
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
|
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
|
||||||
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
|
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
|
||||||
|
|
||||||
diff -r aecb4600e5da -r 49f25e4c2fd1 gfx/skia/skia/include/private/SkNx.h
|
diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
|
||||||
--- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
|
--- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
|
||||||
+++ b/gfx/skia/skia/include/private/SkNx.h Fri Aug 23 15:00:43 2019 +0200
|
+++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
|
||||||
@@ -238,7 +238,14 @@
|
@@ -238,7 +238,18 @@
|
||||||
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
|
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
|
||||||
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
|
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
|
||||||
|
|
||||||
- AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
|
|
||||||
+ // On Big endian the commented out variant doesn't work,
|
+ // On Big endian the commented out variant doesn't work,
|
||||||
+ // and honestly, I have no idea why it exists in the first place.
|
+ // and honestly, I have no idea why it exists in the first place.
|
||||||
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
|
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
|
||||||
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
|
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
|
||||||
+ // cutting off the wrong half again.
|
+ // cutting off the wrong half again.
|
||||||
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
|
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
|
||||||
+ // AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
|
+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
|
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
|
||||||
|
+#else
|
||||||
|
AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
|
||||||
|
+#endif
|
||||||
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
|
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
|
||||||
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
|
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
|
||||||
|
|
||||||
diff -r aecb4600e5da -r 49f25e4c2fd1 gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
|
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
|
||||||
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Fri Aug 23 15:00:43 2019 +0200
|
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
|
||||||
@@ -203,7 +203,9 @@
|
@@ -203,7 +203,13 @@
|
||||||
// ~~~>
|
// ~~~>
|
||||||
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
||||||
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
||||||
- return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
|
|
||||||
+
|
+
|
||||||
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
|
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
|
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
|
||||||
|
+#else
|
||||||
|
return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
|
||||||
|
+#endif
|
||||||
+ d.approxMulDiv255(aa.inv());
|
+ d.approxMulDiv255(aa.inv());
|
||||||
};
|
};
|
||||||
while (h --> 0) {
|
while (h --> 0) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# Date 1543674229 0
|
# Date 1543674229 0
|
||||||
# Sat Dec 01 14:23:49 2018 +0000
|
# Sat Dec 01 14:23:49 2018 +0000
|
||||||
# Node ID 0309ff19e46b126c527e633518d7de8570442114
|
# Node ID 0309ff19e46b126c527e633518d7de8570442114
|
||||||
# Parent 53107afbc21ec78e7ac46d37af212505f2032d5d
|
# Parent ba2c9b0542c95cc5ee26c264e8338fc9ba94c958
|
||||||
Bug 1511604 - Swizzle YCbCr->RGB data on big-endian machines
|
Bug 1511604 - Swizzle YCbCr->RGB data on big-endian machines
|
||||||
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1511604
|
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1511604
|
||||||
|
|
||||||
@ -11,10 +11,12 @@ This is very closely related to mozilla-bmo1504834
|
|||||||
|
|
||||||
Again, input for skia is swizzled to LE, as skia only understands LE.
|
Again, input for skia is swizzled to LE, as skia only understands LE.
|
||||||
|
|
||||||
diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp
|
diff --git a/gfx/ycbcr/YCbCrUtils.cpp b/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
--- a/gfx/ycbcr/YCbCrUtils.cpp Wed Nov 07 04:50:21 2018 +0000
|
--- a/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
+++ b/gfx/ycbcr/YCbCrUtils.cpp Sat Dec 01 14:23:49 2018 +0000
|
+++ b/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
@@ -3,7 +3,9 @@
|
@@ -1,14 +1,16 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
@ -24,11 +26,21 @@ diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp
|
|||||||
|
|
||||||
#include "YCbCrUtils.h"
|
#include "YCbCrUtils.h"
|
||||||
#include "yuv_convert.h"
|
#include "yuv_convert.h"
|
||||||
@@ -236,6 +238,13 @@
|
#include "ycbcr_to_rgb565.h"
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace gfx {
|
||||||
|
|
||||||
|
@@ -231,16 +233,23 @@ ConvertYCbCrToRGB(const layers::PlanarYC
|
||||||
|
srcData.mPicSize.width,
|
||||||
|
srcData.mPicSize.height,
|
||||||
|
srcData.mYStride,
|
||||||
|
srcData.mCbCrStride,
|
||||||
|
aStride,
|
||||||
yuvtype,
|
yuvtype,
|
||||||
srcData.mYUVColorSpace);
|
srcData.mYUVColorSpace);
|
||||||
}
|
}
|
||||||
+#ifdef MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN
|
||||||
+ // libyuv makes endian-correct result, which needs to be swapped to BGRX
|
+ // libyuv makes endian-correct result, which needs to be swapped to BGRX
|
||||||
+ if (aDestFormat != SurfaceFormat::R5G6B5_UINT16)
|
+ if (aDestFormat != SurfaceFormat::R5G6B5_UINT16)
|
||||||
+ gfx::SwizzleData(aDestBuffer, aStride, gfx::SurfaceFormat::X8R8G8B8,
|
+ gfx::SwizzleData(aDestBuffer, aStride, gfx::SurfaceFormat::X8R8G8B8,
|
||||||
@ -38,11 +50,21 @@ diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -257,6 +266,12 @@
|
ConvertYCbCrAToARGB(const uint8_t* aSrcY,
|
||||||
|
const uint8_t* aSrcU,
|
||||||
|
const uint8_t* aSrcV,
|
||||||
|
const uint8_t* aSrcA,
|
||||||
|
int aSrcStrideYA, int aSrcStrideUV,
|
||||||
|
@@ -252,12 +261,18 @@ ConvertYCbCrAToARGB(const uint8_t* aSrcY
|
||||||
|
aSrcV,
|
||||||
|
aSrcA,
|
||||||
|
aDstARGB,
|
||||||
|
aWidth,
|
||||||
|
aHeight,
|
||||||
aSrcStrideYA,
|
aSrcStrideYA,
|
||||||
aSrcStrideUV,
|
aSrcStrideUV,
|
||||||
aDstStrideARGB);
|
aDstStrideARGB);
|
||||||
+#ifdef MOZ_BIG_ENDIAN
|
+#if MOZ_BIG_ENDIAN
|
||||||
+ // libyuv makes endian-correct result, which needs to be swapped to BGRA
|
+ // libyuv makes endian-correct result, which needs to be swapped to BGRA
|
||||||
+ gfx::SwizzleData(aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::A8R8G8B8,
|
+ gfx::SwizzleData(aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::A8R8G8B8,
|
||||||
+ aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::B8G8R8A8,
|
+ aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::B8G8R8A8,
|
||||||
@ -51,4 +73,4 @@ diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace gfx
|
} // namespace gfx
|
||||||
|
} // namespace mozilla
|
||||||
|
34
mozilla-bmo1512162.patch
Normal file
34
mozilla-bmo1512162.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent e5858dc7ab007042436496f7cfb9a5abf10f5082
|
||||||
|
This fixes a broken build for gcc < 9 on ppc64le.
|
||||||
|
This patch can be removed for newer gcc-versions.
|
||||||
|
|
||||||
|
diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp
|
||||||
|
--- a/js/xpconnect/src/XPCWrappedNative.cpp Thu Nov 29 10:07:29 2018 +0100
|
||||||
|
+++ b/js/xpconnect/src/XPCWrappedNative.cpp Tue Sep 10 12:42:13 2019 +0200
|
||||||
|
@@ -1092,7 +1092,11 @@
|
||||||
|
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||||
|
MutableHandleValue srcp) const;
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool GatherAndConvertResults();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool GatherAndConvertResults();
|
||||||
|
|
||||||
|
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||||
|
|
||||||
|
@@ -1139,7 +1143,11 @@
|
||||||
|
|
||||||
|
~CallMethodHelper();
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool Call();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool Call();
|
||||||
|
|
||||||
|
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
|
||||||
|
void trace(JSTracer* aTrc);
|
Loading…
x
Reference in New Issue
Block a user