diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-06-15 16:00:21 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-08-20 00:35:02 +0300 | 
| commit | 664ba53e4ce8510345e490cedf4401f6655f38fc (patch) | |
| tree | cce2d45240725fa44df1b07258bfee8976314146 /indra | |
| parent | 0ab6dfa12eb04238d82c7a4aea7390cbd28beacd (diff) | |
SL-17584 Make setShaders crashes more informative
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llrender/llshadermgr.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.h | 6 | 
3 files changed, 16 insertions, 13 deletions
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 686eaddc24..96fb764f75 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -673,7 +673,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	if (file == NULL)  	{ -		LL_SHADER_LOADING_WARNS() << "GLSL Shader file not found: " << open_file_name << LL_ENDL; +		LL_WARNS("ShaderLoading") << "GLSL Shader file not found: " << open_file_name << LL_ENDL;  		return 0;  	} diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index efe23d7295..0d9670d9ca 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -569,15 +569,14 @@ void LLViewerShaderMgr::setShaders()      mShaderLevel[SHADER_DEFERRED] = deferred_class;      mShaderLevel[SHADER_TRANSFORM] = transform_class; -    BOOL loaded = loadBasicShaders(); -    if (loaded) +    std::string shader_name = loadBasicShaders(); +    if (shader_name.empty())      {          LL_INFOS() << "Loaded basic shaders." << LL_ENDL;      }      else      { -        LL_ERRS() << "Unable to load basic shaders, verify graphics driver installed and current." << LL_ENDL; -        llassert(loaded); +        LL_ERRS() << "Unable to load basic shader " << shader_name << ", verify graphics driver installed and current." << LL_ENDL;          reentrance = false; // For hygiene only, re-try probably helps nothing           return;      } @@ -585,7 +584,7 @@ void LLViewerShaderMgr::setShaders()      gPipeline.mShadersLoaded = true;      // Load all shaders to set max levels -    loaded = loadShadersEnvironment(); +    BOOL loaded = loadShadersEnvironment();      if (loaded)      { @@ -831,7 +830,7 @@ void LLViewerShaderMgr::unloadShaders()  	gPipeline.mShadersLoaded = false;  } -BOOL LLViewerShaderMgr::loadBasicShaders() +std::string LLViewerShaderMgr::loadBasicShaders()  {  	// Load basic dependency shaders first  	// All of these have to load for any shaders to function @@ -917,8 +916,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()  		// Note usage of GL_VERTEX_SHADER_ARB  		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_VERTEX_SHADER_ARB, &attribs) == 0)  		{ -			LL_SHADER_LOADING_WARNS() << "Failed to load vertex shader " << shaders[i].first << LL_ENDL; -			return FALSE; +			LL_WARNS("Shader") << "Failed to load vertex shader " << shaders[i].first << LL_ENDL; +			return shaders[i].first;  		}  	} @@ -978,12 +977,12 @@ BOOL LLViewerShaderMgr::loadBasicShaders()  		// Note usage of GL_FRAGMENT_SHADER_ARB  		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_FRAGMENT_SHADER_ARB, &attribs, index_channels[i]) == 0)  		{ -			LL_SHADER_LOADING_WARNS() << "Failed to load fragment shader " << shaders[i].first << LL_ENDL; -			return FALSE; +			LL_WARNS("Shader") << "Failed to load fragment shader " << shaders[i].first << LL_ENDL; +			return shaders[i].first;  		}  	} -	return TRUE; +	return std::string();  }  BOOL LLViewerShaderMgr::loadShadersEnvironment() diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index 87d90b49a9..ef49074959 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -49,7 +49,11 @@ public:  	void setShaders();  	void unloadShaders();      S32  getShaderLevel(S32 type); -	BOOL loadBasicShaders(); + +    // loadBasicShaders in case of a failure returns +    // name of a file error happened at, otherwise +    // returns an empty string +    std::string loadBasicShaders();  	BOOL loadShadersEffects();  	BOOL loadShadersDeferred();  	BOOL loadShadersObject();  | 
