summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bx/include
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bx/include')
-rw-r--r--3rdparty/bx/include/bx/float4_ni.h20
-rw-r--r--3rdparty/bx/include/bx/maputil.h29
-rw-r--r--3rdparty/bx/include/bx/os.h6
-rw-r--r--3rdparty/bx/include/bx/readerwriter.h21
-rw-r--r--3rdparty/bx/include/tinystl/hash_base.h3
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);