From 4809142acce5ed66579184dca4fa6e4cdb7bfeed Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 12 Oct 2010 15:35:39 -0600 Subject: add a debug function to output gl error information to the log file without crashing the viewer. No need to test because there are no negative effects. --- indra/llrender/llgl.cpp | 27 +++++++++++++++++++++++++++ indra/llrender/llgl.h | 1 + 2 files changed, 28 insertions(+) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index c0edd92bc1..c2e9740372 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -1047,6 +1047,33 @@ void flush_glerror() glGetError(); } +//this function outputs gl error to the log file, does not crash the code. +void log_glerror() +{ + if (LL_UNLIKELY(!gGLManager.mInited)) + { + return ; + } + // Create or update texture to be used with this data + GLenum error; + error = glGetError(); + while (LL_UNLIKELY(error)) + { + GLubyte const * gl_error_msg = gluErrorString(error); + if (NULL != gl_error_msg) + { + llwarns << "GL Error: " << error << " GL Error String: " << gl_error_msg << llendl ; + } + else + { + // gluErrorString returns NULL for some extensions' error codes. + // you'll probably have to grep for the number in glext.h. + llwarns << "GL Error: UNKNOWN 0x" << std::hex << error << std::dec << llendl; + } + error = glGetError(); + } +} + void do_assert_glerror() { if (LL_UNLIKELY(!gGLManager.mInited)) diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 5e8965c06a..de63d37480 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -157,6 +157,7 @@ void rotate_quat(LLQuaternion& rotation); void flush_glerror(); // Flush GL errors when we know we're handling them correctly. +void log_glerror(); void assert_glerror(); void clear_glerror(); -- cgit v1.2.3 From c3764eaf87580b66790a8d6c4c6a6700159f7977 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 12 Oct 2010 15:38:52 -0600 Subject: add debug code for SH-207: viewer crash in LLVertexBuffer::mapBuffer --- indra/llrender/llvertexbuffer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index de4501dd0f..fd5136e58b 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -854,6 +854,8 @@ U8* LLVertexBuffer::mapBuffer(S32 access) if (!mMappedData) { + log_glerror(); + //-------------------- //print out more debug info before crash llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ; @@ -875,6 +877,8 @@ U8* LLVertexBuffer::mapBuffer(S32 access) if (!mMappedIndexData) { + log_glerror(); + GLint buff; glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); if ((GLuint)buff != mGLIndices) -- cgit v1.2.3 From e403f402e9743099d03e286593f42651a01bad88 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 13 Oct 2010 19:33:36 -0600 Subject: some debug code for SH-288: [crashhunters] LLImageGL::setSubImageFromFrameBuffer --- indra/llrender/llimagegl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 9d037f2565..9d0fc53d29 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1057,6 +1057,8 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_ checkTexSize(true) ; llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << " : " << (S32)mComponents << llcallstacksendl ; + + log_glerror() ; } glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height); -- cgit v1.2.3 From 03277635d03e8e7c2f73285743fdd9c77802d76f Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 13 Oct 2010 19:56:55 -0600 Subject: merge REV-13dc54d03e13 from skylight: fix for EXP-195: Custom login progress screen blurry when first presented to user as the image fully loads --- indra/newview/llviewertexture.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 7ccd4828ba..f96b93da4d 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1130,7 +1130,7 @@ void LLViewerFetchedTexture::init(bool firstinit) // does not contain this image. mIsMissingAsset = FALSE; - mLoadedCallbackDesiredDiscardLevel = 0; + mLoadedCallbackDesiredDiscardLevel = S8_MAX; mPauseLoadedCallBacks = TRUE ; mNeedsCreateTexture = FALSE; @@ -1507,7 +1507,7 @@ void LLViewerFetchedTexture::processTextureStats() } else if(!mFullWidth || !mFullHeight) { - mDesiredDiscardLevel = getMaxDiscardLevel() ; + mDesiredDiscardLevel = llmin(getMaxDiscardLevel(), (S32)mLoadedCallbackDesiredDiscardLevel) ; } else { -- cgit v1.2.3