diff options
Diffstat (limited to 'indra/llmath')
| -rw-r--r-- | indra/llmath/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | indra/llmath/llmath.h | 4 | ||||
| -rw-r--r-- | indra/llmath/lloctree.cpp | 29 | ||||
| -rw-r--r-- | indra/llmath/llsimdmath.h | 2 | ||||
| -rw-r--r-- | indra/llmath/llvolume.cpp | 2 | ||||
| -rw-r--r-- | indra/llmath/llvolume.h | 2 | ||||
| -rw-r--r-- | indra/llmath/tests/v4math_test.cpp | 3 | ||||
| -rw-r--r-- | indra/llmath/v4color.cpp | 2 | ||||
| -rw-r--r-- | indra/llmath/v4color.h | 2 | ||||
| -rw-r--r-- | indra/llmath/v4coloru.h | 34 | 
10 files changed, 71 insertions, 16 deletions
| diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt index 0614fd92ef..4c8bcdac91 100644 --- a/indra/llmath/CMakeLists.txt +++ b/indra/llmath/CMakeLists.txt @@ -4,6 +4,7 @@ project(llmath)  include(00-Common)  include(LLCommon) +include(Boost)  include_directories(      ${LLCOMMON_INCLUDE_DIRS} @@ -20,6 +21,7 @@ set(llmath_SOURCE_FILES      llline.cpp      llmatrix3a.cpp      llmodularmath.cpp +    lloctree.cpp      llperlin.cpp      llquaternion.cpp      llrect.cpp @@ -117,6 +119,11 @@ if (LL_TESTS)      v4color.cpp      v4coloru.cpp      ) +  set_source_files_properties( +    ${llmath_TEST_SOURCE_FILES} +    PROPERTIES +    LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_THREAD_LIBRARY}" +  )    LL_ADD_PROJECT_UNIT_TESTS(llmath "${llmath_TEST_SOURCE_FILES}")    # INTEGRATION TESTS diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 692284e04b..e508c9a199 100644 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h @@ -153,7 +153,7 @@ inline F64 llabs(const F64 a)  inline S32 lltrunc( F32 f )  { -#if LL_WINDOWS && !defined( __INTEL_COMPILER ) +#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)  		// Avoids changing the floating point control word.  		// Add or subtract 0.5 - epsilon and then round  		const static U32 zpfp[] = { 0xBEFFFFFF, 0x3EFFFFFF }; @@ -179,7 +179,7 @@ inline S32 lltrunc( F64 f )  inline S32 llfloor( F32 f )  { -#if LL_WINDOWS && !defined( __INTEL_COMPILER ) +#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)  		// Avoids changing the floating point control word.  		// Accurate (unlike Stereopsis version) for all values between S32_MIN and S32_MAX and slightly faster than Stereopsis version.  		// Add -(0.5 - epsilon) and then round diff --git a/indra/llmath/lloctree.cpp b/indra/llmath/lloctree.cpp new file mode 100644 index 0000000000..3fcb3a27d7 --- /dev/null +++ b/indra/llmath/lloctree.cpp @@ -0,0 +1,29 @@ +/**  + * @file lloctree.cpp + * + * $LicenseInfo:firstyear=2005&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ +#include "stdtypes.h" + +U32 gOctreeMaxCapacity; +F32 gOctreeMinSize; + diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h index cebd2ace7d..54a275633f 100644 --- a/indra/llmath/llsimdmath.h +++ b/indra/llmath/llsimdmath.h @@ -31,7 +31,7 @@  #error "Please include llmath.h before this file."  #endif -#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 ) ) +#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 && ADDRESS_SIZE == 32 ) )  #error SSE2 not enabled. LLVector4a and related class will not compile.  #endif diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index b1be29f594..014de6b888 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -89,7 +89,7 @@ const F32 SKEW_MAX	=  0.95f;  const F32 SCULPT_MIN_AREA = 0.002f;  const S32 SCULPT_MIN_AREA_DETAIL = 1; -extern BOOL gDebugGL; +BOOL gDebugGL = FALSE;  BOOL check_same_clock_dir( const LLVector3& pt1, const LLVector3& pt2, const LLVector3& pt3, const LLVector3& norm)  {     diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index ec707a1b22..bba691d243 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -199,6 +199,8 @@ const U8 LL_SCULPT_FLAG_MASK = LL_SCULPT_FLAG_INVERT | LL_SCULPT_FLAG_MIRROR;  const S32 LL_SCULPT_MESH_MAX_FACES = 8; +extern BOOL gDebugGL; +  class LLProfileParams  {  public: diff --git a/indra/llmath/tests/v4math_test.cpp b/indra/llmath/tests/v4math_test.cpp index 191ac864df..9779dfded3 100644 --- a/indra/llmath/tests/v4math_test.cpp +++ b/indra/llmath/tests/v4math_test.cpp @@ -355,7 +355,8 @@ namespace tut  		val3 = z1 + (z2 - z1)* val;  		val4 = w1 + (w2 - w1)* val;  		LLVector4 vec4b = lerp(vec4,vec4a,val); -		ensure("lerp failed", ((val1 ==vec4b.mV[VX])&& (val2 ==vec4b.mV[VY]) && (val3 ==vec4b.mV[VZ])&& (val4 ==vec4b.mV[VW])));	 +		LLVector4 check(val1, val2, val3, val4); +		ensure_equals("lerp failed", check, vec4b);  	}  	template<> template<> diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp index 79a64b24f2..a8768bda35 100644 --- a/indra/llmath/v4color.cpp +++ b/indra/llmath/v4color.cpp @@ -122,7 +122,7 @@ LLColor4 LLColor4::cyan6(0.2f, 0.6f, 0.6f, 1.0f);  //////////////////////////////////////////////////////////////////////////////  // conversion -LLColor4::operator const LLColor4U() const +LLColor4::operator LLColor4U() const  {  	return LLColor4U(  		(U8)llclampb(ll_round(mV[VRED]*255.f)), diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index 0d632f59be..8f353ead5a 100644 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h @@ -131,7 +131,7 @@ class LLColor4  		friend const LLColor4& operator*=(LLColor4 &a, const LLColor4 &b); // Doesn't multiply alpha! (for lighting)  		// conversion -		operator const LLColor4U() const; +		operator LLColor4U() const;  		// Basic color values.  		static LLColor4 red; diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h index fddad34978..0f2eff3d14 100644 --- a/indra/llmath/v4coloru.h +++ b/indra/llmath/v4coloru.h @@ -47,14 +47,7 @@ class LLColor4U  {  public: -	union -	{ -		U8         mV[LENGTHOFCOLOR4U]; -		U32        mAll; -		LLColor4*  mSources; -		LLColor4U* mSourcesU; -	}; - +	U8 mV[LENGTHOFCOLOR4U];  	LLColor4U();						// Initializes LLColor4U to (0, 0, 0, 1)  	LLColor4U(U8 r, U8 g, U8 b);		// Initializes LLColor4U to (r, g, b, 1) @@ -127,11 +120,14 @@ public:  	static BOOL parseColor4U(const std::string& buf, LLColor4U* value);  	// conversion -	operator const LLColor4() const +	operator LLColor4() const  	{  		return LLColor4(*this);  	} +	U32 asRGBA() const; +	void fromRGBA( U32 aVal ); +  	static LLColor4U white;  	static LLColor4U black;  	static LLColor4U red; @@ -565,6 +561,26 @@ void LLColor4U::setVecScaleClamp(const LLColor3& color)  	mV[3] = 255;  } +inline U32 LLColor4U::asRGBA() const +{ +	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here + +	return (mV[3] << 24) | (mV[2] << 16) | (mV[1] << 8) | mV[0]; +} + +inline void LLColor4U::fromRGBA( U32 aVal ) +{ +	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here + +	mV[ 0 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 1 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 2 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 3 ] = aVal & 0xFF; +} +  #endif | 
