1 # HG changeset patch |
1 # HG changeset patch |
2 # Parent 83da7ee18178639b2a89d5e21f78e190e4e72d7e |
2 # Parent 9db312f823881c04c5c16a7623df08cf6aef371d |
3 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 |
3 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 |
4 |
4 |
5 diff -r 83da7ee18178 gfx/2d/DrawTargetSkia.cpp |
5 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp |
6 --- a/gfx/2d/DrawTargetSkia.cpp Mon Jul 22 00:00:00 2019 +0200 |
6 --- a/gfx/2d/DrawTargetSkia.cpp |
7 +++ b/gfx/2d/DrawTargetSkia.cpp Wed Jan 08 12:17:44 2020 +0100 |
7 +++ b/gfx/2d/DrawTargetSkia.cpp |
8 @@ -136,8 +136,7 @@ |
8 @@ -131,18 +131,17 @@ static IntRect CalculateSurfaceBounds(co |
|
9 Rect sampledBounds = inverse.TransformBounds(*aBounds); |
|
10 if (!sampledBounds.ToIntRect(&bounds)) { |
|
11 return surfaceBounds; |
|
12 } |
|
13 |
9 return surfaceBounds.Intersect(bounds); |
14 return surfaceBounds.Intersect(bounds); |
10 } |
15 } |
11 |
16 |
12 -static const int kARGBAlphaOffset = |
17 -static const int kARGBAlphaOffset = |
13 - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; |
18 - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; |
14 +static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; |
19 +static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; |
15 |
20 |
16 static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, |
21 static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, |
17 const int32_t aStride, SurfaceFormat aFormat) { |
22 const int32_t aStride, SurfaceFormat aFormat) { |
18 diff -r 83da7ee18178 gfx/2d/Types.h |
23 if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { |
19 --- a/gfx/2d/Types.h Mon Jul 22 00:00:00 2019 +0200 |
24 return true; |
20 +++ b/gfx/2d/Types.h Wed Jan 08 12:17:44 2020 +0100 |
25 } |
21 @@ -86,15 +86,8 @@ |
26 // We should've initialized the data to be opaque already |
|
27 // On debug builds, verify that this is actually true. |
|
28 diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h |
|
29 --- a/gfx/2d/Types.h |
|
30 +++ b/gfx/2d/Types.h |
|
31 @@ -82,25 +82,18 @@ enum class SurfaceFormat : int8_t { |
|
32 Depth, |
|
33 |
|
34 // This represents the unknown format. |
|
35 UNKNOWN, |
|
36 |
22 // The following values are endian-independent synonyms. The _UINT32 suffix |
37 // The following values are endian-independent synonyms. The _UINT32 suffix |
23 // indicates that the name reflects the layout when viewed as a uint32_t |
38 // indicates that the name reflects the layout when viewed as a uint32_t |
24 // value. |
39 // value. |
25 -#if MOZ_LITTLE_ENDIAN |
40 -#if MOZ_LITTLE_ENDIAN() |
26 A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB |
41 A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB |
27 X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB |
42 X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB |
28 -#elif MOZ_BIG_ENDIAN |
43 -#elif MOZ_BIG_ENDIAN() |
29 - A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB |
44 - A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB |
30 - X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB |
45 - X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB |
31 -#else |
46 -#else |
32 -# error "bad endianness" |
47 -# error "bad endianness" |
33 -#endif |
48 -#endif |
34 |
49 |
35 // The following values are OS and endian-independent synonyms. |
50 // The following values are OS and endian-independent synonyms. |
36 // |
51 // |
37 diff -r 83da7ee18178 gfx/skia/skia/third_party/skcms/skcms.cc |
52 // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we |
38 --- a/gfx/skia/skia/third_party/skcms/skcms.cc Mon Jul 22 00:00:00 2019 +0200 |
53 // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. |
39 +++ b/gfx/skia/skia/third_party/skcms/skcms.cc Wed Jan 08 12:17:44 2020 +0100 |
54 OS_RGBA = A8R8G8B8_UINT32, |
40 @@ -30,6 +30,8 @@ |
55 OS_RGBX = X8R8G8B8_UINT32 |
|
56 }; |
|
57 diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc |
|
58 --- a/gfx/skia/skia/third_party/skcms/skcms.cc |
|
59 +++ b/gfx/skia/skia/third_party/skcms/skcms.cc |
|
60 @@ -25,16 +25,18 @@ |
|
61 // it'd be a lot slower. But we want all those headers included so we |
|
62 // can use their features after runtime checks later. |
|
63 #include <smmintrin.h> |
|
64 #include <avxintrin.h> |
|
65 #include <avx2intrin.h> |
41 #include <avx512fintrin.h> |
66 #include <avx512fintrin.h> |
42 #include <avx512dqintrin.h> |
67 #include <avx512dqintrin.h> |
43 #endif |
68 #endif |
44 +#else |
69 +#else |
45 + #define SKCMS_PORTABLE |
70 + #define SKCMS_PORTABLE |
46 #endif |
71 #endif |
47 |
72 |
48 // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. |
73 // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. |
49 @@ -280,20 +282,28 @@ |
74 // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. |
|
75 // |
|
76 // Please do not use sizeof() directly, and size_t only when required. |
|
77 // (We have no way of enforcing these requests...) |
|
78 #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) |
|
79 @@ -275,30 +277,38 @@ enum { |
|
80 skcms_Signature_sf32 = 0x73663332, |
|
81 // XYZ is also a PCS signature, so it's defined in skcms.h |
|
82 // skcms_Signature_XYZ = 0x58595A20, |
|
83 }; |
|
84 |
50 static uint16_t read_big_u16(const uint8_t* ptr) { |
85 static uint16_t read_big_u16(const uint8_t* ptr) { |
51 uint16_t be; |
86 uint16_t be; |
52 memcpy(&be, ptr, sizeof(be)); |
87 memcpy(&be, ptr, sizeof(be)); |
53 -#if defined(_MSC_VER) |
88 -#if defined(_MSC_VER) |
54 +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |
89 +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |