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 |