From ed17c181dd37f56b808838748d289ee7bb5567ec Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Wed, 7 Nov 2012 15:32:12 -0800
Subject: SH-3499 WIP Ensure asset stats output is correct further fixes to
 implicit conversion of unit types

---
 indra/llmath/v4color.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h
index b047f86e6e..78223e1e65 100644
--- a/indra/llmath/v4color.h
+++ b/indra/llmath/v4color.h
@@ -49,9 +49,9 @@ class LLColor4
 		LLColor4();						// Initializes LLColor4 to (0, 0, 0, 1)
 		LLColor4(F32 r, F32 g, F32 b);		// Initializes LLColor4 to (r, g, b, 1)
 		LLColor4(F32 r, F32 g, F32 b, F32 a);		// Initializes LLColor4 to (r. g, b, a)
-		LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc))
-		LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1)
-		LLColor4(const LLColor3 &vec, F32 a = 1.f);	// Initializes LLColor4 to (vec, a)
+		explicit LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc))
+		explicit LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1)
+		explicit LLColor4(const LLColor3 &vec, F32 a = 1.f);	// Initializes LLColor4 to (vec, a)
 		explicit LLColor4(const LLSD& sd);
 		explicit LLColor4(const LLColor4U& color4u);  // "explicit" to avoid automatic conversion
 		explicit LLColor4(const LLVector4& vector4);  // "explicit" to avoid automatic conversion
-- 
cgit v1.2.3


From 0bb0bd514b235948c1a21c81ab0e8ab6223b1990 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Thu, 8 Nov 2012 23:42:18 -0800
Subject: SH-3499 WIP Ensure asset stats output is correct Finished making
 LLUnit implicitly convertible to/from scalar integer values cleaned up test
 code

---
 indra/llmath/v4color.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h
index 78223e1e65..0d632f59be 100644
--- a/indra/llmath/v4color.h
+++ b/indra/llmath/v4color.h
@@ -49,10 +49,10 @@ class LLColor4
 		LLColor4();						// Initializes LLColor4 to (0, 0, 0, 1)
 		LLColor4(F32 r, F32 g, F32 b);		// Initializes LLColor4 to (r, g, b, 1)
 		LLColor4(F32 r, F32 g, F32 b, F32 a);		// Initializes LLColor4 to (r. g, b, a)
-		explicit LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc))
-		explicit LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1)
-		explicit LLColor4(const LLColor3 &vec, F32 a = 1.f);	// Initializes LLColor4 to (vec, a)
+		LLColor4(const LLColor3 &vec, F32 a = 1.f);	// Initializes LLColor4 to (vec, a)
 		explicit LLColor4(const LLSD& sd);
+		explicit LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1)
+		explicit LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc))
 		explicit LLColor4(const LLColor4U& color4u);  // "explicit" to avoid automatic conversion
 		explicit LLColor4(const LLVector4& vector4);  // "explicit" to avoid automatic conversion
 
-- 
cgit v1.2.3


From 5d51175cd79b15cf036cd7e6bd646a1a0777eb7f Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Tue, 20 Nov 2012 15:55:04 -0800
Subject: SH-3406 WIP convert fast timers to lltrace system fixes to merge

---
 indra/llmath/llvolume.cpp | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 02c8d2b86f..54b67832ea 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -6667,6 +6667,10 @@ void LLVolumeFace::resizeVertices(S32 num_verts)
 		mPositions = (LLVector4a*) ll_aligned_malloc_16(sizeof(LLVector4a)*num_verts);
 		ll_assert_aligned(mPositions, 16);
 		mNormals = (LLVector4a*) ll_aligned_malloc_16(sizeof(LLVector4a)*num_verts);
+		if ( ((int)mNormals & 0xF) != 0 )
+		{
+			__debugbreak();
+		}
 		ll_assert_aligned(mNormals, 16);
 
 		//pad texture coordinate block end to allow for QWORD reads
-- 
cgit v1.2.3


From e1247d631f24065a31d9668915cb8bc84f3abc7f Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Tue, 18 Dec 2012 14:36:46 -0700
Subject: fix for SH-3619: some objects are missing

---
 indra/llmath/llcamera.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++----
 indra/llmath/llcamera.h   |  8 ++++++--
 2 files changed, 52 insertions(+), 6 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 22ba26f99b..6551b52462 100644
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -161,7 +161,7 @@ size_t LLCamera::readFrustumFromBuffer(const char *buffer)
 
 // ---------------- test methods  ---------------- 
 
-S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius) 
+S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius, const LLPlane* planes) 
 {
 	static const LLVector4a scaler[] = {
 		LLVector4a(-1,-1,-1),
@@ -174,6 +174,12 @@ S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius)
 		LLVector4a( 1, 1, 1)
 	};
 
+	if(!planes)
+	{
+		//use agent space
+		planes = mAgentPlanes;
+	}
+
 	U8 mask = 0;
 	bool result = false;
 	LLVector4a rscale, maxp, minp;
@@ -183,7 +189,7 @@ S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius)
 		mask = mPlaneMask[i];
 		if (mask != 0xff)
 		{
-			const LLPlane& p(mAgentPlanes[i]);
+			const LLPlane& p(planes[i]);
 			p.getAt<3>(d);
 			rscale.setMul(radius, scaler[mask]);
 			minp.setSub(center, rscale);
@@ -204,8 +210,14 @@ S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius)
 	return result?1:2;
 }
 
+//exactly same as the function AABBInFrustum(...)
+//except uses mRegionPlanes instead of mAgentPlanes.
+S32 LLCamera::AABBInRegionFrustum(const LLVector4a& center, const LLVector4a& radius) 
+{
+	return AABBInFrustum(center, radius, mRegionPlanes);
+}
 
-S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius) 
+S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes) 
 {
 	static const LLVector4a scaler[] = {
 		LLVector4a(-1,-1,-1),
@@ -218,6 +230,12 @@ S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a&
 		LLVector4a( 1, 1, 1)
 	};
 
+	if(!planes)
+	{
+		//use agent space
+		planes = mAgentPlanes;
+	}
+
 	U8 mask = 0;
 	bool result = false;
 	LLVector4a rscale, maxp, minp;
@@ -227,7 +245,7 @@ S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a&
 		mask = mPlaneMask[i];
 		if ((i != 5) && (mask != 0xff))
 		{
-			const LLPlane& p(mAgentPlanes[i]);
+			const LLPlane& p(planes[i]);
 			p.getAt<3>(d);
 			rscale.setMul(radius, scaler[mask]);
 			minp.setSub(center, rscale);
@@ -248,6 +266,13 @@ S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a&
 	return result?1:2;
 }
 
+//exactly same as the function AABBInFrustumNoFarClip(...)
+//except uses mRegionPlanes instead of mAgentPlanes.
+S32 LLCamera::AABBInRegionFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius) 
+{
+	return AABBInFrustumNoFarClip(center, radius, mRegionPlanes);
+}
+
 int LLCamera::sphereInFrustumQuick(const LLVector3 &sphere_center, const F32 radius) 
 {
 	LLVector3 dist = sphere_center-mFrustCenter;
@@ -584,6 +609,23 @@ void LLCamera::calcAgentFrustumPlanes(LLVector3* frust)
 	}
 }
 
+//calculate regional planes from mAgentPlanes.
+//vector "shift" is the vector of the region origin in the agent space.
+void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift) 
+{
+	F32 d;
+	LLVector3 n;
+	for(S32 i = 0 ; i < 7; i++)
+	{
+		if (mPlaneMask[i] != 0xff)
+		{
+			n.setVec(mAgentPlanes[i][0], mAgentPlanes[i][1], mAgentPlanes[i][2]);
+			d = mAgentPlanes[i][3] - n * shift;
+			mRegionPlanes[i].setVec(n, d);
+		}
+	}
+}
+
 void LLCamera::calculateFrustumPlanes(F32 left, F32 right, F32 top, F32 bottom)
 {
 	LLVector3 a, b, c;
diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h
index 0b591be622..898d73ed7e 100644
--- a/indra/llmath/llcamera.h
+++ b/indra/llmath/llcamera.h
@@ -109,6 +109,7 @@ public:
 
 private:
 	LL_ALIGN_16(LLPlane mAgentPlanes[7]);  //frustum planes in agent space a la gluUnproject (I'm a bastard, I know) - DaveP
+	LL_ALIGN_16(LLPlane mRegionPlanes[7]);  //frustum planes in a local region space, derived from mAgentPlanes
 	U8 mPlaneMask[8];         // 8 for alignment	
 	
 	F32 mView;					// angle between top and bottom frustum planes in radians.
@@ -178,6 +179,7 @@ public:
 	// Return number of bytes copied.
 	size_t readFrustumFromBuffer(const char *buffer);
 	void calcAgentFrustumPlanes(LLVector3* frust);
+	void calcRegionFrustumPlanes(const LLVector3& shift); //calculate regional planes from mAgentPlanes.
 	void ignoreAgentFrustumPlane(S32 idx);
 
 	// Returns 1 if partly in, 2 if fully in.
@@ -186,8 +188,10 @@ public:
 	S32 sphereInFrustum(const LLVector3 &center, const F32 radius) const;
 	S32 pointInFrustum(const LLVector3 &point) const { return sphereInFrustum(point, 0.0f); }
 	S32 sphereInFrustumFull(const LLVector3 &center, const F32 radius) const { return sphereInFrustum(center, radius); }
-	S32 AABBInFrustum(const LLVector4a& center, const LLVector4a& radius);
-	S32 AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius);
+	S32 AABBInFrustum(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes = NULL);
+	S32 AABBInRegionFrustum(const LLVector4a& center, const LLVector4a& radius);
+	S32 AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes = NULL);
+	S32 AABBInRegionFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius);
 
 	//does a quick 'n dirty sphere-sphere check
 	S32 sphereInFrustumQuick(const LLVector3 &sphere_center, const F32 radius); 
-- 
cgit v1.2.3


From 019836a39667889d4347277cde82270113992bb6 Mon Sep 17 00:00:00 2001
From: Andrew Meadows <andrew@lindenlab.com>
Date: Fri, 4 Jan 2013 03:02:54 +0000
Subject: More fixes for linux build of lltrace changes

---
 indra/llmath/llvolume.cpp | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 54b67832ea..47ba0c4fc4 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -6066,12 +6066,13 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
 	S32 max_t = volume->getPath().mPath.size();
 
 	// S32 i;
-	S32 num_vertices = 0, num_indices = 0;
+	//S32 num_vertices = 0;
+	//S32 num_indices = 0;
 	S32	grid_size = (profile.size()-1)/4;
-	S32	quad_count = (grid_size * grid_size);
+	//S32	quad_count = (grid_size * grid_size);
 
-	num_vertices = (grid_size+1)*(grid_size+1);
-	num_indices = quad_count * 4;
+	//num_vertices = (grid_size+1)*(grid_size+1);
+	//num_indices = quad_count * 4;
 
 	LLVector4a& min = mExtents[0];
 	LLVector4a& max = mExtents[1];
@@ -6667,10 +6668,6 @@ void LLVolumeFace::resizeVertices(S32 num_verts)
 		mPositions = (LLVector4a*) ll_aligned_malloc_16(sizeof(LLVector4a)*num_verts);
 		ll_assert_aligned(mPositions, 16);
 		mNormals = (LLVector4a*) ll_aligned_malloc_16(sizeof(LLVector4a)*num_verts);
-		if ( ((int)mNormals & 0xF) != 0 )
-		{
-			__debugbreak();
-		}
 		ll_assert_aligned(mNormals, 16);
 
 		//pad texture coordinate block end to allow for QWORD reads
-- 
cgit v1.2.3


From db2abd49c3b41af612cbb6fed4c1626c37b4e14b Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Wed, 12 Jun 2013 11:30:43 -0600
Subject: fix for SH-4244: interesting: objects on adjacent region are not
 visible.

---
 indra/llmath/llcamera.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 6551b52462..054afd3e95 100755
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -620,7 +620,7 @@ void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift)
 		if (mPlaneMask[i] != 0xff)
 		{
 			n.setVec(mAgentPlanes[i][0], mAgentPlanes[i][1], mAgentPlanes[i][2]);
-			d = mAgentPlanes[i][3] - n * shift;
+			d = mAgentPlanes[i][3] + n * shift;
 			mRegionPlanes[i].setVec(n, d);
 		}
 	}
-- 
cgit v1.2.3


From d122318bef2ff0eced7641dc24f411f792bd2935 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 8 Jul 2013 00:55:17 -0700
Subject: SH-4299 WIP: Interesting: High fps shown temporarily off scale in
 statistics console added percentage/ratio units added auto-range and auto
 tick calculation to stat bar to automate display stats

---
 indra/llmath/llmath.h | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index b93f89d674..cad2461e9c 100755
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -75,6 +75,8 @@ const F32	OO_SQRT2	= 0.7071067811865475244008443621049f;
 const F32	DEG_TO_RAD	= 0.017453292519943295769236907684886f;
 const F32	RAD_TO_DEG	= 57.295779513082320876798154814105f;
 const F32	F_APPROXIMATELY_ZERO = 0.00001f;
+const F32	F_LN10		= 2.3025850929940456840179914546844f;
+const F32	OO_LN10		= 0.43429448190325182765112891891661;
 const F32	F_LN2		= 0.69314718056f;
 const F32	OO_LN2		= 1.4426950408889634073599246810019f;
 
-- 
cgit v1.2.3


From e40065f82c797eab41006a448c838f4f1089a2e8 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Fri, 19 Jul 2013 15:03:05 -0700
Subject: BUILDFIX: #include and dependency cleanup

---
 indra/llmath/llcalcparser.h | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h
index e0ad270266..faa699ff7b 100755
--- a/indra/llmath/llcalcparser.h
+++ b/indra/llmath/llcalcparser.h
@@ -163,7 +163,7 @@ private:
 	
 	bool checkNaN(const F32& a) const { return !llisnan(a); }
 	
-	//FIX* non ambigious function fix making SIN() work for calc -Cryogenic Blitz
+	//FIX* non ambiguous function fix making SIN() work for calc -Cryogenic Blitz
 	F32 _sin(const F32& a) const { return sin(DEG_TO_RAD * a); }
 	F32 _cos(const F32& a) const { return cos(DEG_TO_RAD * a); }
 	F32 _tan(const F32& a) const { return tan(DEG_TO_RAD * a); }
@@ -176,11 +176,8 @@ private:
 	F32 _fabs(const F32& a) const { return fabs(a); }
 	F32 _floor(const F32& a) const { return (F32)llfloor(a); }
 	F32 _ceil(const F32& a) const { return llceil(a); }
-
 	F32 _atan2(const F32& a,const F32& b) const { return atan2(a,b); }
 
-
-
 	LLCalc::calc_map_t* mConstants;
 	LLCalc::calc_map_t* mVariables;
 //	LLCalc::calc_map_t* mUserVariables;
-- 
cgit v1.2.3


From 50c472c24216ad0c3890cb8bb9cf638e75642f0c Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Tue, 23 Jul 2013 18:47:16 -0700
Subject: renamed mVarianceSum to mSumOfSquares to be more clear fixed
 normalization assertions to work with megaprims added is_zero() utility
 function fixed unit declarations to be more clear fixed texture cache hit
 rate always being 0

---
 indra/llmath/llmath.h | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index cad2461e9c..eeb5cd3ee6 100755
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -113,6 +113,12 @@ inline bool is_approx_zero( F32 f ) { return (-F_APPROXIMATELY_ZERO < f) && (f <
 // WARNING: Infinity is comparable with F32_MAX and negative 
 // infinity is comparable with F32_MIN
 
+// handles negative and positive zeros
+inline bool is_zero(F32 x)
+{
+	return (*(U32*)(&x) & 0x7fffffff) == 0;
+}
+
 inline bool is_approx_equal(F32 x, F32 y)
 {
 	const S32 COMPARE_MANTISSA_UP_TO_BIT = 0x02;
-- 
cgit v1.2.3


From 4cca9ba279f908f206fa5e32adccf1038f05cc7f Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Mon, 29 Jul 2013 10:15:10 -0600
Subject: fix for SH-4293: texture console takes a while to settle down on
 Interesting viewer.

---
 indra/llmath/llcamera.cpp | 16 ++++++++++++++++
 indra/llmath/llcamera.h   |  2 ++
 indra/llmath/llplane.h    |  8 +++++++-
 3 files changed, 25 insertions(+), 1 deletion(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 054afd3e95..6a1e3804be 100755
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -161,6 +161,22 @@ size_t LLCamera::readFrustumFromBuffer(const char *buffer)
 
 // ---------------- test methods  ---------------- 
 
+bool LLCamera::isChanged()
+{
+	bool changed = false;
+	for (U32 i = 0; i < mPlaneCount; i++)
+	{
+		U8 mask = mPlaneMask[i];
+		if (mask != 0xff && !changed)
+		{
+			changed = !mAgentPlanes[i].equal(mLastAgentPlanes[i]);
+		}
+		mLastAgentPlanes[i].set(mAgentPlanes[i]);
+	}
+
+	return changed;
+}
+
 S32 LLCamera::AABBInFrustum(const LLVector4a &center, const LLVector4a& radius, const LLPlane* planes) 
 {
 	static const LLVector4a scaler[] = {
diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h
index 898d73ed7e..a7cdcff4ac 100755
--- a/indra/llmath/llcamera.h
+++ b/indra/llmath/llcamera.h
@@ -110,6 +110,7 @@ public:
 private:
 	LL_ALIGN_16(LLPlane mAgentPlanes[7]);  //frustum planes in agent space a la gluUnproject (I'm a bastard, I know) - DaveP
 	LL_ALIGN_16(LLPlane mRegionPlanes[7]);  //frustum planes in a local region space, derived from mAgentPlanes
+	LL_ALIGN_16(LLPlane mLastAgentPlanes[7]);
 	U8 mPlaneMask[8];         // 8 for alignment	
 	
 	F32 mView;					// angle between top and bottom frustum planes in radians.
@@ -138,6 +139,7 @@ public:
 	LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_pixels, F32 near_plane, F32 far_plane);
 	virtual ~LLCamera();
 	
+	bool isChanged(); //check if mAgentPlanes changed since last frame.
 
 	void setUserClipPlane(LLPlane& plane);
 	void disableUserClipPlane();
diff --git a/indra/llmath/llplane.h b/indra/llmath/llplane.h
index 3c32441b11..64a3eed0e5 100755
--- a/indra/llmath/llplane.h
+++ b/indra/llmath/llplane.h
@@ -93,7 +93,13 @@ public:
 	{ 
 		return mV.greaterEqual(LLVector4a::getZero()).getGatheredBits() & LLVector4Logical::MASK_XYZ;
 	}
-		
+	
+	//check if two planes are nearly same
+	bool equal(const LLPlane& p) const
+	{
+		return mV.equals4(p.mV);
+	}
+
 private:
 	LLVector4a mV;
 } LL_ALIGN_POSTFIX(16);
-- 
cgit v1.2.3


From a2e22732f195dc075a733c79f15156752f522a43 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Tue, 30 Jul 2013 19:13:45 -0700
Subject: Summer cleaning - removed a lot of llcommon dependencies to speed up
 build times consolidated most indra-specific constants in llcommon under
 indra_constants.h fixed issues with operations on mixed unit types (implicit
 and explicit) made LL_INFOS() style macros variadic in order to subsume other
 logging methods such as ll_infos added optional tag output to error recorders

---
 indra/llmath/llvolume.cpp | 1 -
 indra/llmath/llvolume.h   | 1 -
 2 files changed, 2 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 41914446d1..e4ab46929f 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -44,7 +44,6 @@
 #include "m3math.h"
 #include "llmatrix3a.h"
 #include "lloctree.h"
-#include "lldarray.h"
 #include "llvolume.h"
 #include "llvolumeoctree.h"
 #include "llstl.h"
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index 164b8d6652..a4291df7db 100755
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -42,7 +42,6 @@ class LLVolumeFace;
 class LLVolume;
 class LLVolumeTriangle;
 
-#include "lldarray.h"
 #include "lluuid.h"
 #include "v4color.h"
 //#include "vmath.h"
-- 
cgit v1.2.3


From 8d3daa141e9ea14f533559843d77ab5c0f715421 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Fri, 9 Aug 2013 16:14:19 -0700
Subject: SH-4374 FIX Interesting: Statistics Object cache hit rate is always
 100% moved object cache sampling code so that it actually gets executed
 default values for stats are NaN instead of 0 in many cases

---
 indra/llmath/llmath.h | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index eeb5cd3ee6..2f83836501 100755
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -83,6 +83,10 @@ const F32	OO_LN2		= 1.4426950408889634073599246810019f;
 const F32	F_ALMOST_ZERO	= 0.0001f;
 const F32	F_ALMOST_ONE	= 1.0f - F_ALMOST_ZERO;
 
+const F64	NaN				= std::numeric_limits<double>::quiet_NaN();
+const F64	INFINITY		= std::numeric_limits<double>::infinity();
+const F64	MINUS_INFINITY	= std::numeric_limits<double>::infinity() * -1.0;
+
 // BUG: Eliminate in favor of F_APPROXIMATELY_ZERO above?
 const F32 FP_MAG_THRESHOLD = 0.0000001f;
 
-- 
cgit v1.2.3


From e340009fc59d59e59b2e8d903a884acb76b178eb Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Fri, 9 Aug 2013 17:11:19 -0700
Subject: second phase summer cleaning replace llinfos, lldebugs, etc with new
 LL_INFOS(), LL_DEBUGS(), etc.

---
 indra/llmath/llcalc.cpp         |  6 +--
 indra/llmath/llcoordframe.cpp   | 54 +++++++++++------------
 indra/llmath/llline.cpp         |  4 +-
 indra/llmath/lloctree.h         | 34 +++++++-------
 indra/llmath/llvolume.cpp       | 98 ++++++++++++++++++++---------------------
 indra/llmath/llvolumemgr.cpp    | 14 +++---
 indra/llmath/llvolumeoctree.cpp |  6 +--
 indra/llmath/llvolumeoctree.h   |  4 +-
 indra/llmath/v4color.cpp        |  6 +--
 indra/llmath/xform.cpp          |  4 +-
 indra/llmath/xform.h            |  4 +-
 11 files changed, 117 insertions(+), 117 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp
index 1b2d609b67..edc6986cc9 100755
--- a/indra/llmath/llcalc.cpp
+++ b/indra/llmath/llcalc.cpp
@@ -141,20 +141,20 @@ bool LLCalc::evalString(const std::string& expression, F32& result)
 	try
 	{
 		info = parse(start, expr_upper.end(), calc, space_p);
-		lldebugs << "Math expression: " << expression << " = " << result << llendl;
+		LL_DEBUGS() << "Math expression: " << expression << " = " << result << LL_ENDL;
 	}
 	catch(parser_error<std::string, std::string::iterator> &e)
 	{
 		mLastErrorPos = e.where - expr_upper.begin();
 		
-		llinfos << "Calc parser exception: " << e.descriptor << " at " << mLastErrorPos << " in expression: " << expression << llendl;
+		LL_INFOS() << "Calc parser exception: " << e.descriptor << " at " << mLastErrorPos << " in expression: " << expression << LL_ENDL;
 		return false;
 	}
 	
 	if (!info.full)
 	{
 		mLastErrorPos = info.stop - expr_upper.begin();
-		llinfos << "Unhandled syntax error at " << mLastErrorPos << " in expression: " << expression << llendl;
+		LL_INFOS() << "Unhandled syntax error at " << mLastErrorPos << " in expression: " << expression << LL_ENDL;
 		return false;
 	}
 	
diff --git a/indra/llmath/llcoordframe.cpp b/indra/llmath/llcoordframe.cpp
index 7dd8e43185..1bf51ca0eb 100755
--- a/indra/llmath/llcoordframe.cpp
+++ b/indra/llmath/llcoordframe.cpp
@@ -59,7 +59,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin) :
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -71,7 +71,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin, const LLVector3 &direction)
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -86,7 +86,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &x_axis,
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -102,7 +102,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin,
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -117,7 +117,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin,
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -132,7 +132,7 @@ LLCoordFrame::LLCoordFrame(const LLQuaternion &q) :
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -147,7 +147,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin, const LLQuaternion &q) :
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -160,7 +160,7 @@ LLCoordFrame::LLCoordFrame(const LLMatrix4 &mat) :
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 
@@ -176,7 +176,7 @@ LLCoordFrame::LLCoordFrame(const F32 *origin, const F32 *rotation) :
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 */
@@ -191,7 +191,7 @@ LLCoordFrame::LLCoordFrame(const F32 *origin_and_rotation) :
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;
 	}
 }
 */
@@ -220,7 +220,7 @@ void LLCoordFrame::setOrigin(F32 x, F32 y, F32 z)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;
 	}
 }
 
@@ -230,7 +230,7 @@ void LLCoordFrame::setOrigin(const LLVector3 &new_origin)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;
 	}
 }
 
@@ -243,7 +243,7 @@ void LLCoordFrame::setOrigin(const F32 *origin)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;
 	}
 }
 
@@ -254,7 +254,7 @@ void LLCoordFrame::setOrigin(const LLCoordFrame &frame)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;
 	}
 }
 
@@ -271,7 +271,7 @@ void LLCoordFrame::setAxes(const LLVector3 &x_axis,
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;
 	}
 }
 
@@ -284,7 +284,7 @@ void LLCoordFrame::setAxes(const LLMatrix3 &rotation_matrix)
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;
 	}
 }
 
@@ -296,7 +296,7 @@ void LLCoordFrame::setAxes(const LLQuaternion &q )
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;
 	}
 }
 
@@ -316,7 +316,7 @@ void LLCoordFrame::setAxes(  const F32 *rotation_matrix )
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;
 	}
 }
 
@@ -330,7 +330,7 @@ void LLCoordFrame::setAxes(const LLCoordFrame &frame)
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;
 	}
 }
 
@@ -346,7 +346,7 @@ void LLCoordFrame::translate(F32 x, F32 y, F32 z)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;
 	}
 }
 
@@ -358,7 +358,7 @@ void LLCoordFrame::translate(const LLVector3 &v)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;
 	}
 }
 
@@ -372,7 +372,7 @@ void LLCoordFrame::translate(const F32 *origin)
 	if( !mOrigin.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;
 	}
 }
 
@@ -409,7 +409,7 @@ void LLCoordFrame::rotate(const LLMatrix3 &rotation_matrix)
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::rotate()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::rotate()" << LL_ENDL;
 	}
 }
 
@@ -423,7 +423,7 @@ void LLCoordFrame::roll(F32 angle)
 	if( !mYAxis.isFinite() || !mZAxis.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::roll()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::roll()" << LL_ENDL;
 	}
 }
 
@@ -436,7 +436,7 @@ void LLCoordFrame::pitch(F32 angle)
 	if( !mXAxis.isFinite() || !mZAxis.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::pitch()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::pitch()" << LL_ENDL;
 	}
 }
 
@@ -449,7 +449,7 @@ void LLCoordFrame::yaw(F32 angle)
 	if( !mXAxis.isFinite() || !mYAxis.isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::yaw()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::yaw()" << LL_ENDL;
 	}
 }
 
@@ -509,7 +509,7 @@ size_t LLCoordFrame::readOrientation(const char *buffer)
 	if( !isFinite() )
 	{
 		reset();
-		llwarns << "Non Finite in LLCoordFrame::readOrientation()" << llendl;
+		LL_WARNS() << "Non Finite in LLCoordFrame::readOrientation()" << LL_ENDL;
 	}
 
 	return 12*sizeof(F32);
diff --git a/indra/llmath/llline.cpp b/indra/llmath/llline.cpp
index ef10d1e7fa..f26231840b 100755
--- a/indra/llmath/llline.cpp
+++ b/indra/llmath/llline.cpp
@@ -82,10 +82,10 @@ LLVector3 LLLine::nearestApproach( const LLLine& other_line ) const
 	if ( one_minus_dir_dot_dir < SOME_VERY_SMALL_NUMBER )
 	{
 #ifdef LL_DEBUG
-		llwarns << "LLLine::nearestApproach() was given two very "
+		LL_WARNS() << "LLLine::nearestApproach() was given two very "
 			<< "nearly parallel lines dir1 = " << mDirection 
 			<< " dir2 = " << other_line.mDirection << " with 1-dot_product = " 
-			<< one_minus_dir_dot_dir << llendl;
+			<< one_minus_dir_dot_dir << LL_ENDL;
 #endif
 		// the lines are approximately parallel
 		// We shouldn't fall in here because this check should have been made
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index 7348904c61..02220c41d8 100755
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -265,12 +265,12 @@ public:
 
 				if (child->getOctant() != i)
 				{
-					llerrs << "Invalid child map, bad octant data." << llendl;
+					LL_ERRS() << "Invalid child map, bad octant data." << LL_ENDL;
 				}
 
 				if (getOctant(child->getCenter()) != child->getOctant())
 				{
-					llerrs << "Invalid child octant compared to position data." << llendl;
+					LL_ERRS() << "Invalid child octant compared to position data." << LL_ENDL;
 				}
 			}
 		}
@@ -311,7 +311,7 @@ public:
 	{
 		if (data == NULL || data->getBinIndex() != -1)
 		{
-			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE BRANCH !!!" << llendl;
+			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE BRANCH !!!" << LL_ENDL;
 			return false;
 		}
 		LLOctreeNode<T>* parent = getOctParent();
@@ -374,7 +374,7 @@ public:
 				if (getChildCount() == 8)
 				{
 					//this really isn't possible, something bad has happened
-					OCT_ERRS << "Octree detected floating point error and gave up." << llendl;
+					OCT_ERRS << "Octree detected floating point error and gave up." << LL_ENDL;
 					return false;
 				}
 				
@@ -383,7 +383,7 @@ public:
 				{
 					if (mChild[i]->getCenter().equals3(center))
 					{
-						OCT_ERRS << "Octree detected duplicate child center and gave up." << llendl;
+						OCT_ERRS << "Octree detected duplicate child center and gave up." << LL_ENDL;
 						return false;
 					}
 				}
@@ -399,7 +399,7 @@ public:
 		else 
 		{
 			//it's not in here, give it to the root
-			OCT_ERRS << "Octree insertion failed, starting over from root!" << llendl;
+			OCT_ERRS << "Octree insertion failed, starting over from root!" << LL_ENDL;
 
 			oct_node* node = this;
 
@@ -483,7 +483,7 @@ public:
 		}
 
 		//node is now root
-		llwarns << "!!! OCTREE REMOVING ELEMENT BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << llendl;
+		LL_WARNS() << "!!! OCTREE REMOVING ELEMENT BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << LL_ENDL;
 		node->removeByAddress(data);
 		llassert(data->getBinIndex() == -1);
 		return true;
@@ -496,7 +496,7 @@ public:
 			if (mData[i] == data)
 			{ //we have data
 				_remove(data, i);
-				llwarns << "FOUND!" << llendl;
+				LL_WARNS() << "FOUND!" << LL_ENDL;
 				return;
 			}
 		}
@@ -524,7 +524,7 @@ public:
 			mChild[i]->validate();
 			if (mChild[i]->getParent() != this)
 			{
-				llerrs << "Octree child has invalid parent." << llendl;
+				LL_ERRS() << "Octree child has invalid parent." << LL_ENDL;
 			}
 		}
 #endif
@@ -550,24 +550,24 @@ public:
 
 		if (child->getSize().equals3(getSize()))
 		{
-			OCT_ERRS << "Child size is same as parent size!" << llendl;
+			OCT_ERRS << "Child size is same as parent size!" << LL_ENDL;
 		}
 
 		for (U32 i = 0; i < getChildCount(); i++)
 		{
 			if(!mChild[i]->getSize().equals3(child->getSize())) 
 			{
-				OCT_ERRS <<"Invalid octree child size." << llendl;
+				OCT_ERRS <<"Invalid octree child size." << LL_ENDL;
 			}
 			if (mChild[i]->getCenter().equals3(child->getCenter()))
 			{
-				OCT_ERRS <<"Duplicate octree child position." << llendl;
+				OCT_ERRS <<"Duplicate octree child position." << LL_ENDL;
 			}
 		}
 
 		if (mChild.size() >= 8)
 		{
-			OCT_ERRS <<"Octree node has too many children... why?" << llendl;
+			OCT_ERRS <<"Octree node has too many children... why?" << LL_ENDL;
 		}
 #endif
 
@@ -641,7 +641,7 @@ public:
 			}
 		}
 
-		OCT_ERRS << "Octree failed to delete requested child." << llendl;
+		OCT_ERRS << "Octree failed to delete requested child." << LL_ENDL;
 	}
 
 protected:	
@@ -724,13 +724,13 @@ public:
 	{
 		if (data == NULL) 
 		{
-			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE ROOT !!!" << llendl;
+			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE ROOT !!!" << LL_ENDL;
 			return false;
 		}
 		
 		if (data->getBinRadius() > 4096.0)
 		{
-			OCT_ERRS << "!!! ELEMENT EXCEEDS MAXIMUM SIZE IN OCTREE ROOT !!!" << llendl;
+			OCT_ERRS << "!!! ELEMENT EXCEEDS MAXIMUM SIZE IN OCTREE ROOT !!!" << LL_ENDL;
 			return false;
 		}
 		
@@ -746,7 +746,7 @@ public:
 
 		if (lt != 0x7)
 		{
-			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl;
+			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << LL_ENDL;
 			return false;
 		}
 
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index e4ab46929f..640e916b4b 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -349,7 +349,7 @@ public:
 		}
 		else
 		{
-			llerrs << "Empty leaf" << llendl;
+			LL_ERRS() << "Empty leaf" << LL_ENDL;
 		}
 
 		for (S32 i = 0; i < branch->getChildCount(); ++i)
@@ -839,7 +839,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai
 
 	if (detail < MIN_LOD)
 	{
-		llinfos << "Generating profile with LOD < MIN_LOD.  CLAMPING" << llendl;
+		LL_INFOS() << "Generating profile with LOD < MIN_LOD.  CLAMPING" << LL_ENDL;
 		detail = MIN_LOD;
 	}
 
@@ -855,7 +855,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai
 	// Quick validation to eliminate some server crashes.
 	if (begin > end - 0.01f)
 	{
-		llwarns << "LLProfile::generate() assertion failed (begin >= end)" << llendl;
+		LL_WARNS() << "LLProfile::generate() assertion failed (begin >= end)" << LL_ENDL;
 		return FALSE;
 	}
 
@@ -1071,7 +1071,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai
 		}
 		break;
 	default:
-	    llerrs << "Unknown profile: getCurveType()=" << params.getCurveType() << llendl;
+	    LL_ERRS() << "Unknown profile: getCurveType()=" << params.getCurveType() << LL_ENDL;
 		break;
 	};
 
@@ -1155,7 +1155,7 @@ BOOL LLProfileParams::importFile(LLFILE *fp)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << keyword << " in profile import" << llendl;
+			LL_WARNS() << "unknown keyword " << keyword << " in profile import" << LL_ENDL;
 		}
 	}
 
@@ -1227,7 +1227,7 @@ BOOL LLProfileParams::importLegacyStream(std::istream& input_stream)
 		}
 		else
 		{
- 		llwarns << "unknown keyword " << keyword << " in profile import" << llendl;
+ 		LL_WARNS() << "unknown keyword " << keyword << " in profile import" << LL_ENDL;
 		}
 	}
 
@@ -1541,7 +1541,7 @@ BOOL LLPath::generate(const LLPathParams& params, F32 detail, S32 split,
 
 	if (detail < MIN_LOD)
 	{
-		llinfos << "Generating path with LOD < MIN!  Clamping to 1" << llendl;
+		LL_INFOS() << "Generating path with LOD < MIN!  Clamping to 1" << LL_ENDL;
 		detail = MIN_LOD;
 	}
 
@@ -1793,7 +1793,7 @@ BOOL LLPathParams::importFile(LLFILE *fp)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << " in path import" << llendl;
+			LL_WARNS() << "unknown keyword " << " in path import" << LL_ENDL;
 		}
 	}
 	return TRUE;
@@ -1933,7 +1933,7 @@ BOOL LLPathParams::importLegacyStream(std::istream& input_stream)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << " in path import" << llendl;
+			LL_WARNS() << "unknown keyword " << " in path import" << LL_ENDL;
 		}
 	}
 	return TRUE;
@@ -2024,7 +2024,7 @@ LLProfile::~LLProfile()
 {
 	if(profile_delete_lock)
 	{
-		llerrs << "LLProfile should not be deleted here!" << llendl ;
+		LL_ERRS() << "LLProfile should not be deleted here!" << LL_ENDL ;
 	}
 }
 
@@ -2145,13 +2145,13 @@ BOOL LLVolume::generate()
 	//debug info, to be removed
 	if((U32)(mPathp->mPath.size() * mProfilep->mProfile.size()) > (1u << 20))
 	{
-		llinfos << "sizeS: " << mPathp->mPath.size() << " sizeT: " << mProfilep->mProfile.size() << llendl ;
-		llinfos << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << llendl ;
-		llinfos << mParams << llendl ;
-		llinfos << "more info to check if mProfilep is deleted or not." << llendl ;
-		llinfos << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << llendl ;
+		LL_INFOS() << "sizeS: " << mPathp->mPath.size() << " sizeT: " << mProfilep->mProfile.size() << LL_ENDL ;
+		LL_INFOS() << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << LL_ENDL ;
+		LL_INFOS() << mParams << LL_ENDL ;
+		LL_INFOS() << "more info to check if mProfilep is deleted or not." << LL_ENDL ;
+		LL_INFOS() << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << LL_ENDL ;
 
-		llerrs << "LLVolume corrupted!" << llendl ;
+		LL_ERRS() << "LLVolume corrupted!" << LL_ENDL ;
 	}
 	//********************************************************************
 
@@ -2167,14 +2167,14 @@ BOOL LLVolume::generate()
 		//debug info, to be removed
 		if((U32)(sizeS * sizeT) > (1u << 20))
 		{
-			llinfos << "regenPath: " << (S32)regenPath << " regenProf: " << (S32)regenProf << llendl ;
-			llinfos << "sizeS: " << sizeS << " sizeT: " << sizeT << llendl ;
-			llinfos << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << llendl ;
-			llinfos << mParams << llendl ;
-			llinfos << "more info to check if mProfilep is deleted or not." << llendl ;
-			llinfos << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << llendl ;
+			LL_INFOS() << "regenPath: " << (S32)regenPath << " regenProf: " << (S32)regenProf << LL_ENDL ;
+			LL_INFOS() << "sizeS: " << sizeS << " sizeT: " << sizeT << LL_ENDL ;
+			LL_INFOS() << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << LL_ENDL ;
+			LL_INFOS() << mParams << LL_ENDL ;
+			LL_INFOS() << "more info to check if mProfilep is deleted or not." << LL_ENDL ;
+			LL_INFOS() << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << LL_ENDL ;
 
-			llerrs << "LLVolume corrupted!" << llendl ;
+			LL_ERRS() << "LLVolume corrupted!" << LL_ENDL ;
 		}
 		//********************************************************************
 
@@ -2368,7 +2368,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
 	LLSD mdl;
 	if (!unzip_llsd(mdl, is, size))
 	{
-		LL_DEBUGS("MeshStreaming") << "Failed to unzip LLSD blob for LoD, will probably fetch from sim again." << llendl;
+		LL_DEBUGS("MeshStreaming") << "Failed to unzip LLSD blob for LoD, will probably fetch from sim again." << LL_ENDL;
 		return false;
 	}
 	
@@ -2377,7 +2377,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
 
 		if (face_count == 0)
 		{ //no faces unpacked, treat as failed decode
-			llwarns << "found no faces!" << llendl;
+			LL_WARNS() << "found no faces!" << LL_ENDL;
 			return false;
 		}
 
@@ -2410,7 +2410,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
 			
 			if (idx.empty() || face.mNumIndices < 3)
 			{ //why is there an empty index list?
-				llwarns <<"Empty face present!" << llendl;
+				LL_WARNS() <<"Empty face present!" << LL_ENDL;
 				continue;
 			}
 
@@ -2557,7 +2557,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
 
 				if (cur_vertex != num_verts || idx != weights.size())
 				{
-					llwarns << "Vertex weight count does not match vertex count!" << llendl;
+					LL_WARNS() << "Vertex weight count does not match vertex count!" << LL_ENDL;
 				}
 					
 			}
@@ -2723,7 +2723,7 @@ void LLVolume::createVolumeFaces()
 			vf.mNumS = face.mCount;
 			if (vf.mNumS < 0)
 			{
-				llerrs << "Volume face corruption detected." << llendl;
+				LL_ERRS() << "Volume face corruption detected." << LL_ENDL;
 			}
 
 			vf.mBeginT = 0;
@@ -2771,7 +2771,7 @@ void LLVolume::createVolumeFaces()
 						vf.mNumS = vf.mNumS*2;
 						if (vf.mNumS < 0)
 						{
-							llerrs << "Volume face corruption detected." << llendl;
+							LL_ERRS() << "Volume face corruption detected." << LL_ENDL;
 						}
 					}
 				}
@@ -3080,7 +3080,7 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,
 	// weird crash bug - DEV-11158 - trying to collect more data:
 	if ((sizeS == 0) || (sizeT == 0))
 	{
-		llwarns << "sculpt bad mesh size " << sizeS << " " << sizeT << llendl;
+		LL_WARNS() << "sculpt bad mesh size " << sizeS << " " << sizeT << LL_ENDL;
 	}
 	
 	sNumMeshPoints -= mMesh.size();
@@ -3475,16 +3475,16 @@ bool LLVolumeParams::setType(U8 profile, U8 path)
 		// Bad profile.  Make it square.
 		profile = LL_PCODE_PROFILE_SQUARE;
 		result = false;
-		llwarns << "LLVolumeParams::setType changing bad profile type (" << profile_type
-			 	<< ") to be LL_PCODE_PROFILE_SQUARE" << llendl;
+		LL_WARNS() << "LLVolumeParams::setType changing bad profile type (" << profile_type
+			 	<< ") to be LL_PCODE_PROFILE_SQUARE" << LL_ENDL;
 	}
 	else if (hole_type > LL_PCODE_HOLE_MAX)
 	{
 		// Bad hole.  Make it the same.
 		profile = profile_type;
 		result = false;
-		llwarns << "LLVolumeParams::setType changing bad hole type (" << hole_type
-			 	<< ") to be LL_PCODE_HOLE_SAME" << llendl;
+		LL_WARNS() << "LLVolumeParams::setType changing bad hole type (" << hole_type
+			 	<< ") to be LL_PCODE_HOLE_SAME" << LL_ENDL;
 	}
 
 	if (path_type < LL_PCODE_PATH_MIN ||
@@ -3492,8 +3492,8 @@ bool LLVolumeParams::setType(U8 profile, U8 path)
 	{
 		// Bad path.  Make it linear.
 		result = false;
-		llwarns << "LLVolumeParams::setType changing bad path (" << path
-			 	<< ") to be LL_PCODE_PATH_LINE" << llendl;
+		LL_WARNS() << "LLVolumeParams::setType changing bad path (" << path
+			 	<< ") to be LL_PCODE_PATH_LINE" << LL_ENDL;
 		path = LL_PCODE_PATH_LINE;
 	}
 
@@ -3567,7 +3567,7 @@ S32 *LLVolume::getTriangleIndices(U32 &num_indices) const
 	if (expected_num_triangle_indices > MAX_VOLUME_TRIANGLE_INDICES)
 	{
 		// we don't allow LLVolumes with this many vertices
-		llwarns << "Couldn't allocate triangle indices" << llendl;
+		LL_WARNS() << "Couldn't allocate triangle indices" << LL_ENDL;
 		num_indices = 0;
 		return NULL;
 	}
@@ -4160,9 +4160,9 @@ S32 *LLVolume::getTriangleIndices(U32 &num_indices) const
 	// assert that we computed the correct number of indices
 	if (count != expected_num_triangle_indices )
 	{
-		llerrs << "bad index count prediciton:"
+		LL_ERRS() << "bad index count prediciton:"
 			<< "  expected=" << expected_num_triangle_indices 
-			<< " actual=" << count << llendl;
+			<< " actual=" << count << LL_ENDL;
 	}
 #endif
 
@@ -4171,7 +4171,7 @@ S32 *LLVolume::getTriangleIndices(U32 &num_indices) const
 	S32 num_vertices = mMesh.size();
 	for (i = 0; i < count; i+=3)
 	{
-		llinfos << index[i] << ":" << index[i+1] << ":" << index[i+2] << llendl;
+		LL_INFOS() << index[i] << ":" << index[i+1] << ":" << index[i+2] << LL_ENDL;
 		llassert(index[i] < num_vertices);
 		llassert(index[i+1] < num_vertices);
 		llassert(index[i+2] < num_vertices);
@@ -4763,7 +4763,7 @@ BOOL equalTriangle(const S32 *a, const S32 *b)
 
 BOOL LLVolumeParams::importFile(LLFILE *fp)
 {
-	//llinfos << "importing volume" << llendl;
+	//LL_INFOS() << "importing volume" << LL_ENDL;
 	const S32 BUFSIZE = 16384;
 	char buffer[BUFSIZE];	/* Flawfinder: ignore */
 	// *NOTE: changing the size or type of this buffer will require
@@ -4797,7 +4797,7 @@ BOOL LLVolumeParams::importFile(LLFILE *fp)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << keyword << " in volume import" << llendl;
+			LL_WARNS() << "unknown keyword " << keyword << " in volume import" << LL_ENDL;
 		}
 	}
 
@@ -4817,7 +4817,7 @@ BOOL LLVolumeParams::exportFile(LLFILE *fp) const
 
 BOOL LLVolumeParams::importLegacyStream(std::istream& input_stream)
 {
-	//llinfos << "importing volume" << llendl;
+	//LL_INFOS() << "importing volume" << LL_ENDL;
 	const S32 BUFSIZE = 16384;
 	// *NOTE: changing the size or type of this buffer will require
 	// changing the sscanf below.
@@ -4847,7 +4847,7 @@ BOOL LLVolumeParams::importLegacyStream(std::istream& input_stream)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << keyword << " in volume import" << llendl;
+			LL_WARNS() << "unknown keyword " << keyword << " in volume import" << LL_ENDL;
 		}
 	}
 
@@ -5059,7 +5059,7 @@ LLFaceID LLVolume::generateFaceMask()
 		}
 		break;
 	default:
-		llerrs << "Unknown profile!" << llendl;
+		LL_ERRS() << "Unknown profile!" << LL_ENDL;
 		break;
 	}
 
@@ -5353,7 +5353,7 @@ BOOL LLVolumeFace::create(LLVolume* volume, BOOL partial_build)
 	}
 	else
 	{
-		llerrs << "Unknown/uninitialized face type!" << llendl;
+		LL_ERRS() << "Unknown/uninitialized face type!" << LL_ENDL;
 	}
 
 	//update the range of the texture coordinates
@@ -5960,7 +5960,7 @@ void LLVolumeFace::cacheOptimize()
 	mTangents = binorm;
 
 	//std::string result = llformat("ACMR pre/post: %.3f/%.3f  --  %d triangles %d breaks", pre_acmr, post_acmr, mNumIndices/3, breaks);
-	//llinfos << result << llendl;
+	//LL_INFOS() << result << LL_ENDL;
 
 }
 
@@ -6759,12 +6759,12 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat
 
 	if (new_count > 65536)
 	{
-		llerrs << "Cannot append face -- 16-bit overflow will occur." << llendl;
+		LL_ERRS() << "Cannot append face -- 16-bit overflow will occur." << LL_ENDL;
 	}
 	
 	if (face.mNumVertices == 0)
 	{
-		llerrs << "Cannot append empty face." << llendl;
+		LL_ERRS() << "Cannot append empty face." << LL_ENDL;
 	}
 
 	//allocate new buffer space
diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp
index 9083273ee5..3b8f08e0c6 100755
--- a/indra/llmath/llvolumemgr.cpp
+++ b/indra/llmath/llvolumemgr.cpp
@@ -147,7 +147,7 @@ void LLVolumeMgr::unrefVolume(LLVolume *volumep)
 	volume_lod_group_map_t::iterator iter = mVolumeLODGroups.find(params);
 	if( iter == mVolumeLODGroups.end() )
 	{
-		llerrs << "Warning! Tried to cleanup unknown volume type! " << *params << llendl;
+		LL_ERRS() << "Warning! Tried to cleanup unknown volume type! " << *params << LL_ENDL;
 		if (mDataMutex)
 		{
 			mDataMutex->unlock();
@@ -207,7 +207,7 @@ void LLVolumeMgr::dump()
 	{
 		mDataMutex->unlock();
 	}
-	llinfos << "Average usage of LODs " << avg << llendl;
+	LL_INFOS() << "Average usage of LODs " << avg << LL_ENDL;
 }
 
 void LLVolumeMgr::useMutex()
@@ -270,18 +270,18 @@ bool LLVolumeLODGroup::cleanupRefs()
 	bool res = true;
 	if (mRefs != 0)
 	{
-		llwarns << "Volume group has remaining refs:" << getNumRefs() << llendl;
+		LL_WARNS() << "Volume group has remaining refs:" << getNumRefs() << LL_ENDL;
 		mRefs = 0;
 		for (S32 i = 0; i < NUM_LODS; i++)
 		{
 			if (mLODRefs[i] > 0)
 			{
-				llwarns << " LOD " << i << " refs = " << mLODRefs[i] << llendl;
+				LL_WARNS() << " LOD " << i << " refs = " << mLODRefs[i] << LL_ENDL;
 				mLODRefs[i] = 0;
 				mVolumeLODs[i] = NULL;
 			}
 		}
-		llwarns << *getVolumeParams() << llendl;
+		LL_WARNS() << *getVolumeParams() << LL_ENDL;
 		res = false;
 	}
 	return res;
@@ -320,7 +320,7 @@ BOOL LLVolumeLODGroup::derefLOD(LLVolume *volumep)
 			return TRUE;
 		}
 	}
-	llerrs << "Deref of non-matching LOD in volume LOD group" << llendl;
+	LL_ERRS() << "Deref of non-matching LOD in volume LOD group" << LL_ENDL;
 	return FALSE;
 }
 
@@ -393,7 +393,7 @@ F32 LLVolumeLODGroup::dump()
 
 	std::string dump_str = llformat("%.3f %d %d %d %d", usage, mAccessCount[0], mAccessCount[1], mAccessCount[2], mAccessCount[3]);
 
-	llinfos << dump_str << llendl;
+	LL_INFOS() << dump_str << LL_ENDL;
 	return usage;
 }
 
diff --git a/indra/llmath/llvolumeoctree.cpp b/indra/llmath/llvolumeoctree.cpp
index 0728b49c1f..fb232d5f6c 100755
--- a/indra/llmath/llvolumeoctree.cpp
+++ b/indra/llmath/llvolumeoctree.cpp
@@ -237,7 +237,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)
 	if (!test_min.equals3(min, 0.001f) ||
 		!test_max.equals3(max, 0.001f))
 	{
-		llerrs << "Bad bounding box data found." << llendl;
+		LL_ERRS() << "Bad bounding box data found." << LL_ENDL;
 	}
 
 	test_min.sub(LLVector4a(0.001f));
@@ -251,7 +251,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)
 		if (child->mExtents[0].lessThan(test_min).areAnySet(LLVector4Logical::MASK_XYZ) ||
 			child->mExtents[1].greaterThan(test_max).areAnySet(LLVector4Logical::MASK_XYZ))
 		{
-			llerrs << "Child protrudes from bounding box." << llendl;
+			LL_ERRS() << "Child protrudes from bounding box." << LL_ENDL;
 		}
 	}
 
@@ -267,7 +267,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)
 			if (tri->mV[i]->greaterThan(test_max).areAnySet(LLVector4Logical::MASK_XYZ) ||
 				tri->mV[i]->lessThan(test_min).areAnySet(LLVector4Logical::MASK_XYZ))
 			{
-				llerrs << "Triangle protrudes from node." << llendl;
+				LL_ERRS() << "Triangle protrudes from node." << LL_ENDL;
 			}
 		}
 	}
diff --git a/indra/llmath/llvolumeoctree.h b/indra/llmath/llvolumeoctree.h
index 80d6ced36d..13150028d8 100755
--- a/indra/llmath/llvolumeoctree.h
+++ b/indra/llmath/llvolumeoctree.h
@@ -59,7 +59,7 @@ public:
 
 	const LLVolumeTriangle& operator=(const LLVolumeTriangle& rhs)
 	{
-		llerrs << "Illegal operation!" << llendl;
+		LL_ERRS() << "Illegal operation!" << LL_ENDL;
 		return *this;
 	}
 
@@ -110,7 +110,7 @@ public:
 
 	const LLVolumeOctreeListener& operator=(const LLVolumeOctreeListener& rhs)
 	{
-		llerrs << "Illegal operation!" << llendl;
+		LL_ERRS() << "Illegal operation!" << LL_ENDL;
 		return *this;
 	}
 
diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp
index 81ac62be56..cd2be7c8fd 100755
--- a/indra/llmath/v4color.cpp
+++ b/indra/llmath/v4color.cpp
@@ -245,7 +245,7 @@ void LLColor4::setValue(const LLSD& sd)
 
 	if (out_of_range)
 	{
-		llwarns << "LLSD color value out of range!" << llendl;
+		LL_WARNS() << "LLSD color value out of range!" << LL_ENDL;
 	}
 #else
 	mV[0] = (F32) sd[0].asReal();
@@ -417,7 +417,7 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)
 		if (token_iter == tokens.end())
 		{
 			// This is a malformed vector.
-			llwarns << "LLColor4::parseColor() malformed color " << buf << llendl;
+			LL_WARNS() << "LLColor4::parseColor() malformed color " << buf << LL_ENDL;
 		}
 		else
 		{
@@ -704,7 +704,7 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)
 		}
 		else
 		{
-			llwarns << "invalid color " << color_name << llendl;
+			LL_WARNS() << "invalid color " << color_name << LL_ENDL;
 		}
 	}
 
diff --git a/indra/llmath/xform.cpp b/indra/llmath/xform.cpp
index b75aec6a27..5d8b93d5e8 100755
--- a/indra/llmath/xform.cpp
+++ b/indra/llmath/xform.cpp
@@ -36,10 +36,10 @@ LLXform::~LLXform()
 {
 }
 
-// Link optimization - don't inline these llwarns
+// Link optimization - don't inline these LL_WARNS()
 void LLXform::warn(const char* const msg)
 {
-	llwarns << msg << llendl;
+	LL_WARNS() << msg << LL_ENDL;
 }
 
 LLXform* LLXform::getRoot() const
diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h
index 1b50749b3e..54b0f6d9ec 100755
--- a/indra/llmath/xform.h
+++ b/indra/llmath/xform.h
@@ -103,9 +103,9 @@ public:
 	inline void setRotation(const F32 x, const F32 y, const F32 z, const F32 s);
 
 	// Above functions must be inline for speed, but also
-	// need to emit warnings.  llwarns causes inline LLError::CallSite
+	// need to emit warnings.  LL_WARNS() causes inline LLError::CallSite
 	// static objects that make more work for the linker.
-	// Avoid inline llwarns by calling this function.
+	// Avoid inline LL_WARNS() by calling this function.
 	void warn(const char* const msg);
 	
 	void 		setChanged(const U32 bits)					{ mChanged |= bits; }
-- 
cgit v1.2.3


From 26581404e426b00cd0a07c38b5cb858d5d5faa28 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Wed, 14 Aug 2013 11:51:49 -0700
Subject: BUILDFIX: added header for numeric_limits support on gcc added
 convenience types for units F32Seconds, etc.

---
 indra/llmath/llmath.h | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index 2f83836501..fc30feaf80 100755
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -30,6 +30,7 @@
 #include <cmath>
 #include <cstdlib>
 #include <vector>
+#include <limits>
 #include "lldefs.h"
 //#include "llstl.h" // *TODO: Remove when LLString is gone
 //#include "llstring.h" // *TODO: Remove when LLString is gone
-- 
cgit v1.2.3


From d2bd23fdd0cb7f63eec4c32e9f530b7f33c4431c Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Wed, 14 Aug 2013 17:02:01 -0700
Subject: BUILDFIX: removed problematic constants for linux build

---
 indra/llmath/llmath.h | 4 ----
 1 file changed, 4 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index fc30feaf80..29db799154 100755
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -84,10 +84,6 @@ const F32	OO_LN2		= 1.4426950408889634073599246810019f;
 const F32	F_ALMOST_ZERO	= 0.0001f;
 const F32	F_ALMOST_ONE	= 1.0f - F_ALMOST_ZERO;
 
-const F64	NaN				= std::numeric_limits<double>::quiet_NaN();
-const F64	INFINITY		= std::numeric_limits<double>::infinity();
-const F64	MINUS_INFINITY	= std::numeric_limits<double>::infinity() * -1.0;
-
 // BUG: Eliminate in favor of F_APPROXIMATELY_ZERO above?
 const F32 FP_MAG_THRESHOLD = 0.0000001f;
 
-- 
cgit v1.2.3


From 9053b9020a380f95f23051ca123127519db53e29 Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Thu, 26 Sep 2013 11:03:04 -0600
Subject: fix for SH-4521: Interesting viewer crash in Pipeline:RenderDrawPools

---
 indra/llmath/lltreenode.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/lltreenode.h b/indra/llmath/lltreenode.h
index c66bc26176..0b479c4564 100755
--- a/indra/llmath/lltreenode.h
+++ b/indra/llmath/lltreenode.h
@@ -57,7 +57,14 @@ public:
 	virtual bool remove(T* data);
 	virtual void notifyRemoval(T* data);
 	virtual U32 getListenerCount()					{ return mListeners.size(); }
-	virtual LLTreeListener<T>* getListener(U32 index) const { return mListeners[index]; }
+	virtual LLTreeListener<T>* getListener(U32 index) const 
+	{
+		if(index < mListeners.size())
+		{
+			return mListeners[index]; 
+		}
+		return NULL;
+	}
 	virtual void addListener(LLTreeListener<T>* listener) { mListeners.push_back(listener); }
 
 protected:
-- 
cgit v1.2.3


From 1acceb3633c0f0c4fdf29b17d77d67c8a9b71986 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 14 Oct 2013 10:18:41 -0700
Subject: changed ll_aligned_(malloc|free) to take alignment size as a template
 argument

---
 indra/llmath/llvolume.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 699eeb0b89..26d2ae2963 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -4667,7 +4667,7 @@ LLVolumeFace::~LLVolumeFace()
 
 void LLVolumeFace::freeData()
 {
-	ll_aligned_free(64, mPositions);
+	ll_aligned_free<64>(mPositions);
 	mPositions = NULL;
 
 	//normals and texture coordinates are part of the same buffer as mPositions, do not free them separately
@@ -5245,7 +5245,7 @@ void LLVolumeFace::cacheOptimize()
 	//allocate space for new buffer
 	S32 num_verts = mNumVertices;
 	S32 size = ((num_verts*sizeof(LLVector2)) + 0xF) & ~0xF;
-	LLVector4a* pos = (LLVector4a*) ll_aligned_malloc(64, sizeof(LLVector4a)*2*num_verts+size);
+	LLVector4a* pos = (LLVector4a*) ll_aligned_malloc<64>(sizeof(LLVector4a)*2*num_verts+size);
 	LLVector4a* norm = pos + num_verts;
 	LLVector2* tc = (LLVector2*) (norm + num_verts);
 
@@ -5295,7 +5295,7 @@ void LLVolumeFace::cacheOptimize()
 		mIndices[i] = new_idx[mIndices[i]];
 	}
 	
-	ll_aligned_free(64, mPositions);
+	ll_aligned_free<64>(mPositions);
 	// DO NOT free mNormals and mTexCoords as they are part of mPositions buffer
 	ll_aligned_free_16(mWeights);
 	ll_aligned_free_16(mTangents);
@@ -6023,7 +6023,7 @@ void LLVolumeFace::createTangents()
 
 void LLVolumeFace::resizeVertices(S32 num_verts)
 {
-	ll_aligned_free(64, mPositions);
+	ll_aligned_free<64>(mPositions);
 	//DO NOT free mNormals and mTexCoords as they are part of mPositions buffer
 	ll_aligned_free_16(mTangents);
 
@@ -6034,7 +6034,7 @@ void LLVolumeFace::resizeVertices(S32 num_verts)
 		//pad texture coordinate block end to allow for QWORD reads
 		S32 size = ((num_verts*sizeof(LLVector2)) + 0xF) & ~0xF;
 
-		mPositions = (LLVector4a*) ll_aligned_malloc(64, sizeof(LLVector4a)*2*num_verts+size);
+		mPositions = (LLVector4a*) ll_aligned_malloc<64>(sizeof(LLVector4a)*2*num_verts+size);
 		mNormals = mPositions+num_verts;
 		mTexCoords = (LLVector2*) (mNormals+num_verts);
 
@@ -6074,7 +6074,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con
 
 		LLVector4a* old_buf = mPositions;
 
-		mPositions = (LLVector4a*) ll_aligned_malloc(64, new_size);
+		mPositions = (LLVector4a*) ll_aligned_malloc<64>(new_size);
 		mNormals = mPositions+new_verts;
 		mTexCoords = (LLVector2*) (mNormals+new_verts);
 
@@ -6090,7 +6090,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con
 	//just clear tangents
 	ll_aligned_free_16(mTangents);
 	mTangents = NULL;
-		ll_aligned_free(64, old_buf);
+		ll_aligned_free<64>(old_buf);
 
 		mNumAllocatedVertices = new_verts;
 
@@ -6191,7 +6191,7 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat
 
 	//allocate new buffer space
 	LLVector4a* old_buf = mPositions;
-	mPositions = (LLVector4a*) ll_aligned_malloc(64, new_size);
+	mPositions = (LLVector4a*) ll_aligned_malloc<64>(new_size);
 	mNormals = mPositions + new_count;
 	mTexCoords = (LLVector2*) (mNormals+new_count);
 
-- 
cgit v1.2.3


From 04397a095acd6ceeb280b3fc82cf122fd6ccf43a Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 21 Oct 2013 12:29:33 -0700
Subject: more buildfix

---
 indra/llmath/llvolume.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 26d2ae2963..23dfa290a9 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -1647,7 +1647,7 @@ BOOL LLPath::generate(const LLPathParams& params, F32 detail, S32 split,
 			F32 t = (F32)i * mStep;
 			mPath[i].mPos.set(0,
 								lerp(0,   -sin(F_PI*params.getTwist()*t)*0.5f,t),
-								lerp(-0.5, cos(F_PI*params.getTwist()*t)*0.5f,t));
+								lerp(-0.5f, cos(F_PI*params.getTwist()*t)*0.5f,t));
 			mPath[i].mScale.set(lerp(1,params.getScale().mV[0],t),
 								lerp(1,params.getScale().mV[1],t), 0,1);
 			mPath[i].mTexT  = t;
-- 
cgit v1.2.3


From 6a0a5c18e33be6889f12a9954861c446acb9113b Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Wed, 13 Nov 2013 22:38:19 -0700
Subject: more fix for SH-4607: Create new object cache tuning parameters fix
 remote objects not showing up.

---
 indra/llmath/llcamera.cpp | 28 ++++++++++++++++++++++++++--
 indra/llmath/llcamera.h   |  2 +-
 2 files changed, 27 insertions(+), 3 deletions(-)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 4d1ee15661..ff90532f75 100755
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -629,8 +629,24 @@ void LLCamera::calcAgentFrustumPlanes(LLVector3* frust)
 
 //calculate regional planes from mAgentPlanes.
 //vector "shift" is the vector of the region origin in the agent space.
-void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift) 
+void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift, F32 far_clip_distance) 
 {
+	F32 far_w;
+	{
+		LLVector3 p = getOrigin();
+		LLVector3 n(mAgentPlanes[5][0], mAgentPlanes[5][1], mAgentPlanes[5][2]);
+		F32 dd = n * p;
+		if(dd + mAgentPlanes[5][3] < 0) //signed distance
+		{
+			far_w = -far_clip_distance - dd;
+		}
+		else
+		{
+			far_w = far_clip_distance - dd;
+		}
+		far_w += n * shift;
+	}
+
 	F32 d;
 	LLVector3 n;
 	for(S32 i = 0 ; i < 7; i++)
@@ -638,7 +654,15 @@ void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift)
 		if (mPlaneMask[i] != 0xff)
 		{
 			n.setVec(mAgentPlanes[i][0], mAgentPlanes[i][1], mAgentPlanes[i][2]);
-			d = mAgentPlanes[i][3] + n * shift;
+
+			if(i != 5)
+			{
+				d = mAgentPlanes[i][3] + n * shift;
+			}
+			else
+			{
+				d = far_w;
+			}
 			mRegionPlanes[i].setVec(n, d);
 		}
 	}
diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h
index 946f9f8d84..321b8ddcc4 100755
--- a/indra/llmath/llcamera.h
+++ b/indra/llmath/llcamera.h
@@ -194,7 +194,7 @@ public:
 	// Return number of bytes copied.
 	size_t readFrustumFromBuffer(const char *buffer);
 	void calcAgentFrustumPlanes(LLVector3* frust);
-	void calcRegionFrustumPlanes(const LLVector3& shift); //calculate regional planes from mAgentPlanes.
+	void calcRegionFrustumPlanes(const LLVector3& shift, F32 far_clip_distance); //calculate regional planes from mAgentPlanes.
 	void ignoreAgentFrustumPlane(S32 idx);
 
 	// Returns 1 if partly in, 2 if fully in.
-- 
cgit v1.2.3


From e2d14cfd474aceae95a3391e7c8d79e20e734474 Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Tue, 4 Feb 2014 21:32:11 -0700
Subject: fix crash at line 2207: llassert(dst->isFinite3()) in llvolume.cpp

---
 indra/llmath/llvolume.cpp | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra/llmath')

diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index e419d1aea5..f0cff6e5cd 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -2086,6 +2086,7 @@ void LLVolume::resizePath(S32 length)
 {
 	mPathp->resizePath(length);
 	mVolumeFaces.clear();
+	setDirty();
 }
 
 void LLVolume::regen()
-- 
cgit v1.2.3