1 # HG changeset patch |
1 # HG changeset patch |
2 # Parent 051b75a600dfbf7503c3485cebfd34d4eb29be96 |
2 # Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a |
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 051b75a600df gfx/2d/DrawTargetSkia.cpp |
5 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp |
6 --- a/gfx/2d/DrawTargetSkia.cpp Fri Jul 05 12:42:44 2019 +0200 |
6 --- a/gfx/2d/DrawTargetSkia.cpp |
7 +++ b/gfx/2d/DrawTargetSkia.cpp Mon Jul 08 10:59:30 2019 +0200 |
7 +++ b/gfx/2d/DrawTargetSkia.cpp |
8 @@ -138,8 +138,7 @@ |
8 @@ -130,18 +130,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 051b75a600df gfx/2d/Types.h |
23 if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { |
19 --- a/gfx/2d/Types.h Fri Jul 05 12:42:44 2019 +0200 |
24 return true; |
20 +++ b/gfx/2d/Types.h Mon Jul 08 10:59:30 2019 +0200 |
25 } |
21 @@ -85,15 +85,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 @@ -84,25 +84,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 |
|
49 |
|
50 // The following values are OS and endian-independent synonyms. |
|
51 // |
|
52 // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we |
|
53 // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. |
|
54 OS_RGBA = A8R8G8B8_UINT32, |
|
55 OS_RGBX = X8R8G8B8_UINT32 |
34 }; |
56 }; |
35 |
57 diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc |
36 static inline int BytesPerPixel(SurfaceFormat aFormat) { |
58 --- a/gfx/skia/skia/third_party/skcms/skcms.cc |
37 diff -r 051b75a600df gfx/skia/skia/third_party/skcms/skcms.cc |
59 +++ b/gfx/skia/skia/third_party/skcms/skcms.cc |
38 --- a/gfx/skia/skia/third_party/skcms/skcms.cc Fri Jul 05 12:42:44 2019 +0200 |
60 @@ -25,16 +25,18 @@ |
39 +++ b/gfx/skia/skia/third_party/skcms/skcms.cc Mon Jul 08 10:59:30 2019 +0200 |
61 // it'd be a lot slower. But we want all those headers included so we |
40 @@ -17,6 +17,8 @@ |
62 // can use their features after runtime checks later. |
41 #include <arm_neon.h> |
63 #include <smmintrin.h> |
42 #elif defined(__SSE__) |
64 #include <avxintrin.h> |
43 #include <immintrin.h> |
65 #include <avx2intrin.h> |
|
66 #include <avx512fintrin.h> |
|
67 #include <avx512dqintrin.h> |
|
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 @@ -124,20 +126,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__ |