From 17748a3dfdddf0bc5e7a8948967547ab899dc700 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Thu, 18 Jul 2013 19:09:27 -0700 Subject: [PATCH 1/3] Fix compiler warning about unused local typedef --- src/field3d.imageio/field3dinput.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/field3d.imageio/field3dinput.cpp b/src/field3d.imageio/field3dinput.cpp index eeeac12..4df7158 100644 --- a/src/field3d.imageio/field3dinput.cpp +++ b/src/field3d.imageio/field3dinput.cpp @@ -145,7 +145,6 @@ inline int blocksize (FieldRes::Ptr &f) typename SparseField::Ptr sf (field_dynamic_cast >(f)); if (sf) return sf->blockSize(); - typedef FIELD3D_VEC3_T VecData_T; typename SparseField::Ptr vsf (field_dynamic_cast >(f)); if (vsf) return vsf->blockSize(); -- 1.8.1.6 From 27439302e32cdaacf7137f4e80eaf1c8a86cf862 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Thu, 18 Jul 2013 19:57:55 -0700 Subject: [PATCH 2/3] Make it work for big endian --- src/libtexture/texture3d.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libtexture/texture3d.cpp b/src/libtexture/texture3d.cpp index 34a57d6..2ba64f0 100644 --- a/src/libtexture/texture3d.cpp +++ b/src/libtexture/texture3d.cpp @@ -378,10 +378,9 @@ // bool svalid[2], tvalid[2], rvalid[2]; // Valid texels? false means black border union { bool bvalid[6]; unsigned long long ivalid; } valid_storage; valid_storage.ivalid = 0; - DASSERT (sizeof(valid_storage) >= 6*sizeof(bool)); + DASSERT (sizeof(valid_storage) == 8); const unsigned long long none_valid = 0; - const unsigned long long all_valid = 0x010101010101LL; - DASSERT (__LITTLE_ENDIAN__ && "this trick won't work with big endian"); + const unsigned long long all_valid = littleendian() ? 0x010101010101LL : 0x01010101010100LL; bool *svalid = valid_storage.bvalid; bool *tvalid = valid_storage.bvalid + 2; bool *rvalid = valid_storage.bvalid + 4; -- 1.8.1.6 From 7fc6e497326cdcdd72904cda3d48ed9c1f87ac69 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Thu, 18 Jul 2013 19:58:45 -0700 Subject: [PATCH 3/3] Fix compile problem with gcc but on platforms with no 'pause' --- src/include/thread.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/include/thread.h b/src/include/thread.h index cf3717e..8a31dfc 100644 --- a/src/include/thread.h +++ b/src/include/thread.h @@ -318,16 +318,17 @@ class thread_specific_ptr { inline void pause (int delay) { -#if defined(__GNUC__) - for (int i = 0; i < delay; ++i) { -#if defined __arm__ || defined __s390__ - __asm__ __volatile__("NOP;"); -#else +#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) + for (int i = 0; i < delay; ++i) __asm__ __volatile__("pause;"); -#endif - } + +#elif defined(__GNUC__) && (defined(__arm__) || defined(__s390__)) + for (int i = 0; i < delay; ++i) + __asm__ __volatile__("NOP;"); + #elif USE_TBB __TBB_Pause(delay); + #elif defined(_MSC_VER) for (int i = 0; i < delay; ++i) { #if defined (_WIN64) @@ -336,6 +337,7 @@ class thread_specific_ptr { _asm pause #endif /* _WIN64 */ } + #else // No pause on this platform, just punt for (int i = 0; i < delay; ++i) ; -- 1.8.1.6 From db797a45b9060294ef02a879fde66c4265a90a14 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Fri, 12 Jul 2013 10:51:13 -0700 Subject: [PATCH] Fix compiler warnings with large unsigned value in test --- src/libOpenImageIO/fmath_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libOpenImageIO/fmath_test.cpp b/src/libOpenImageIO/fmath_test.cpp index fefaac0..fdf7f4e 100644 --- a/src/libOpenImageIO/fmath_test.cpp +++ b/src/libOpenImageIO/fmath_test.cpp @@ -72,8 +72,8 @@ void test_bit_range_convert () OIIO_CHECK_EQUAL ((bit_range_convert<2,20>(3)), 1048575); OIIO_CHECK_EQUAL ((bit_range_convert<20,2>(1048575)), 3); OIIO_CHECK_EQUAL ((bit_range_convert<20,21>(1048575)), 2097151); - OIIO_CHECK_EQUAL ((bit_range_convert<32,32>(4294967295)), 4294967295); - OIIO_CHECK_EQUAL ((bit_range_convert<32,16>(4294967295)), 65535); + OIIO_CHECK_EQUAL ((bit_range_convert<32,32>(4294967295U)), 4294967295U); + OIIO_CHECK_EQUAL ((bit_range_convert<32,16>(4294967295U)), 65535); // These are not expected to work, since bit_range_convert only takes a // regular 'unsigned int' as parameter. If we need >32 bit conversion, // we need to add a uint64_t version of bit_range_convert. -- 1.8.1.6