| OLD | NEW |
| 1 diff --git a/third_party/qcms/src/iccread.c b/third_party/qcms/src/iccread.c | 1 diff --git a/third_party/qcms/src/iccread.c b/third_party/qcms/src/iccread.c |
| 2 index 36b7011..d3c3dfe 100644 | 2 index 36b7011..d3c3dfe 100644 |
| 3 --- a/third_party/qcms/src/iccread.c | 3 --- a/third_party/qcms/src/iccread.c |
| 4 +++ b/third_party/qcms/src/iccread.c | 4 +++ b/third_party/qcms/src/iccread.c |
| 5 @@ -266,7 +266,7 @@ qcms_bool qcms_profile_is_bogus(qcms_profile *profile) | 5 @@ -266,7 +266,7 @@ qcms_bool qcms_profile_is_bogus(qcms_profile *profile) |
| 6 if (profile->color_space != RGB_SIGNATURE) | 6 if (profile->color_space != RGB_SIGNATURE) |
| 7 return false; | 7 return false; |
| 8 | 8 |
| 9 - if (profile->A2B0 || profile->B2A0) | 9 - if (profile->A2B0 || profile->B2A0) |
| 10 + if (qcms_supports_iccv4 && (profile->A2B0 || profile->B2A0)) | 10 + if (qcms_supports_iccv4 && (profile->A2B0 || profile->B2A0)) |
| (...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 741 +#if defined(SSE2_ENABLE) && !(defined(_MSC_VER) && defined(_M_AMD64)) | 741 +#if defined(SSE2_ENABLE) && !(defined(_MSC_VER) && defined(_M_AMD64)) |
| 742 /* Microsoft Compiler for x64 doesn't support MMX. | 742 /* Microsoft Compiler for x64 doesn't support MMX. |
| 743 * SSE code uses MMX so that we disable on x64 */ | 743 * SSE code uses MMX so that we disable on x64 */ |
| 744 } else | 744 } else |
| 745 @@ -1256,13 +1323,34 @@ qcms_transform* qcms_transform_create( | 745 @@ -1256,13 +1323,34 @@ qcms_transform* qcms_transform_create( |
| 746 return transform; | 746 return transform; |
| 747 } | 747 } |
| 748 | 748 |
| 749 -#if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) | 749 -#if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) |
| 750 +/* __force_align_arg_pointer__ is an x86-only attribute, and gcc/clang warns on
unused | 750 +/* __force_align_arg_pointer__ is an x86-only attribute, and gcc/clang warns on
unused |
| 751 + * attributes. Don't use this on ARM or AMD64. __has_attribute can detect the p
resence | 751 + * attributes. Don't use this on ARM, AMD64 or MIPS. __has_attribute can detect
the presence |
| 752 + * of the attribute but is currently only supported by clang */ | 752 + * of the attribute but is currently only supported by clang */ |
| 753 +#if defined(__has_attribute) | 753 +#if defined(__has_attribute) |
| 754 +#define HAS_FORCE_ALIGN_ARG_POINTER __has_attribute(__force_align_arg_pointer__
) | 754 +#define HAS_FORCE_ALIGN_ARG_POINTER __has_attribute(__force_align_arg_pointer__
) |
| 755 +#elif defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) && !defi
ned(__arm__) | 755 +#elif defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) && !defi
ned(__arm__) && !defined(__mips__) |
| 756 +#define HAS_FORCE_ALIGN_ARG_POINTER 1 | 756 +#define HAS_FORCE_ALIGN_ARG_POINTER 1 |
| 757 +#else | 757 +#else |
| 758 +#define HAS_FORCE_ALIGN_ARG_POINTER 0 | 758 +#define HAS_FORCE_ALIGN_ARG_POINTER 0 |
| 759 +#endif | 759 +#endif |
| 760 + | 760 + |
| 761 +#if HAS_FORCE_ALIGN_ARG_POINTER | 761 +#if HAS_FORCE_ALIGN_ARG_POINTER |
| 762 /* we need this to avoid crashes when gcc assumes the stack is 128bit aligned *
/ | 762 /* we need this to avoid crashes when gcc assumes the stack is 128bit aligned *
/ |
| 763 __attribute__((__force_align_arg_pointer__)) | 763 __attribute__((__force_align_arg_pointer__)) |
| 764 #endif | 764 #endif |
| 765 void qcms_transform_data(qcms_transform *transform, void *src, void *dest, size
_t length) | 765 void qcms_transform_data(qcms_transform *transform, void *src, void *dest, size
_t length) |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 | 882 |
| 883 -float lut_interp_linear(double value, uint16_t *table, int length); | 883 -float lut_interp_linear(double value, uint16_t *table, int length); |
| 884 -float lut_interp_linear_float(float value, float *table, int length); | 884 -float lut_interp_linear_float(float value, float *table, int length); |
| 885 -uint16_t lut_interp_linear16(uint16_t input_value, uint16_t *table, int length)
; | 885 -uint16_t lut_interp_linear16(uint16_t input_value, uint16_t *table, int length)
; |
| 886 +float lut_interp_linear(double value, uint16_t *table, size_t length); | 886 +float lut_interp_linear(double value, uint16_t *table, size_t length); |
| 887 +float lut_interp_linear_float(float value, float *table, size_t length); | 887 +float lut_interp_linear_float(float value, float *table, size_t length); |
| 888 +uint16_t lut_interp_linear16(uint16_t input_value, uint16_t *table, size_t leng
th); | 888 +uint16_t lut_interp_linear16(uint16_t input_value, uint16_t *table, size_t leng
th); |
| 889 | 889 |
| 890 | 890 |
| 891 static inline float lerp(float a, float b, float t) | 891 static inline float lerp(float a, float b, float t) |
| OLD | NEW |