nat_linden avatar nat_linden committed cadc246 Merge

Comments (0)

Files changed (40)

doc/contributions.txt

 	VWR-2682
 	VWR-2684
 Nick Rhodes
+Nicky Dasmijn
+	VWR-29228
 Nicky Perian
 	OPEN-1
 	STORM-1087
 	STORM-1602
 	STORM-1868
     VWR-26622
+	VWR-29224
 Talamasca
 Tali Rosca
 Tayra Dagostino

indra/llaudio/llaudioengine.cpp

 	mBufferp->mAudioDatap = this;
 	return true;
 }
-
-

indra/llcommon/lluri.cpp

 
 // system includes
 #include <boost/tokenizer.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+#include <boost/algorithm/string/finder.hpp>
 
 void encode_character(std::ostream& ostr, std::string::value_type val)
 {
 					   const LLSD& path)
 {
 	LLURI result;
-	
+
 	// TODO: deal with '/' '?' '#' in host_port
 	if (prefix.find("://") != prefix.npos)
 	{
 			result.mEscapedPath += "/" + escapePathComponent(it->asString());
 		}
 	}
-	else if(path.isString())
+	else if (path.isString())
 	{
-		result.mEscapedPath += "/" + escapePathComponent(path.asString());
+		std::string pathstr(path);
+		// Trailing slash is significant in HTTP land. If caller specified,
+		// make a point of preserving.
+		std::string last_slash;
+		std::string::size_type len(pathstr.length());
+		if (len && pathstr[len-1] == '/')
+		{
+			last_slash = "/";
+		}
+
+		// Escape every individual path component, recombining with slashes.
+		for (boost::split_iterator<std::string::const_iterator>
+				 ti(pathstr, boost::first_finder("/")), tend;
+			 ti != tend; ++ti)
+		{
+			// Eliminate a leading slash or duplicate slashes anywhere. (Extra
+			// slashes show up here as empty components.) This test also
+			// eliminates a trailing slash, hence last_slash above.
+			if (! ti->empty())
+			{
+				result.mEscapedPath
+					+= "/" + escapePathComponent(std::string(ti->begin(), ti->end()));
+			}
+		}
+
+		// Reinstate trailing slash, if any.
+		result.mEscapedPath += last_slash;
 	} 
 	else if(path.isUndefined())
 	{
 	  // do nothing
 	}
-    else
+	else
 	{
 	  llwarns << "Valid path arguments to buildHTTP are array, string, or undef, you passed type" 
 			  << path.type() << llendl;

indra/llcommon/tests/lluri_test.cpp

 			ensure_equals("escape/unescape escaped", uri_esc_2, uri_esc_1);
 		}
 	};
-	
+
 	typedef test_group<URITestData>	URITestGroup;
 	typedef URITestGroup::object	URITestObject;
 
 	URITestGroup uriTestGroup("LLURI");
-	
+
 	template<> template<>
 	void URITestObject::test<1>()
 	{
 	template<> template<>
 	void URITestObject::test<2>()
 	{
-		// empty string
+		set_test_name("empty string");
 		checkParts(LLURI(""), "", "", "", "");
 	}
-	
+
 	template<> template<>
 	void URITestObject::test<3>()
 	{
-		// no scheme
+		set_test_name("no scheme");
 		checkParts(LLURI("foo"), "", "foo", "", "");
 		checkParts(LLURI("foo%3A"), "", "foo:", "", "");
 	}
 	template<> template<>
 	void URITestObject::test<4>()
 	{
-		// scheme w/o paths
+		set_test_name("scheme w/o paths");
 		checkParts(LLURI("mailto:zero@ll.com"),
 			"mailto", "zero@ll.com", "", "");
 		checkParts(LLURI("silly://abc/def?foo"),
 	template<> template<>
 	void URITestObject::test<5>()
 	{
-		// authority section
+		set_test_name("authority section");
 		checkParts(LLURI("http:///"),
 			"http", "///", "", "/");
-			
+
 		checkParts(LLURI("http://abc"),
 			"http", "//abc", "abc", "");
-			
+
 		checkParts(LLURI("http://a%2Fb/cd"),
 			"http", "//a/b/cd", "a/b", "/cd");
-			
+
 		checkParts(LLURI("http://host?"),
 			"http", "//host?", "host", "");
 	}
 	template<> template<>
 	void URITestObject::test<6>()
 	{		
-		// path section
+		set_test_name("path section");
 		checkParts(LLURI("http://host/a/b/"),
 				"http", "//host/a/b/", "host", "/a/b/");
-				
+
 		checkParts(LLURI("http://host/a%3Fb/"),
 				"http", "//host/a?b/", "host", "/a?b/");
-				
+
 		checkParts(LLURI("http://host/a:b/"),
 				"http", "//host/a:b/", "host", "/a:b/");
 	}
 	template<> template<>
 	void URITestObject::test<7>()
 	{		
-		// query string
+		set_test_name("query string");
 		checkParts(LLURI("http://host/?"),
 				"http", "//host/?", "host", "/", "");
-				
+
 		checkParts(LLURI("http://host/?x"),
 				"http", "//host/?x", "host", "/", "x");
-				
+
 		checkParts(LLURI("http://host/??"),
 				"http", "//host/??", "host", "/", "?");
-				
+
 		checkParts(LLURI("http://host/?%3F"),
 				"http", "//host/??", "host", "/", "?");
 	}
 		path.append("123");
 		checkParts(LLURI::buildHTTP("host", path),
 			"http", "//host/x/123", "host", "/x/123");
-		
+
 		LLSD query;
 		query["123"] = "12";
 		query["abcd"] = "abc";
 		checkParts(LLURI::buildHTTP("host", path, query),
 			"http", "//host/x/123?123=12&abcd=abc",
 			"host", "/x/123", "123=12&abcd=abc");
+
+		ensure_equals(LLURI::buildHTTP("host", "").asString(),
+					  "http://host");
+		ensure_equals(LLURI::buildHTTP("host", "/").asString(),
+					  "http://host/");
+		ensure_equals(LLURI::buildHTTP("host", "//").asString(),
+					  "http://host/");
+		ensure_equals(LLURI::buildHTTP("host", "dir name").asString(),
+					  "http://host/dir%20name");
+		ensure_equals(LLURI::buildHTTP("host", "dir name/").asString(),
+					  "http://host/dir%20name/");
+		ensure_equals(LLURI::buildHTTP("host", "/dir name").asString(),
+					  "http://host/dir%20name");
+		ensure_equals(LLURI::buildHTTP("host", "/dir name/").asString(),
+					  "http://host/dir%20name/");
+		ensure_equals(LLURI::buildHTTP("host", "dir name/subdir name").asString(),
+					  "http://host/dir%20name/subdir%20name");
+		ensure_equals(LLURI::buildHTTP("host", "dir name/subdir name/").asString(),
+					  "http://host/dir%20name/subdir%20name/");
+		ensure_equals(LLURI::buildHTTP("host", "/dir name/subdir name").asString(),
+					  "http://host/dir%20name/subdir%20name");
+		ensure_equals(LLURI::buildHTTP("host", "/dir name/subdir name/").asString(),
+					  "http://host/dir%20name/subdir%20name/");
+		ensure_equals(LLURI::buildHTTP("host", "//dir name//subdir name//").asString(),
+					  "http://host/dir%20name/subdir%20name/");
 	}
 
 	template<> template<>
 	void URITestObject::test<9>()
 	{
-		// test unescaped path components
+		set_test_name("test unescaped path components");
 		LLSD path;
 		path.append("x@*//*$&^");
 		path.append("123");
 	template<> template<>
 	void URITestObject::test<10>()
 	{
-		// test unescaped query components
+		set_test_name("test unescaped query components");
 		LLSD path;
 		path.append("x");
 		path.append("123");
 	template<> template<>
 	void URITestObject::test<11>()
 	{
-		// test unescaped host components
+		set_test_name("test unescaped host components");
 		LLSD path;
 		path.append("x");
 		path.append("123");
 			"http", "//hi123*33--}{:portstuffs/x/123?123=12&abcd=abc",
 			"hi123*33--}{:portstuffs", "/x/123", "123=12&abcd=abc");
 	}
-	
+
 	template<> template<>
 	void URITestObject::test<12>()
 	{
-		// test funky host_port values that are actually prefixes
-		
+		set_test_name("test funky host_port values that are actually prefixes");
+
 		checkParts(LLURI::buildHTTP("http://example.com:8080", LLSD()),
 			"http", "//example.com:8080",
 			"example.com:8080", "");
-			
+
 		checkParts(LLURI::buildHTTP("http://example.com:8080/", LLSD()),
 			"http", "//example.com:8080/",
 			"example.com:8080", "/");
 			"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
 			"0123456789"
 			"-._~";
-		// test escape
+		set_test_name("test escape");
 		ensure_equals("escaping", LLURI::escape("abcdefg", "abcdef"), "abcdef%67");
 		ensure_equals("escaping", LLURI::escape("|/&\\+-_!@", ""), "%7C%2F%26%5C%2B%2D%5F%21%40");
 		ensure_equals("escaping as query variable", 
 		cedilla.push_back( (char)0xA7 );
 		ensure_equals("escape UTF8", LLURI::escape( cedilla, unreserved), "%C3%A7");
 	}
-	
+
 
 	template<> template<>
 	void URITestObject::test<14>()
 	{
-		// make sure escape and unescape of empty strings return empty
-		// strings.
+		set_test_name("make sure escape and unescape of empty strings return empty strings.");
 		std::string uri_esc(LLURI::escape(""));
 		ensure("escape string empty", uri_esc.empty());
 		std::string uri_raw(LLURI::unescape(""));
 	template<> template<>
 	void URITestObject::test<15>()
 	{
-		// do some round-trip tests
+		set_test_name("do some round-trip tests");
 		escapeRoundTrip("http://secondlife.com");
 		escapeRoundTrip("http://secondlife.com/url with spaces");
 		escapeRoundTrip("http://bad[domain]name.com/");
 	template<> template<>
 	void URITestObject::test<16>()
 	{
-		// Test the default escaping
+		set_test_name("Test the default escaping");
 		// yes -- this mangles the url. This is expected behavior
 		std::string simple("http://secondlife.com");
 		ensure_equals(
 	template<> template<>
 	void URITestObject::test<17>()
 	{
-		// do some round-trip tests with very long strings.
+		set_test_name("do some round-trip tests with very long strings.");
 		escapeRoundTrip("Welcome to Second Life.We hope you'll have a richly rewarding experience, filled with creativity, self expression and fun.The goals of the Community Standards are simple: treat each other with respect and without harassment, adhere to local standards as indicated by simulator ratings, and refrain from any hate activity which slurs a real-world individual or real-world community. Behavioral Guidelines - The Big Six");
 		escapeRoundTrip(
 			"'asset_data':b(12100){'task_id':ucc706f2d-0b68-68f8-11a4-f1043ff35ca0}\n{\n\tname\tObject|\n\tpermissions 0\n\t{\n\t\tbase_mask\t7fffffff\n\t\towner_mask\t7fffffff\n\t\tgroup_mask\t00000000\n\t\teveryone_mask\t00000000\n\t\tnext_owner_mask\t7fffffff\n\t\tcreator_id\t13fd9595-a47b-4d64-a5fb-6da645f038e0\n\t\towner_id\t3c115e51-04f4-523c-9fa6-98aff1034730\n\t\tlast_owner_id\t3c115e51-04f4-523c-9fa6-98aff1034730\n\t\tgroup_id\t00000000-0000-0000-0000-000000000000\n\t}\n\tlocal_id\t217444921\n\ttotal_crc\t323\n\ttype\t2\n\ttask_valid\t2\n\ttravel_access\t13\n\tdisplayopts\t2\n\tdisplaytype\tv\n\tpos\t-0.368634403\t0.00781063363\t-0.569040775\n\toldpos\t150.117996\t25.8658009\t8.19664001\n\trotation\t-0.06293071806430816650390625\t-0.6995697021484375\t-0.7002241611480712890625\t0.1277817934751510620117188\n\tchildpos\t-0.00499999989\t-0.0359999985\t0.307999998\n\tchildrot\t-0.515492737293243408203125\t-0.46601200103759765625\t0.529055416584014892578125\t0.4870323240756988525390625\n\tscale"
 			"D STRING RW SV 20f36c3a-b44b-9bc7-87f3-018bfdfc8cda\n\tscratchpad\t0\n\t{\n\t\n\t}\n\tsale_info\t0\n\t{\n\t\tsale_type\tnot\n\t\tsale_price\t10\n\t}\n\torig_asset_id\t8747acbc-d391-1e59-69f1-41d06830e6c0\n\torig_item_id\t20f36c3a-b44b-9bc7-87f3-018bfdfc8cda\n\tfrom_task_id\t3c115e51-04f4-523c-9fa6-98aff1034730\n\tcorrect_family_id\t00000000-0000-0000-0000-000000000000\n\thas_rezzed\t0\n\tpre_link_base_mask\t7fffffff\n\tlinked \tlinked\n\tdefault_pay_price\t-2\t1\t5\t10\t20\n}\n");
 	}
 
-	 
+
 	template<> template<>
 	void URITestObject::test<18>()
 	{
 		ensure_equals("pathmap",	u.pathArray()[1].asString(),	"login");
 		ensure_equals("query",		u.query(),		"first_name=Testert4&last_name=Tester&web_login_key=test");
 		ensure_equals("query map element", u.queryMap()["last_name"].asString(), "Tester");
-		
+
 		u = LLURI("secondlife://Da Boom/128/128/128");
 		// if secondlife is the scheme, LLURI should parse /128/128/128 as path, with Da Boom as authority
 		ensure_equals("scheme",		u.scheme(),		"secondlife");
 	template<> template<>
 	void URITestObject::test<19>()
 	{
-		// Parse about: schemes
+		set_test_name("Parse about: schemes");
 		LLURI u("about:blank?redirect-http-hack=secondlife%3A%2F%2F%2Fapp%2Flogin%3Ffirst_name%3DCallum%26last_name%3DLinden%26location%3Dspecify%26grid%3Dvaak%26region%3D%2FMorris%2F128%2F128%26web_login_key%3Defaa4795-c2aa-4c58-8966-763c27931e78");
 		ensure_equals("scheme",		u.scheme(),		"about");
 		ensure_equals("authority",	u.authority(),	"");

indra/newview/app_settings/settings.xml

       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>sourceid</key>
+    <map>
+      <key>Comment</key>
+      <string>Identify referring agency to Linden web servers</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string />
+    </map>
     <key>SpeakerParticipantDefaultOrder</key>
     <map>
       <key>Comment</key>

indra/newview/featuretable.txt

-version 32
+version 33
 // 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
 VertexShaderEnable			1	0
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	1
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	2
 
 //
 //
 list Unknown
 RenderVBOEnable				1	0
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 0 Hardware (just old)
 //
 list Class0
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 1 Hardware
 //
 list Class1
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 2 Hardware (make it purty)
+// Class 2 Hardware
 //
 list Class2
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 3 Hardware (make it purty)
+// Class 3 Hardware (deferred enabled)
 //
 list Class3
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	0
+
+//
+// Class 4 Hardware (deferred + SSAO)
+//
+list Class4
+RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+
+//
+// Class 5 Hardware (deferred + SSAO + shadows)
+//
+list Class5
+RenderVBOEnable				1	1
+RenderShadowDetail			1	2
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+
 
 //
 // VRAM > 512MB

indra/newview/featuretable_linux.txt

-version 27
+version 28
 // 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
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	0
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	1
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	2
 
 //
 //
 list Unknown
 RenderVBOEnable				1	0
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 0 Hardware (just old)
 //
 list Class0
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 1 Hardware
 //
 list Class1
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 2 Hardware (make it purty)
+// Class 2 Hardware
 //
 list Class2
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 3 Hardware (make it purty)
+// Class 3 Hardware (deferred enabled)
 //
 list Class3
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	0
 
 //
+// Class 4 Hardware (deferred + SSAO)
+//
+list Class4
+RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+
+//
+// Class 5 Hardware (deferred + SSAO + shadows)
+//
+list Class5
+RenderVBOEnable				1	1
+RenderShadowDetail			1	2
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+//
 // VRAM > 512MB
 //
 list VRAMGT512

indra/newview/featuretable_mac.txt

-version 32
+version 34
 // 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
 VertexShaderEnable			1	0
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	1
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	2
 RenderFSAASamples			1	2
 
 //
 //
 list Unknown
 RenderVBOEnable				1	0
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 0 Hardware (just old)
 //
 list Class0
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 1 Hardware
 //
 list Class1
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 2 Hardware (make it purty)
+// Class 2 Hardware
 //
 list Class2
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 3 Hardware (make it purty)
+// Class 3 Hardware (deferred enabled)
 //
 list Class3
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	0
+
+//
+// Class 4 Hardware (deferred + SSAO)
+//
+list Class4
+RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+
+//
+// Class 5 Hardware (deferred + SSAO + shadows)
+//
+list Class5
+RenderVBOEnable				1	1
+RenderShadowDetail			1	2
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
 
 //
 // No Pixel Shaders available

indra/newview/featuretable_xp.txt

-version 31
+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
 RenderTextureMemoryMultiple		1	1.0
 RenderCompressTextures		1	1
 RenderShaderLightingMaxLevel	1	3
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+RenderShadowDetail			1	2
 WatchdogDisabled				1	1
 RenderUseStreamVBO			1	1
 RenderFSAASamples			1	16
 VertexShaderEnable			1	0
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	0
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	0
 RenderFSAASamples			1	0
 
 //
 VertexShaderEnable			1	1
 WindLightUseAtmosShaders	1	1
 WLSkyDetail					1	48
-RenderDeferred				1	0
-RenderDeferredSSAO			1	0
-RenderShadowDetail			1	2
 RenderFSAASamples			1	2
 
 //
 //
 list Unknown
 RenderVBOEnable				1	0
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 0 Hardware (just old)
 //
 list Class0
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
 
 //
 // Class 1 Hardware
 //
 list Class1
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 2 Hardware (make it purty)
+// Class 2 Hardware
 //
 list Class2
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	0
+RenderDeferredSSAO			1	0
+
 
 //
-// Class 3 Hardware (make it purty)
+// Class 3 Hardware (deferred enabled)
 //
 list Class3
 RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	0
+
+//
+// Class 4 Hardware (deferred + SSAO)
+//
+list Class4
+RenderVBOEnable				1	1
+RenderShadowDetail			1	0
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
+
+//
+// Class 5 Hardware (deferred + SSAO + shadows)
+//
+list Class5
+RenderVBOEnable				1	1
+RenderShadowDetail			1	2
+RenderDeferred				1	1
+RenderDeferredSSAO			1	1
 
 //
 // VRAM > 512MB

indra/newview/gpu_table.txt

 //
 // Format:
 //	 Fields are separated by one or more tab (not space) characters
-//	 <recognizer name>	<regular expression>	<class>		<supported>
+//	 <recognizer name>	<regular expression>	<class>		<supported>	<stats based> <expected OpenGL version>
 //
 // Class Numbers:
 //		0 - Defaults to low graphics settings.	No shaders on by default
 //		1 - Defaults to mid graphics settings.	Basic shaders on by default
 //		2 - Defaults to high graphics settings.	 Atmospherics on by default.
-//		3 - Same as class 2 for now.
+//		3 - Same as 2, but with lighting and shadows enabled.
+//		4 - Same as 3, but with ambient occlusion enabled.
+//		5 - Same as 4, but with shadows set to "Sun/Moon+Projectors."
 //
 // Supported Number:
 //		0 - We claim to not support this card.
 //		1 - We claim to support this card.
 //
 
-3Dfx							.*3Dfx.*									0		0
-3Dlabs							.*3Dlabs.*									0		0
-ATI 3D-Analyze					.*ATI.*3D-Analyze.*							0		0
-ATI All-in-Wonder 7500			.*ATI.*All-in-Wonder 75.*					0		1
-ATI All-in-Wonder 8500			.*ATI.*All-in-Wonder 85.*					0		1
-ATI All-in-Wonder 9200			.*ATI.*All-in-Wonder 92.*					0		1
-ATI All-in-Wonder 9xxx			.*ATI.*All-in-Wonder 9.*					1		1
-ATI All-in-Wonder HD			.*ATI.*All-in-Wonder HD.*					1		1
-ATI All-in-Wonder X600			.*ATI.*All-in-Wonder X6.*					1		1
-ATI All-in-Wonder X800			.*ATI.*All-in-Wonder X8.*					2		1
-ATI All-in-Wonder X1800			.*ATI.*All-in-Wonder X18.*					3		1
-ATI All-in-Wonder X1900			.*ATI.*All-in-Wonder X19.*					3		1
-ATI All-in-Wonder PCI-E			.*ATI.*All-in-Wonder.*PCI-E.*				1		1
-ATI All-in-Wonder Radeon		.*ATI.*All-in-Wonder Radeon.*				0		1
-ATI ASUS ARES					.*ATI.*ASUS.*ARES.*							3		1
-ATI ASUS A9xxx					.*ATI.*ASUS.*A9.*							1		1
-ATI ASUS AH24xx					.*ATI.*ASUS.*AH24.*							1		1
-ATI ASUS AH26xx					.*ATI.*ASUS.*AH26.*							3		1
-ATI ASUS AH34xx					.*ATI.*ASUS.*AH34.*							1		1
-ATI ASUS AH36xx					.*ATI.*ASUS.*AH36.*							3		1
-ATI ASUS AH46xx					.*ATI.*ASUS.*AH46.*							3		1
-ATI ASUS AX3xx					.*ATI.*ASUS.*AX3.*							1		1
-ATI ASUS AX5xx					.*ATI.*ASUS.*AX5.*							1		1
-ATI ASUS AX8xx					.*ATI.*ASUS.*AX8.*							2		1
-ATI ASUS EAH24xx				.*ATI.*ASUS.*EAH24.*						2		1
-ATI ASUS EAH26xx				.*ATI.*ASUS.*EAH26.*						3		1
-ATI ASUS EAH29xx				.*ATI.*ASUS.*EAH29.*						3		1
-ATI ASUS EAH34xx				.*ATI.*ASUS.*EAH34.*						1		1
-ATI ASUS EAH36xx				.*ATI.*ASUS.*EAH36.*						3		1
-ATI ASUS EAH38xx				.*ATI.*ASUS.*EAH38.*						3		1
-ATI ASUS EAH43xx				.*ATI.*ASUS.*EAH43.*						1		1
-ATI ASUS EAH45xx				.*ATI.*ASUS.*EAH45.*						1		1
-ATI ASUS EAH48xx				.*ATI.*ASUS.*EAH48.*						3		1
-ATI ASUS EAH57xx				.*ATI.*ASUS.*EAH57.*						3		1
-ATI ASUS EAH58xx				.*ATI.*ASUS.*EAH58.*						3		1
-ATI ASUS EAH6xxx				.*ATI.*ASUS.*EAH6.*							3		1
-ATI ASUS Radeon X1xxx			.*ATI.*ASUS.*X1.*							3		1
-ATI Radeon X7xx					.*ATI.*ASUS.*X7.*							1		1
-ATI Radeon X19xx				.*ATI.*(Radeon|Diamond) X19.* ?.*			3		1
-ATI Radeon X18xx				.*ATI.*(Radeon|Diamond) X18.* ?.*			3		1
-ATI Radeon X17xx				.*ATI.*(Radeon|Diamond) X17.* ?.*			2		1
-ATI Radeon X16xx				.*ATI.*(Radeon|Diamond) X16.* ?.*			2		1
-ATI Radeon X15xx				.*ATI.*(Radeon|Diamond) X15.* ?.*			2		1
-ATI Radeon X13xx				.*ATI.*(Radeon|Diamond) X13.* ?.*			1		1
-ATI Radeon X1xxx				.*ATI.*(Radeon|Diamond) X1.. ?.*			1		1
-ATI Radeon X2xxx				.*ATI.*(Radeon|Diamond) X2.. ?.*			1		1
-ATI Display Adapter				.*ATI.*display adapter.*					0		1
-ATI FireGL 5200					.*ATI.*FireGL V52.*							0		1
-ATI FireGL 5xxx					.*ATI.*FireGL V5.*							1		1
-ATI FireGL						.*ATI.*Fire.*GL.*							0		1
-ATI FirePro M3900				.*ATI.*FirePro.*M39.*						2		1
-ATI FirePro M5800				.*ATI.*FirePro.*M58.*						3		1
-ATI FirePro M7740				.*ATI.*FirePro.*M77.*						3		1
-ATI FirePro M7820				.*ATI.*FirePro.*M78.*						3		1
-ATI FireMV						.*ATI.*FireMV.*								0		1
-ATI Geforce 9500 GT				.*ATI.*Geforce 9500 *GT.*					2		1
-ATI Geforce 9600 GT				.*ATI.*Geforce 9600 *GT.*					2		1
-ATI Geforce 9800 GT				.*ATI.*Geforce 9800 *GT.*					2		1
-ATI Generic						.*ATI.*Generic.*							0		0
-ATI Hercules 9800				.*ATI.*Hercules.*9800.*						1		1
-ATI IGP 340M					.*ATI.*IGP.*340M.*							0		0
-ATI M52							.*ATI.*M52.*								1		1
-ATI M54							.*ATI.*M54.*								1		1
-ATI M56							.*ATI.*M56.*								1		1
-ATI M71							.*ATI.*M71.*								1		1
-ATI M72							.*ATI.*M72.*								1		1
-ATI M76							.*ATI.*M76.*								3		1
-ATI Radeon HD 64xx				.*ATI.*AMD Radeon.* HD [67]4..[MG]			3		1
-ATI Radeon HD 65xx				.*ATI.*AMD Radeon.* HD [67]5..[MG]			3		1
-ATI Radeon HD 66xx				.*ATI.*AMD Radeon.* HD [67]6..[MG]			3		1
-ATI Mobility Radeon 4100		.*ATI.*Mobility.*41..						1		1
-ATI Mobility Radeon 7xxx		.*ATI.*Mobility.*Radeon 7.*					0		1
-ATI Mobility Radeon 8xxx		.*ATI.*Mobility.*Radeon 8.*					0		1
-ATI Mobility Radeon 9800		.*ATI.*Mobility.*98.*						1		1
-ATI Mobility Radeon 9700		.*ATI.*Mobility.*97.*						1		1
-ATI Mobility Radeon 9600		.*ATI.*Mobility.*96.*						0		1
-ATI Mobility Radeon HD 530v		.*ATI.*Mobility.*HD *530v.*					1		1
-ATI Mobility Radeon HD 540v		.*ATI.*Mobility.*HD *540v.*					2		1
-ATI Mobility Radeon HD 545v		.*ATI.*Mobility.*HD *545v.*					2		1
-ATI Mobility Radeon HD 550v		.*ATI.*Mobility.*HD *550v.*					2		1
-ATI Mobility Radeon HD 560v		.*ATI.*Mobility.*HD *560v.*					2		1
-ATI Mobility Radeon HD 565v		.*ATI.*Mobility.*HD *565v.*					2		1
-ATI Mobility Radeon HD 2300		.*ATI.*Mobility.*HD *23.*					2		1
-ATI Mobility Radeon HD 2400		.*ATI.*Mobility.*HD *24.*					2		1
-ATI Mobility Radeon HD 2600		.*ATI.*Mobility.*HD *26.*					3		1
-ATI Mobility Radeon HD 2700		.*ATI.*Mobility.*HD *27.*					3		1
-ATI Mobility Radeon HD 3100		.*ATI.*Mobility.*HD *31.*					0		1
-ATI Mobility Radeon HD 3200		.*ATI.*Mobility.*HD *32.*					0		1
-ATI Mobility Radeon HD 3400		.*ATI.*Mobility.*HD *34.*					2		1
-ATI Mobility Radeon HD 3600		.*ATI.*Mobility.*HD *36.*					3		1
-ATI Mobility Radeon HD 3800		.*ATI.*Mobility.*HD *38.*					3		1
-ATI Mobility Radeon HD 4200		.*ATI.*Mobility.*HD *42.*					2		1
-ATI Mobility Radeon HD 4300		.*ATI.*Mobility.*HD *43.*					2		1
-ATI Mobility Radeon HD 4500		.*ATI.*Mobility.*HD *45.*					3		1
-ATI Mobility Radeon HD 4600		.*ATI.*Mobility.*HD *46.*					3		1
-ATI Mobility Radeon HD 4800		.*ATI.*Mobility.*HD *48.*					3		1
-ATI Mobility Radeon HD 5100		.*ATI.*Mobility.*HD *51.*					3		1
-ATI Mobility Radeon HD 5300		.*ATI.*Mobility.*HD *53.*					3		1
-ATI Mobility Radeon HD 5400		.*ATI.*Mobility.*HD *54.*					3		1
-ATI Mobility Radeon HD 5500		.*ATI.*Mobility.*HD *55.*					3		1
-ATI Mobility Radeon HD 5600		.*ATI.*Mobility.*HD *56.*					3		1
-ATI Mobility Radeon HD 5700		.*ATI.*Mobility.*HD *57.*					3		1
-ATI Mobility Radeon HD 6200		.*ATI.*Mobility.*HD *62.*					3		1
-ATI Mobility Radeon HD 6300		.*ATI.*Mobility.*HD *63.*					3		1
-ATI Mobility Radeon HD 6400M	.*ATI.*Mobility.*HD *64.*					3		1
-ATI Mobility Radeon HD 6500M	.*ATI.*Mobility.*HD *65.*					3		1
-ATI Mobility Radeon HD 6600M	.*ATI.*Mobility.*HD *66.*					3		1
-ATI Mobility Radeon HD 6700M	.*ATI.*Mobility.*HD *67.*					3		1
-ATI Mobility Radeon HD 6800M	.*ATI.*Mobility.*HD *68.*					3		1
-ATI Mobility Radeon HD 6900M	.*ATI.*Mobility.*HD *69.*					3		1
-ATI Radeon HD 2300				.*ATI.*Radeon HD *23..						2		1
-ATI Radeon HD 2400				.*ATI.*Radeon HD *24..						2		1
-ATI Radeon HD 2600				.*ATI.*Radeon HD *26..						2		1
-ATI Radeon HD 2900				.*ATI.*Radeon HD *29..						3		1
-ATI Radeon HD 3000				.*ATI.*Radeon HD *30..						0		1
-ATI Radeon HD 3100				.*ATI.*Radeon HD *31..						1		1
-ATI Radeon HD 3200				.*ATI.*Radeon HD *32..						1		1
-ATI Radeon HD 3300				.*ATI.*Radeon HD *33..						2		1
-ATI Radeon HD 3400				.*ATI.*Radeon HD *34..						2		1
-ATI Radeon HD 3500				.*ATI.*Radeon HD *35..						2		1
-ATI Radeon HD 3600				.*ATI.*Radeon HD *36..						3		1
-ATI Radeon HD 3700				.*ATI.*Radeon HD *37..						3		1
-ATI Radeon HD 3800				.*ATI.*Radeon HD *38..						3		1
-ATI Radeon HD 4100				.*ATI.*Radeon HD *41..						1		1
-ATI Radeon HD 4200				.*ATI.*Radeon HD *42..						1		1
-ATI Radeon HD 4300				.*ATI.*Radeon HD *43..						2		1
-ATI Radeon HD 4400				.*ATI.*Radeon HD *44..						2		1
-ATI Radeon HD 4500				.*ATI.*Radeon HD *45..						3		1
-ATI Radeon HD 4600				.*ATI.*Radeon HD *46..						3		1
-ATI Radeon HD 4700				.*ATI.*Radeon HD *47..						3		1
-ATI Radeon HD 4800				.*ATI.*Radeon HD *48..						3		1
-ATI Radeon HD 5400				.*ATI.*Radeon HD *54..						3		1
-ATI Radeon HD 5500				.*ATI.*Radeon HD *55..						3		1
-ATI Radeon HD 5600				.*ATI.*Radeon HD *56..						3		1
-ATI Radeon HD 5700				.*ATI.*Radeon HD *57..						3		1
-ATI Radeon HD 5800				.*ATI.*Radeon HD *58..						3		1
-ATI Radeon HD 5900				.*ATI.*Radeon HD *59..						3		1
-ATI Radeon HD 6200				.*ATI.*Radeon HD *62..						3		1
-ATI Radeon HD 6300				.*ATI.*Radeon HD *63..						3		1
-ATI Radeon HD 6400				.*ATI.*Radeon HD *64..						3		1
-ATI Radeon HD 6500				.*ATI.*Radeon HD *65..						3		1
-ATI Radeon HD 6600				.*ATI.*Radeon HD *66..						3		1
-ATI Radeon HD 6700				.*ATI.*Radeon HD *67..						3		1
-ATI Radeon HD 6800				.*ATI.*Radeon HD *68..						3		1
-ATI Radeon HD 6900				.*ATI.*Radeon HD *69..						3		1
-ATI Radeon OpenGL				.*ATI.*Radeon OpenGL.*						0		0
-ATI Radeon 2100					.*ATI.*Radeon 21..							0		1
-ATI Radeon 3000					.*ATI.*Radeon 30..							0		1
-ATI Radeon 3100					.*ATI.*Radeon 31..							1		1
-ATI Radeon 5xxx					.*ATI.*Radeon 5...							3		1
-ATI Radeon 7xxx					.*ATI.*Radeon 7...							0		1
-ATI Radeon 8xxx					.*ATI.*Radeon 8...							0		1
-ATI Radeon 9000					.*ATI.*Radeon 90..							0		1
-ATI Radeon 9100					.*ATI.*Radeon 91..							0		1
-ATI Radeon 9200					.*ATI.*Radeon 92..							0		1
-ATI Radeon 9500					.*ATI.*Radeon 95..							0		1
-ATI Radeon 9600					.*ATI.*Radeon 96..							0		1
-ATI Radeon 9700					.*ATI.*Radeon 97..							1		1
-ATI Radeon 9800					.*ATI.*Radeon 98..							1		1
-ATI Radeon RV250				.*ATI.*RV250.*								0		1
-ATI Radeon RV600				.*ATI.*RV6.*								1		1
-ATI Radeon RX700				.*ATI.*RX70.*								1		1
-ATI Radeon RX800				.*ATI.*Radeon *RX80.*						2		1
-ATI RS880M						.*ATI.*RS880M								1		1
-ATI Radeon RX9550				.*ATI.*RX9550.*								1		1
-ATI Radeon VE					.*ATI.*Radeon.*VE.*							0		0
-ATI Radeon X300					.*ATI.*Radeon *X3.*							0		1
-ATI Radeon X400					.*ATI.*Radeon ?X4.*							0		1
-ATI Radeon X500					.*ATI.*Radeon ?X5.*							0		1
-ATI Radeon X600					.*ATI.*Radeon ?X6.*							1		1
-ATI Radeon X700					.*ATI.*Radeon ?X7.*							1		1
-ATI Radeon X800					.*ATI.*Radeon ?X8.*							2		1
-ATI Radeon X900					.*ATI.*Radeon ?X9.*							2		1
-ATI Radeon Xpress				.*ATI.*Radeon Xpress.*						0		1
-ATI Rage 128					.*ATI.*Rage 128.*							0		1
-ATI R300 (9700)					.*R300.*									1		1
-ATI R350 (9800)					.*R350.*									1		1
-ATI R580 (X1900)				.*R580.*									3		1
-ATI RC410 (Xpress 200)			.*RC410.*									0		0
-ATI RS48x (Xpress 200x)			.*RS48.*									0		0
-ATI RS600 (Xpress 3200)			.*RS600.*									0		0
-ATI RV350 (9600)				.*RV350.*									0		1
-ATI RV370 (X300)				.*RV370.*									0		1
-ATI RV410 (X700)				.*RV410.*									1		1
-ATI RV515						.*RV515.*									1		1
-ATI RV570 (X1900 GT/PRO)		.*RV570.*									3		1
-ATI RV380						.*RV380.*									0		1
-ATI RV530						.*RV530.*									1		1
-ATI RX480 (Xpress 200P)			.*RX480.*									0		1
-ATI RX700						.*RX700.*									1		1
-AMD ANTILLES (HD 6990)			.*(AMD|ATI).*Antilles.*						3		1
-AMD BARTS (HD 6800)				.*(AMD|ATI).*Barts.*						3		1
-AMD CAICOS (HD 6400)			.*(AMD|ATI).*Caicos.*						3		1
-AMD CAYMAN (HD 6900)			.*(AMD|ATI).*(Cayman|CAYMAM).*				3		1
-AMD CEDAR (HD 5450)				.*(AMD|ATI).*Cedar.*						2		1
-AMD CYPRESS (HD 5800)			.*(AMD|ATI).*Cypress.*						3		1
-AMD HEMLOCK (HD 5970)			.*(AMD|ATI).*Hemlock.*						3		1
-AMD JUNIPER (HD 5700)			.*(AMD|ATI).*Juniper.*						3		1
-AMD PARK						.*(AMD|ATI).*Park.*							3		1
-AMD REDWOOD (HD 5500/5600)		.*(AMD|ATI).*Redwood.*						3		1
-AMD TURKS (HD 6500/6600)		.*(AMD|ATI).*Turks.*						3		1
-AMD RS780 (HD 3200)				.*RS780.*									0		1
-AMD RS880 (HD 4200)				.*RS880.*									1		1
-AMD RV610 (HD 2400)				.*RV610.*									1		1
-AMD RV620 (HD 3400)				.*RV620.*									1		1
-AMD RV630 (HD 2600)				.*RV630.*									2		1
-AMD RV635 (HD 3600)				.*RV635.*									3		1
-AMD RV670 (HD 3800)				.*RV670.*									3		1
-AMD R680 (HD 3870 X2)			.*R680.*									3		1
-AMD R700 (HD 4800 X2)			.*R700.*									3		1
-AMD RV710 (HD 4300)				.*RV710.*									1		1
-AMD RV730 (HD 4600)				.*RV730.*									3		1
-AMD RV740 (HD 4700)				.*RV740.*									3		1
-AMD RV770 (HD 4800)				.*RV770.*									3		1
-AMD RV790 (HD 4800)				.*RV790.*									3		1
-ATI 760G/Radeon 3000			.*ATI.*AMD 760G.*							1		1
-ATI 780L/Radeon 3000			.*ATI.*AMD 780L.*							1		1
-ATI Radeon DDR					.*ATI.*Radeon ?DDR.*						0		1
-ATI FirePro 2000				.*ATI.*FirePro 2.*							1		1
-ATI FirePro 3000				.*ATI.*FirePro V3.*							1		1
-ATI FirePro 4000				.*ATI.*FirePro V4.*							2		1
-ATI FirePro 5000				.*ATI.*FirePro V5.*							3		1
-ATI FirePro 7000				.*ATI.*FirePro V7.*							3		1
-ATI FirePro M					.*ATI.*FirePro M.*							3		1
-ATI Technologies				.*ATI *Technologies.*						0		1
-// This entry is last to work around the "R300" driver problem.
-ATI R300 (9700)					.*R300.*									1		1
-ATI Radeon						.*ATI.*(Diamond|Radeon).*					0		1
-Intel X3100						.*Intel.*X3100.*							0		1
-Intel 830M						.*Intel.*830M								0		0
-Intel 845G						.*Intel.*845G								0		0
-Intel 855GM						.*Intel.*855GM								0		0
-Intel 865G						.*Intel.*865G								0		0
-Intel 900						.*Intel.*900.*900							0		0
-Intel 915GM						.*Intel.*915GM								0		0
-Intel 915G						.*Intel.*915G								0		0
-Intel 945GM						.*Intel.*945GM.*							0		1
-Intel 945G						.*Intel.*945G.*								0		1
-Intel 950						.*Intel.*950.*								0		1
-Intel 965						.*Intel.*965.*								0		1
-Intel G33						.*Intel.*G33.*								0		0
-Intel G41						.*Intel.*G41.*								0		1
-Intel G45						.*Intel.*G45.*								0		1
-Intel Bear Lake					.*Intel.*Bear Lake.*						0		0
-Intel Broadwater				.*Intel.*Broadwater.*						0		0
-Intel Brookdale					.*Intel.*Brookdale.*						0		0
-Intel Cantiga					.*Intel.*Cantiga.*							0		0
-Intel Eaglelake					.*Intel.*Eaglelake.*						0		1
-Intel Graphics Media HD			.*Intel.*Graphics Media.*HD.*				0		1
-Intel HD Graphics				.*Intel.*HD Graphics.*						2		1
-Intel Mobile 4 Series			.*Intel.*Mobile.* 4 Series.*				0		1
-Intel Media Graphics HD			.*Intel.*Media Graphics HD.*				0		1
-Intel Montara					.*Intel.*Montara.*							0		0
-Intel Pineview					.*Intel.*Pineview.*							0		1
-Intel Springdale				.*Intel.*Springdale.*						0		0
-Intel HD Graphics 2000			.*Intel.*HD2000.*							1		1
-Intel HD Graphics 3000			.*Intel.*HD3000.*							2		1
-Matrox							.*Matrox.*									0		0
-Mesa							.*Mesa.*									0		0
-NVIDIA 205						.*NVIDIA .*GeForce 205.*					2		1
-NVIDIA 210						.*NVIDIA .*GeForce 210.*					2		1
-NVIDIA 310M						.*NVIDIA .*GeForce 310M.*					1		1
-NVIDIA 310						.*NVIDIA .*GeForce 310.*					3		1
-NVIDIA 315M						.*NVIDIA .*GeForce 315M.*					2		1
-NVIDIA 315						.*NVIDIA .*GeForce 315.*					3		1
-NVIDIA 320M						.*NVIDIA .*GeForce 320M.*					2		1
-NVIDIA G100M					.*NVIDIA .*100M.*							0		1
-NVIDIA G100						.*NVIDIA .*100.*							0		1
-NVIDIA G102M					.*NVIDIA .*102M.*							0		1
-NVIDIA G103M					.*NVIDIA .*103M.*							0		1
-NVIDIA G105M					.*NVIDIA .*105M.*							0		1
-NVIDIA G 110M					.*NVIDIA .*110M.*							0		1
-NVIDIA G 120M					.*NVIDIA .*120M.*							1		1
-NVIDIA G 200					.*NVIDIA .*200(M)?.*						0		1
-NVIDIA G 205M					.*NVIDIA .*205(M)?.*						0		1
-NVIDIA G 210					.*NVIDIA .*210(M)?.*						1		1
-NVIDIA 305M						.*NVIDIA .*305(M)?.*						1		1
-NVIDIA G 310M					.*NVIDIA .*310(M)?.*						2		1
-NVIDIA G 315					.*NVIDIA .*315(M)?.*						2		1
-NVIDIA G 320M					.*NVIDIA .*320(M)?.*						2		1
-NVIDIA G 405					.*NVIDIA .*405(M)?.*						1		1
-NVIDIA G 410M					.*NVIDIA .*410(M)?.*						1		1
-NVIDIA GT 120M					.*NVIDIA .*GT *120(M)?.*					2		1
-NVIDIA GT 120					.*NVIDIA .*GT.*120							2		1
-NVIDIA GT 130M					.*NVIDIA .*GT *130(M)?.*					2		1
-NVIDIA GT 140M					.*NVIDIA .*GT *140(M)?.*					2		1
-NVIDIA GT 150M					.*NVIDIA .*GT(S)? *150(M)?.*				2		1
-NVIDIA GT 160M					.*NVIDIA .*GT *160(M)?.*					2		1
-NVIDIA GT 220M					.*NVIDIA .*GT *220(M)?.*					2		1
-NVIDIA GT 230M					.*NVIDIA .*GT *230(M)?.*					2		1
-NVIDIA GT 240M					.*NVIDIA .*GT *240(M)?.*					2		1
-NVIDIA GT 250M					.*NVIDIA .*GT *250(M)?.*					2		1
-NVIDIA GT 260M					.*NVIDIA .*GT *260(M)?.*					2		1
-NVIDIA GT 320M					.*NVIDIA .*GT *320(M)?.*					2		1
-NVIDIA GT 325M					.*NVIDIA .*GT *325(M)?.*					0		1
-NVIDIA GT 330M					.*NVIDIA .*GT *330(M)?.*					3		1
-NVIDIA GT 335M					.*NVIDIA .*GT *335(M)?.*					1		1
-NVIDIA GT 340M					.*NVIDIA .*GT *340(M)?.*					2		1
-NVIDIA GT 415M					.*NVIDIA .*GT *415(M)?.*					2		1
-NVIDIA GT 420M					.*NVIDIA .*GT *420(M)?.*					2		1
-NVIDIA GT 425M					.*NVIDIA .*GT *425(M)?.*					3		1
-NVIDIA GT 430M					.*NVIDIA .*GT *430(M)?.*					3		1
-NVIDIA GT 435M					.*NVIDIA .*GT *435(M)?.*					3		1
-NVIDIA GT 440M					.*NVIDIA .*GT *440(M)?.*					3		1
-NVIDIA GT 445M					.*NVIDIA .*GT *445(M)?.*					3		1
-NVIDIA GT 450M					.*NVIDIA .*GT *450(M)?.*					3		1
-NVIDIA GT 520M					.*NVIDIA .*GT *52.(M)?.*					3		1
-NVIDIA GT 530M					.*NVIDIA .*GT *530(M)?.*					3		1
-NVIDIA GT 540M					.*NVIDIA .*GT *54.(M)?.*					3		1
-NVIDIA GT 550M					.*NVIDIA .*GT *550(M)?.*					3		1
-NVIDIA GT 555M					.*NVIDIA .*GT *555(M)?.*					3		1
-NVIDIA GTS 160M					.*NVIDIA .*GT(S)? *160(M)?.*				2		1
-NVIDIA GTS 240					.*NVIDIA .*GTS *24.*						3		1
-NVIDIA GTS 250					.*NVIDIA .*GTS *25.*						3		1
-NVIDIA GTS 350M					.*NVIDIA .*GTS *350M.*						3		1
-NVIDIA GTS 360M					.*NVIDIA .*GTS *360M.*						3		1
-NVIDIA GTS 360					.*NVIDIA .*GTS *360.*						3		1
-NVIDIA GTS 450					.*NVIDIA .*GTS *45.*						3		1
-NVIDIA GTX 260					.*NVIDIA .*GTX *26.*						3		1
-NVIDIA GTX 275					.*NVIDIA .*GTX *275.*						3		1
-NVIDIA GTX 270					.*NVIDIA .*GTX *27.*						3		1
-NVIDIA GTX 285					.*NVIDIA .*GTX *285.*						3		1
-NVIDIA GTX 280					.*NVIDIA .*GTX *280.*						3		1
-NVIDIA GTX 290					.*NVIDIA .*GTX *290.*						3		1
-NVIDIA GTX 295					.*NVIDIA .*GTX *295.*						3		1
-NVIDIA GTX 460M					.*NVIDIA .*GTX *460M.*						3		1
-NVIDIA GTX 465					.*NVIDIA .*GTX *465.*						3		1
-NVIDIA GTX 460					.*NVIDIA .*GTX *46.*						3		1
-NVIDIA GTX 470M					.*NVIDIA .*GTX *470M.*						3		1
-NVIDIA GTX 470					.*NVIDIA .*GTX *47.*						3		1
-NVIDIA GTX 480M					.*NVIDIA .*GTX *480M.*						3		1
-NVIDIA GTX 485M					.*NVIDIA .*GTX *485M.*						3		1
-NVIDIA GTX 480					.*NVIDIA .*GTX *48.*						3		1
-NVIDIA GTX 530					.*NVIDIA .*GTX *53.*						3		1
-NVIDIA GTX 550					.*NVIDIA .*GTX *55.*						3		1
-NVIDIA GTX 560					.*NVIDIA .*GTX *56.*						3		1
-NVIDIA GTX 570					.*NVIDIA .*GTX *57.*						3		1
-NVIDIA GTX 580M					.*NVIDIA .*GTX *580M.*						3		1
-NVIDIA GTX 580					.*NVIDIA .*GTX *58.*						3		1
-NVIDIA GTX 590					.*NVIDIA .*GTX *59.*						3		1
-NVIDIA C51						.*NVIDIA .*C51.*							0		1
-NVIDIA G72						.*NVIDIA .*G72.*							1		1
-NVIDIA G73						.*NVIDIA .*G73.*							1		1
-NVIDIA G84						.*NVIDIA .*G84.*							2		1
-NVIDIA G86						.*NVIDIA .*G86.*							3		1
-NVIDIA G92						.*NVIDIA .*G92.*							3		1
-NVIDIA GeForce					.*GeForce 256.*								0		0
-NVIDIA GeForce 2				.*GeForce ?2 ?.*							0		1
-NVIDIA GeForce 3				.*GeForce ?3 ?.*							0		1
-NVIDIA GeForce 3 Ti				.*GeForce ?3 Ti.*							0		1
-NVIDIA GeForce 4				.*NVIDIA .*GeForce ?4.*						0		1
-NVIDIA GeForce 4 Go				.*NVIDIA .*GeForce ?4.*Go.*					0		1
-NVIDIA GeForce 4 MX				.*NVIDIA .*GeForce ?4 MX.*					0		1
-NVIDIA GeForce 4 PCX			.*NVIDIA .*GeForce ?4 PCX.*					0		1
-NVIDIA GeForce 4 Ti				.*NVIDIA .*GeForce ?4 Ti.*					0		1
-NVIDIA GeForce 6100				.*NVIDIA .*GeForce 61.*						0		1
-NVIDIA GeForce 6200				.*NVIDIA .*GeForce 62.*						0		1
-NVIDIA GeForce 6500				.*NVIDIA .*GeForce 65.*						0		1
-NVIDIA GeForce 6600				.*NVIDIA .*GeForce 66.*						1		1
-NVIDIA GeForce 6700				.*NVIDIA .*GeForce 67.*						2		1
-NVIDIA GeForce 6800				.*NVIDIA .*GeForce 68.*						2		1
-NVIDIA GeForce 7000				.*NVIDIA .*GeForce 70.*						0		1
-NVIDIA GeForce 7100				.*NVIDIA .*GeForce 71.*						0		1
-NVIDIA GeForce 7200				.*NVIDIA .*GeForce 72.*						1		1
-NVIDIA GeForce 7300				.*NVIDIA .*GeForce 73.*						1		1
-NVIDIA GeForce 7500				.*NVIDIA .*GeForce 75.*						1		1
-NVIDIA GeForce 7600				.*NVIDIA .*GeForce 76.*						2		1
-NVIDIA GeForce 7800				.*NVIDIA .*GeForce 78.*						2		1
-NVIDIA GeForce 7900				.*NVIDIA .*GeForce 79.*						2		1
-NVIDIA GeForce 8100				.*NVIDIA .*GeForce 81.*						1		1
-NVIDIA GeForce 8200M			.*NVIDIA .*GeForce 8200M.*					1		1
-NVIDIA GeForce 8200				.*NVIDIA .*GeForce 82.*						1		1
-NVIDIA GeForce 8300				.*NVIDIA .*GeForce 83.*						2		1
-NVIDIA GeForce 8400M			.*NVIDIA .*GeForce 8400M.*					2		1
-NVIDIA GeForce 8400				.*NVIDIA .*GeForce 84.*						2		1
-NVIDIA GeForce 8500				.*NVIDIA .*GeForce 85.*						3		1
-NVIDIA GeForce 8600M			.*NVIDIA .*GeForce 8600M.*					2		1
-NVIDIA GeForce 8600				.*NVIDIA .*GeForce 86.*						3		1
-NVIDIA GeForce 8700M			.*NVIDIA .*GeForce 8700M.*					3		1
-NVIDIA GeForce 8700				.*NVIDIA .*GeForce 87.*						3		1
-NVIDIA GeForce 8800M			.*NVIDIA .*GeForce 8800M.*					3		1
-NVIDIA GeForce 8800				.*NVIDIA .*GeForce 88.*						3		1
-NVIDIA GeForce 9100M			.*NVIDIA .*GeForce 9100M.*					0		1
-NVIDIA GeForce 9100				.*NVIDIA .*GeForce 91.*						0		1
-NVIDIA GeForce 9200M			.*NVIDIA .*GeForce 9200M.*					1		1
-NVIDIA GeForce 9200				.*NVIDIA .*GeForce 92.*						1		1
-NVIDIA GeForce 9300M			.*NVIDIA .*GeForce 9300M.*					2		1
-NVIDIA GeForce 9300				.*NVIDIA .*GeForce 93.*						2		1
-NVIDIA GeForce 9400M			.*NVIDIA .*GeForce 9400M.*					2		1
-NVIDIA GeForce 9400				.*NVIDIA .*GeForce 94.*						2		1
-NVIDIA GeForce 9500M			.*NVIDIA .*GeForce 9500M.*					2		1
-NVIDIA GeForce 9500				.*NVIDIA .*GeForce 95.*						2		1
-NVIDIA GeForce 9600M			.*NVIDIA .*GeForce 9600M.*					3		1
-NVIDIA GeForce 9600				.*NVIDIA .*GeForce 96.*						2		1
-NVIDIA GeForce 9700M			.*NVIDIA .*GeForce 9700M.*					2		1
-NVIDIA GeForce 9800M			.*NVIDIA .*GeForce 9800M.*					3		1
-NVIDIA GeForce 9800				.*NVIDIA .*GeForce 98.*						3		1
-NVIDIA GeForce FX 5100			.*NVIDIA .*GeForce FX 51.*					0		1
-NVIDIA GeForce FX 5200			.*NVIDIA .*GeForce FX 52.*					0		1
-NVIDIA GeForce FX 5300			.*NVIDIA .*GeForce FX 53.*					0		1
-NVIDIA GeForce FX 5500			.*NVIDIA .*GeForce FX 55.*					0		1
-NVIDIA GeForce FX 5600			.*NVIDIA .*GeForce FX 56.*					0		1
-NVIDIA GeForce FX 5700			.*NVIDIA .*GeForce FX 57.*					1		1
-NVIDIA GeForce FX 5800			.*NVIDIA .*GeForce FX 58.*					1		1
-NVIDIA GeForce FX 5900			.*NVIDIA .*GeForce FX 59.*					1		1
-NVIDIA GeForce FX Go5100		.*NVIDIA .*GeForce FX Go51.*				0		1
-NVIDIA GeForce FX Go5200		.*NVIDIA .*GeForce FX Go52.*				0		1
-NVIDIA GeForce FX Go5300		.*NVIDIA .*GeForce FX Go53.*				0		1
-NVIDIA GeForce FX Go5500		.*NVIDIA .*GeForce FX Go55.*				0		1
-NVIDIA GeForce FX Go5600		.*NVIDIA .*GeForce FX Go56.*				0		1
-NVIDIA GeForce FX Go5700		.*NVIDIA .*GeForce FX Go57.*				1		1
-NVIDIA GeForce FX Go5800		.*NVIDIA .*GeForce FX Go58.*				1		1
-NVIDIA GeForce FX Go5900		.*NVIDIA .*GeForce FX Go59.*				1		1
-NVIDIA GeForce FX Go5xxx		.*NVIDIA .*GeForce FX Go.*					0		1
-NVIDIA GeForce Go 6100			.*NVIDIA .*GeForce Go 61.*					0		1
-NVIDIA GeForce Go 6200			.*NVIDIA .*GeForce Go 62.*					0		1
-NVIDIA GeForce Go 6400			.*NVIDIA .*GeForce Go 64.*					1		1
-NVIDIA GeForce Go 6500			.*NVIDIA .*GeForce Go 65.*					1		1
-NVIDIA GeForce Go 6600			.*NVIDIA .*GeForce Go 66.*					1		1
-NVIDIA GeForce Go 6700			.*NVIDIA .*GeForce Go 67.*					1		1
-NVIDIA GeForce Go 6800			.*NVIDIA .*GeForce Go 68.*					1		1
-NVIDIA GeForce Go 7200			.*NVIDIA .*GeForce Go 72.*					1		1
-NVIDIA GeForce Go 7300 LE		.*NVIDIA .*GeForce Go 73.*LE.*				0		1
-NVIDIA GeForce Go 7300			.*NVIDIA .*GeForce Go 73.*					1		1
-NVIDIA GeForce Go 7400			.*NVIDIA .*GeForce Go 74.*					1		1
-NVIDIA GeForce Go 7600			.*NVIDIA .*GeForce Go 76.*					2		1
-NVIDIA GeForce Go 7700			.*NVIDIA .*GeForce Go 77.*					2		1
-NVIDIA GeForce Go 7800			.*NVIDIA .*GeForce Go 78.*					2		1
-NVIDIA GeForce Go 7900			.*NVIDIA .*GeForce Go 79.*					2		1
-NVIDIA D9M						.*NVIDIA .*D9M.*							1		1
-NVIDIA G94						.*NVIDIA .*G94.*							3		1
-NVIDIA GeForce Go 6				.*GeForce Go 6.*							1		1
-NVIDIA ION 2					.*NVIDIA .*ION 2.*							2		1
-NVIDIA ION 						.*NVIDIA .*ION.*							2		1
-NVIDIA NB8M						.*NVIDIA .*NB8M.*							1		1
-NVIDIA NB8P						.*NVIDIA .*NB8P.*							2		1
-NVIDIA NB9E						.*NVIDIA .*NB9E.*							3		1
-NVIDIA NB9M						.*NVIDIA .*NB9M.*							1		1
-NVIDIA NB9P						.*NVIDIA .*NB9P.*							2		1
-NVIDIA N10						.*NVIDIA .*N10.*							1		1
-NVIDIA GeForce PCX				.*GeForce PCX.*								0		1
-NVIDIA Generic					.*NVIDIA .*Unknown.*						0		0
-NVIDIA NV17						.*NVIDIA .*NV17.*							0		1
-NVIDIA NV34						.*NVIDIA .*NV34.*							0		1
-NVIDIA NV35						.*NVIDIA .*NV35.*							0		1
-NVIDIA NV36						.*NVIDIA .*NV36.*							1		1
-NVIDIA NV41						.*NVIDIA .*NV41.*							1		1
-NVIDIA NV43						.*NVIDIA .*NV43.*							1		1
-NVIDIA NV44						.*NVIDIA .*NV44.*							1		1
-NVIDIA nForce					.*NVIDIA .*nForce.*							0		0
-NVIDIA MCP51					.*NVIDIA .*MCP51.*							1		1
-NVIDIA MCP61					.*NVIDIA .*MCP61.*							1		1
-NVIDIA MCP67					.*NVIDIA .*MCP67.*							1		1
-NVIDIA MCP68					.*NVIDIA .*MCP68.*							1		1
-NVIDIA MCP73					.*NVIDIA .*MCP73.*							1		1
-NVIDIA MCP77					.*NVIDIA .*MCP77.*							1		1
-NVIDIA MCP78					.*NVIDIA .*MCP78.*							1		1
-NVIDIA MCP79					.*NVIDIA .*MCP79.*							1		1
-NVIDIA MCP7A					.*NVIDIA .*MCP7A.*							1		1
-NVIDIA Quadro2					.*Quadro2.*									0		1
-NVIDIA Quadro 1000M				.*Quadro.*1000M.*							2		1
-NVIDIA Quadro 2000 M/D			.*Quadro.*2000.*							3		1
-NVIDIA Quadro 3000M				.*Quadro.*3000M.*							3		1
-NVIDIA Quadro 4000M				.*Quadro.*4000M.*							3		1
-NVIDIA Quadro 4000				.*Quadro *4000.*							3		1
-NVIDIA Quadro 50x0 M			.*Quadro.*50.0.*							3		1
-NVIDIA Quadro 6000				.*Quadro.*6000.*							3		1
-NVIDIA Quadro 400				.*Quadro.*400.*								2		1
-NVIDIA Quadro 600				.*Quadro.*600.*								2		1
-NVIDIA Quadro4					.*Quadro4.*									0		1
-NVIDIA Quadro DCC				.*Quadro DCC.*								0		1
-NVIDIA Quadro CX				.*Quadro.*CX.*								3		1
-NVIDIA Quadro FX 770M			.*Quadro.*FX *770M.*						2		1
-NVIDIA Quadro FX 1500M			.*Quadro.*FX *1500M.*						1		1
-NVIDIA Quadro FX 1600M			.*Quadro.*FX *1600M.*						2		1
-NVIDIA Quadro FX 2500M			.*Quadro.*FX *2500M.*						2		1
-NVIDIA Quadro FX 2700M			.*Quadro.*FX *2700M.*						3		1
-NVIDIA Quadro FX 2800M			.*Quadro.*FX *2800M.*						3		1
-NVIDIA Quadro FX 3500			.*Quadro.*FX *3500.*						2		1
-NVIDIA Quadro FX 3600			.*Quadro.*FX *3600.*						3		1
-NVIDIA Quadro FX 3700			.*Quadro.*FX *3700.*						3		1
-NVIDIA Quadro FX 3800			.*Quadro.*FX *3800.*						3		1
-NVIDIA Quadro FX 4500			.*Quadro.*FX *45.*							3		1
-NVIDIA Quadro FX 880M			.*Quadro.*FX *880M.*						3		1
-NVIDIA Quadro FX 4800			.*NVIDIA .*Quadro *FX *4800.*				3		1
-NVIDIA Quadro FX				.*Quadro FX.*								1		1
-NVIDIA Quadro NVS 1xxM			.*Quadro NVS *1.[05]M.*						0		1
-NVIDIA Quadro NVS 300M			.*NVIDIA .*NVS *300M.*						2		1
-NVIDIA Quadro NVS 320M			.*NVIDIA .*NVS *320M.*						2		1
-NVIDIA Quadro NVS 2100M			.*NVIDIA .*NVS *2100M.*						2		1
-NVIDIA Quadro NVS 3100M			.*NVIDIA .*NVS *3100M.*						2		1
-NVIDIA Quadro NVS 4200M			.*NVIDIA .*NVS *4200M.*						2		1
-NVIDIA Quadro NVS 5100M			.*NVIDIA .*NVS *5100M.*						2		1
-NVIDIA Quadro NVS				.*NVIDIA .*NVS								0		1
-NVIDIA RIVA TNT					.*RIVA TNT.*								0		0
-S3								.*S3 Graphics.*								0		0
-SiS								SiS.*										0		0
-Trident							Trident.*									0		0
-Tungsten Graphics				Tungsten.*									0		0
-XGI								XGI.*										0		0
-VIA								VIA.*										0		0
-Apple Generic					Apple.*Generic.*							0		0
-Apple Software Renderer			Apple.*Software Renderer.*					0		0
-Humper							Humper.*									0		1
+3Dfx									.*3Dfx.*								0	0	0	0
+3Dlabs									.*3Dlabs.*								0	0	0	0
+ATI 3D-Analyze							.*ATI.*3D-Analyze.*						0	0	0	0
+ATI All-in-Wonder 7500					.*ATI.*All-in-Wonder 75.*				0	1	0	0
+ATI All-in-Wonder 8500					.*ATI.*All-in-Wonder 85.*				0	1	0	0
+ATI All-in-Wonder 9200					.*ATI.*All-in-Wonder 92.*				0	1	0	0
+ATI All-in-Wonder 9xxx					.*ATI.*All-in-Wonder 9.*				1	1	0	0
+ATI All-in-Wonder HD					.*ATI.*All-in-Wonder HD.*				1	1	1	3.3
+ATI All-in-Wonder X600					.*ATI.*All-in-Wonder X6.*				1	1	0	0
+ATI All-in-Wonder X800					.*ATI.*All-in-Wonder X8.*				1	1	1	2.1
+ATI All-in-Wonder X1800					.*ATI.*All-in-Wonder X18.*				3	1	0	0
+ATI All-in-Wonder X1900					.*ATI.*All-in-Wonder X19.*				3	1	0	0
+ATI All-in-Wonder PCI-E					.*ATI.*All-in-Wonder.*PCI-E.*			1	1	0	0
+ATI All-in-Wonder Radeon				.*ATI.*All-in-Wonder Radeon.*			0	1	0	0
+ATI ASUS ARES							.*ATI.*ASUS.*ARES.*						3	1	0	0
+ATI ASUS A9xxx							.*ATI.*ASUS.*A9.*						1	1	0	0
+ATI ASUS AH24xx							.*ATI.*ASUS.*AH24.*						1	1	1	3.3
+ATI ASUS AH26xx							.*ATI.*ASUS.*AH26.*						1	1	1	3.3
+ATI ASUS AH34xx							.*ATI.*ASUS.*AH34.*						1	1	1	3.3
+ATI ASUS AH36xx							.*ATI.*ASUS.*AH36.*						1	1	1	3.3
+ATI ASUS AH46xx							.*ATI.*ASUS.*AH46.*						2	1	1	3.3
+ATI ASUS AX3xx							.*ATI.*ASUS.*AX3.*						1	1	0	0
+ATI ASUS AX5xx							.*ATI.*ASUS.*AX5.*						1	1	0	0
+ATI ASUS AX8xx							.*ATI.*ASUS.*AX8.*						2	1	0	0
+ATI ASUS EAH24xx						.*ATI.*ASUS.*EAH24.*					2	1	0	0
+ATI ASUS EAH26xx						.*ATI.*ASUS.*EAH26.*					3	1	0	0
+ATI ASUS EAH29xx						.*ATI.*ASUS.*EAH29.*					3	1	0	0
+ATI ASUS EAH34xx						.*ATI.*ASUS.*EAH34.*					1	1	0	0
+ATI ASUS EAH36xx						.*ATI.*ASUS.*EAH36.*					2	1	0	0
+ATI ASUS EAH38xx						.*ATI.*ASUS.*EAH38.*					2	1	1	3.3
+ATI ASUS EAH43xx						.*ATI.*ASUS.*EAH43.*					2	1	1	3.3
+ATI ASUS EAH45xx						.*ATI.*ASUS.*EAH45.*					2	1	0	0
+ATI ASUS EAH48xx						.*ATI.*ASUS.*EAH48.*					3	1	1	3.3
+ATI ASUS EAH57xx						.*ATI.*ASUS.*EAH57.*					3	1	1	4.1
+ATI ASUS EAH58xx						.*ATI.*ASUS.*EAH58.*					5	1	1	4.1
+ATI ASUS EAH62xx						.*ATI.*ASUS.*EAH62.*					2	1	0	0
+ATI ASUS EAH63xx						.*ATI.*ASUS.*EAH63.*					2	1	0	0
+ATI ASUS EAH64xx						.*ATI.*ASUS.*EAH64.*					2	1	0	0
+ATI ASUS EAH65xx						.*ATI.*ASUS.*EAH65.*					2	1	0	0
+ATI ASUS EAH66xx						.*ATI.*ASUS.*EAH66.*					3	1	0	0
+ATI ASUS EAH67xx						.*ATI.*ASUS.*EAH67.*					3	1	0	0
+ATI ASUS EAH68xx						.*ATI.*ASUS.*EAH68.*					5	1	0	0
+ATI ASUS EAH69xx						.*ATI.*ASUS.*EAH69.*					5	1	0	0
+ATI ASUS Radeon X1xxx					.*ATI.*ASUS.*X1.*						2	1	1	2.1
+ATI Radeon X7xx							.*ATI.*ASUS.*X7.*						1	1	0	0
+ATI Radeon X19xx						.*ATI.*(Radeon|Diamond) X19.* ?.*		2	1	1	2.1
+ATI Radeon X18xx						.*ATI.*(Radeon|Diamond) X18.* ?.*		3	1	1	2.1
+ATI Radeon X17xx						.*ATI.*(Radeon|Diamond) X17.* ?.*		1	1	1	2.1
+ATI Radeon X16xx						.*ATI.*(Radeon|Diamond) X16.* ?.*		1	1	1	2.1
+ATI Radeon X15xx						.*ATI.*(Radeon|Diamond) X15.* ?.*		1	1	1	2.1
+ATI Radeon X13xx						.*ATI.*(Radeon|Diamond) X13.* ?.*		1	1	1	2.1
+ATI Radeon X1xxx						.*ATI.*(Radeon|Diamond) X1.. ?.*		0	1	1	2.1
+ATI Radeon X2xxx						.*ATI.*(Radeon|Diamond) X2.. ?.*		1	1	1	2.1
+ATI Display Adapter						.*ATI.*display adapter.*				1	1	1	4.1
+ATI FireGL 5200							.*ATI.*FireGL V52.*						1	1	1	2.1
+ATI FireGL 5xxx							.*ATI.*FireGL V5.*						2	1	1	3.3
+ATI FireGL								.*ATI.*Fire.*GL.*						4	1	1	4.2
+ATI FirePro M3900						.*ATI.*FirePro.*M39.*					2	1	0	0
+ATI FirePro M5800						.*ATI.*FirePro.*M58.*					3	1	0	0
+ATI FirePro M7740						.*ATI.*FirePro.*M77.*					3	1	0	0
+ATI FirePro M7820						.*ATI.*FirePro.*M78.*					5	1	1	4.2
+ATI FireMV								.*ATI.*FireMV.*							0	1	1	1.3
+ATI Generic								.*ATI.*Generic.*						0	0	0	0
+ATI Hercules 9800						.*ATI.*Hercules.*9800.*					1	1	0	0
+ATI IGP 340M							.*ATI.*IGP.*340M.*						0	0	0	0
+ATI M52									.*ATI.*M52.*							1	1	0	0
+ATI M54									.*ATI.*M54.*							1	1	0	0
+ATI M56									.*ATI.*M56.*							1	1	0	0
+ATI M71									.*ATI.*M71.*							1	1	0	0
+ATI M72									.*ATI.*M72.*							1	1	0	0
+ATI M76									.*ATI.*M76.*							3	1	0	0
+ATI Radeon HD 64xx						.*ATI.*AMD Radeon.* HD [67]4..[MG]		2	1	1	4.2
+ATI Radeon HD 65xx						.*ATI.*AMD Radeon.* HD [67]5..[MG]		2	1	1	4.2
+ATI Radeon HD 66xx						.*ATI.*AMD Radeon.* HD [67]6..[MG]		3	1	1	4.2
+ATI Radeon HD 7100						.*ATI.*AMD Radeon.* HD 71.*				2	1	0	0
+ATI Radeon HD 7200						.*ATI.*AMD Radeon.* HD 72.*				2	1	0	0
+ATI Radeon HD 7300						.*ATI.*AMD Radeon.* HD 73.*				2	1	0	0
+ATI Radeon HD 7400						.*ATI.*AMD Radeon.* HD 74.*				2	1	0	0
+ATI Radeon HD 7500						.*ATI.*AMD Radeon.* HD 75.*				3	1	1	4.2
+ATI Radeon HD 7600						.*ATI.*AMD Radeon.* HD 76.*				3	1	0	0
+ATI Radeon HD 7700						.*ATI.*AMD Radeon.* HD 77.*				4	1	1	4.2
+ATI Radeon HD 7800						.*ATI.*AMD Radeon.* HD 78.*				5	1	1	4.2
+ATI Radeon HD 7900						.*ATI.*AMD Radeon.* HD 79.*				5	1	1	4.2
+ATI Mobility Radeon 4100				.*ATI.*Mobility.*41..					1	1	1	3.3
+ATI Mobility Radeon 7xxx				.*ATI.*Mobility.*Radeon 7.*				0	1	1	1.3
+ATI Mobility Radeon 8xxx				.*ATI.*Mobility.*Radeon 8.*				0	1	0	0
+ATI Mobility Radeon 9800				.*ATI.*Mobility.*98.*					1	1	0	0
+ATI Mobility Radeon 9700				.*ATI.*Mobility.*97.*					0	1	1	2.1
+ATI Mobility Radeon 9600				.*ATI.*Mobility.*96.*					1	1	1	2.1
+ATI Mobility Radeon HD 530v				.*ATI.*Mobility.*HD *530v.*				1	1	1	3.3
+ATI Mobility Radeon HD 540v				.*ATI.*Mobility.*HD *540v.*				1	1	1	3.3
+ATI Mobility Radeon HD 545v				.*ATI.*Mobility.*HD *545v.*				2	1	1	4
+ATI Mobility Radeon HD 550v				.*ATI.*Mobility.*HD *550v.*				3	1	1	4
+ATI Mobility Radeon HD 560v				.*ATI.*Mobility.*HD *560v.*				3	1	1	3.2
+ATI Mobility Radeon HD 565v				.*ATI.*Mobility.*HD *565v.*				3	1	1	3.3
+ATI Mobility Radeon HD 2300				.*ATI.*Mobility.*HD *23.*				0	1	1	2.1
+ATI Mobility Radeon HD 2400				.*ATI.*Mobility.*HD *24.*				1	1	1	3.3
+ATI Mobility Radeon HD 2600				.*ATI.*Mobility.*HD *26.*				1	1	1	3.3
+ATI Mobility Radeon HD 2700				.*ATI.*Mobility.*HD *27.*				3	1	0	0
+ATI Mobility Radeon HD 3100				.*ATI.*Mobility.*HD *31.*				0	1	0	0
+ATI Mobility Radeon HD 3200				.*ATI.*Mobility.*HD *32.*				0	1	0	0
+ATI Mobility Radeon HD 3400				.*ATI.*Mobility.*HD *34.*				1	1	1	3.3
+ATI Mobility Radeon HD 3600				.*ATI.*Mobility.*HD *36.*				1	1	1	4
+ATI Mobility Radeon HD 3800				.*ATI.*Mobility.*HD *38.*				3	1	1	3.3
+ATI Mobility Radeon HD 4200				.*ATI.*Mobility.*HD *42.*				1	1	1	4
+ATI Mobility Radeon HD 4300				.*ATI.*Mobility.*HD *43.*				1	1	1	4
+ATI Mobility Radeon HD 4500				.*ATI.*Mobility.*HD *45.*				1	1	1	4
+ATI Mobility Radeon HD 4600				.*ATI.*Mobility.*HD *46.*				2	1	1	3.3
+ATI Mobility Radeon HD 4800				.*ATI.*Mobility.*HD *48.*				3	1	1	3.3
+ATI Mobility Radeon HD 5100				.*ATI.*Mobility.*HD *51.*				3	1	1	3.2
+ATI Mobility Radeon HD 5300				.*ATI.*Mobility.*HD *53.*				3	1	0	0
+ATI Mobility Radeon HD 5400				.*ATI.*Mobility.*HD *54.*				2	1	1	4.2
+ATI Mobility Radeon HD 5500				.*ATI.*Mobility.*HD *55.*				3	1	0	0
+ATI Mobility Radeon HD 5600				.*ATI.*Mobility.*HD *56.*				3	1	1	4.2
+ATI Mobility Radeon HD 5700				.*ATI.*Mobility.*HD *57.*				3	1	1	4.1
+ATI Mobility Radeon HD 6200				.*ATI.*Mobility.*HD *62.*				3	1	0	0
+ATI Mobility Radeon HD 6300				.*ATI.*Mobility.*HD *63.*				3	1	1	4.2
+ATI Mobility Radeon HD 6400M			.*ATI.*Mobility.*HD *64.*				3	1	0	0
+ATI Mobility Radeon HD 6500M			.*ATI.*Mobility.*HD *65.*				5	1	1	4.2
+ATI Mobility Radeon HD 6600M			.*ATI.*Mobility.*HD *66.*				5	1	0	0
+ATI Mobility Radeon HD 6700M			.*ATI.*Mobility.*HD *67.*				5	1	0	0
+ATI Mobility Radeon HD 6800M			.*ATI.*Mobility.*HD *68.*				5	1	0	0
+ATI Mobility Radeon HD 6900M			.*ATI.*Mobility.*HD *69.*				5	1	0	0
+ATI Radeon HD 2300						.*ATI.*Radeon HD *23..					0	1	1	3.3
+ATI Radeon HD 2400						.*ATI.*Radeon HD *24..					1	1	1	4
+ATI Radeon HD 2600						.*ATI.*Radeon HD *26..					2	1	1	3.3
+ATI Radeon HD 2900						.*ATI.*Radeon HD *29..					3	1	1	3.3
+ATI Radeon HD 3000						.*ATI.*Radeon HD *30..					0	1	0	0
+ATI Radeon HD 3100						.*ATI.*Radeon HD *31..					1	1	0	0
+ATI Radeon HD 3200						.*ATI.*Radeon HD *32..					1	1	1	4
+ATI Radeon HD 3300						.*ATI.*Radeon HD *33..					1	1	1	3.3
+ATI Radeon HD 3400						.*ATI.*Radeon HD *34..					1	1	1	4
+ATI Radeon HD 3500						.*ATI.*Radeon HD *35..					2	1	0	0
+ATI Radeon HD 3600						.*ATI.*Radeon HD *36..					3	1	1	3.3
+ATI Radeon HD 3700						.*ATI.*Radeon HD *37..					3	1	0	0
+ATI Radeon HD 3800						.*ATI.*Radeon HD *38..					3	1	1	4
+ATI Radeon HD 4100						.*ATI.*Radeon HD *41..					1	1	0	0
+ATI Radeon HD 4200						.*ATI.*Radeon HD *42..					1	1	1	4
+ATI Radeon HD 4300						.*ATI.*Radeon HD *43..					2	1	1	4
+ATI Radeon HD 4400						.*ATI.*Radeon HD *44..					2	1	0	0
+ATI Radeon HD 4500						.*ATI.*Radeon HD *45..					2	1	1	3.3
+ATI Radeon HD 4600						.*ATI.*Radeon HD *46..					3	1	1	4
+ATI Radeon HD 4700						.*ATI.*Radeon HD *47..					3	1	1	3.3
+ATI Radeon HD 4800						.*ATI.*Radeon HD *48..					3	1	1	4
+ATI Radeon HD 5400						.*ATI.*Radeon HD *54..					3	1	1	4.2
+ATI Radeon HD 5500						.*ATI.*Radeon HD *55..					3	1	1	4.2
+ATI Radeon HD 5600						.*ATI.*Radeon HD *56..					3	1	1	4.2
+ATI Radeon HD 5700						.*ATI.*Radeon HD *57..					3	1	1	4.2
+ATI Radeon HD 5800						.*ATI.*Radeon HD *58..					4	1	1	4.2
+ATI Radeon HD 5900						.*ATI.*Radeon HD *59..					4	1	1	4.2
+ATI Radeon HD 6200						.*ATI.*Radeon HD *62..					0	1	1	4.2
+ATI Radeon HD 6300						.*ATI.*Radeon HD *63..					1	1	1	4.2
+ATI Radeon HD 6400						.*ATI.*Radeon HD *64..					3	1	1	4.2
+ATI Radeon HD 6500						.*ATI.*Radeon HD *65..					3	1	1	4.2
+ATI Radeon HD 6600						.*ATI.*Radeon HD *66..					3	1	1	4.2
+ATI Radeon HD 6700						.*ATI.*Radeon HD *67..					3	1	1	4.2
+ATI Radeon HD 6800						.*ATI.*Radeon HD *68..					4	1	1	4.2
+ATI Radeon HD 6900						.*ATI.*Radeon HD *69..					5	1	1	4.2
+ATI Radeon OpenGL						.*ATI.*Radeon OpenGL.*					0	0	0	0
+ATI Radeon 2100							.*ATI.*Radeon 21..						0	1	1	2.1
+ATI Radeon 3000							.*ATI.*Radeon 30..						1	1	1	4
+ATI Radeon 3100							.*ATI.*Radeon 31..						0	1	1	3.3
+ATI Radeon 5xxx							.*ATI.*Radeon 5...						3	1	0	0
+ATI Radeon 7xxx							.*ATI.*Radeon 7...						0	1	1	2
+ATI Radeon 8xxx							.*ATI.*Radeon 8...						0	1	0	0
+ATI Radeon 9000							.*ATI.*Radeon 90..						0	1	1	1.3
+ATI Radeon 9100							.*ATI.*Radeon 91..						0	1	0	0
+ATI Radeon 9200							.*ATI.*Radeon 92..						0	1	1	1.3
+ATI Radeon 9500							.*ATI.*Radeon 95..						0	1	1	2.1
+ATI Radeon 9600							.*ATI.*Radeon 96..						0	1	1	2.1
+ATI Radeon 9700							.*ATI.*Radeon 97..						1	1	0	0
+ATI Radeon 9800							.*ATI.*Radeon 98..						1	1	1	2.1
+ATI Radeon RV250						.*ATI.*RV250.*							0	1	0	0
+ATI Radeon RV600						.*ATI.*RV6.*							1	1	0	0
+ATI Radeon RX700						.*ATI.*RX70.*							1	1	0	0
+ATI Radeon RX800						.*ATI.*Radeon *RX80.*					2	1	0	0
+ATI RS880M								.*ATI.*RS880M							1	1	0	0
+ATI Radeon RX9550						.*ATI.*RX9550.*							1	1	0	0
+ATI Radeon VE							.*ATI.*Radeon.*VE.*						0	0	0	0
+ATI Radeon X300							.*ATI.*Radeon *X3.*						1	1	1	2.1
+ATI Radeon X400							.*ATI.*Radeon ?X4.*						0	1	0	0
+ATI Radeon X500							.*ATI.*Radeon ?X5.*						1	1	1	2.1
+ATI Radeon X600							.*ATI.*Radeon ?X6.*						1	1	1	2.1
+ATI Radeon X700							.*ATI.*Radeon ?X7.*						2	1	1	2.1
+ATI Radeon X800							.*ATI.*Radeon ?X8.*						1	1	1	2.1
+ATI Radeon X900							.*ATI.*Radeon ?X9.*						2	1	0	0
+ATI Radeon Xpress						.*ATI.*Radeon Xpress.*					0	1	1	2.1
+ATI Rage 128							.*ATI.*Rage 128.*						0	1	0	0
+ATI R300 (9700)							.*R300.*								0	1	1	2.1
+ATI R350 (9800)							.*R350.*								1	1	0	0
+ATI R580 (X1900)						.*R580.*								3	1	0	0
+ATI RC410 (Xpress 200)					.*RC410.*								0	0	0	0
+ATI RS48x (Xpress 200x)					.*RS48.*								0	0	0	0
+ATI RS600 (Xpress 3200)					.*RS600.*								0	0	0	0
+ATI RV350 (9600)						.*RV350.*								0	1	0	0
+ATI RV370 (X300)						.*RV370.*								0	1	0	0
+ATI RV410 (X700)						.*RV410.*								1	1	0	0
+ATI RV515								.*RV515.*								1	1	0	0
+ATI RV570 (X1900 GT/PRO)				.*RV570.*								3	1	0	0
+ATI RV380								.*RV380.*								0	1	0	0
+ATI RV530								.*RV530.*								1	1	0	0
+ATI RX480 (Xpress 200P)					.*RX480.*								0	1	0	0
+ATI RX700								.*RX700.*								1	1	0	0
+AMD ANTILLES (HD 6990)					.*(AMD|ATI).*Antilles.*					3	1	0	0
+AMD BARTS (HD 6800)						.*(AMD|ATI).*Barts.*					3	1	1	2.1
+AMD CAICOS (HD 6400)					.*(AMD|ATI).*Caicos.*					3	1	0	0
+AMD CAYMAN (HD 6900)					.*(AMD|ATI).*(Cayman|CAYMAM).*			3	1	0	0
+AMD CEDAR (HD 5450)						.*(AMD|ATI).*Cedar.*					2	1	0	0
+AMD CYPRESS (HD 5800)					.*(AMD|ATI).*Cypress.*					3	1	0	0
+AMD HEMLOCK (HD 5970)					.*(AMD|ATI).*Hemlock.*					3	1	0	0
+AMD JUNIPER (HD 5700)					.*(AMD|ATI).*Juniper.*					3	1	0	0
+AMD PARK								.*(AMD|ATI).*Park.*						3	1	0	0
+AMD REDWOOD (HD 5500/5600)				.*(AMD|ATI).*Redwood.*					3	1	0	0
+AMD TURKS (HD 6500/6600)				.*(AMD|ATI).*Turks.*					3	1	0	0
+AMD RS780 (HD 3200)						.*RS780.*								0	1	1	2.1
+AMD RS880 (HD 4200)						.*RS880.*								0	1	1	3.2
+AMD RV610 (HD 2400)						.*RV610.*								1	1	0	0
+AMD RV620 (HD 3400)						.*RV620.*								1	1	0	0
+AMD RV630 (HD 2600)						.*RV630.*								2	1	0	0
+AMD RV635 (HD 3600)						.*RV635.*								3	1	0	0
+AMD RV670 (HD 3800)						.*RV670.*								3	1	0	0
+AMD R680 (HD 3870 X2)					.*R680.*								3	1	0	0
+AMD R700 (HD 4800 X2)					.*R700.*								3	1	0	0
+AMD RV710 (HD 4300)						.*RV710.*								0	1	1	1.4
+AMD RV730 (HD 4600)						.*RV730.*								3	1	0	0
+AMD RV740 (HD 4700)						.*RV740.*								3	1	0	0
+AMD RV770 (HD 4800)						.*RV770.*								3	1	0	0
+AMD RV790 (HD 4800)						.*RV790.*								3	1	0	0
+ATI 760G/Radeon 3000					.*ATI.*AMD 760G.*						1	1	1	3.3
+ATI 780L/Radeon 3000					.*ATI.*AMD 780L.*						1	1	0	0
+ATI Radeon DDR							.*ATI.*Radeon ?DDR.*					0	1	0	0
+ATI FirePro 2000						.*ATI.*FirePro 2.*						2	1	1	4.1
+ATI FirePro 3000						.*ATI.*FirePro V3.*						2	1	0	0
+ATI FirePro 4000						.*ATI.*FirePro V4.*						2	1	0	0
+ATI FirePro 5000						.*ATI.*FirePro V5.*						3	1	0	0
+ATI FirePro 7000						.*ATI.*FirePro V7.*						3	1	0	0
+ATI FirePro M							.*ATI.*FirePro M.*						3	1	1	4.2
+ATI R300 (9700)							.*R300.*								0	1	1	2.1
+ATI Radeon								.*ATI.*(Diamond|Radeon).*				0	1	0	0
+Intel X3100								.*Intel.*X3100.*						1	1	1	2.1
+Intel GMA 3600							.*Intel.* 3600.*						0	1	1	3
+Intel 830M								.*Intel.*830M							0	0	0	0
+Intel 845G								.*Intel.*845G							0	0	1	1.4
+Intel 855GM								.*Intel.*855GM							0	0	1	1.4
+Intel 865G								.*Intel.*865G							0	0	1	1.4
+Intel 900								.*Intel.*900.*900						0	0	0	0
+Intel 915GM								.*Intel.*915GM							0	0	1	1.4
+Intel 915G								.*Intel.*915G							0	0	1	1.4
+Intel 945GM								.*Intel.*945GM.*						0	1	1	1.4
+Intel 945G								.*Intel.*945G.*							0	1	1	1.4
+Intel 950								.*Intel.*950.*							0	1	1	1.4
+Intel 965								.*Intel.*965.*							0	1	1	2.1
+Intel G33								.*Intel.*G33.*							1	0	1	1.4
+Intel G41								.*Intel.*G41.*							1	1	1	2.1
+Intel G45								.*Intel.*G45.*							1	1	1	2.1
+Intel Bear Lake							.*Intel.*Bear Lake.*					1	0	1	1.4
+Intel Broadwater						.*Intel.*Broadwater.*					0	0	1	1.4
+Intel Brookdale							.*Intel.*Brookdale.*					0	0	1	1.3
+Intel Cantiga							.*Intel.*Cantiga.*						0	0	1	2
+Intel Eaglelake							.*Intel.*Eaglelake.*					1	1	1	2
+Intel Graphics Media HD					.*Intel.*Graphics Media.*HD.*			1	1	1	2.1
+Intel HD Graphics 2000					.*Intel.*HD Graphics 2.*				2	1	0	0
+Intel HD Graphics 3000					.*Intel.*HD Graphics 3.*				3	1	1	3.1
+Intel HD Graphics 4000					.*Intel.*HD Graphics 4.*				3	1	1	3.3
+Intel HD2000							.*Intel.*HD2000.*						2	1	0	0
+Intel HD3000							.*Intel.*HD3000.*						3	1	0	0
+Intel HD Graphics						.*Intel.*HD Graphics.*					2	1	1	4
+Intel Mobile 4 Series					.*Intel.*Mobile.* 4 Series.*			0	1	1	2.1
+Intel 4 Series Internal					.*Intel.* 4 Series Internal.*			1	1	1	2.1
+Intel Media Graphics HD					.*Intel.*Media Graphics HD.*			0	1	0	0
+Intel Montara							.*Intel.*Montara.*						0	0	1	1.3
+Intel Pineview							.*Intel.*Pineview.*						0	1	1	1.4
+Intel Springdale						.*Intel.*Springdale.*					0	0	1	1.3
+Intel Grantsdale						.*Intel.*Grantsdale.*					1	1	0	0
+Intel Q45/Q43							.*Intel.*Q4.*							1	1	1	2.1
+Intel B45/B43							.*Intel.*B4.*							1	1	1	2.1
+Intel 3D-Analyze						.*Intel.*3D-Analyze.*					2	1	0	0
+Matrox									.*Matrox.*								0	0	0	0
+Mesa									.*Mesa.*								1	0	1	2.1
+Gallium									.*Gallium.*								1	1	1	2.1
+NVIDIA G100M							.*NVIDIA .*100M.*						4	1	1	3.3
+NVIDIA G102M							.*NVIDIA .*102M.*						1	1	1	3.3
+NVIDIA G103M							.*NVIDIA .*103M.*						2	1	1	3.3
+NVIDIA G105M							.*NVIDIA .*105M.*						2	1	1	3.3
+NVIDIA G 110M							.*NVIDIA .*110M.*						1	1	1	3.3
+NVIDIA G 120M							.*NVIDIA .*120M.*						1	1	1	3.3
+NVIDIA G 205M							.*NVIDIA .*205M.*						1	1	0	0
+NVIDIA G 410M							.*NVIDIA .*410M.*						3	1	1	4.2
+NVIDIA GT 120M							.*NVIDIA .*GT *12*M.*					3	1	1	3.3
+NVIDIA GT 130M							.*NVIDIA .*GT *13*M.*					3	1	1	3.3
+NVIDIA GT 140M							.*NVIDIA .*GT *14*M.*					3	1	1	3.3
+NVIDIA GT 150M							.*NVIDIA .*GTS *15*M.*					2	1	0	0
+NVIDIA GTS 160M							.*NVIDIA .*GTS *16*M.*					2	1	0	0
+NVIDIA G210M							.*NVIDIA .*G21*M.*						3	1	0	0
+NVIDIA GT 220M							.*NVIDIA .*GT *22*M.*					3	1	1	3.3
+NVIDIA GT 230M							.*NVIDIA .*GT *23*M.*					3	1	1	3.3
+NVIDIA GT 240M							.*NVIDIA .*GT *24*M.*					3	1	1	3.3
+NVIDIA GTS 250M							.*NVIDIA .*GTS *25*M.*					3	1	0	0
+NVIDIA GTS 260M							.*NVIDIA .*GTS *26*M.*					3	1	0	0
+NVIDIA GTX 260M							.*NVIDIA .*GTX *26*M.*					3	1	0	0
+NVIDIA GTX 270M							.*NVIDIA .*GTX *27*M.*					3	1	0	0
+NVIDIA GTX 280M							.*NVIDIA .*GTX *28*M.*					3	1	0	0
+NVIDIA 300M								.*NVIDIA .*30*M.*						3	1	1	4.2
+NVIDIA G 310M							.*NVIDIA .*31*M.*						2	1	0	0
+NVIDIA GT 320M							.*NVIDIA .*GT *32*M.*					3	1	0	0
+NVIDIA GT 325M							.*NVIDIA .*GT *32*M.*					3	1	1	3.3
+NVIDIA GT 330M							.*NVIDIA .*GT *33*M.*					3	1	1	3.3
+NVIDIA GT 340M							.*NVIDIA .*GT *34*M.*					4	1	1	3.3
+NVIDIA GTS 350M							.*NVIDIA .*GTS *35*M.*					4	1	1	3.3
+NVIDIA GTS 360M							.*NVIDIA .*GTS *36*M.*					5	1	1	3.3
+NVIDIA 405M								.*NVIDIA .* 40*M.*						2	1	0	0
+NVIDIA 410M								.*NVIDIA .* 41*M.*						3	1	0	0
+NVIDIA GT 415M							.*NVIDIA .*GT *41*M.*					3	1	1	4.2
+NVIDIA GT 420M							.*NVIDIA .*GT *42*M.*					3	1	1	4.2
+NVIDIA GT 430M							.*NVIDIA .*GT *43*M.*					3	1	1	4.2
+NVIDIA GT 440M							.*NVIDIA .*GT *44*M.*					3	1	1	4.2
+NVIDIA GT 450M							.*NVIDIA .*GT *45*M.*					3	1	0	0
+NVIDIA GTX 460M							.*NVIDIA .*GTX *46*M.*					4	1	1	4.2
+NVIDIA GTX 470M							.*NVIDIA .*GTX *47*M.*					3	1	0	0
+NVIDIA GTX 480M							.*NVIDIA .*GTX *48*M.*					3	1	1	4.2
+NVIDIA GT 520M							.*NVIDIA .*GT *52*M.*					3	1	1	4.2
+NVIDIA GT 530M							.*NVIDIA .*GT *53*M.*					3	1	1	4.2
+NVIDIA GT 540M							.*NVIDIA .*GT *54*M.*					3	1	1	4.2
+NVIDIA GT 550M							.*NVIDIA .*GT *55*M.*					3	1	1	4.2
+NVIDIA GTX 560M							.*NVIDIA .*GTX *56*M.*					3	1	0	0
+NVIDIA GTX 570M							.*NVIDIA .*GTX *57*M.*					5	1	0	0
+NVIDIA GTX 580M							.*NVIDIA .*GTX *58*M.*					5	1	1	4.2
+NVIDIA 610M								.*NVIDIA.* 61*M.*						3	1	1	4.2
+NVIDIA GT 620M							.*NVIDIA .*GT *62*M.*					3	1	0	0
+NVIDIA GT 630M							.*NVIDIA .*GT *63*M.*					3	1	0	0
+NVIDIA GT 640M							.*NVIDIA .*GT *64*M.*					3	1	0	0
+NVIDIA GT 650M							.*NVIDIA .*GT *65*M.*					3	1	0	0
+NVIDIA GTX 660M							.*NVIDIA .*GTX *66*M.*					5	1	0	0
+NVIDIA GTX 670M							.*NVIDIA .*GTX *67*M.*					5	1	1	4.2
+NVIDIA GTX 680M							.*NVIDIA .*GTX *68*M.*					5	1	0	0
+NVIDIA GTX 690M							.*NVIDIA .*GTX *69*M.*					5	1	0	0
+NVIDIA G100								.*NVIDIA .*G10.*						3	1	1	4.2
+NVIDIA GT 120							.*NVIDIA .*GT *12.*						2	1	0	0
+NVIDIA GT 130							.*NVIDIA .*GT *13.*						2	1	0	0
+NVIDIA GTS 150							.*NVIDIA .*GTS *15.*					2	1	0	0
+NVIDIA 205								.*NVIDIA .*GeForce 205.*				2	1	1	3.3
+NVIDIA 210								.*NVIDIA .*GeForce 210.*				3	1	1	3.3
+NVIDIA GT 220							.*NVIDIA .*GT *22.*						2	1	1	3.3
+NVIDIA GTS 240							.*NVIDIA .*GTS *24.*					4	1	1	3.3
+NVIDIA GTS 250							.*NVIDIA .*GTS *25.*					4	1	1	3.3
+NVIDIA GTX 260							.*NVIDIA .*GTX *26.*					4	1	1	3.3
+NVIDIA GTX 270							.*NVIDIA .*GTX *27.*					4	1	0	0
+NVIDIA GTX 280							.*NVIDIA .*GTX *28.*					4	1	1	3.3
+NVIDIA GTX 290							.*NVIDIA .*GTX *29.*					5	1	0	0
+NVIDIA 310								.*NVIDIA .*GeForce 310.*				3	1	1	3.3
+NVIDIA 315								.*NVIDIA .*GeForce 315.*				3	1	1	3.3
+NVIDIA GT 320							.*NVIDIA .*GT *32.*						3	1	0	0
+NVIDIA GT 330							.*NVIDIA .*GT *33.*						3	1	0	0
+NVIDIA GT 340							.*NVIDIA .*GT *34.*						3	1	0	0
+NVIDIA 405								.*NVIDIA .* 405.*						3	1	0	0
+NVIDIA GT 420							.*NVIDIA .*GT *42.*						3	1	1	4.2
+NVIDIA GT 430							.*NVIDIA .*GT *43.*						3	1	1	4.1
+NVIDIA GT 440							.*NVIDIA .*GT *44.*						4	1	0	0
+NVIDIA GTS 450							.*NVIDIA .*GTS *45.*					4	1	1	4.2
+NVIDIA GTX 460							.*NVIDIA .*GTX *46.*					5	1	1	4.2
+NVIDIA GTX 470							.*NVIDIA .*GTX *47.*					5	1	1	4.2
+NVIDIA GTX 480							.*NVIDIA .*GTX *48.*					5	1	1	4.2
+NVIDIA 510								.*NVIDIA .* 510.*						3	1	0	0
+NVIDIA GT 520							.*NVIDIA .*GT *52.*						3	1	1	4.2
+NVIDIA GT 530							.*NVIDIA .*GT *53.*						3	1	1	4.2
+NVIDIA GT 540							.*NVIDIA .*GT *54.*						3	1	1	4.2
+NVIDIA GTX 550							.*NVIDIA .*GTX *55.*					5	1	1	4.2
+NVIDIA GTX 560							.*NVIDIA .*GTX *56.*					5	1	1	4.2
+NVIDIA GTX 570							.*NVIDIA .*GTX *57.*					5	1	1	4.2
+NVIDIA GTX 580							.*NVIDIA .*GTX *58.*					5	1	1	4.2
+NVIDIA GTX 590							.*NVIDIA .*GTX *59.*					5	1	1	4.2
+NVIDIA GT 610							.*NVIDIA .*GT *61.*						3	1	1	4.2
+NVIDIA GT 620							.*NVIDIA .*GT *62.*						3	1	0	0
+NVIDIA GT 630							.*NVIDIA .*GT *63.*						3	1	0	0
+NVIDIA GT 640							.*NVIDIA .*GT *64.*						3	1	0	0
+NVIDIA GT 650							.*NVIDIA .*GT *65.*						3	1	1	4.2
+NVIDIA GTX 660							.*NVIDIA .*GTX *66.*					5	1	0	0
+NVIDIA GTX 670							.*NVIDIA .*GTX *67.*					5	1	1	4.2
+NVIDIA GTX 680							.*NVIDIA .*GTX *68.*					5	1	1	4.2
+NVIDIA GTX 690							.*NVIDIA .*GTX *69.*					5	1	1	4.2
+NVIDIA C51								.*NVIDIA .*C51.*						0	1	1	2
+NVIDIA G72								.*NVIDIA .*G72.*						1	1	0	0
+NVIDIA G73								.*NVIDIA .*G73.*						1	1	0	0
+NVIDIA G84								.*NVIDIA .*G84.*						2	1	0	0
+NVIDIA G86								.*NVIDIA .*G86.*						3	1	0	0
+NVIDIA G92								.*NVIDIA .*G92.*						3	1	0	0
+NVIDIA GeForce							.*GeForce 256.*							0	0	0	0
+NVIDIA GeForce 2						.*GeForce ?2 ?.*						0	1	1	1.5
+NVIDIA GeForce 3						.*GeForce ?3 ?.*						2	1	1	2.1
+NVIDIA GeForce 3 Ti						.*GeForce ?3 Ti.*						0	1	0	0
+NVIDIA GeForce 4						.*NVIDIA .*GeForce ?4.*					0	1	1	1.5
+NVIDIA GeForce 4 Go						.*NVIDIA .*GeForce ?4.*Go.*				0	1	0	0
+NVIDIA GeForce 4 MX						.*NVIDIA .*GeForce ?4 MX.*				0	1	0	0
+NVIDIA GeForce 4 PCX					.*NVIDIA .*GeForce ?4 PCX.*				0	1	0	0
+NVIDIA GeForce 4 Ti						.*NVIDIA .*GeForce ?4 Ti.*				0	1	0	0
+NVIDIA GeForce 6100						.*NVIDIA .*GeForce 61.*					3	1	1	4.2
+NVIDIA GeForce 6200						.*NVIDIA .*GeForce 62.*					0	1	1	2.1
+NVIDIA GeForce 6500						.*NVIDIA .*GeForce 65.*					1	1	1	2.1
+NVIDIA GeForce 6600						.*NVIDIA .*GeForce 66.*					2	1	1	2.1
+NVIDIA GeForce 6700						.*NVIDIA .*GeForce 67.*					2	1	1	2.1
+NVIDIA GeForce 6800						.*NVIDIA .*GeForce 68.*					1	1	1	2.1
+NVIDIA GeForce 7000						.*NVIDIA .*GeForce 70.*					1	1	1	2.1
+NVIDIA GeForce 7100						.*NVIDIA .*GeForce 71.*					1	1	1	2.1
+NVIDIA GeForce 7200						.*NVIDIA .*GeForce 72.*					1	1	0	0
+NVIDIA GeForce 7300						.*NVIDIA .*GeForce 73.*					1	1	1	2.1
+NVIDIA GeForce 7500						.*NVIDIA .*GeForce 75.*					2	1	1	2.1
+NVIDIA GeForce 7600						.*NVIDIA .*GeForce 76.*					2	1	1	2.1
+NVIDIA GeForce 7800						.*NVIDIA .*GeForce 78.*					2	1	1	2.1
+NVIDIA GeForce 7900						.*NVIDIA .*GeForce 79.*					3	1	1	2.1
+NVIDIA GeForce 8100						.*NVIDIA .*GeForce 81.*					1	1	0	0
+NVIDIA GeForce 8200M					.*NVIDIA .*GeForce 8200M.*				1	1	0	0
+NVIDIA GeForce 8200						.*NVIDIA .*GeForce 82.*					1	1	0	0
+NVIDIA GeForce 8300						.*NVIDIA .*GeForce 83.*					3	1	1	3.3
+NVIDIA GeForce 8400M					.*NVIDIA .*GeForce 8400M.*				1	1	1	3.3
+NVIDIA GeForce 8400						.*NVIDIA .*GeForce 84.*					2	1	1	3.3
+NVIDIA GeForce 8500						.*NVIDIA .*GeForce 85.*					2	1	1	3.3
+NVIDIA GeForce 8600M					.*NVIDIA .*GeForce 8600M.*				2	1	1	3.3
+NVIDIA GeForce 8600						.*NVIDIA .*GeForce 86.*					3	1	1	3.3
+NVIDIA GeForce 8700M					.*NVIDIA .*GeForce 8700M.*				2	1	1	3.3
+NVIDIA GeForce 8700						.*NVIDIA .*GeForce 87.*					3	1	0	0
+NVIDIA GeForce 8800M					.*NVIDIA .*GeForce 8800M.*				2	1	1	3.3
+NVIDIA GeForce 8800						.*NVIDIA .*GeForce 88.*					3	1	1	3.3
+NVIDIA GeForce 9100M					.*NVIDIA .*GeForce 9100M.*				0	1	0	0
+NVIDIA GeForce 9100						.*NVIDIA .*GeForce 91.*					0	1	0	0
+NVIDIA GeForce 9200M					.*NVIDIA .*GeForce 9200M.*				1	1	0	0
+NVIDIA GeForce 9200						.*NVIDIA .*GeForce 92.*					1	1	0	0
+NVIDIA GeForce 9300M					.*NVIDIA .*GeForce 9300M.*				1	1	1	3.3
+NVIDIA GeForce 9300						.*NVIDIA .*GeForce 93.*					1	1	1	3.3
+NVIDIA GeForce 9400M					.*NVIDIA .*GeForce 9400M.*				2	1	1	3.3
+NVIDIA GeForce 9400						.*NVIDIA .*GeForce 94.*					3	1	1	3.3
+NVIDIA GeForce 9500M					.*NVIDIA .*GeForce 9500M.*				1	1	1	3.3
+NVIDIA GeForce 9500						.*NVIDIA .*GeForce 95.*					3	1	1	3.3
+NVIDIA GeForce 9600M					.*NVIDIA .*GeForce 9600M.*				2	1	1	3.3
+NVIDIA GeForce 9600						.*NVIDIA .*GeForce 96.*					3	1	1	3.3
+NVIDIA GeForce 9700M					.*NVIDIA .*GeForce 9700M.*				0	1	1	3.3
+NVIDIA GeForce 9800M					.*NVIDIA .*GeForce 9800M.*				2	1	1	3.3
+NVIDIA GeForce 9800						.*NVIDIA .*GeForce 98.*					3	1	1	3.3
+NVIDIA GeForce FX 5100					.*NVIDIA .*GeForce FX 51.*				0	1	0	0
+NVIDIA GeForce FX 5200					.*NVIDIA .*GeForce FX 52.*				0	1	0	0
+NVIDIA GeForce FX 5300					.*NVIDIA .*GeForce FX 53.*				0	1	0	0
+NVIDIA GeForce FX 5500					.*NVIDIA .*GeForce FX 55.*				0	1	1	2.1
+NVIDIA GeForce FX 5600					.*NVIDIA .*GeForce FX 56.*				1	1	1	2.1
+NVIDIA GeForce FX 5700					.*NVIDIA .*GeForce FX 57.*				0	1	1	2.1
+NVIDIA GeForce FX 5800					.*NVIDIA .*GeForce FX 58.*				1	1	0	0
+NVIDIA GeForce FX 5900					.*NVIDIA .*GeForce FX 59.*				1	1	1	2.1
+NVIDIA GeForce FX Go5100				.*NVIDIA .*GeForce FX Go51.*			0	1	0	0
+NVIDIA GeForce FX Go5200				.*NVIDIA .*GeForce FX Go52.*			0	1	0	0
+NVIDIA GeForce FX Go5300				.*NVIDIA .*GeForce FX Go53.*			0	1	0	0
+NVIDIA GeForce FX Go5500				.*NVIDIA .*GeForce FX Go55.*			0	1	0	0
+NVIDIA GeForce FX Go5600				.*NVIDIA .*GeForce FX Go56.*			0	1	1	2.1
+NVIDIA GeForce FX Go5700				.*NVIDIA .*GeForce FX Go57.*			1	1	1	1.5
+NVIDIA GeForce FX Go5800				.*NVIDIA .*GeForce FX Go58.*			1	1	0	0
+NVIDIA GeForce FX Go5900				.*NVIDIA .*GeForce FX Go59.*			1	1	0	0
+NVIDIA GeForce FX Go5xxx				.*NVIDIA .*GeForce FX Go.*				0	1	0	0
+NVIDIA GeForce Go 6100					.*NVIDIA .*GeForce Go 61.*				0	1	1	2.1
+NVIDIA GeForce Go 6200					.*NVIDIA .*GeForce Go 62.*				0	1	0	0
+NVIDIA GeForce Go 6400					.*NVIDIA .*GeForce Go 64.*				1	1	1	2
+NVIDIA GeForce Go 6500					.*NVIDIA .*GeForce Go 65.*				1	1	0	0
+NVIDIA GeForce Go 6600					.*NVIDIA .*GeForce Go 66.*				0	1	1	2.1
+NVIDIA GeForce Go 6700					.*NVIDIA .*GeForce Go 67.*				1	1	0	0
+NVIDIA GeForce Go 6800					.*NVIDIA .*GeForce Go 68.*				0	1	1	2.1
+NVIDIA GeForce Go 7200					.*NVIDIA .*GeForce Go 72.*				1	1	0	0
+NVIDIA GeForce Go 7300 LE				.*NVIDIA .*GeForce Go 73.*LE.*			1	1	0	0
+NVIDIA GeForce Go 7300					.*NVIDIA .*GeForce Go 73.*				1	1	1	2.1
+NVIDIA GeForce Go 7400					.*NVIDIA .*GeForce Go 74.*				1	1	1	2.1
+NVIDIA GeForce Go 7600					.*NVIDIA .*GeForce Go 76.*				1	1	1	2.1
+NVIDIA GeForce Go 7700					.*NVIDIA .*GeForce Go 77.*				0	1	1	2.1
+NVIDIA GeForce Go 7800					.*NVIDIA .*GeForce Go 78.*				2	1	0	0
+NVIDIA GeForce Go 7900					.*NVIDIA .*GeForce Go 79.*				1	1	1	2.1
+NVIDIA D9M								.*NVIDIA .*D9M.*						1	1	0	0
+NVIDIA G94								.*NVIDIA .*G94.*						3	1	0	0
+NVIDIA GeForce Go 6						.*GeForce Go 6.*						1	1	0	0
+NVIDIA ION 2							.*NVIDIA .*ION 2.*						2	1	0	0
+NVIDIA ION 								.*NVIDIA Corporation.*ION.*				2	1	1	0
+NVIDIA NB8M								.*NVIDIA .*NB8M.*						1	1	0	0
+NVIDIA NB8P								.*NVIDIA .*NB8P.*						2	1	0	0
+NVIDIA NB9E								.*NVIDIA .*NB9E.*						3	1	0	0
+NVIDIA NB9M								.*NVIDIA .*NB9M.*						1	1	0	0
+NVIDIA NB9P								.*NVIDIA .*NB9P.*						2	1	0	0
+NVIDIA N10								.*NVIDIA .*N10.*						1	1	0	0
+NVIDIA GeForce PCX						.*GeForce PCX.*							0	1	0	0
+NVIDIA Generic							.*NVIDIA .*Unknown.*					0	0	0	0
+NVIDIA NV17								.*NVIDIA .*NV17.*						0	1	0	0
+NVIDIA NV34								.*NVIDIA .*NV34.*						0	1	0	0
+NVIDIA NV35								.*NVIDIA .*NV35.*						0	1	0	0
+NVIDIA NV36								.*NVIDIA .*NV36.*						1	1	0	0
+NVIDIA NV41								.*NVIDIA .*NV41.*						1	1	0	0
+NVIDIA NV43								.*NVIDIA .*NV43.*						1	1	0	0
+NVIDIA NV44								.*NVIDIA .*NV44.*						1	1	0	0
+NVIDIA nForce							.*NVIDIA .*nForce.*						0	0	0	0
+NVIDIA MCP51							.*NVIDIA .*MCP51.*						1	1	0	0
+NVIDIA MCP61							.*NVIDIA .*MCP61.*						1	1	0	0
+NVIDIA MCP67							.*NVIDIA .*MCP67.*						1	1	0	0
+NVIDIA MCP68							.*NVIDIA .*MCP68.*						1	1	0	0
+NVIDIA MCP73							.*NVIDIA .*MCP73.*						1	1	0	0
+NVIDIA MCP77							.*NVIDIA .*MCP77.*						1	1	0	0
+NVIDIA MCP78							.*NVIDIA .*MCP78.*						1	1	0	0
+NVIDIA MCP79							.*NVIDIA .*MCP79.*						1	1	0	0
+NVIDIA MCP7A							.*NVIDIA .*MCP7A.*						1	1	0	0
+NVIDIA Quadro2							.*Quadro2.*								0	1	0	0
+NVIDIA Quadro 1000M						.*Quadro.*1000M.*						2	1	0	0
+NVIDIA Quadro 2000 M/D					.*Quadro.*2000.*						3	1	0	0
+NVIDIA Quadro 3000M						.*Quadro.*3000M.*						3	1	0	0
+NVIDIA Quadro 4000M						.*Quadro.*4000M.*						3	1	0	0
+NVIDIA Quadro 4000						.*Quadro *4000.*						3	1	0	0
+NVIDIA Quadro 50x0 M					.*Quadro.*50.0.*						3	1	0	0
+NVIDIA Quadro 6000						.*Quadro.*6000.*						3	1	0	0
+NVIDIA Quadro 400						.*Quadro.*400.*							2	1	0	0
+NVIDIA Quadro 600						.*Quadro.*600.*							2	1	0	0
+NVIDIA Quadro4							.*Quadro4.*								0	1	0	0
+NVIDIA Quadro DCC						.*Quadro DCC.*							0	1	0	0
+NVIDIA Quadro CX						.*Quadro.*CX.*							3	1	0	0
+NVIDIA Quadro FX 770M					.*Quadro.*FX *770M.*					2	1	0	0
+NVIDIA Quadro FX 1500M					.*Quadro.*FX *1500M.*					1	1	0	0
+NVIDIA Quadro FX 1600M					.*Quadro.*FX *1600M.*					2	1	0	0
+NVIDIA Quadro FX 2500M					.*Quadro.*FX *2500M.*					2	1	0	0
+NVIDIA Quadro FX 2700M					.*Quadro.*FX *2700M.*					3	1	0	0
+NVIDIA Quadro FX 2800M					.*Quadro.*FX *2800M.*					3	1	0	0
+NVIDIA Quadro FX 3500					.*Quadro.*FX *3500.*					2	1	0	0
+NVIDIA Quadro FX 3600					.*Quadro.*FX *3600.*					3	1	0	0
+NVIDIA Quadro FX 3700					.*Quadro.*FX *3700.*					3	1	0	0
+NVIDIA Quadro FX 3800					.*Quadro.*FX *3800.*					3	1	0	0
+NVIDIA Quadro FX 4500					.*Quadro.*FX *45.*						3	1	0	0
+NVIDIA Quadro FX 880M					.*Quadro.*FX *880M.*					3	1	0	0
+NVIDIA Quadro FX 4800					.*NVIDIA .*Quadro *FX *4800.*			3	1	0	0
+NVIDIA Quadro FX						.*Quadro FX.*							1	1	0	0
+NVIDIA Quadro NVS 1xxM					.*Quadro NVS *1.[05]M.*					0	1	1	2.1
+NVIDIA Quadro NVS 300M					.*NVIDIA .*NVS *300M.*					2	1	0	0
+NVIDIA Quadro NVS 320M					.*NVIDIA .*NVS *320M.*					2	1	0	0
+NVIDIA Quadro NVS 2100M					.*NVIDIA .*NVS *2100M.*					2	1	0	0
+NVIDIA Quadro NVS 3100M					.*NVIDIA .*NVS *3100M.*					2	1	0	0
+NVIDIA Quadro NVS 4200M					.*NVIDIA .*NVS *4200M.*					2	1	0	0
+NVIDIA Quadro NVS 5100M					.*NVIDIA .*NVS *5100M.*					2	1	0	0
+NVIDIA Quadro NVS						.*NVIDIA .*NVS							0	1	0	0
+NVIDIA Corporation N12P					.*NVIDIA .*N12P.*						1	1	1	4.1
+NVIDIA Corporation N11M					.*NVIDIA .*N11M.*						2	1	0	0
+NVIDIA RIVA TNT							.*RIVA TNT.*							0	0	0	0
+S3										.*S3 Graphics.*							0	0	1	1.4
+SiS										SiS.*									0	0	1	1.5
+Trident									Trident.*								0	0	0	0
+Tungsten Graphics						Tungsten.*								0	0	0	0
+XGI										XGI.*									0	0	0	0
+VIA										VIA.*									0	0	0	0
+Apple Generic							Apple.*Generic.*						0	0	0	0
+Apple Software Renderer					Apple.*Software Renderer.*				0	0	0	0
+Humper									Humper.*								0	1	1	2.1
+PowerVR SGX545							.*PowerVR SGX.*							1	1	1	3
+
+

indra/newview/llappviewer.cpp

 #include "llnotificationsutil.h"
 
 #include "llleap.h"
+#include "stringize.h"
 
 // Third party library includes
 #include <boost/bind.hpp>
 	LL_INFOS("InitInfo") << "UI initialized." << LL_ENDL ;
 
 	// Setup paths and LLTrans after LLUI::initClass has been called.
-	LLUI::setupPaths();
-	LLTransUtil::parseStrings("strings.xml", default_trans_args);
-	LLTransUtil::parseLanguageStrings("language_settings.xml");
+	initStrings();
 
 	// Setup notifications after LLUI::setupPaths() has been called.
 	LLNotifications::instance();
 		OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);
 		return false;
 	}
-	
-	LLUI::setupPaths(); // setup paths for LLTrans based on settings files only
-	LLTransUtil::parseStrings("strings.xml", default_trans_args);
-	LLTransUtil::parseLanguageStrings("language_settings.xml");
+
+	initStrings(); // setup paths for LLTrans based on settings files only
 	// - set procedural settings
 	// Note: can't use LL_PATH_PER_SL_ACCOUNT for any of these since we haven't logged in yet
 	gSavedSettings.setString("ClientSettingsFile", 
 	return true; // Config was successful.
 }
 
+// The following logic is replicated in initConfiguration() (to be able to get
+// some initial strings before we've finished initializing enough to know the
+// current language) and also in init() (to initialize for real). Somehow it
+// keeps growing, necessitating a method all its own.
+void LLAppViewer::initStrings()
+{
+	LLUI::setupPaths();
+	LLTransUtil::parseStrings("strings.xml", default_trans_args);
+	LLTransUtil::parseLanguageStrings("language_settings.xml");
+
+	// parseStrings() sets up the LLTrans substitution table. Add this one item.
+	LLTrans::setDefaultArg("[sourceid]", gSavedSettings.getString("sourceid"));
+
+	// Now that we've set "[sourceid]", have to go back through
+	// default_trans_args and reinitialize all those other keys because some
+	// of them, in turn, reference "[sourceid]".
+	BOOST_FOREACH(std::string key, default_trans_args)
+	{
+		std::string brackets(key), nobrackets(key);
+		// Invalid to inspect key[0] if key is empty(). But then, the entire
+		// body of this loop is pointless if key is empty().
+		if (key.empty())
+			continue;
+
+		if (key[0] != '[')
+		{
+			// key was passed without brackets. That means that 'nobrackets'
+			// is correct but 'brackets' is not.
+			brackets = STRINGIZE('[' << brackets << ']');
+		}
+		else
+		{
+			// key was passed with brackets. That means that 'brackets' is
+			// correct but 'nobrackets' is not. Erase the left bracket.
+			nobrackets.erase(0, 1);
+			std::string::size_type length(nobrackets.length());
+			if (length && nobrackets[length - 1] == ']')
+			{
+				nobrackets.erase(length - 1);
+			}
+		}
+		// Calling LLTrans::getString() is what embeds the other default
+		// translation strings into this one.
+		LLTrans::setDefaultArg(brackets, LLTrans::getString(nobrackets));
+	}
+}
+
 namespace {
     // *TODO - decide if there's a better place for these functions.
 	// do we need a file llupdaterui.cpp or something? -brad

indra/newview/llappviewer.h

 	void initMaxHeapSize();
 	bool initThreads(); // Initialize viewer threads, return false on failure.
 	bool initConfiguration(); // Initialize settings from the command line/config file.
+	void initStrings();       // Initialize LLTrans machinery
 	void initUpdater(); // Initialize the updater service.
 	bool initCache(); // Initialize local client cache.
 	void checkMemory() ;

indra/newview/llfeaturemanager.cpp

 #include "lldxhardware.h"
 #endif
 
+#define LL_EXPORT_GPU_TABLE 0
 
 #if LL_DARWIN
 const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt";
 		*i = tolower(*i);
 	}
 
+#if LL_EXPORT_GPU_TABLE
+	llofstream json;
+	json.open("gpu_table.json");
+
+	json << "var gpu_table = [" << std::endl;
+#endif
+
 	bool gpuFound;
 	U32 lineNumber;
 	for (gpuFound = false, lineNumber = 0; !gpuFound && !file.eof(); lineNumber++)
 			LL_WARNS("RenderInit") << "invald gpu_table.txt:" << lineNumber << ": '" << buffer << "'" << LL_ENDL;
 			continue;
 		}
-	
+#if LL_EXPORT_GPU_TABLE
+		json << "{'label' : '" << label << "',\n" << 
+			"'regexp' : '" << expr << "',\n" <<
+			"'class' : '" << cls << "',\n" <<
+			"'supported' : '" << supported << "'\n},\n";
+#endif
+
 		for (U32 i = 0; i < expr.length(); i++)	 /*Flawfinder: ignore*/
 		{
 			expr[i] = tolower(expr[i]);
 		if(boost::regex_search(renderer, re))
 		{
 			// if we found it, stop!
+#if !LL_EXPORT_GPU_TABLE