summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2022-09-02 19:54:25 -0500
committerDave Parks <davep@lindenlab.com>2022-09-02 19:54:25 -0500
commit4c2b80fd00c545cf2e288520c8cf5fa1379d75b4 (patch)
tree337da8dd7dcdbbd56357b3b99f3a5013c79baa53
parent00b1fec9601c3618f12cebce551e4ce2b38d7e00 (diff)
parenta6c385a8cbcd6083ce28277fc263f7140c9df5cd (diff)
Merge branch 'SL-17967' of ssh://bitbucket.org/lindenlab/viewer into SL-17967
-rw-r--r--indra/llrender/llshadermgr.cpp13
-rw-r--r--indra/newview/llfeaturemanager.cpp2
-rw-r--r--indra/newview/llgltfmateriallist.cpp9
3 files changed, 14 insertions, 10 deletions
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 43d59f7b43..96e83e6fbe 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -592,7 +592,7 @@ void LLShaderMgr::dumpShaderSource(U32 shader_code_count, GLchar** shader_code_t
LL_CONT << LL_ENDL;
}
-void LLShaderMgr::dumpObjectLog(GLuint ret, BOOL warns, const std::string& filename)
+void LLShaderMgr::dumpObjectLog(GLuint ret, BOOL warns, const std::string& filename)
{
std::string log = get_object_log(ret);
std::string fname = filename;
@@ -985,11 +985,6 @@ GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_lev
fclose(file);
- error = glGetError();
- if (error != GL_NO_ERROR)
- {
- LL_WARNS("HRS") << "WTF? Should be no error here: " << error << LL_ENDL;
- }
//create shader object
GLuint ret = glCreateShader(type);
@@ -1069,7 +1064,7 @@ GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_lev
return ret;
}
-BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors)
+BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors)
{
//check for errors
glLinkProgram(obj);
@@ -1079,6 +1074,8 @@ BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors)
{
//an error occured, print log
LL_SHADER_LOADING_WARNS() << "GLSL Linker Error:" << LL_ENDL;
+ dumpObjectLog(obj, TRUE, "linker");
+ return success;
}
std::string log = get_object_log(obj);
@@ -1178,7 +1175,7 @@ void LLShaderMgr::initAttribsAndUniforms()
mReservedUniforms.push_back("emissiveColor");
mReservedUniforms.push_back("metallicFactor");
mReservedUniforms.push_back("roughnessFactor");
-
+
mReservedUniforms.push_back("diffuseMap");
mReservedUniforms.push_back("altDiffuseMap");
mReservedUniforms.push_back("specularMap");
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index e934041e2e..826d4892ef 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -607,7 +607,7 @@ void LLFeatureManager::applyFeatures(bool skipFeatures)
void LLFeatureManager::setGraphicsLevel(U32 level, bool skipFeatures)
{
LLViewerShaderMgr::sSkipReload = true;
-
+ flush_glerror(); // Whatever may have already happened (e.g., to cause us to change), don't let confuse it with new initializations.
applyBaseMasks();
// if we're passed an invalid level, default to "Low"
diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp
index af00cdd05f..b2d223a3e8 100644
--- a/indra/newview/llgltfmateriallist.cpp
+++ b/indra/newview/llgltfmateriallist.cpp
@@ -56,9 +56,16 @@ LLGLTFMaterial* LLGLTFMaterialList::getMaterial(const LLUUID& id)
}
LLFileSystem file(id, asset_type, LLFileSystem::READ);
+ auto size = file.getSize();
+ if (!size)
+ {
+ LL_DEBUGS() << "Zero size material." << LL_ENDL;
+ mat->unref();
+ return;
+ }
std::vector<char> buffer;
- buffer.resize(file.getSize());
+ buffer.resize(size);
file.read((U8*)&buffer[0], buffer.size());
LLSD asset;