diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 0602f79b4f7a09dbbbe8733d2172901c7d3abfb7..a8a71ad8dbbe12128fd799653414019a53fb8bc5 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -185,7 +185,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 			return;
 		}
 
-		//start with arrow cursor
+        //start with arrow cursor
 		initCursors();
 		setCursor( UI_CURSOR_ARROW );
 		
@@ -624,7 +624,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		mGLView = createOpenGLView(mWindow, mFSAASamples, enable_vsync);
 		mContext = getCGLContextObj(mGLView);
 		gGLManager.mVRAM = getVramSize(mGLView);
-        
+
         if(!mPixelFormat)
         {
             CGLPixelFormatAttribute attribs[] =
@@ -651,6 +651,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
                 CGLChoosePixelFormat (attribs, &mPixelFormat, &numPixelFormats);
             }
         }
+
 	}
 	
 	// This sets up our view to recieve text from our non-inline text input window.
@@ -1919,9 +1920,11 @@ class sharedContext
 
 void* LLWindowMacOSX::createSharedContext()
 {
-    LL_INFOS() << "Creating shared context" << LL_ENDL;
     sharedContext* sc = new sharedContext();
-    CGLCreateContext(mPixelFormat, mContext, &(sc->mContext));
+    CGLError err = CGLCreateContext(mPixelFormat, mContext, &(sc->mContext));
+    llassert(err == kCGLNoError);
+
+    CGLEnable(mContext, kCGLCEMPEngine);
 
     return (void *)sc;
 }
@@ -1929,6 +1932,25 @@ void* LLWindowMacOSX::createSharedContext()
 void LLWindowMacOSX::makeContextCurrent(void* context)
 {
     CGLSetCurrentContext(((sharedContext*)context)->mContext);
+
+    //enable multi-threaded OpenGL
+	if (sUseMultGL)
+	{
+		CGLError cgl_err;
+		CGLContextObj ctx = CGLGetCurrentContext();
+
+		cgl_err =  CGLEnable( ctx, kCGLCEMPEngine);
+
+		if (cgl_err != kCGLNoError )
+		{
+			LL_INFOS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL;
+		}
+		else
+		{
+            LL_INFOS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL;
+		}
+	}
+	
 }
 
 void LLWindowMacOSX::destroySharedContext(void* context)
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 5888bb4edc940890d7643e8404b255ac74062815..6b2b864c5e5bd2069bbc13f714566b7b40210339 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 55
+version 56
 // The version number above should be incremented IF AND ONLY IF some
 // change has been made that is sufficiently important to justify
 // resetting the graphics preferences of all users to the recommended
@@ -59,7 +59,7 @@ RenderCompressTextures		1	1
 RenderShaderLightingMaxLevel	1	3
 RenderDeferred				1	1
 RenderDeferredSSAO			1	1
-RenderShadowDetail			1	0
+RenderShadowDetail			1	2
 RenderUseStreamVBO			1	1
 RenderFSAASamples			1	16
 RenderMaxTextureIndex		1	16
@@ -69,7 +69,7 @@ RenderGLMultiThreadedMedia         1   0
 RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	2
 RenderScreenSpaceReflections 1  1
-RenderReflectionProbeLevel  1   0
+RenderReflectionProbeLevel  1   3
 RenderToneMapType 1 1
 
 //
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index d8a98a993fada3aa50a6a645d8c7e5f8eedaae12..c87ceddcb19b5d7088f2484919b318cd235970c7 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -412,8 +412,8 @@ void LLViewerShaderMgr::setShaders()
 
     static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16);
     
-    // when using indexed texture rendering, leave 8 texture units available for shadow and reflection maps
-    LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits-8, (S32) max_texture_index), 1);
+    // when using indexed texture rendering, leave some texture units available for shadow and reflection maps
+    LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits-12, (S32) max_texture_index), 1);
 
     reentrance = true;
 
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index 7a2eacdb7a0b397bd2a80469c0575c2b50427460..ec92701786e87f6b6bc93d580fd10e3f762a7e58 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -152,7 +152,7 @@
              top_pad="5"
              width="90">
                 <combo_box.item
-                 label="Blinn-Phong"
+                 label="Textures"
                  name="Materials"
                  value="Materials" />
                 <combo_box.item