Fix implicit signedness change warnings in private includes
Both SkColorData.h and SkNx_sse.h are in include/private, but not
(currently) included by any public headers. Adding them to a public
header reveals warnings about implicit conversion changing signedness
(-Wsign-conversion), enforced in our public headers warnings check.
Bug: skia:11995
Change-Id: Iee44b24a6df031431113e2d25e42f0a8dd55a5c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/408056
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
diff --git a/include/private/SkColorData.h b/include/private/SkColorData.h
index aba610e..a59e7b0 100644
--- a/include/private/SkColorData.h
+++ b/include/private/SkColorData.h
@@ -50,7 +50,7 @@
//////////////////////////////////////////////////////////////////////////////
-#define SkASSERT_IS_BYTE(x) SkASSERT(0 == ((x) & ~0xFF))
+#define SkASSERT_IS_BYTE(x) SkASSERT(0 == ((x) & ~0xFFu))
// Reverse the bytes coorsponding to RED and BLUE in a packed pixels. Note the
// pair of them are in the same 2 slots in both RGBA and BGRA, thus there is
@@ -158,14 +158,13 @@
* utility functions. Third parameter controls blending of the first two:
* (src, dst, 0) returns dst
* (src, dst, 0xFF) returns src
- * srcWeight is [0..256], unlike SkFourByteInterp which takes [0..255]
+ * scale is [0..256], unlike SkFourByteInterp which takes [0..255]
*/
-static inline SkPMColor SkFourByteInterp256(SkPMColor src, SkPMColor dst,
- unsigned scale) {
- unsigned a = SkAlphaBlend(SkGetPackedA32(src), SkGetPackedA32(dst), scale);
- unsigned r = SkAlphaBlend(SkGetPackedR32(src), SkGetPackedR32(dst), scale);
- unsigned g = SkAlphaBlend(SkGetPackedG32(src), SkGetPackedG32(dst), scale);
- unsigned b = SkAlphaBlend(SkGetPackedB32(src), SkGetPackedB32(dst), scale);
+static inline SkPMColor SkFourByteInterp256(SkPMColor src, SkPMColor dst, int scale) {
+ unsigned a = SkTo<uint8_t>(SkAlphaBlend(SkGetPackedA32(src), SkGetPackedA32(dst), scale));
+ unsigned r = SkTo<uint8_t>(SkAlphaBlend(SkGetPackedR32(src), SkGetPackedR32(dst), scale));
+ unsigned g = SkTo<uint8_t>(SkAlphaBlend(SkGetPackedG32(src), SkGetPackedG32(dst), scale));
+ unsigned b = SkTo<uint8_t>(SkAlphaBlend(SkGetPackedB32(src), SkGetPackedB32(dst), scale));
return SkPackARGB32(a, r, g, b);
}
@@ -176,9 +175,8 @@
* (src, dst, 0) returns dst
* (src, dst, 0xFF) returns src
*/
-static inline SkPMColor SkFourByteInterp(SkPMColor src, SkPMColor dst,
- U8CPU srcWeight) {
- unsigned scale = SkAlpha255To256(srcWeight);
+static inline SkPMColor SkFourByteInterp(SkPMColor src, SkPMColor dst, U8CPU srcWeight) {
+ int scale = (int)SkAlpha255To256(srcWeight);
return SkFourByteInterp256(src, dst, scale);
}
@@ -260,9 +258,7 @@
* Nearly the same as SkFourByteInterp, but faster and a touch more accurate, due to better
* srcWeight scaling to [0, 256].
*/
-static inline SkPMColor SkFastFourByteInterp(SkPMColor src,
- SkPMColor dst,
- U8CPU srcWeight) {
+static inline SkPMColor SkFastFourByteInterp(SkPMColor src, SkPMColor dst, U8CPU srcWeight) {
SkASSERT(srcWeight <= 255);
// scale = srcWeight + (srcWeight >> 7) is more accurate than
// scale = srcWeight + 1, but 7% slower
diff --git a/include/private/SkNx_sse.h b/include/private/SkNx_sse.h
index c5cbddf..e07f780 100644
--- a/include/private/SkNx_sse.h
+++ b/include/private/SkNx_sse.h
@@ -312,9 +312,9 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint32_t val) : fVec(_mm_set1_epi32(val)) {}
+ AI SkNx(uint32_t val) : fVec(_mm_set1_epi32((int)val)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadl_epi64((const __m128i*)ptr); }
- AI SkNx(uint32_t a, uint32_t b) : fVec(_mm_setr_epi32(a,b,0,0)) {}
+ AI SkNx(uint32_t a, uint32_t b) : fVec(_mm_setr_epi32((int)a,(int)b,0,0)) {}
AI void store(void* ptr) const { _mm_storel_epi64((__m128i*)ptr, fVec); }
@@ -359,9 +359,10 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint32_t val) : fVec(_mm_set1_epi32(val)) {}
+ AI SkNx(uint32_t val) : fVec(_mm_set1_epi32((int)val)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadu_si128((const __m128i*)ptr); }
- AI SkNx(uint32_t a, uint32_t b, uint32_t c, uint32_t d) : fVec(_mm_setr_epi32(a,b,c,d)) {}
+ AI SkNx(uint32_t a, uint32_t b, uint32_t c, uint32_t d)
+ : fVec(_mm_setr_epi32((int)a,(int)b,(int)c,(int)d)) {}
AI void store(void* ptr) const { _mm_storeu_si128((__m128i*)ptr, fVec); }
@@ -412,9 +413,9 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint16_t val) : fVec(_mm_set1_epi16(val)) {}
+ AI SkNx(uint16_t val) : fVec(_mm_set1_epi16((short)val)) {}
AI SkNx(uint16_t a, uint16_t b, uint16_t c, uint16_t d)
- : fVec(_mm_setr_epi16(a,b,c,d,0,0,0,0)) {}
+ : fVec(_mm_setr_epi16((short)a,(short)b,(short)c,(short)d,0,0,0,0)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadl_epi64((const __m128i*)ptr); }
AI void store(void* ptr) const { _mm_storel_epi64((__m128i*)ptr, fVec); }
@@ -480,10 +481,11 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint16_t val) : fVec(_mm_set1_epi16(val)) {}
+ AI SkNx(uint16_t val) : fVec(_mm_set1_epi16((short)val)) {}
AI SkNx(uint16_t a, uint16_t b, uint16_t c, uint16_t d,
uint16_t e, uint16_t f, uint16_t g, uint16_t h)
- : fVec(_mm_setr_epi16(a,b,c,d,e,f,g,h)) {}
+ : fVec(_mm_setr_epi16((short)a,(short)b,(short)c,(short)d,
+ (short)e,(short)f,(short)g,(short)h)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadu_si128((const __m128i*)ptr); }
AI void store(void* ptr) const { _mm_storeu_si128((__m128i*)ptr, fVec); }
@@ -559,7 +561,7 @@
// No unsigned _mm_min_epu16, so we'll shift into a space where we can use the
// signed version, _mm_min_epi16, then shift back.
const uint16_t top = 0x8000; // Keep this separate from _mm_set1_epi16 or MSVC will whine.
- const __m128i top_8x = _mm_set1_epi16(top);
+ const __m128i top_8x = _mm_set1_epi16((short)top);
return _mm_add_epi8(top_8x, _mm_min_epi16(_mm_sub_epi8(a.fVec, top_8x),
_mm_sub_epi8(b.fVec, top_8x)));
}
@@ -588,7 +590,7 @@
AI SkNx() {}
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
- : fVec(_mm_setr_epi8(a,b,c,d, 0,0,0,0, 0,0,0,0, 0,0,0,0)) {}
+ : fVec(_mm_setr_epi8((char)a,(char)b,(char)c,(char)d, 0,0,0,0, 0,0,0,0, 0,0,0,0)) {}
AI static SkNx Load(const void* ptr) { return _mm_cvtsi32_si128(*(const int*)ptr); }
AI void store(void* ptr) const { *(int*)ptr = _mm_cvtsi128_si32(fVec); }
@@ -610,11 +612,13 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint8_t val) : fVec(_mm_set1_epi8(val)) {}
+ AI SkNx(uint8_t val) : fVec(_mm_set1_epi8((char)val)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadl_epi64((const __m128i*)ptr); }
AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d,
uint8_t e, uint8_t f, uint8_t g, uint8_t h)
- : fVec(_mm_setr_epi8(a,b,c,d, e,f,g,h, 0,0,0,0, 0,0,0,0)) {}
+ : fVec(_mm_setr_epi8((char)a,(char)b,(char)c,(char)d,
+ (char)e,(char)f,(char)g,(char)h,
+ 0,0,0,0, 0,0,0,0)) {}
AI void store(void* ptr) const {_mm_storel_epi64((__m128i*)ptr, fVec);}
@@ -650,13 +654,16 @@
AI SkNx(const __m128i& vec) : fVec(vec) {}
AI SkNx() {}
- AI SkNx(uint8_t val) : fVec(_mm_set1_epi8(val)) {}
+ AI SkNx(uint8_t val) : fVec(_mm_set1_epi8((char)val)) {}
AI static SkNx Load(const void* ptr) { return _mm_loadu_si128((const __m128i*)ptr); }
AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d,
uint8_t e, uint8_t f, uint8_t g, uint8_t h,
uint8_t i, uint8_t j, uint8_t k, uint8_t l,
uint8_t m, uint8_t n, uint8_t o, uint8_t p)
- : fVec(_mm_setr_epi8(a,b,c,d, e,f,g,h, i,j,k,l, m,n,o,p)) {}
+ : fVec(_mm_setr_epi8((char)a,(char)b,(char)c,(char)d,
+ (char)e,(char)f,(char)g,(char)h,
+ (char)i,(char)j,(char)k,(char)l,
+ (char)m,(char)n,(char)o,(char)p)) {}
AI void store(void* ptr) const { _mm_storeu_si128((__m128i*)ptr, fVec); }