diff options
| -rw-r--r-- | indra/llrender/llgl.cpp | 7 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerstats.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llvopartgroup.cpp | 12 | 
4 files changed, 31 insertions, 9 deletions
| diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 013b86f32c..639d967853 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -558,7 +558,8 @@ bool LLGLManager::initGL()  	parse_gl_version( &mDriverVersionMajor,   		&mDriverVersionMinor,   		&mDriverVersionRelease,  -		&mDriverVersionVendorString ); +		&mDriverVersionVendorString, +		&mGLVersionString);  	mGLVersion = mDriverVersionMajor + mDriverVersionMinor * .1f; @@ -2053,7 +2054,7 @@ void LLGLManager::initGLStates()  //////////////////////////////////////////////////////////////////////////////// -void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific ) +void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific, std::string* version_string )  {  	// GL_VERSION returns a null-terminated string with the format:   	// <major>.<minor>[.<release>] [<vendor specific>] @@ -2069,6 +2070,8 @@ void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor  		return;  	} +	version_string->assign(version); +  	std::string ver_copy( version );  	S32 len = (S32)strlen( version );	/* Flawfinder: ignore */  	S32 i = 0; diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 5a33c98708..9c3a47bd50 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -141,6 +141,7 @@ public:  	S32 mGLSLVersionMajor;  	S32 mGLSLVersionMinor;  	std::string mDriverVersionVendorString; +	std::string mGLVersionString;  	S32 mVRAM; // VRAM in MB  	S32 mGLMaxVertexRange; @@ -423,7 +424,7 @@ extern LLMatrix4 gGLObliqueProjectionInverse;  void init_glstates(); -void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific ); +void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific, std::string* version_string );  extern BOOL gClothRipple;  extern BOOL gHeadlessClient; diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index c88122f22c..28dea8aa04 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -789,6 +789,24 @@ void send_stats()  	system["gpu_class"] = (S32)LLFeatureManager::getInstance()->getGPUClass();  	system["gpu_vendor"] = gGLManager.mGLVendorShort;  	system["gpu_version"] = gGLManager.mDriverVersionVendorString; +	system["opengl_version"] = gGLManager.mGLVersionString; + +	S32 shader_level = 0; +	if (LLPipeline::sRenderDeferred) +	{ +		shader_level = 3; +	} +	else if (gPipeline.canUseWindLightShadersOnObjects()) +	{ +		shader_level = 2; +	} +	else if (gPipeline.canUseVertexShaders()) +	{ +		shader_level = 1; +	} + + +	system["shader_level"] = shader_level;  	LLSD &download = body["downloads"]; diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 49356467a0..b6adc776cc 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -619,13 +619,13 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)  		S32 geom_idx = (S32) facep->getGeomIndex(); -		verticesp += geom_idx; -		normalsp += geom_idx; -		texcoordsp += geom_idx; -		colorsp += geom_idx; -		indicesp += facep->getIndicesStart(); +		LLStrider<U16> cur_idx = indicesp + facep->getIndicesStart(); +		LLStrider<LLVector4a> cur_vert = verticesp + geom_idx; +		LLStrider<LLVector3> cur_norm = normalsp + geom_idx; +		LLStrider<LLVector2> cur_tc = texcoordsp + geom_idx; +		LLStrider<LLColor4U> cur_col = colorsp + geom_idx; -		object->getGeometry(facep->getTEOffset(), verticesp, normalsp, texcoordsp, colorsp, indicesp); +		object->getGeometry(facep->getTEOffset(), cur_vert, cur_norm, cur_tc, cur_col, cur_idx);  		llassert(facep->getGeomCount() == 4);  		llassert(facep->getIndicesCount() == 6); | 
