diff options
Diffstat (limited to '3rdparty/bx/include')
-rw-r--r-- | 3rdparty/bx/include/bx/float4_ni.h | 20 | ||||
-rw-r--r-- | 3rdparty/bx/include/bx/maputil.h | 29 | ||||
-rw-r--r-- | 3rdparty/bx/include/bx/os.h | 6 | ||||
-rw-r--r-- | 3rdparty/bx/include/bx/readerwriter.h | 21 | ||||
-rw-r--r-- | 3rdparty/bx/include/tinystl/hash_base.h | 3 |
5 files changed, 72 insertions, 7 deletions
diff --git a/3rdparty/bx/include/bx/float4_ni.h b/3rdparty/bx/include/bx/float4_ni.h index e85c1cd9117..644fa6eb386 100644 --- a/3rdparty/bx/include/bx/float4_ni.h +++ b/3rdparty/bx/include/bx/float4_ni.h @@ -177,16 +177,30 @@ namespace bx { const float4_t half = float4_splat(0.5f); const float4_t one = float4_splat(1.0f); - const float4_t zero = float4_zero(); const float4_t tmp0 = float4_rsqrt_est(_a); - const float4_t tmp1 = float4_madd(tmp0, _a, zero); - const float4_t tmp2 = float4_madd(tmp1, half, zero); + const float4_t tmp1 = float4_mul(tmp0, _a); + const float4_t tmp2 = float4_mul(tmp1, half); const float4_t tmp3 = float4_nmsub(tmp0, tmp1, one); const float4_t result = float4_madd(tmp3, tmp2, tmp1); return result; } + BX_FLOAT4_INLINE float4_t float4_sqrt_nr1_ni(float4_t _a) + { + const float4_t half = float4_splat(0.5f); + + float4_t result = _a; + for (uint32_t ii = 0; ii < 11; ++ii) + { + const float4_t tmp1 = float4_div(_a, result); + const float4_t tmp2 = float4_add(tmp1, result); + result = float4_mul(tmp2, half); + } + + return result; + } + BX_FLOAT4_INLINE float4_t float4_rsqrt_ni(float4_t _a) { const float4_t one = float4_splat(1.0f); diff --git a/3rdparty/bx/include/bx/maputil.h b/3rdparty/bx/include/bx/maputil.h index f334aeff0ce..21e6067043d 100644 --- a/3rdparty/bx/include/bx/maputil.h +++ b/3rdparty/bx/include/bx/maputil.h @@ -24,6 +24,35 @@ namespace bx typename MapType::value_type pair(_key, _value); return _map.insert(it, pair); } + + template<typename MapType> + bool mapRemove(MapType& _map, const typename MapType::value_type::first_type& _first) + { + typename MapType::const_iterator it = _map.find(_first); + if (it != _map.end() ) + { + _map.erase(it); + return true; + } + + return false; + } + + template<typename MapType> + bool mapRemove(MapType& _map, const typename MapType::value_type::second_type& _second) + { + for (typename MapType::const_iterator it = _map.begin(), itEnd = _map.end(); it != itEnd; ++it) + { + if (it->second == _second) + { + _map.erase(it); + return true; + } + } + + return false; + } + } // namespace bx #endif // BX_MAPUTIL_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/os.h b/3rdparty/bx/include/bx/os.h index 314ef0607cc..db9113979f8 100644 --- a/3rdparty/bx/include/bx/os.h +++ b/3rdparty/bx/include/bx/os.h @@ -136,7 +136,7 @@ namespace bx : 0 ; #elif BX_PLATFORM_OSX -#ifdef MACH_TASK_BASIC_INFO +# if defined(MACH_TASK_BASIC_INFO) mach_task_basic_info info; mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT; @@ -145,7 +145,7 @@ namespace bx , (task_info_t)&info , &infoCount ); -#else // MACH_TASK_BASIC_INFO +# else // MACH_TASK_BASIC_INFO task_basic_info info; mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT; @@ -154,7 +154,7 @@ namespace bx , (task_info_t)&info , &infoCount ); -#endif // MACH_TASK_BASIC_INFO +# endif // MACH_TASK_BASIC_INFO if (KERN_SUCCESS != result) { return 0; diff --git a/3rdparty/bx/include/bx/readerwriter.h b/3rdparty/bx/include/bx/readerwriter.h index 13fe205399e..245d158e742 100644 --- a/3rdparty/bx/include/bx/readerwriter.h +++ b/3rdparty/bx/include/bx/readerwriter.h @@ -77,7 +77,7 @@ namespace bx return _reader->read(_data, _size, _err); } - /// Write value. + /// Read value. template<typename Ty> inline int32_t read(ReaderI* _reader, Ty& _value, Error* _err = NULL) { @@ -207,6 +207,25 @@ namespace bx { }; + /// Peek data. + inline int32_t peek(ReaderSeekerI* _reader, void* _data, int32_t _size, Error* _err = NULL) + { + BX_ERROR_SCOPE(_err); + int64_t offset = bx::seek(_reader); + int32_t size = _reader->read(_data, _size, _err); + bx::seek(_reader, offset, bx::Whence::Begin); + return size; + } + + /// Peek value. + template<typename Ty> + inline int32_t peek(ReaderSeekerI* _reader, Ty& _value, Error* _err = NULL) + { + BX_ERROR_SCOPE(_err); + BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + return peek(_reader, &_value, sizeof(Ty), _err); + } + struct BX_NO_VTABLE WriterSeekerI : public WriterI, public SeekerI { }; diff --git a/3rdparty/bx/include/tinystl/hash_base.h b/3rdparty/bx/include/tinystl/hash_base.h index 73b5c9ebda8..f20675db486 100644 --- a/3rdparty/bx/include/tinystl/hash_base.h +++ b/3rdparty/bx/include/tinystl/hash_base.h @@ -33,6 +33,9 @@ namespace tinystl { template<typename Key, typename Value> struct pair { + typedef Key first_type; + typedef Value second_type; + pair(); pair(const Key& key, const Value& value); |