diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 97047b21b0d5fcd2172b34f455b5d0759daa04d4..d802a3045db5668726847a304c90b4b848ecfbe7 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -155,26 +155,26 @@ PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB = NULL;
 PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB = 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;
+PFNGLISRENDERBUFFERPROC glIsRenderbuffer = NULL;
+PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer = NULL;
+PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers = NULL;
+PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers = NULL;
+PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv = NULL;
+PFNGLISFRAMEBUFFERPROC glIsFramebuffer = NULL;
+PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = NULL;
+PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL;
+PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = NULL;
+PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv = NULL;
+PFNGLGENERATEMIPMAPPROC glGenerateMipmap = NULL;
+PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer = NULL;
 
 // GL_EXT_blend_func_separate
 PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL;
@@ -849,26 +849,26 @@ void LLGLManager::initExtensions()
 	if (mHasFramebufferObject)
 	{
 		llinfos << "initExtensions() FramebufferObject-related procs..." << llendl;
-		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");
+		glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbuffer");
+		glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbuffer");
+		glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffers");
+		glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffers");
+		glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorage");
+		glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameteriv");
+		glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsFramebuffer");
+		glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindFramebuffer");
+		glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffers");
+		glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffers");
+		glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatus");
+		glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1D");
+		glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2D");
+		glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3D");
+		glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbuffer");
+		glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameteriv");
+		glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmap");
+		glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBlitFramebuffer");
+		glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageMultisample");
+		glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTextureLayer");
 	}
 	if (mHasDrawBuffers)
 	{
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 93c2c7cea870c2b49578908dade9d659d3e368a8..86a7d7d91520c850a0d07e31b67094ec33830e0d 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -652,26 +652,26 @@ extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
 extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
 
 //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;
+extern PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
+extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
+extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
+extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
+extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
+extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
+extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
+extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
+extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
+extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
+extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
+extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
+extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
+extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
+extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
+extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
+extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
+extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
+extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
+extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
 
 //GL_ARB_draw_buffers
 extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index 541a144fac41a82a88e7275bbf5f445e986c2da6..cd2556d435526757eb4a652244eefd7c53940f92 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -38,7 +38,7 @@ void check_framebuffer_status()
 {
 	if (gDebugGL)
 	{
-		GLenum status = glCheckFramebufferStatusARB(GL_DRAW_FRAMEBUFFER);
+		GLenum status = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
 		switch (status)
 		{
 		case GL_FRAMEBUFFER_COMPLETE:
@@ -99,24 +99,24 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo
 			stop_glerror();
 		}
 
-		glGenFramebuffersARB(1, (GLuint *) &mFBO);
+		glGenFramebuffers(1, (GLuint *) &mFBO);
 
 		if (mDepth)
 		{
-			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+			glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 			if (mStencil)
 			{
-				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
+				glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
 				stop_glerror();
-				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);
+				glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);
 				stop_glerror();
 			}
 			else
 			{
-				glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);
+				glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);
 				stop_glerror();
 			}
-			glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+			glBindFramebuffer(GL_FRAMEBUFFER, 0);
 		}
 		
 		stop_glerror();
@@ -168,14 +168,14 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt)
 	}
 	if (mFBO)
 	{
-		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
-		glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset,
+		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset,
 			LLTexUnit::getInternalType(mUsage), tex, 0);
 			stop_glerror();
 
 		check_framebuffer_status();
 		
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(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
-		glGenRenderbuffersARB(1, (GLuint *) &mDepth);
-		glBindRenderbufferARB(GL_RENDERBUFFER, mDepth);
-		glRenderbufferStorageARB(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, mResX, mResY);
-		glBindRenderbufferARB(GL_RENDERBUFFER, 0);
+		glGenRenderbuffers(1, (GLuint *) &mDepth);
+		glBindRenderbuffer(GL_RENDERBUFFER, mDepth);
+		glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, mResX, mResY);
+		glBindRenderbuffer(GL_RENDERBUFFER, 0);
 	}
 	else
 	{
@@ -222,23 +222,23 @@ void LLRenderTarget::shareDepthBuffer(LLRenderTarget& target)
 	if (mDepth)
 	{
 		stop_glerror();
-		glBindFramebufferARB(GL_FRAMEBUFFER, target.mFBO);
+		glBindFramebuffer(GL_FRAMEBUFFER, target.mFBO);
 		stop_glerror();
 
 		if (mStencil)
 		{
-			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
 			stop_glerror();
-			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			
 			stop_glerror();
 			target.mStencil = true;
 		}
 		else
 		{
-			glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);
+			glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);
 			stop_glerror();
 		}
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 
 		target.mUseDepth = true;
 	}
@@ -250,7 +250,7 @@ void LLRenderTarget::release()
 	{
 		if (mStencil)
 		{
-			glDeleteRenderbuffersARB(1, (GLuint*) &mDepth);
+			glDeleteRenderbuffers(1, (GLuint*) &mDepth);
 			stop_glerror();
 		}
 		else
@@ -262,23 +262,23 @@ void LLRenderTarget::release()
 	}
 	else if (mUseDepth && mFBO)
 	{ //detach shared depth buffer
-		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 		if (mStencil)
 		{ //attached as a renderbuffer
-			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
-			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
 			mStencil = false;
 		}
 		else
 		{ //attached as a texture
-			glFramebufferTexture2DARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), 0, 0);
+			glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), 0, 0);
 		}
 		mUseDepth = false;
 	}
 
 	if (mFBO)
 	{
-		glDeleteFramebuffersARB(1, (GLuint *) &mFBO);
+		glDeleteFramebuffers(1, (GLuint *) &mFBO);
 		mFBO = 0;
 	}
 
@@ -304,7 +304,7 @@ void LLRenderTarget::bindTarget()
 		}
 		else
 		{
-			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+			glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 			stop_glerror();
 			if (gGLManager.mHasDrawBuffers)
 			{ //setup multiple render targets
@@ -336,7 +336,7 @@ void LLRenderTarget::unbindTarget()
 {
 	if (gGLManager.mHasFramebufferObject)
 	{
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 	}
 	sBoundTarget = NULL;
 }
@@ -407,7 +407,7 @@ void LLRenderTarget::flush(bool fetch_depth)
 	{
 		stop_glerror();
 
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 
 		stop_glerror();
 	
@@ -415,41 +415,41 @@ void LLRenderTarget::flush(bool fetch_depth)
 		{
 			LLGLEnable multisample(GL_MULTISAMPLE);
 			stop_glerror();
-			glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+			glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 			stop_glerror();
 			check_framebuffer_status();
-			glBindFramebufferARB(GL_READ_FRAMEBUFFER, mSampleBuffer->mFBO);
+			glBindFramebuffer(GL_READ_FRAMEBUFFER, mSampleBuffer->mFBO);
 			check_framebuffer_status();
 			
 			stop_glerror();
-			glBlitFramebufferARB(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
+			glBlitFramebuffer(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)
 				{
-					glFramebufferTexture2DARB(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+					glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
 										LLTexUnit::getInternalType(mUsage), mTex[i], 0);
 					stop_glerror();
-					glFramebufferRenderbufferARB(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);
+					glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);
 					stop_glerror();
-					glBlitFramebufferARB(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT, GL_NEAREST);		
+					glBlitFramebuffer(0, 0, mResX, mResY, 0, 0, mResX, mResY, GL_COLOR_BUFFER_BIT, GL_NEAREST);		
 					stop_glerror();
 				}
 
 				for (U32 i = 0; i < mTex.size(); ++i)
 				{
-					glFramebufferTexture2DARB(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i,
+					glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i,
 										LLTexUnit::getInternalType(mUsage), mTex[i], 0);
 					stop_glerror();
-					glFramebufferRenderbufferARB(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);
+					glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i, GL_RENDERBUFFER, mSampleBuffer->mTex[i]);
 					stop_glerror();
 				}
 			}
 		}
 
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 	}
 }
 
@@ -476,25 +476,25 @@ void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0,
 		{
 			stop_glerror();
 		
-			glBindFramebufferARB(GL_FRAMEBUFFER, source.mFBO);
+			glBindFramebuffer(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();
-			glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+			glBindFramebuffer(GL_FRAMEBUFFER, 0);
 			stop_glerror();
 		}
 		else
 		{
-			glBindFramebufferARB(GL_READ_FRAMEBUFFER, source.mFBO);
+			glBindFramebuffer(GL_READ_FRAMEBUFFER, source.mFBO);
 			stop_glerror();
-			glBindFramebufferARB(GL_DRAW_FRAMEBUFFER, mFBO);
+			glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mFBO);
 			stop_glerror();
 			check_framebuffer_status();
 			stop_glerror();
-			glBlitFramebufferARB(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+			glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
 			stop_glerror();
-			glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+			glBindFramebuffer(GL_FRAMEBUFFER, 0);
 			stop_glerror();
 		}
 	}
@@ -513,15 +513,15 @@ void LLRenderTarget::copyContentsToFramebuffer(LLRenderTarget& source, S32 srcX0
 
 		LLGLDepthTest depth(write_depth, write_depth);
 		
-		glBindFramebufferARB(GL_READ_FRAMEBUFFER, source.mFBO);
+		glBindFramebuffer(GL_READ_FRAMEBUFFER, source.mFBO);
 		stop_glerror();
-		glBindFramebufferARB(GL_DRAW_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
 		stop_glerror();
 		check_framebuffer_status();
 		stop_glerror();
-		glBlitFramebufferARB(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+		glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
 		stop_glerror();
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 		stop_glerror();
 	}
 }
@@ -556,19 +556,19 @@ void LLMultisampleBuffer::release()
 {
 	if (mFBO)
 	{
-		glDeleteFramebuffersARB(1, (GLuint *) &mFBO);
+		glDeleteFramebuffers(1, (GLuint *) &mFBO);
 		mFBO = 0;
 	}
 
 	if (mTex.size() > 0)
 	{
-		glDeleteRenderbuffersARB(mTex.size(), (GLuint *) &mTex[0]);
+		glDeleteRenderbuffers(mTex.size(), (GLuint *) &mTex[0]);
 		mTex.clear();
 	}
 
 	if (mDepth)
 	{
-		glDeleteRenderbuffersARB(1, (GLuint *) &mDepth);
+		glDeleteRenderbuffers(1, (GLuint *) &mDepth);
 		mDepth = 0;
 	}
 }
@@ -585,7 +585,7 @@ void LLMultisampleBuffer::bindTarget(LLRenderTarget* ref)
 		ref = this;
 	}
 
-	glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+	glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 	if (gGLManager.mHasDrawBuffers)
 	{ //setup multiple render targets
 		GLenum drawbuffers[] = {GL_COLOR_ATTACHMENT0,
@@ -638,21 +638,21 @@ void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth
 			stop_glerror();
 		}
 
-		glGenFramebuffersARB(1, (GLuint *) &mFBO);
+		glGenFramebuffers(1, (GLuint *) &mFBO);
 
-		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
+		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 
 		if (mDepth)
 		{
-			glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepth);
 			if (mStencil)
 			{
-				glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			
+				glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepth);			
 			}
 		}
 	
 		stop_glerror();
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 		stop_glerror();
 	}
 
@@ -674,18 +674,18 @@ void LLMultisampleBuffer::addColorAttachment(U32 color_fmt)
 	}
 
 	U32 tex;
-	glGenRenderbuffersARB(1, &tex);
+	glGenRenderbuffers(1, &tex);
 	
-	glBindRenderbufferARB(GL_RENDERBUFFER, tex);
-	glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, color_fmt, mResX, mResY);
+	glBindRenderbuffer(GL_RENDERBUFFER, tex);
+	glRenderbufferStorageMultisample(GL_RENDERBUFFER, mSamples, color_fmt, mResX, mResY);
 	stop_glerror();
 
 	if (mFBO)
 	{
-		glBindFramebufferARB(GL_FRAMEBUFFER, mFBO);
-		glFramebufferRenderbufferARB(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset, GL_RENDERBUFFER, tex);
+		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+		glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+offset, GL_RENDERBUFFER, tex);
 		stop_glerror();
-		GLenum status = glCheckFramebufferStatusARB(GL_FRAMEBUFFER);
+		GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
 		switch (status)
 		{
 		case GL_FRAMEBUFFER_COMPLETE:
@@ -695,7 +695,7 @@ void LLMultisampleBuffer::addColorAttachment(U32 color_fmt)
 			break;
 		}
 
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 	}
 
 	mTex.push_back(tex);
@@ -703,15 +703,15 @@ void LLMultisampleBuffer::addColorAttachment(U32 color_fmt)
 
 void LLMultisampleBuffer::allocateDepth()
 {
-	glGenRenderbuffersARB(1, (GLuint* ) &mDepth);
-	glBindRenderbufferARB(GL_RENDERBUFFER, mDepth);
+	glGenRenderbuffers(1, (GLuint* ) &mDepth);
+	glBindRenderbuffer(GL_RENDERBUFFER, mDepth);
 	if (mStencil)
 	{
-		glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, GL_DEPTH24_STENCIL8, mResX, mResY);	
+		glRenderbufferStorageMultisample(GL_RENDERBUFFER, mSamples, GL_DEPTH24_STENCIL8, mResX, mResY);	
 	}
 	else
 	{
-		glRenderbufferStorageMultisampleARB(GL_RENDERBUFFER, mSamples, GL_DEPTH_COMPONENT16, mResX, mResY);	
+		glRenderbufferStorageMultisample(GL_RENDERBUFFER, mSamples, GL_DEPTH_COMPONENT16, mResX, mResY);	
 	}
 }
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index ee1759beaecdb54b7f1af2618cc8d133894e1f6d..12602169c0f3c7bf5b831e81dac57a1cca94ce7d 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4188,7 +4188,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
 	{
 		mWindowRectRaw = window_rect;
 		target.flush();
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 	}
 	gDisplaySwapBuffers = FALSE;
 	gDepthDirty = TRUE;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 31200675fc08670d48e182d3df7b94ba81425a63..1c91c528f73d255a5c54f62c92e5ccdccadb25bd 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -5857,7 +5857,7 @@ void apply_cube_face_rotation(U32 face)
 void validate_framebuffer_object()
 {                                                           
 	GLenum status;                                            
-	status = glCheckFramebufferStatusARB(GL_FRAMEBUFFER_EXT); 
+	status = glCheckFramebufferStatus(GL_FRAMEBUFFER_EXT); 
 	switch(status) 
 	{                                          
 		case GL_FRAMEBUFFER_COMPLETE:                       
@@ -6109,7 +6109,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 	if (LLRenderTarget::sUseFBO)
 	{
 		LLFastTimer ftm(FTM_RENDER_BLOOM_FBO);
-		glBindFramebufferARB(GL_FRAMEBUFFER, 0);
+		glBindFramebuffer(GL_FRAMEBUFFER, 0);
 	}
 
 	gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
@@ -6860,7 +6860,7 @@ void LLPipeline::renderDeferredLighting()
 						mLuminanceMap.flush();
 						gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);
 						gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
-						glGenerateMipmapARB(GL_TEXTURE_2D);
+						glGenerateMipmap(GL_TEXTURE_2D);
 					}
 				}