Update to glm-0.9.6.1

The patch for fixing aliasing issues is not required or applicable
anymore, due to GLM having fixed the issues.

The float distance counting algorithm entered an infinite loop in
some cases. The glm-0.9.6.1-ulp.patch addresses this.
f41
Joonas Sarajärvi 10 years ago
parent 6357357895
commit 941ede50fd

1
.gitignore vendored

@ -6,3 +6,4 @@
/glm-0.9.4.5.zip
/glm-0.9.4.6.zip
/glm-0.9.5.2.zip
/glm-0.9.6.1.zip

@ -1,66 +0,0 @@
diff -ru glm/glm/gtc/packing.inl glm-aliasfix/glm/gtc/packing.inl
--- glm/glm/gtc/packing.inl 2014-02-08 21:28:22.000000000 +0200
+++ glm-aliasfix/glm/gtc/packing.inl 2014-06-11 12:29:07.345452993 +0300
@@ -35,6 +35,26 @@
namespace glm{
namespace detail
{
+ GLM_FUNC_QUALIFIER float float_from_bits_of_uint(uint const u)
+ {
+ union {
+ float as_float;
+ uint as_uint;
+ } result;
+ result.as_uint = u;
+ return result.as_float;
+ }
+
+ GLM_FUNC_QUALIFIER glm::uint uint_from_bits_of_float(float const f)
+ {
+ union {
+ float as_float;
+ uint as_uint;
+ } result;
+ result.as_float = f;
+ return result.as_uint;
+ }
+
GLM_FUNC_QUALIFIER glm::uint16 float2half(glm::uint32 const & f)
{
// 10 bits => EE EEEFFFFF
@@ -145,7 +165,7 @@
else if(glm::isinf(x))
return 0x1f << 6;
- return float2packed11(reinterpret_cast<uint&>(x));
+ return float2packed11(uint_from_bits_of_float(x));
}
GLM_FUNC_QUALIFIER float packed11bitToFloat(glm::uint x)
@@ -158,7 +178,7 @@
return ~0;//Inf
uint result = packed11ToFloat(x);
- return reinterpret_cast<float&>(result);
+ return float_from_bits_of_uint(result);
}
GLM_FUNC_QUALIFIER glm::uint floatTo10bit(float x)
@@ -170,7 +190,7 @@
else if(glm::isinf(x))
return 0x1f << 5;
- return float2packed10(reinterpret_cast<uint&>(x));
+ return float2packed10(uint_from_bits_of_float(x));
}
GLM_FUNC_QUALIFIER float packed10bitToFloat(glm::uint x)
@@ -183,7 +203,7 @@
return ~0;//Inf
uint result = packed10ToFloat(x);
- return reinterpret_cast<float&>(result);
+ return float_from_bits_of_uint(result);
}
// GLM_FUNC_QUALIFIER glm::uint f11_f11_f10(float x, float y, float z)

@ -0,0 +1,21 @@
diff -ru glm/glm/gtc/ulp.inl glm-ulp/glm/gtc/ulp.inl
--- glm/glm/gtc/ulp.inl 2014-12-09 21:13:54.000000000 +0200
+++ glm-ulp/glm/gtc/ulp.inl 2015-01-06 16:29:47.497932633 +0200
@@ -316,7 +316,7 @@
if(x < y)
{
T temp = x;
- while(temp != y)// && ulp < std::numeric_limits<std::size_t>::max())
+ while(temp < y)// && ulp < std::numeric_limits<std::size_t>::max())
{
++ulp;
temp = next_float(temp);
@@ -325,7 +325,7 @@
else if(y < x)
{
T temp = y;
- while(temp != x)// && ulp < std::numeric_limits<std::size_t>::max())
+ while(temp < x)// && ulp < std::numeric_limits<std::size_t>::max())
{
++ulp;
temp = next_float(temp);

@ -2,15 +2,15 @@
%global debug_package %{nil}
Name: glm
Version: 0.9.5.2
Release: 4%{?dist}
Version: 0.9.6.1
Release: 1%{?dist}
Summary: C++ mathematics library for graphics programming
License: MIT
URL: http://glm.g-truc.net/
Source0: http://downloads.sourceforge.net/ogl-math/%{name}-%{version}/%{name}-%{version}.zip
Patch0: glm-0.9.5.2-smallercount.patch
Patch1: glm-0.9.5.2-aliasfix.patch
Patch1: glm-0.9.6.1-ulp.patch
BuildRequires: cmake
@ -74,7 +74,7 @@ sed -i 's/\r//' doc/api/doxygen.css
sed -i 's/\r//' doc/api/tabs.css
%patch0 -p1 -b .smallercount
%patch1 -p1 -b .aliasfix
%patch1 -p1 -b .ulp
%build
mkdir build
@ -85,9 +85,10 @@ make %{?_smp_mflags}
%check
cd build
# The packing test is disabled because it has never
# worked on i686.
ctest --output-on-failure -E test-gtc_packing
# Some tests are disabled due to known upstream bugs:
# https://github.com/g-truc/glm/issues/212
# https://github.com/g-truc/glm/issues/296
ctest --output-on-failure -E '(test-gtc_packing|test-gtc_integer)'
%install
cd build
@ -96,6 +97,11 @@ make install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
find $RPM_BUILD_ROOT -name CMakeLists.txt -exec rm -f {} ';'
# This is not packaged until there is consensus that
# packages should install FindSomething.cmake files.
# https://bugzilla.redhat.com/show_bug.cgi?id=1022088
rm $RPM_BUILD_ROOT%{_libdir}/cmake/FindGLM.cmake
%files devel
%doc copying.txt readme.txt
%{_includedir}/%{name}
@ -105,6 +111,9 @@ find $RPM_BUILD_ROOT -name CMakeLists.txt -exec rm -f {} ';'
%doc doc/api/
%changelog
* Tue Jan 06 2015 Joonas Sarajärvi <muep@iki.fi> - 0.9.6.1-1
- Update to upstream GLM version 0.9.6.1
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.5.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

@ -1 +1 @@
dd8332ef13c325e1e785130a92c168bd glm-0.9.5.2.zip
b1c5f1811d3fac4e3f4932bdab0cb7a6 glm-0.9.6.1.zip

Loading…
Cancel
Save