diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-12-02 21:33:03 -0600 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-12-02 21:33:03 -0600 | 
| commit | 0be7fcf2a95a6d885bbef583966757d12fc9d18c (patch) | |
| tree | e41167b201b3af5a291576c7c78bdde670f982ec /indra | |
| parent | 447e697e33bc6b0643524faa68614e087e936187 (diff) | |
SH-373 Update glext.h, disable anti-aliasing on ATI when rendering deferred.  Get rid of RenderUseFBO debug setting (only use FBO when rendering deferred).  Use GL_ARB_framebuffer_objects instead of GL_EXT_...
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llrender/llgl.cpp | 105 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 1 | ||||
| -rw-r--r-- | indra/llrender/llglheaders.h | 45 | ||||
| -rw-r--r-- | indra/llrender/llrendertarget.cpp | 173 | ||||
| -rw-r--r-- | indra/newview/app_settings/high_graphics.xml | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/low_graphics.xml | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/mid_graphics.xml | 2 | ||||
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/app_settings/ultra_graphics.xml | 2 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterhardwaresettings.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreference.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 13 | 
18 files changed, 179 insertions, 230 deletions
| diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 6ea63809f8..97047b21b0 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -154,30 +154,27 @@ PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB = NULL;  PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB = NULL;  PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB = NULL; -// GL_EXT_framebuffer_object -PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT = NULL; -PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = NULL; -PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT = NULL; -PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT = NULL; -PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT = NULL; -PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT = NULL; -PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT = NULL; -PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT = NULL; -PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT = NULL; -PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT = NULL; -PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT = NULL; - -// GL_EXT_framebuffer_multisample -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT = NULL; - -// GL_EXT_framebuffer_blit -PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT = NULL; +// GL_ARB_framebuffer_object +PFNGLISRENDERBUFFERPROC glIsRenderbufferARB = NULL; +PFNGLBINDRENDERBUFFERPROC glBindRenderbufferARB = NULL; +PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffersARB = NULL; +PFNGLGENRENDERBUFFERSPROC glGenRenderbuffersARB = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorageARB = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameterivARB = NULL; +PFNGLISFRAMEBUFFERPROC glIsFramebufferARB = NULL; +PFNGLBINDFRAMEBUFFERPROC glBindFramebufferARB = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffersARB = NULL; +PFNGLGENFRAMEBUFFERSPROC glGenFramebuffersARB = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatusARB = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1DARB = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2DARB = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3DARB = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbufferARB = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameterivARB = NULL; +PFNGLGENERATEMIPMAPPROC glGenerateMipmapARB = NULL; +PFNGLBLITFRAMEBUFFERPROC glBlitFramebufferARB = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisampleARB = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayerARB = NULL;  // GL_EXT_blend_func_separate  PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL; @@ -320,7 +317,6 @@ LLGLManager::LLGLManager() :  	mHasMipMapGeneration(FALSE),  	mHasCompressedTextures(FALSE),  	mHasFramebufferObject(FALSE), -	mHasFramebufferMultisample(FALSE),  	mHasBlendFuncSeparate(FALSE),  	mHasVertexBufferObject(FALSE), @@ -635,11 +631,6 @@ void LLGLManager::initExtensions()  # else  	mHasFramebufferObject = FALSE;  # endif -# ifdef GL_EXT_framebuffer_multisample -	mHasFramebufferMultisample = TRUE; -# else -	mHasFramebufferMultisample = FALSE; -# endif  # ifdef GL_ARB_draw_buffers  	mHasDrawBuffers = TRUE;  #else @@ -678,9 +669,7 @@ void LLGLManager::initExtensions()  	mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts);  	mHasDepthClamp = ExtensionExists("GL_ARB_depth_clamp", gGLHExts.mSysExts) || ExtensionExists("GL_NV_depth_clamp", gGLHExts.mSysExts);  	// mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad -	mHasFramebufferObject = ExtensionExists("GL_EXT_framebuffer_object", gGLHExts.mSysExts) -		&& ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts); -	mHasFramebufferMultisample = mHasFramebufferObject && ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts); +	mHasFramebufferObject = ExtensionExists("GL_ARB_framebuffer_object", gGLHExts.mSysExts);  	mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts);  	mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);  	mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); @@ -705,7 +694,6 @@ void LLGLManager::initExtensions()  		mHasCompressedTextures = FALSE;  		mHasVertexBufferObject = FALSE;  		mHasFramebufferObject = FALSE; -		mHasFramebufferMultisample = FALSE;  		mHasDrawBuffers = FALSE;  		mHasBlendFuncSeparate = FALSE;  		mHasMipMapGeneration = FALSE; @@ -759,10 +747,9 @@ void LLGLManager::initExtensions()  		if (strchr(blacklist,'p')) mHasPointParameters = FALSE;//S  		if (strchr(blacklist,'q')) mHasFramebufferObject = FALSE;//S  		if (strchr(blacklist,'r')) mHasDrawBuffers = FALSE;//S -		if (strchr(blacklist,'s')) mHasFramebufferMultisample = FALSE; -		if (strchr(blacklist,'t')) mHasTextureRectangle = FALSE; -		if (strchr(blacklist,'u')) mHasBlendFuncSeparate = FALSE;//S -		if (strchr(blacklist,'v')) mHasDepthClamp = FALSE; +		if (strchr(blacklist,'s')) mHasTextureRectangle = FALSE; +		if (strchr(blacklist,'t')) mHasBlendFuncSeparate = FALSE;//S +		if (strchr(blacklist,'u')) mHasDepthClamp = FALSE;  	}  #endif // LL_LINUX || LL_SOLARIS @@ -862,28 +849,26 @@ void LLGLManager::initExtensions()  	if (mHasFramebufferObject)  	{  		llinfos << "initExtensions() FramebufferObject-related procs..." << llendl; -		glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbufferEXT"); -		glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbufferEXT"); -		glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffersEXT"); -		glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffersEXT"); -		glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageEXT"); -		glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameterivEXT"); -		glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glIsFramebufferEXT"); -		glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBindFramebufferEXT"); -		glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffersEXT"); -		glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffersEXT"); -		glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatusEXT"); -		glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1DEXT"); -		glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2DEXT"); -		glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3DEXT"); -		glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbufferEXT"); -		glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameterivEXT"); -		glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmapEXT"); -	} -	if (mHasFramebufferMultisample) -	{ -		glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageMultisampleEXT"); -		glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBlitFramebufferEXT"); +		glIsRenderbufferARB = (PFNGLISRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbufferARB"); +		glBindRenderbufferARB = (PFNGLBINDRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbufferARB"); +		glDeleteRenderbuffersARB = (PFNGLDELETERENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffersARB"); +		glGenRenderbuffersARB = (PFNGLGENRENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffersARB"); +		glRenderbufferStorageARB = (PFNGLRENDERBUFFERSTORAGEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageARB"); +		glGetRenderbufferParameterivARB = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameterivARB"); +		glIsFramebufferARB = (PFNGLISFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsFramebufferARB"); +		glBindFramebufferARB = (PFNGLBINDFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindFramebufferARB"); +		glDeleteFramebuffersARB = (PFNGLDELETEFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffersARB"); +		glGenFramebuffersARB = (PFNGLGENFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffersARB"); +		glCheckFramebufferStatusARB = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatusARB"); +		glFramebufferTexture1DARB = (PFNGLFRAMEBUFFERTEXTURE1DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1DARB"); +		glFramebufferTexture2DARB = (PFNGLFRAMEBUFFERTEXTURE2DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2DARB"); +		glFramebufferTexture3DARB = (PFNGLFRAMEBUFFERTEXTURE3DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3DARB"); +		glFramebufferRenderbufferARB = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbufferARB"); +		glGetFramebufferAttachmentParameterivARB = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameterivARB"); +		glGenerateMipmapARB = (PFNGLGENERATEMIPMAPPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmapARB"); +		glBlitFramebufferARB = (PFNGLBLITFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBlitFramebufferARB"); +		glRenderbufferStorageMultisampleARB = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageMultisampleARB"); +		glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTextureLayerARB");  	}  	if (mHasDrawBuffers)  	{ diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 85fab7a0f8..b152bd0c3c 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -80,7 +80,6 @@ public:  	BOOL mHasMipMapGeneration;  	BOOL mHasCompressedTextures;  	BOOL mHasFramebufferObject; -	BOOL mHasFramebufferMultisample;  	BOOL mHasBlendFuncSeparate;  	// ARB Extensions diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index 576969b81a..93c2c7cea8 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -651,30 +651,27 @@ extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;  //GL_EXT_blend_func_separate  extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; -//GL_EXT_framebuffer_object -extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; -extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; -extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; -extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; -extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; -extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT; -extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT; -extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; -extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; -extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; -extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; -extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT; -extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; -extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT; -extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; -extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT; -extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT; - -// GL_EXT_framebuffer_multisample -extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT; - -// GL_EXT_framebuffer_blit -extern PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT; +//GL_ARB_framebuffer_object +extern PFNGLISRENDERBUFFERPROC glIsRenderbufferARB; +extern PFNGLBINDRENDERBUFFERPROC glBindRenderbufferARB; +extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffersARB; +extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffersARB; +extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorageARB; +extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameterivARB; +extern PFNGLISFRAMEBUFFERPROC glIsFramebufferARB; +extern PFNGLBINDFRAMEBUFFERPROC glBindFramebufferARB; +extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffersARB; +extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffersARB; +extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatusARB; +extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1DARB; +extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2DARB; +extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3DARB; +extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbufferARB; +extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameterivARB; +extern PFNGLGENERATEMIPMAPPROC glGenerateMipmapARB; +extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebufferARB; +extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisampleARB; +extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayerARB;  //GL_ARB_draw_buffers  extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB; diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index ccbd027f30..541a144fac 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -38,10 +38,10 @@ void check_framebuffer_status()  {  	if (gDebugGL)  	{ -		GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); +		GLenum status = glCheckFramebufferStatusARB(GL_DRAW_FRAMEBUFFER);  		switch (status)  		{ -		case GL_FRAMEBUFFER_COMPLETE_EXT: +		case GL_FRAMEBUFFER_COMPLETE:  			break;  		default:  			ll_fail("check_framebuffer_status failed");	 @@ -99,24 +99,24 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo  			stop_glerror();  		} -		glGenFramebuffersEXT(1, (GLuint *) &mFBO); +		glGenFramebuffersARB(1, (GLuint *) &mFBO);  		if (mDepth)  		{ -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  			if (mStencil)  			{ -				glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth); +				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);  				stop_glerror(); -				glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth); +				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);  				stop_glerror();  			}  			else  			{ -				glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, LLTexUnit::getInternalType(mUsage), mDepth, 0); +				glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);  				stop_glerror();  			} -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +			glBindFramebufferARB(GL_FRAMEBUFFER, 0);  		}  		stop_glerror(); @@ -168,14 +168,14 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt)  	}  	if (mFBO)  	{ -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); -		glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT+offset, +		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO); +		glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset,  			LLTexUnit::getInternalType(mUsage), tex, 0);  			stop_glerror();  		check_framebuffer_status(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  	mTex.push_back(tex); @@ -187,10 +187,10 @@ void LLRenderTarget::allocateDepth()  	if (mStencil)  	{  		//use render buffers where stencil buffers are in play -		glGenRenderbuffersEXT(1, (GLuint *) &mDepth); -		glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mDepth); -		glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH24_STENCIL8_EXT, mResX, mResY); -		glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); +		glGenRenderbuffersARB(1, (GLuint *) &mDepth); +		glBindRenderbufferARB(GL_RENDERBUFFER, mDepth); +		glRenderbufferStorageARB(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, mResX, mResY); +		glBindRenderbufferARB(GL_RENDERBUFFER, 0);  	}  	else  	{ @@ -198,7 +198,7 @@ void LLRenderTarget::allocateDepth()  		gGL.getTexUnit(0)->bindManual(mUsage, mDepth);  		U32 internal_type = LLTexUnit::getInternalType(mUsage);  		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT); -		LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT32_ARB, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); +		LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT32, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);  	}  } @@ -222,23 +222,23 @@ void LLRenderTarget::shareDepthBuffer(LLRenderTarget& target)  	if (mDepth)  	{  		stop_glerror(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, target.mFBO); +		glBindFramebufferARB(GL_FRAMEBUFFER, target.mFBO);  		stop_glerror();  		if (mStencil)  		{ -			glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth); +			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);  			stop_glerror(); -			glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth);			 +			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			  			stop_glerror();  			target.mStencil = true;  		}  		else  		{ -			glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, LLTexUnit::getInternalType(mUsage), mDepth, 0); +			glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);  			stop_glerror();  		} -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  		target.mUseDepth = true;  	} @@ -250,7 +250,7 @@ void LLRenderTarget::release()  	{  		if (mStencil)  		{ -			glDeleteRenderbuffersEXT(1, (GLuint*) &mDepth); +			glDeleteRenderbuffersARB(1, (GLuint*) &mDepth);  			stop_glerror();  		}  		else @@ -262,23 +262,23 @@ void LLRenderTarget::release()  	}  	else if (mUseDepth && mFBO)  	{ //detach shared depth buffer -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  		if (mStencil)  		{ //attached as a renderbuffer -			glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0); -			glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0); +			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); +			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);  			mStencil = false;  		}  		else  		{ //attached as a texture -			glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, LLTexUnit::getInternalType(mUsage), 0, 0); +			glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), 0, 0);  		}  		mUseDepth = false;  	}  	if (mFBO)  	{ -		glDeleteFramebuffersEXT(1, (GLuint *) &mFBO); +		glDeleteFramebuffersARB(1, (GLuint *) &mFBO);  		mFBO = 0;  	} @@ -304,14 +304,14 @@ void LLRenderTarget::bindTarget()  		}  		else  		{ -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  			stop_glerror();  			if (gGLManager.mHasDrawBuffers)  			{ //setup multiple render targets -				GLenum drawbuffers[] = {GL_COLOR_ATTACHMENT0_EXT, -										GL_COLOR_ATTACHMENT1_EXT, -										GL_COLOR_ATTACHMENT2_EXT, -										GL_COLOR_ATTACHMENT3_EXT}; +				GLenum drawbuffers[] = {GL_COLOR_ATTACHMENT0, +										GL_COLOR_ATTACHMENT1, +										GL_COLOR_ATTACHMENT2, +										GL_COLOR_ATTACHMENT3};  				glDrawBuffersARB(mTex.size(), drawbuffers);  			} @@ -336,7 +336,7 @@ void LLRenderTarget::unbindTarget()  {  	if (gGLManager.mHasFramebufferObject)  	{ -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  	sBoundTarget = NULL;  } @@ -398,7 +398,7 @@ void LLRenderTarget::flush(bool fetch_depth)  			}  			gGL.getTexUnit(0)->bind(this); -			glCopyTexImage2D(LLTexUnit::getInternalType(mUsage), 0, GL_DEPTH24_STENCIL8_EXT, 0, 0, mResX, mResY, 0); +			glCopyTexImage2D(LLTexUnit::getInternalType(mUsage), 0, GL_DEPTH24_STENCIL8, 0, 0, mResX, mResY, 0);  		}  		gGL.getTexUnit(0)->disable(); @@ -407,55 +407,59 @@ void LLRenderTarget::flush(bool fetch_depth)  	{  		stop_glerror(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  		stop_glerror();  		if (mSampleBuffer)  		{ -			LLGLEnable multisample(GL_MULTISAMPLE_ARB); +			LLGLEnable multisample(GL_MULTISAMPLE);  			stop_glerror(); -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  			stop_glerror();  			check_framebuffer_status(); -			glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, mSampleBuffer->mFBO); +			glBindFramebufferARB(GL_READ_FRAMEBUFFER, mSampleBuffer->mFBO);  			check_framebuffer_status();  			stop_glerror(); -			glBlitFramebufferEXT(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST); +			glBlitFramebufferARB(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);  			stop_glerror();		  			if (mTex.size() > 1)  			{		  				for (U32 i = 1; i < mTex.size(); ++i)  				{ -					glFramebufferTexture2DEXT(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, +					glFramebufferTexture2DARB(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,  										LLTexUnit::getInternalType(mUsage), mTex[i], 0);  					stop_glerror(); -					glFramebufferRenderbufferEXT(GL_READ_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, mSampleBuffer->mTex[i]); +					glFramebufferRenderbufferARB(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);  					stop_glerror(); -					glBlitFramebufferEXT(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT, GL_NEAREST);		 +					glBlitFramebufferARB(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT, GL_NEAREST);		  					stop_glerror();  				}  				for (U32 i = 0; i < mTex.size(); ++i)  				{ -					glFramebufferTexture2DEXT(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT+i, +					glFramebufferTexture2DARB(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i,  										LLTexUnit::getInternalType(mUsage), mTex[i], 0);  					stop_glerror(); -					glFramebufferRenderbufferEXT(GL_READ_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT+i, GL_RENDERBUFFER_EXT, mSampleBuffer->mTex[i]); +					glFramebufferRenderbufferARB(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);  					stop_glerror();  				}  			}  		} -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  }  void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0, S32 srcX1, S32 srcY1,  						S32 dstX0, S32 dstY0, S32 dstX1, S32 dstY1, U32 mask, U32 filter)  { +	GLboolean write_depth = mask & GL_DEPTH_BUFFER_BIT ? TRUE : FALSE; + +	LLGLDepthTest depth(write_depth, write_depth); +  	gGL.flush();  	if (!source.mFBO || !mFBO)  	{ @@ -472,25 +476,25 @@ void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0,  		{  			stop_glerror(); -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, source.mFBO); +			glBindFramebufferARB(GL_FRAMEBUFFER, source.mFBO);  			gGL.getTexUnit(0)->bind(this, true);  			stop_glerror();  			glCopyTexSubImage2D(LLTexUnit::getInternalType(mUsage), 0, srcX0, srcY0, dstX0, dstY0, dstX1, dstY1);  			stop_glerror(); -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +			glBindFramebufferARB(GL_FRAMEBUFFER, 0);  			stop_glerror();  		}  		else  		{ -			glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, source.mFBO); +			glBindFramebufferARB(GL_READ_FRAMEBUFFER, source.mFBO);  			stop_glerror(); -			glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, mFBO); +			glBindFramebufferARB(GL_DRAW_FRAMEBUFFER, mFBO);  			stop_glerror();  			check_framebuffer_status();  			stop_glerror(); -			glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +			glBlitFramebufferARB(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);  			stop_glerror(); -			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +			glBindFramebufferARB(GL_FRAMEBUFFER, 0);  			stop_glerror();  		}  	} @@ -505,15 +509,19 @@ void LLRenderTarget::copyContentsToFramebuffer(LLRenderTarget& source, S32 srcX0  		llerrs << "Cannot copy framebuffer contents for non FBO render targets." << llendl;  	}  	{ -		glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, source.mFBO); +		GLboolean write_depth = mask & GL_DEPTH_BUFFER_BIT ? TRUE : FALSE; + +		LLGLDepthTest depth(write_depth, write_depth); +		 +		glBindFramebufferARB(GL_READ_FRAMEBUFFER, source.mFBO);  		stop_glerror(); -		glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_DRAW_FRAMEBUFFER, 0);  		stop_glerror();  		check_framebuffer_status();  		stop_glerror(); -		glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +		glBlitFramebufferARB(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);  		stop_glerror(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  		stop_glerror();  	}  } @@ -548,19 +556,19 @@ void LLMultisampleBuffer::release()  {  	if (mFBO)  	{ -		glDeleteFramebuffersEXT(1, (GLuint *) &mFBO); +		glDeleteFramebuffersARB(1, (GLuint *) &mFBO);  		mFBO = 0;  	}  	if (mTex.size() > 0)  	{ -		glDeleteRenderbuffersEXT(mTex.size(), (GLuint *) &mTex[0]); +		glDeleteRenderbuffersARB(mTex.size(), (GLuint *) &mTex[0]);  		mTex.clear();  	}  	if (mDepth)  	{ -		glDeleteRenderbuffersEXT(1, (GLuint *) &mDepth); +		glDeleteRenderbuffersARB(1, (GLuint *) &mDepth);  		mDepth = 0;  	}  } @@ -577,13 +585,13 @@ void LLMultisampleBuffer::bindTarget(LLRenderTarget* ref)  		ref = this;  	} -	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +	glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  	if (gGLManager.mHasDrawBuffers)  	{ //setup multiple render targets -		GLenum drawbuffers[] = {GL_COLOR_ATTACHMENT0_EXT, -								GL_COLOR_ATTACHMENT1_EXT, -								GL_COLOR_ATTACHMENT2_EXT, -								GL_COLOR_ATTACHMENT3_EXT}; +		GLenum drawbuffers[] = {GL_COLOR_ATTACHMENT0, +								GL_COLOR_ATTACHMENT1, +								GL_COLOR_ATTACHMENT2, +								GL_COLOR_ATTACHMENT3};  		glDrawBuffersARB(ref->mTex.size(), drawbuffers);  	} @@ -611,11 +619,6 @@ void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth  	release(); -	if (!gGLManager.mHasFramebufferMultisample) -	{ -		llerrs << "Attempting to allocate unsupported render target type!" << llendl; -	} -  	mSamples = samples;  	if (mSamples <= 1) @@ -635,21 +638,21 @@ void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth  			stop_glerror();  		} -		glGenFramebuffersEXT(1, (GLuint *) &mFBO); +		glGenFramebuffersARB(1, (GLuint *) &mFBO); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); +		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);  		if (mDepth)  		{ -			glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth); +			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);  			if (mStencil)  			{ -				glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepth);			 +				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			  			}  		}  		stop_glerror(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  		stop_glerror();  	} @@ -671,28 +674,28 @@ void LLMultisampleBuffer::addColorAttachment(U32 color_fmt)  	}  	U32 tex; -	glGenRenderbuffersEXT(1, &tex); +	glGenRenderbuffersARB(1, &tex); -	glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, tex); -	glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, mSamples, color_fmt, mResX, mResY); +	glBindRenderbufferARB(GL_RENDERBUFFER, tex); +	glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, color_fmt, mResX, mResY);  	stop_glerror();  	if (mFBO)  	{ -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO); -		glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT+offset, GL_RENDERBUFFER_EXT, tex); +		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO); +		glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset, GL_RENDERBUFFER, tex);  		stop_glerror(); -		GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); +		GLenum status = glCheckFramebufferStatusARB(GL_FRAMEBUFFER);  		switch (status)  		{ -		case GL_FRAMEBUFFER_COMPLETE_EXT: +		case GL_FRAMEBUFFER_COMPLETE:  			break;  		default:  			llerrs << "WTF? " << std::hex << status << llendl;  			break;  		} -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  	mTex.push_back(tex); @@ -700,15 +703,15 @@ void LLMultisampleBuffer::addColorAttachment(U32 color_fmt)  void LLMultisampleBuffer::allocateDepth()  { -	glGenRenderbuffersEXT(1, (GLuint* ) &mDepth); -	glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mDepth); +	glGenRenderbuffersARB(1, (GLuint* ) &mDepth); +	glBindRenderbufferARB(GL_RENDERBUFFER, mDepth);  	if (mStencil)  	{ -		glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, mSamples, GL_DEPTH24_STENCIL8_EXT, mResX, mResY);	 +		glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, GL_DEPTH24_STENCIL8, mResX, mResY);	  	}  	else  	{ -		glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, mSamples, GL_DEPTH_COMPONENT16_ARB, mResX, mResY);	 +		glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, GL_DEPTH_COMPONENT16, mResX, mResY);	  	}  } diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index 4da2b0fd00..587b2f2a89 100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml @@ -24,8 +24,6 @@  	<RenderTerrainLODFactor value="2"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> -	<!--Default for now--> -	<RenderUseFBO value="1"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index 136087f69b..a5bbdfc1d0 100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml @@ -26,8 +26,6 @@  	<RenderTerrainLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> -	<!--Default for now--> -	<RenderUseFBO value="0"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index c150a87cdf..a1430a58f9 100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml @@ -24,8 +24,6 @@  	<RenderTerrainLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> -	<!--Default for now--> -	<RenderUseFBO value="0"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 61d6397109..002e847492 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8700,17 +8700,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>RenderUseFBO</key> -    <map> -      <key>Comment</key> -      <string>Whether we want to use GL_EXT_framebuffer_objects.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map>    <key>RenderUseTriStrips</key>    <map>      <key>Comment</key> diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index e7dce3b989..f741089ca2 100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml @@ -24,8 +24,6 @@  	<RenderTerrainLODFactor value="2.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="1.0"/> -	<!--Default for now--> -	<RenderUseFBO value="1"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 4f80ba3aeb..e8fe073d02 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -466,7 +466,7 @@ static void settings_to_globals()  static void settings_modify()  { -	LLRenderTarget::sUseFBO				= gSavedSettings.getBOOL("RenderUseFBO"); +	LLRenderTarget::sUseFBO				= gSavedSettings.getBOOL("RenderDeferred");  	LLVOAvatar::sUseImpostors			= gSavedSettings.getBOOL("RenderUseImpostors");  	LLVOSurfacePatch::sLODFactor		= gSavedSettings.getF32("RenderTerrainLODFactor");  	LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //square lod factor to get exponential range of [1,4] diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 1e91710552..42ec7d765b 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -50,7 +50,6 @@ LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key)  	  // but init them anyway  	  mUseVBO(0),  	  mUseAniso(0), -	  mUseFBO(0),  	  mFSAASamples(0),  	  mGamma(0.0),  	  mVideoCardMem(0), @@ -75,7 +74,6 @@ void LLFloaterHardwareSettings::refresh()  	mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable");  	mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic"); -	mUseFBO = gSavedSettings.getBOOL("RenderUseFBO");  	mFSAASamples = gSavedSettings.getU32("RenderFSAASamples");  	mGamma = gSavedSettings.getF32("RenderGamma");  	mVideoCardMem = gSavedSettings.getS32("TextureMemory"); @@ -104,7 +102,7 @@ void LLFloaterHardwareSettings::refreshEnabledState()  	getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());  	getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());  	getChildView("fsaa")->setEnabled(gPipeline.canUseAntiAliasing()); -	getChildView("antialiasing restart")->setVisible(!gSavedSettings.getBOOL("RenderUseFBO")); +	getChildView("antialiasing restart")->setVisible(!gSavedSettings.getBOOL("RenderDeferred"));  	/* Enable to reset fsaa value to disabled when feature is not available.  	if (!gPipeline.canUseAntiAliasing()) @@ -139,7 +137,6 @@ void LLFloaterHardwareSettings::cancel()  {  	gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO);  	gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); -	gSavedSettings.setBOOL("RenderUseFBO", mUseFBO);  	gSavedSettings.setU32("RenderFSAASamples", mFSAASamples);  	gSavedSettings.setF32("RenderGamma", mGamma);  	gSavedSettings.setS32("TextureMemory", mVideoCardMem); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 2bea3d37ff..741388af41 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -903,8 +903,7 @@ void LLFloaterPreference::refreshEnabledState()  	//Deferred/SSAO/Shadows  	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders"); -	if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseFBO") && -	    LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && +	if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&  		shaders)  	{  		BOOL enabled = (ctrl_wind_light->get()) ? TRUE : FALSE; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 13dee0c7b7..4fd4368df8 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -369,11 +369,12 @@ static bool handleRenderDynamicLODChanged(const LLSD& newvalue)  	return true;  } -static bool handleRenderUseFBOChanged(const LLSD& newvalue) +static bool handleRenderDeferredChanged(const LLSD& newvalue)  {  	LLRenderTarget::sUseFBO = newvalue.asBoolean();  	if (gPipeline.isInit())  	{ +		gPipeline.updateRenderDeferred();  		gPipeline.releaseGLBuffers();  		gPipeline.createGLBuffers();  		if (LLPipeline::sRenderDeferred && LLRenderTarget::sUseFBO) @@ -584,13 +585,12 @@ void settings_setup_listeners()  	gSavedSettings.getControl("RenderAutoMaskAlphaNonDeferred")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));  	gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));  	gSavedSettings.getControl("RenderMaxVBOSize")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); -	gSavedSettings.getControl("RenderUseFBO")->getSignal()->connect(boost::bind(&handleRenderUseFBOChanged, _2));  	gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));  	gSavedSettings.getControl("RenderUseImpostors")->getSignal()->connect(boost::bind(&handleRenderUseImpostorsChanged, _2));  	gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _2));  	gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2));  	gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2)); -	gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); +	gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));  	gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));  	gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));  	gSavedSettings.getControl("RenderDeferredGI")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 1fa99b4a8a..23b39b8b24 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2029,7 +2029,7 @@ class LLAdvancedEnableRenderDeferred: public view_listener_t  {  	bool handleEvent(const LLSD& userdata)  	{ -		bool new_value = gSavedSettings.getBOOL("RenderUseFBO") && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_WINDLIGHT > 0) && +		bool new_value = gGLManager.mHasFramebufferObject && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_WINDLIGHT > 0) &&  			LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0;  		return new_value;  	} @@ -2042,7 +2042,7 @@ class LLAdvancedEnableRenderDeferredOptions: public view_listener_t  {  	bool handleEvent(const LLSD& userdata)  	{ -		bool new_value = gSavedSettings.getBOOL("RenderUseFBO") && gSavedSettings.getBOOL("RenderDeferred"); +		bool new_value = gSavedSettings.getBOOL("RenderDeferred");  		return new_value;  	}  }; diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index a16257940e..7c84357de8 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -415,9 +415,6 @@ void LLViewerShaderMgr::setShaders()  				deferred_class = 1;  			} -			//make sure framebuffer objects are enabled -			gSavedSettings.setBOOL("RenderUseFBO", TRUE); -  			//make sure hardware skinning is enabled  			gSavedSettings.setBOOL("RenderAvatarVP", TRUE); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 20d9f49a3e..fefd387c91 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1430,7 +1430,7 @@ LLViewerWindow::LLViewerWindow(  		gSavedSettings.getBOOL("DisableVerticalSync"),  		!gNoRender,  		ignore_pixel_depth, -		gSavedSettings.getBOOL("RenderUseFBO") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled +		gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled  	if (!LLAppViewer::instance()->restoreErrorTrap())  	{ @@ -4183,7 +4183,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	{  		mWindowRectRaw = window_rect;  		target.flush(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  	gDisplaySwapBuffers = FALSE;  	gDepthDirty = TRUE; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 78d1044ff3..e3f397e291 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -563,6 +563,11 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  	//never use more than 4 samples for render targets  	U32 samples = llmin(gSavedSettings.getU32("RenderFSAASamples"), (U32) 4); +	if (gGLManager.mIsATI) +	{ //disable multisampling of render targets where ATI is involved +		samples = 0; +	} +  	U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");  	if (res_mod > 1 && res_mod < resX && res_mod < resY) @@ -691,8 +696,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		  	} - -	if (LLRenderTarget::sUseFBO && gGLManager.mHasFramebufferMultisample && samples > 1) +	if (LLRenderTarget::sUseFBO && samples > 1)  	{   		mSampleBuffer.allocate(resX,resY,GL_RGBA,TRUE,TRUE,LLTexUnit::TT_RECT_TEXTURE,FALSE,samples);  		if (LLPipeline::sRenderDeferred) @@ -977,7 +981,7 @@ BOOL LLPipeline::canUseWindLightShadersOnObjects() const  BOOL LLPipeline::canUseAntiAliasing() const  { -	return TRUE; //(gSavedSettings.getBOOL("RenderUseFBO")); +	return TRUE;  }  void LLPipeline::unloadShaders() @@ -6031,21 +6035,21 @@ void apply_cube_face_rotation(U32 face)  void validate_framebuffer_object()  {                                                             	GLenum status;                                             -	status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);  +	status = glCheckFramebufferStatusARB(GL_FRAMEBUFFER_EXT);   	switch(status)   	{                                           -		case GL_FRAMEBUFFER_COMPLETE_EXT:                        +		case GL_FRAMEBUFFER_COMPLETE:                         			//framebuffer OK, no error.  			break; -		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: +		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:  			// frame buffer not OK: probably means unsupported depth buffer format -			llerrs << "Framebuffer Incomplete Dimensions." << llendl; +			llerrs << "Framebuffer Incomplete Missing Attachment." << llendl;  			break; -		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: +		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:  			// frame buffer not OK: probably means unsupported depth buffer format  			llerrs << "Framebuffer Incomplete Attachment." << llendl;  			break;  -		case GL_FRAMEBUFFER_UNSUPPORTED_EXT:                     +		case GL_FRAMEBUFFER_UNSUPPORTED:                      			/* choose different formats */                          			llerrs << "Framebuffer unsupported." << llendl;  			break;                                                 @@ -6283,7 +6287,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  	if (LLRenderTarget::sUseFBO)  	{  		LLFastTimer ftm(FTM_RENDER_BLOOM_FBO); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		glBindFramebufferARB(GL_FRAMEBUFFER, 0);  	}  	gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft; @@ -7034,7 +7038,7 @@ void LLPipeline::renderDeferredLighting()  						mLuminanceMap.flush();  						gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);  						gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR); -						glGenerateMipmapEXT(GL_TEXTURE_2D); +						glGenerateMipmapARB(GL_TEXTURE_2D);  					}  				} diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 7bb4c93766..cc21dcc202 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2278,19 +2278,6 @@                  <menu_item_check.on_enable                   function="Advanced.EnableObjectObjectOcclusion" />              </menu_item_check> -          <menu_item_check -             label="Framebuffer Objects" -             name="Framebuffer Objects"> -            <menu_item_check.on_check -             function="CheckControl" -             parameter="RenderUseFBO" /> -            <menu_item_check.on_click -             function="ToggleControl" -             parameter="RenderUseFBO" /> -            <menu_item_check.on_enable -                 function="Advanced.EnableRenderFBO" /> -           </menu_item_check> -            <menu_item_separator />            <menu_item_check | 
