diff options
| author | simon@Simon-PC.lindenlab.com <simon@Simon-PC.lindenlab.com> | 2012-12-04 14:31:15 -0800 | 
|---|---|---|
| committer | simon@Simon-PC.lindenlab.com <simon@Simon-PC.lindenlab.com> | 2012-12-04 14:31:15 -0800 | 
| commit | 40e78a80cc293874216cdc8730d93cba8e987052 (patch) | |
| tree | 1d16ec375ef2b0dfd9c7a3363cd46575c457a033 /indra/llrender | |
| parent | 18e20ca6f2cb7d51d4d7e7d9566b0018025a91cc (diff) | |
| parent | f5a47417fde70f78b99744386c6da0bcf78e60d5 (diff) | |
Pull and merge viewer-development
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llfontgl.cpp | 4 | ||||
| -rw-r--r-- | indra/llrender/llfontgl.h | 2 | ||||
| -rw-r--r-- | indra/llrender/llfontregistry.cpp | 30 | ||||
| -rw-r--r-- | indra/llrender/llfontregistry.h | 4 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 4 | ||||
| -rw-r--r-- | indra/llrender/llrendertarget.cpp | 15 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 17 | 
7 files changed, 49 insertions, 27 deletions
| diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 4dc2fcd714..647512eb2e 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -789,7 +789,7 @@ const LLFontDescriptor& LLFontGL::getFontDesc() const  }  // static -void LLFontGL::initClass(F32 screen_dpi, F32 x_scale, F32 y_scale, const std::string& app_dir, const std::vector<std::string>& xui_paths, bool create_gl_textures) +void LLFontGL::initClass(F32 screen_dpi, F32 x_scale, F32 y_scale, const std::string& app_dir, bool create_gl_textures)  {  	sVertDPI = (F32)llfloor(screen_dpi * y_scale);  	sHorizDPI = (F32)llfloor(screen_dpi * x_scale); @@ -800,7 +800,7 @@ void LLFontGL::initClass(F32 screen_dpi, F32 x_scale, F32 y_scale, const std::st  	// Font registry init  	if (!sFontRegistry)  	{ -		sFontRegistry = new LLFontRegistry(xui_paths, create_gl_textures); +		sFontRegistry = new LLFontRegistry(create_gl_textures);  		sFontRegistry->parseFontInfo("fonts.xml");  	}  	else diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index 5ed5d2c4eb..0988e99deb 100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h @@ -150,7 +150,7 @@ public:  	const LLFontDescriptor& getFontDesc() const; -	static void initClass(F32 screen_dpi, F32 x_scale, F32 y_scale, const std::string& app_dir, const std::vector<std::string>& xui_paths, bool create_gl_textures = true); +	static void initClass(F32 screen_dpi, F32 x_scale, F32 y_scale, const std::string& app_dir, bool create_gl_textures = true);  	// Load sans-serif, sans-serif-small, etc.  	// Slow, requires multiple seconds to load fonts. diff --git a/indra/llrender/llfontregistry.cpp b/indra/llrender/llfontregistry.cpp index 4d22eba3d9..b5bdba996f 100644 --- a/indra/llrender/llfontregistry.cpp +++ b/indra/llrender/llfontregistry.cpp @@ -163,14 +163,9 @@ LLFontDescriptor LLFontDescriptor::normalize() const  	return LLFontDescriptor(new_name,new_size,new_style,getFileNames());  } -LLFontRegistry::LLFontRegistry(const string_vec_t& xui_paths, -							   bool create_gl_textures) +LLFontRegistry::LLFontRegistry(bool create_gl_textures)  :	mCreateGLTextures(create_gl_textures)  { -	// Propagate this down from LLUICtrlFactory so LLRender doesn't -	// need an upstream dependency on LLUI. -	mXUIPaths = xui_paths; -	  	// This is potentially a slow directory traversal, so we want to  	// cache the result.  	mUltimateFallbackList = LLWindow::getDynamicFallbackFontList(); @@ -183,27 +178,30 @@ LLFontRegistry::~LLFontRegistry()  bool LLFontRegistry::parseFontInfo(const std::string& xml_filename)  { -	bool success = false;  // Succeed if we find at least one XUI file -	const string_vec_t& xml_paths = mXUIPaths; +	bool success = false;  // Succeed if we find and read at least one XUI file +	const string_vec_t xml_paths = gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename); +	if (xml_paths.empty()) +	{ +		// We didn't even find one single XUI file +		return false; +	} +  	for (string_vec_t::const_iterator path_it = xml_paths.begin();  		 path_it != xml_paths.end();  		 ++path_it)  	{ -	  		LLXMLNodePtr root; -		std::string full_filename = gDirUtilp->findSkinnedFilename(*path_it, xml_filename); -		bool parsed_file = LLXMLNode::parseFile(full_filename, root, NULL); +		bool parsed_file = LLXMLNode::parseFile(*path_it, root, NULL);  		if (!parsed_file)  			continue; -		 +  		if ( root.isNull() || ! root->hasName( "fonts" ) )  		{ -			llwarns << "Bad font info file: " -					<< full_filename << llendl; +			llwarns << "Bad font info file: " << *path_it << llendl;  			continue;  		} -		 +  		std::string root_name;  		root->getAttributeString("name",root_name);  		if (root->hasName("fonts")) @@ -215,7 +213,7 @@ bool LLFontRegistry::parseFontInfo(const std::string& xml_filename)  	}  	//if (success)  	//	dump(); -	 +  	return success;  } diff --git a/indra/llrender/llfontregistry.h b/indra/llrender/llfontregistry.h index 8b06191c56..059248fbbd 100644 --- a/indra/llrender/llfontregistry.h +++ b/indra/llrender/llfontregistry.h @@ -67,8 +67,7 @@ class LLFontRegistry  public:  	// create_gl_textures - set to false for test apps with no OpenGL window,  	// such as llui_libtest -	LLFontRegistry(const string_vec_t& xui_paths, -		bool create_gl_textures); +	LLFontRegistry(bool create_gl_textures);  	~LLFontRegistry();  	// Load standard font info from XML file(s). @@ -105,7 +104,6 @@ private:  	font_size_map_t mFontSizes;  	string_vec_t mUltimateFallbackList; -	string_vec_t mXUIPaths;  	bool mCreateGLTextures;  }; diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 964495a3ab..d70e764769 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -424,6 +424,10 @@ const U32 FENCE_WAIT_TIME_NANOSECONDS = 1000;  //1 ms  class LLGLFence  {  public: +	virtual ~LLGLFence() +	{ +	} +  	virtual void placeFence() = 0;  	virtual bool isCompleted() = 0;  	virtual void wait() = 0; diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index cd1c532243..c1b96a43da 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -168,10 +168,19 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)  	}  	U32 offset = mTex.size(); -	if (offset >= 4 || -		(offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers))) + +	if( offset >= 4 )  	{ -		llerrs << "Too many color attachments!" << llendl; +		llwarns << "Too many color attachments" << llendl; +		llassert( offset < 4 ); +		return false; +	} +	if( offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers) ) +	{ +		llwarns << "FBO not used or no drawbuffers available; mFBO=" << (U32)mFBO << " gGLManager.mHasDrawBuffers=" << (U32)gGLManager.mHasDrawBuffers << llendl; +		llassert(  mFBO != 0 ); +		llassert( gGLManager.mHasDrawBuffers ); +		return false;  	}  	U32 tex; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index e005abeef9..dfbd8cd4ee 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -554,8 +554,21 @@ void LLVertexBuffer::drawArrays(U32 mode, const std::vector<LLVector3>& pos, con  	gGL.syncMatrices();  	U32 count = pos.size(); -	llassert_always(norm.size() >= pos.size()); -	llassert_always(count > 0); +	 +	llassert(norm.size() >= pos.size()); +	llassert(count > 0); + +	if( count == 0 ) +	{ +		llwarns << "Called drawArrays with 0 vertices" << llendl; +		return; +	} + +	if( norm.size() < pos.size() ) +	{ +		llwarns << "Called drawArrays with #" << norm.size() << " normals and #" << pos.size() << " vertices" << llendl; +		return; +	}  	unbind(); | 
