mozilla-bmo1504834-part1.patch
changeset 1129 146af4f081b9
parent 1123 7fa561e5d7c7
child 1180 d76083122710
equal deleted inserted replaced
1116:52b1745787cf 1129:146af4f081b9
     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__
    77      return __builtin_bswap32(be);
   112      return __builtin_bswap32(be);
    78 +    #endif
   113 +    #endif
    79  #endif
   114  #endif
    80  }
   115  }
    81  
   116  
       
   117  static int32_t read_big_i32(const uint8_t* ptr) {
       
   118      return (int32_t)read_big_u32(ptr);
       
   119  }
       
   120  
       
   121  static float read_big_fixed(const uint8_t* ptr) {