diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 52aa2a3be397fbaecaa30bc56ddb08b3ae446731..7396209e2734d8561ef4a0b30ef358a7030c17d6 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4589,21 +4589,21 @@
         <key>Value</key>
             <integer>1</integer>
         </map>
-    <key>LastGPUClass</key>
+    <key>LastGPUString</key>
     <map>
       <key>Comment</key>
-      <string>[DO NOT MODIFY] previous GPU class for tracking hardware changes</string>
+      <string>[DO NOT MODIFY] previous GPU id string for tracking hardware changes</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>String</string>
       <key>Value</key>
-      <integer>-1</integer>
+      <string></string>
     </map>
     <key>LastFeatureVersion</key>
     <map>
       <key>Comment</key>
-      <string>[DO NOT MODIFY] Version number for tracking hardware changes</string>
+      <string>[DO NOT MODIFY] Feature Table Version number for tracking rendering system changes</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index e12c2f7853c8ba6f6e65f0e9a6e833cfbe114fc5..9ad313a9a7508cb0f55af4a6636df7268360a35a 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,8 @@
 version 32
+// The version number above should be implemented 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
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences 
 // Should be combined into one table
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 6e962f3c567e2063b1dc4e4710d27dd2a0edcae9..2dbdf3a76edb8f82005eecd2de607f2a4c61f196 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,4 +1,8 @@
 version 27
+// The version number above should be implemented 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
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2690e8ec70800fd76b3c8583af315d2f7bbc72f1..996e57435025730f702feb1f1191ae56aa20d6a2 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,8 @@
 version 30
+// The version number above should be implemented 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
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
index 7df75687f213a96191a5f73edbe2511f943b05cd..e7cae1abdcede63791a93515bbd9ea753fd9477c 100644
--- a/indra/newview/featuretable_solaris.txt
+++ b/indra/newview/featuretable_solaris.txt
@@ -1,4 +1,8 @@
 version 15
+// The version number above should be implemented 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
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable.txt with a few differences
 // Should be combined into one table
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index a0245f5369070dd5ed6fee3f49f594584a6065b6..a53be10be138a0794d94cd4c6c4a7777ca95a981 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -1,4 +1,8 @@
 version 31
+// The version number above should be implemented 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
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index e03ad2db9497e12386f20bfe2214116a4b2a7eff..e62227fa3c7f48e621923996ae8ec410cc3ec3ec 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -366,7 +366,9 @@ bool idle_startup()
 		//
 		// Initialize stuff that doesn't need data from simulators
 		//
-
+		std::string lastGPU = gSavedSettings.getString("LastGPUString");
+		std::string thisGPU = LLFeatureManager::getInstance()->getGPUString();
+		
 		if (LLFeatureManager::getInstance()->isSafe())
 		{
 			LLNotificationsUtil::add("DisplaySetToSafe");
@@ -374,12 +376,14 @@ bool idle_startup()
 		else if ((gSavedSettings.getS32("LastFeatureVersion") < LLFeatureManager::getInstance()->getVersion()) &&
 				 (gSavedSettings.getS32("LastFeatureVersion") != 0))
 		{
-			LLNotificationsUtil::add("DisplaySetToRecommended");
+			LLNotificationsUtil::add("DisplaySetToRecommendedFeatureChange");
 		}
-		else if ((gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass()) &&
-				 (gSavedSettings.getS32("LastGPUClass") != -1))
+		else if ( ! lastGPU.empty() && (lastGPU != thisGPU))
 		{
-			LLNotificationsUtil::add("DisplaySetToRecommended");
+			LLSD subs;
+			subs["LAST_GPU"] = lastGPU;
+			subs["THIS_GPU"] = thisGPU;
+			LLNotificationsUtil::add("DisplaySetToRecommendedGPUChange", subs);
 		}
 		else if (!gViewerWindow->getInitAlert().empty())
 		{
@@ -395,7 +399,7 @@ bool idle_startup()
 		LLStartUp::startLLProxy();
 
 		gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion());
-		gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass());
+		gSavedSettings.setString("LastGPUString", thisGPU);
 
 		// load dynamic GPU/feature tables from website (S3)
 		LLFeatureManager::getInstance()->fetchHTTPTables();
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b84db6b1c0c5cb126cb2fe43960501c43639fa68..8576d811965f9ff4beec87a04898212af40707aa 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1657,7 +1657,7 @@ LLViewerWindow::LLViewerWindow(
 
 	if (LLFeatureManager::getInstance()->isSafe()
 		|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
-		|| (gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass())
+		|| (gSavedSettings.getString("LastGPUString") != LLFeatureManager::getInstance()->getGPUString())
 		|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))
 	{
 		LLFeatureManager::getInstance()->applyRecommendedSettings();
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index f510b3c5bac9015866f130ffc0fbbf3ba8d98a09..6720d8131ec73517f7e2979dc7d99a65deb71b79 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2665,9 +2665,18 @@ Display settings have been set to safe levels because you have specified the -sa
 
   <notification
    icon="alertmodal.tga"
-   name="DisplaySetToRecommended"
+   name="DisplaySetToRecommendedGPUChange"
    type="alertmodal">
-Display settings have been set to recommended levels based on your system configuration.
+Display settings have been set to recommended levels because your graphics card changed
+from &apos;[LAST_GPU]&apos;
+to &apos;[THIS_GPU]&apos;
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DisplaySetToRecommendedFeatureChange"
+   type="alertmodal">
+Display settings have been set to recommended levels because of a change to the rendering subsystem.
   </notification>
 
   <notification