Bug#888898: firefox: Please add patch for big-endian support
Source: firefox
Version: 59.0~b4-1
Severity: normal
Tags: patch
User: debian-powerpc@lists.debian.org
Usertags: powerpc ppc64
Hello!
src:firefox currently FTBFS on big-endian powerpc/ppc64 because skia
needs to be patched to support big-endian systems [1]:
n file included from /<<PKGBUILDDIR>>/gfx/skia/skia/src/core/SkRasterPipeline.h:11:0,
from /<<PKGBUILDDIR>>/gfx/skia/skia/src/core/SkOpts.h:12,
from /<<PKGBUILDDIR>>/gfx/2d/ConvolutionFilter.cpp:11:
/<<PKGBUILDDIR>>/gfx/skia/skia/include/core/SkImageInfo.h:86:6: error: #error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
#error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
^~~~~
This is achieved by applying the attached patch which I have taken from
the Firefox package in Fedora [2].
Adrian
> [1] https://buildd.debian.org/status/fetch.php?pkg=firefox&arch=ppc64&ver=59.0%7Eb4-1&stamp=1517354143&raw=0
> [2] https://koji.fedoraproject.org/koji/buildinfo?buildID=1020385
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
diff -up firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h
--- firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian 2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h 2017-09-29 17:25:04.651876330 +0200
@@ -31,7 +31,7 @@
*
* Here we enforce this constraint.
*/
-
+/*
#ifdef SK_CPU_BENDIAN
#define SK_RGBA_R32_SHIFT 24
#define SK_RGBA_G32_SHIFT 16
@@ -43,6 +43,7 @@
#define SK_BGRA_R32_SHIFT 8
#define SK_BGRA_A32_SHIFT 0
#else
+*/
#define SK_RGBA_R32_SHIFT 0
#define SK_RGBA_G32_SHIFT 8
#define SK_RGBA_B32_SHIFT 16
@@ -52,7 +53,7 @@
#define SK_BGRA_G32_SHIFT 8
#define SK_BGRA_R32_SHIFT 16
#define SK_BGRA_A32_SHIFT 24
-#endif
+/*#endif*/
#if defined(SK_PMCOLOR_IS_RGBA) && defined(SK_PMCOLOR_IS_BGRA)
#error "can't define PMCOLOR to be RGBA and BGRA"
diff -up firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h
--- firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian 2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h 2017-09-29 17:25:04.651876330 +0200
@@ -83,7 +83,8 @@ enum SkColorType {
#elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
kN32_SkColorType = kRGBA_8888_SkColorType,
#else
- #error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
+ //#error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
+ kN32_SkColorType = kBGRA_8888_SkColorType
#endif
};
diff -up firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h.big-endian firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h
--- firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h.big-endian 2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h 2017-09-29 17:25:04.652876327 +0200
@@ -74,8 +74,13 @@ static inline GrColor GrColorPackA4(unsi
* Since premultiplied means that alpha >= color, we construct a color with
* each component==255 and alpha == 0 to be "illegal"
*/
-#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
+//Just for big endian platforms, little has: (~(0xFF << GrColor_SHIFT_A))
+#ifdef SK_CPU_BENDIAN
+#define GrColor_ILLEGAL 0xFFFFFF00
+#else
+#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
+#endif
#define GrColor_WHITE 0xFFFFFFFF
#define GrColor_TRANSPARENT_BLACK 0x0
diff -up firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h
--- firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian 2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h 2017-09-29 17:25:04.652876327 +0200
@@ -326,15 +326,13 @@ enum GrPixelConfig {
static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1;
// Aliases for pixel configs that match skia's byte order.
-#ifndef SK_CPU_LENDIAN
- #error "Skia gpu currently assumes little endian"
-#endif
#if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
#elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
static const GrPixelConfig kSkia8888_GrPixelConfig = kRGBA_8888_GrPixelConfig;
#else
- #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format."
+ static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
+ static const GrPixelConfig kSkiaGamma8888_GrPixelConfig = kSBGRA_8888_GrPixelConfig;
#endif
// Returns true if the pixel config is a GPU-specific compressed format
Reply to: