author | Wolfgang Rosenauer <wr@rosenauer.org> |
Fri, 13 Oct 2023 11:06:11 +0200 | |
branch | firefox118 |
changeset 1195 | 78bbadb03249 |
parent 1190 | 2a24a948b5cf |
permissions | -rw-r--r-- |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
1 |
# HG changeset patch |
1190 | 2 |
# Parent 9fcbd287056a40084b1e679f787bf683b291f323 |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
3 |
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
4 |
|
1121 | 5 |
diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp |
6 |
--- a/gfx/2d/DrawTargetSkia.cpp |
|
7 |
+++ b/gfx/2d/DrawTargetSkia.cpp |
|
1190 | 8 |
@@ -156,7 +156,8 @@ static IntRect CalculateSurfaceBounds(co |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
9 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
10 |
|
1190 | 11 |
static const int kARGBAlphaOffset = |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
12 |
- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; |
1190 | 13 |
+ 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == |
14 |
+ // SurfaceFormat::B8G8R8A8 ? 3 : 0; |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
15 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
16 |
static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
17 |
const int32_t aStride, SurfaceFormat aFormat) { |
1121 | 18 |
diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h |
19 |
--- a/gfx/2d/Types.h |
|
20 |
+++ b/gfx/2d/Types.h |
|
1190 | 21 |
@@ -89,18 +89,11 @@ enum class SurfaceFormat : int8_t { |
1121 | 22 |
// This represents the unknown format. |
1180 | 23 |
UNKNOWN, // TODO: Replace uses with Maybe<SurfaceFormat>. |
1121 | 24 |
|
1190 | 25 |
-// The following values are endian-independent synonyms. The _UINT32 suffix |
26 |
-// indicates that the name reflects the layout when viewed as a uint32_t |
|
27 |
-// value. |
|
1121 | 28 |
-#if MOZ_LITTLE_ENDIAN() |
1190 | 29 |
+ // The following values are endian-independent synonyms. The _UINT32 suffix |
30 |
+ // indicates that the name reflects the layout when viewed as a uint32_t |
|
31 |
+ // value. |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
32 |
A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB |
1119 | 33 |
X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB |
1121 | 34 |
-#elif MOZ_BIG_ENDIAN() |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
35 |
- A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB |
1119 | 36 |
- X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
37 |
-#else |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
38 |
-# error "bad endianness" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
39 |
-#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
40 |
|
1119 | 41 |
// The following values are OS and endian-independent synonyms. |
42 |
// |
|
1190 | 43 |
diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/skcms.cc |
44 |
--- a/gfx/skia/skia/modules/skcms/skcms.cc |
|
45 |
+++ b/gfx/skia/skia/modules/skcms/skcms.cc |
|
46 |
@@ -30,6 +30,8 @@ |
|
1119 | 47 |
#include <avx512fintrin.h> |
48 |
#include <avx512dqintrin.h> |
|
49 |
#endif |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
50 |
+#else |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
51 |
+ #define SKCMS_PORTABLE |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
52 |
#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
53 |
|
1190 | 54 |
static bool runtime_cpu_detection = true; |
55 |
@@ -324,20 +326,28 @@ enum { |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
56 |
static uint16_t read_big_u16(const uint8_t* ptr) { |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
57 |
uint16_t be; |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
58 |
memcpy(&be, ptr, sizeof(be)); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
59 |
-#if defined(_MSC_VER) |
1190 | 60 |
- return _byteswap_ushort(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
61 |
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
62 |
+ return be; |
1190 | 63 |
#else |
64 |
- return __builtin_bswap16(be); |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
65 |
+ #if defined(_MSC_VER) |
1190 | 66 |
+ return _byteswap_ushort(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
67 |
+ #else |
1190 | 68 |
+ return __builtin_bswap16(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
69 |
+ #endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
70 |
#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
71 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
72 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
73 |
static uint32_t read_big_u32(const uint8_t* ptr) { |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
74 |
uint32_t be; |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
75 |
memcpy(&be, ptr, sizeof(be)); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
76 |
-#if defined(_MSC_VER) |
1190 | 77 |
- return _byteswap_ulong(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
78 |
+#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
79 |
+ return be; |
1190 | 80 |
#else |
81 |
- return __builtin_bswap32(be); |
|
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
82 |
+ #if defined(_MSC_VER) |
1190 | 83 |
+ return _byteswap_ulong(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
84 |
+ #else |
1190 | 85 |
+ return __builtin_bswap32(be); |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
86 |
+ #endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
87 |
#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
88 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
89 |