diff options
38 files changed, 1000 insertions, 646 deletions
| diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index 5412f98ee5..5412f98ee5 100644..100755 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp index 62c245f125..62c245f125 100644..100755 --- a/indra/llkdu/tests/llimagej2ckdu_test.cpp +++ b/indra/llkdu/tests/llimagej2ckdu_test.cpp diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index 946251f383..946251f383 100644..100755 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index a4d7872ec2..a4d7872ec2 100644..100755 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index cf3c484c79..cf3c484c79 100644..100755 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e93d73ad0e..e93d73ad0e 100644..100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b302f5c9b9..b302f5c9b9 100644..100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index 4c39014c8b..122577b132 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -32,567 +32,531 @@  //		1 - We claim to support this card.  // -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	4.1 -ATI ASUS EAH66xx						.*ATI.*ASUS.*EAH66.*					3	1	0	4.1 -ATI ASUS EAH67xx						.*ATI.*ASUS.*EAH67.*					3	1	0	0 -ATI ASUS EAH68xx						.*ATI.*ASUS.*EAH68.*					5	1	0	4 -ATI ASUS EAH69xx						.*ATI.*ASUS.*EAH69.*					5	1	0	4.1 -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	4.2 -ATI Radeon HD 7400						.*ATI.*AMD Radeon.* HD 74.*				2	1	0	4.2 -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	4.2 -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 ASUS HD7100							.*ATI.*ASUS.* HD71.*					2	1	0	0 -ATI ASUS HD7200							.*ATI.*ASUS.* HD72.*					2	1	0	0 -ATI ASUS HD7300							.*ATI.*ASUS.* HD73.*					2	1	0	0 -ATI ASUS HD7400							.*ATI.*ASUS.* HD74.*					2	1	0	0 -ATI ASUS HD7500							.*ATI.*ASUS.* HD75.*					3	1	1	4.2 -ATI ASUS HD7600							.*ATI.*ASUS.* HD76.*					3	1	0	0 -ATI ASUS HD7700							.*ATI.*ASUS.* HD77.*					4	1	1	4.2 -ATI ASUS HD7800							.*ATI.*ASUS.* HD78.*					5	1	1	4.2 -ATI ASUS HD7900							.*ATI.*ASUS.* HD79.*					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 HD3700								.*ATI.* HD37..							3	1	0	3.3 -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 ASUS EAH5400						.*ATI.*ASUS EAH54..						3	1	1	4.2 -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 ASUS EAH5500						.*ATI.*ASUS EAH55..						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	4.2 -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	4 -Intel HD Graphics 3000					.*Intel.*HD Graphics 3.*				3	1	1	3.1 -Intel HD Graphics 4000					.*Intel.*HD Graphics 4.*				3	1	1	4 -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 *360M.*					5	1	1	3.3 -NVIDIA 405M								.*NVIDIA .* 40*M.*						2	1	0	4.2 -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	3 -NVIDIA GT 130							.*NVIDIA .*GT *13.*						2	1	0	3.3 -NVIDIA GTS 150							.*NVIDIA .*GTS *15.*					2	1	0	0 -NVIDIA 200								.*NVIDIA .*GeForce 20.*					2	1	1	3.3 -NVIDIA G200								.*NVIDIA .*GeForce G20.*				2	1	1	3.3 -NVIDIA G210								.*NVIDIA .*GeForce G210.*				3	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 GT 230							.*NVIDIA .*GT *23.*						2	1	1	3.3 -NVIDIA GT 240							.*NVIDIA .*GT *24.*						4	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	3.3 -NVIDIA GTX 280							.*NVIDIA .*GTX *28.*					4	1	1	3.3 -NVIDIA GTX 290							.*NVIDIA .*GTX *29.*					5	1	0	3.3 -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	3.3 -NVIDIA GT 330							.*NVIDIA .*GT *33.*						3	1	0	3.3 -NVIDIA GT 340							.*NVIDIA .*GT *34.*						3	1	0	0 -NVIDIA 405								.*NVIDIA .* 405.*						3	1	0	3.3 -NVIDIA GT 420							.*NVIDIA .*GT *42.*						3	1	1	4.2 -NVIDIA GT 430							.*NVIDIA .*GT *43.*						3	1	1	4.2 -NVIDIA GT 440							.*NVIDIA .*GT *44.*						4	1	0	4.2 -NVIDIA GTS 450							.*NVIDIA .*GTS *45.*					4	1	1	4.2 -NVIDIA GTX 460							.*NVIDIA .*GTX *46.*					5	1	1	4.3 -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.3 -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.3 -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	4.2 -NVIDIA GT 630							.*NVIDIA .*GT *63.*						3	1	0	4.2 -NVIDIA GT 640							.*NVIDIA .*GT *64.*						3	1	0	4.3 -NVIDIA GT 650							.*NVIDIA .*GT *65.*						3	1	1	4.2 -NVIDIA GTX 650							.*NVIDIA .*GTX *65.*					3	1	1	4.2 -NVIDIA GTX 660							.*NVIDIA .*GTX *66.*					5	1	0	4.3 -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	3.3 -NVIDIA GeForce 8200						.*NVIDIA .*GeForce 82.*					1	1	0	2.1 -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	3.3 -NVIDIA GeForce 9200M					.*NVIDIA .*GeForce 9200M.*				1	1	0	3.1 -NVIDIA GeForce 9200						.*NVIDIA .*GeForce 92.*					1	1	0	3.3 -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	2.1 -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	3.3 -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	3 -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	3.3 -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	4.2 -NVIDIA Quadro 2000 M/D					.*Quadro.*2000.*						3	1	0	4.2 -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	4.2 -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	3.3 -NVIDIA Quadro 600						.*Quadro.*600.*							2	1	0	3.3 -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	2.1 -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	3.3 -NVIDIA Quadro FX 3500					.*Quadro.*FX *3500.*					2	1	0	2.1 -NVIDIA Quadro FX 3600					.*Quadro.*FX *3600.*					3	1	0	0 -NVIDIA Quadro FX 3700					.*Quadro.*FX *3700.*					3	1	0	3.3 -NVIDIA Quadro FX 3800					.*Quadro.*FX *3800.*					3	1	0	3.2 -NVIDIA Quadro FX 4500					.*Quadro.*FX *45.*						3	1	0	0 -NVIDIA Quadro FX 880M					.*Quadro.*FX *880M.*					3	1	0	3.3 -NVIDIA Quadro FX 4800					.*NVIDIA .*Quadro *FX *4800.*			3	1	0	0 -NVIDIA Quadro FX						.*Quadro FX.*							1	1	0	3.3 -NVIDIA Quadro NVS 1xxM					.*Quadro NVS *1.[05]M.*					0	1	1	3.3 -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	4.1 -NVIDIA Quadro NVS 5100M					.*NVIDIA .*NVS *5100M.*					2	1	0	0 -NVIDIA Quadro NVS						.*NVIDIA .*NVS							0	1	0	3.2 -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 +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	2.1 +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 Radeon X1300						.*ATI.*(ASUS|Radeon).*X13.*							2	1	1	2.1 +ATI Radeon X1500						.*ATI.*(ASUS|Radeon).*X15.*							2	1	1	2.1 +ATI Radeon X1600						.*ATI.*(ASUS|Radeon).*X16.*							2	1	1	2.1 +ATI Radeon X1700						.*ATI.*(ASUS|Radeon).*X17.*							2	1	1	2.1 +ATI Radeon X1800						.*ATI.*(Radeon|Diamond) X18.* ?.*					3	1	1	2.1 +ATI Radeon X1900						.*ATI.*(Radeon|Diamond|ASUS) X19.* ?.*				2	1	1	2.1 +ATI Radeon X17xx						.*ATI.*(Radeon|Diamond) X17.* ?.*					1	1	1	2.1 +ATI Radeon X16xx						.*ATI.*(Radeon|Diamond) X17.* ?.*					1	1	1	2.1 +ATI Radeon X28xx						.*ATI.*(Radeon|Diamond) X28.. ?.*					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	4.1 +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	3.2 +ATI Generic								.*ATI.*Generic.*									0	0	0	0 +ATI Hercules 9800						.*ATI.*Hercules.* 9800.*							1	1	0	0 +ATI IGP 340M							.*ATI.*IGP.* 34[0-9]M.*								0	0	0	1.3 +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 6300M						.*ATI.*AMD Radeon.* (HD|HD )63..M					2	1	1	4.2 +ATI Radeon HD 6400M						.*ATI.*AMD Radeon.* (HD|HD )64..M					2	1	1	4.2 +ATI Radeon HD 6500M						.*ATI.*AMD Radeon.* (HD|HD )65..M					2	1	1	4.2 +ATI Radeon HD 6600M						.*ATI.*AMD Radeon.* (HD 6|6)6..M					3	1	1	4.2 +ATI Radeon HD 6700M						.*ATI.*AMD Radeon.* (HD|HD )67..M					3	1	1	4.2 +ATI Radeon HD 6800M						.*ATI.*AMD Radeon.* (HD|HD )68..M					3	1	1	4.2 +ATI Radeon HD 6300G						.*ATI.*AMD Radeon.* (HD|HD )63..G					2	1	1	4.2 +ATI Radeon HD 6400G						.*ATI.*AMD Radeon.* (HD|HD )64..G					2	1	1	4.2 +ATI Radeon HD 6500G						.*ATI.*AMD Radeon.* (HD|HD )65..G					2	1	1	4.2 +ATI Radeon HD 6600G						.*ATI.*AMD Radeon.* (HD|HD )66..G					3	1	1	4.2 +ATI Radeon HD 7100						.*ATI.*(Radeon|ASUS).* (HD|HD )71.*					2	1	0	0 +ATI Radeon HD 7200						.*ATI.*(Radeon|ASUS).* (HD|HD )72.*					2	1	0	4.2 +ATI Radeon HD 7300						.*ATI.*(Radeon|ASUS).* (HD|HD )73.*					2	1	0	4.2 +ATI Radeon HD 7400						.*ATI.*(Radeon|ASUS).* (HD|HD )74.*					2	1	0	4.2 +ATI Radeon HD 7500						.*ATI.*(Radeon|ASUS).* (HD|HD )75.*					3	1	1	4.2 +ATI Radeon HD 7600						.*ATI.*(Radeon|ASUS).* (HD|HD )76.*					3	1	0	4.2 +ATI Radeon HD 7700						.*ATI.*(Radeon|ASUS).* (HD|HD )77.*					4	1	1	4.2 +ATI Radeon HD 7800						.*ATI.*(Radeon|ASUS).* (HD|HD )78.*					5	1	1	4.2 +ATI Radeon HD 7900						.*ATI.*(Radeon|ASUS).* (HD|HD )79.*					5	1	1	4.2 +ATI Radeon HD 7000 Series				.*ATI.*(Radeon|ASUS).* (HD|HD )7000 Series.*		3	1	1	4.2 +ATI Mobility Radeon 4100				.*ATI.*Mobility.* 41..								1	1	1	3.3 +ATI Mobility Radeon 5000				.*ATI.*Mobility.* 50..								1	1	1	4.2 +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	4 +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 |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 5000 Series		.*ATI.*Mobility.*HD 50.*							3	1	1	3.2 +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	4.2 +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 Mobility Radeon Graphics			.*ATI Mobility Radeon Graphics.*					1	1	0	4 +ATI Radeon HD 2300						.*ATI.*Radeon.* (HD|HD )23..						0	1	1	3.3 +ATI Radeon HD 2400						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)24..				1	1	1	4 +ATI Radeon HD 2600						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)26..				2	1	1	4 +ATI Radeon HD 2900						.*ATI.*Radeon.* (HD|HD )29..						3	1	1	3.3 +ATI Radeon HD 3000						.*ATI.*Radeon.* (HD|HD )30..						0	1	0	0 +ATI Radeon HD 3100						.*ATI.*Radeon.* (HD|HD )31..						1	1	0	0 +ATI Radeon HD 3200						.*ATI.*Radeon.* (HD|HD )32..						1	1	1	4 +ATI Radeon HD 3300						.*ATI.*Radeon.* (HD|HD )33..						1	1	1	3.3 +ATI Radeon HD 3400						.*ATI.*(Radeon|ASUS).* (HD|HD |AH|EAH)34..			1	1	1	4 +ATI Radeon HD 3500						.*ATI.*Radeon.* (HD|HD )35..						2	1	0	0 +ATI Radeon HD 3600						.*ATI.*(Radeon|ASUS).* (HD|HD |AH|EAH)36..			3	1	1	4 +ATI Radeon HD 3700						.*ATI.*Radeon.* (HD|HD )37..						3	1	0	3.3 +ATI HD3700								.*ATI.* HD37..										3	1	0	3.3 +ATI Radeon HD 3800						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)38..				3	1	1	4 +ATI Radeon HD 4100						.*ATI.*Radeon.* (HD|HD )41..						1	1	0	0 +ATI Radeon HD 4200						.*ATI.*Radeon.* (HD|HD )42..						1	1	1	4 +ATI Radeon HD 4300						.*ATI.*(Radeon|ASUS).* (HD4|HD 4|EAH4|4)3..			2	1	1	4 +ATI Radeon HD 4400						.*ATI.*Radeon.* (HD|HD )44..						2	1	0	0 +ATI Radeon HD 4500						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)45..				2	1	1	3.3 +ATI Radeon HD 4600						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)46..				3	1	1	4 +ATI Radeon HD 4700						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)47..				3	1	1	3.3 +ATI Radeon HD 4800						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)48..				3	1	1	4 +ATI Radeon HD 5400						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)54..				3	1	1	4.2 +ATI Radeon HD 5500						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)55..				3	1	1	4.2 +ATI Radeon HD 5600						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)56..				3	1	1	4.2 +ATI Radeon HD 5700						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)57..				3	1	1	4.2 +ATI Radeon HD 5800						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)58..				4	1	1	4.2 +ATI Radeon HD 5900						.*ATI.*Radeon.* (HD|HD )59..						4	1	1	4.2 +ATI Radeon HD 6200						.*ATI.*Radeon.* (HD|HD )62..						0	1	1	4.2 +ATI Radeon HD 6300						.*ATI.*Radeon.* (HD|HD )63..						1	1	1	4.2 +ATI Radeon HD 6400						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)64..				3	1	1	4.2 +ATI Radeon HD 6500						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)65..				3	1	1	4.2 +ATI Radeon HD 6600						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)66..				3	1	1	4.2 +ATI Radeon HD 6700						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)67..				3	1	1	4.2 +ATI Radeon HD 6800						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)68..				4	1	1	4.2 +ATI Radeon HD 6900						.*ATI.*(Radeon|ASUS).* (HD|HD |EAH)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 |ASUS Extreme A)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 X1000						.*ATI.*Radeon ?X10.*								2	1	0	2.1 +ATI Radeon X1200						.*ATI.*Radeon ?X12.*								2	1	0	2.1 +ATI Radeon X1400						.*ATI.*Radeon ?X14.*								2	1	0	2.1 +ATI Radeon X2300						.*ATI.*Radeon ?X23.*								2	1	0	2.1 +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 +ATI ROBSON								.*(AMD|ATI).*ROBSON.*								3	1	0	4 +AMD BARTS (HD 6800)						.*(AMD|ATI).*Barts.*								3	1	1	2.1 +AMD WRESTLER							.*(AMD|ATI).*WRESTLER.*								3	1	1	4 +AMD SUMO								.*(AMD|ATI).*SUMO.*									3	1	1	4.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	2.1 +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	1.4 +AMD TURKS (HD 6500/6600)				.*(AMD|ATI).*Turks.*								3	1	0	2.1 +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	1.4 +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	1.4 +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.2 +ATI FirePro 3000						.*ATI.*FirePro V3.*									2	1	0	0 +ATI FirePro 4000						.*ATI.*FirePro V4.*									2	1	0	4.1 +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 +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	4 +Intel HD Graphics 3000					.*Intel.*HD Graphics 3.*							3	1	1	3.1 +Intel HD Graphics 4000					.*Intel.*HD Graphics 4.*							3	1	1	4 +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	3 +Gallium									.*Gallium.*											1	1	1	2.1 +NVIDIA G100M							.*NVIDIA .* 10[0-9]M.*								4	1	1	3.3 +NVIDIA G 110M							.*NVIDIA .* 11[0-9]M.*								1	1	1	3.3 +NVIDIA G 120M							.*NVIDIA .* 12[0-9]M.*								1	1	1	3.3 +NVIDIA G 200M							.*NVIDIA .* 20[0-9]M.*								1	1	0	0 +NVIDIA G 410M							.*NVIDIA .* 41[0-9]M.*								3	1	1	4.2 +NVIDIA GT 130M							.*NVIDIA .*GT 13[0-9]M.*							3	1	1	3.3 +NVIDIA GT 140M							.*NVIDIA .*GT 14[0-9]M.*							3	1	1	3.3 +NVIDIA GT 150M							.*NVIDIA .*GTS 15[0-9]M.*							2	1	0	0 +NVIDIA GTS 160M							.*NVIDIA .*GTS 16[0-9]M.*							2	1	0	0 +NVIDIA G210M							.*NVIDIA .*G21[0-9]M.*								3	1	0	3.3 +NVIDIA GT 220M							.*NVIDIA .*GT 22[0-9]M.*							3	1	1	3.3 +NVIDIA GT 230M							.*NVIDIA .*GT 23[0-9]M.*							3	1	1	3.3 +NVIDIA GT 240M							.*NVIDIA .*GT 24[0-9]M.*							3	1	1	3.3 +NVIDIA GTS 250M							.*NVIDIA .*GTS 25[0-9]M.*							3	1	0	3.3 +NVIDIA GTS 260M							.*NVIDIA .*GTS 26[0-9]M.*							3	1	0	0 +NVIDIA GTX 260M							.*NVIDIA .*GTX 26[0-9]M.*							3	1	0	3.3 +NVIDIA GTX 270M							.*NVIDIA .*GTX 27[0-9]M.*							3	1	0	0 +NVIDIA GTX 280M							.*NVIDIA .*GTX 28[0-9]M.*							3	1	0	3.3 +NVIDIA 300M								.*NVIDIA .*GT 30[0-9]M.*							3	1	1	4.2 +NVIDIA G 310M							.*NVIDIA .* 31[0-9]M.*								2	1	0	3.3 +NVIDIA GT 320M							.*NVIDIA .* 32[0-9]M.*								3	1	0	3.3 +NVIDIA GT 330M							.*NVIDIA .*GT 33[0-9]M.*							3	1	1	3.3 +NVIDIA GT 340M							.*NVIDIA .*GT 34[0-9]M.*							4	1	1	3.3 +NVIDIA GTS 350M							.*NVIDIA .*GTS 35[0-9]M.*							4	1	1	3.3 +NVIDIA GTS 360M							.*NVIDIA .*GTS 36[0-9]M.*							5	1	1	3.3 +NVIDIA 400M								.*NVIDIA .* 40[0-9]M.*								2	1	0	0 +NVIDIA 410M								.*NVIDIA .* 41[0-9]M.*								3	1	0	0 +NVIDIA GT 420M							.*NVIDIA .*GT 42[0-9]M.*							3	1	1	4.2 +NVIDIA GT 430M							.*NVIDIA .*GT 43[0-9]M.*							3	1	1	4.2 +NVIDIA GT 440M							.*NVIDIA .*GT 44[0-9]M.*							3	1	1	4.2 +NVIDIA GT 450M							.*NVIDIA .*GT 45[0-9]M.*							3	1	0	0 +NVIDIA GTX 460M							.*NVIDIA .*GTX 46[0-9]M.*							4	1	1	4.3 +NVIDIA GTX 470M							.*NVIDIA .*GTX 47[0-9]M.*							3	1	0	4.2 +NVIDIA GTX 480M							.*NVIDIA .*GTX 48[0-9]M.*							3	1	1	4.2 +NVIDIA GT 520M							.*NVIDIA .*GT 52[0-9]M.*							3	1	1	4.2 +NVIDIA GT 530M							.*NVIDIA .*GT 53[0-9]M.*							3	1	1	4.2 +NVIDIA GT 540M							.*NVIDIA .*GT 54[0-9]M.*							3	1	1	4.2 +NVIDIA GT 550M							.*GeForce GT 55[0-9]M.*								3	1	1	4.2 +NVIDIA GTX 560M							.*NVIDIA .*GTX 56[0-9]M.*							3	1	0	4.2 +NVIDIA GTX 570M							.*NVIDIA .*GTX 57[0-9]M.*							5	1	0	4.2 +NVIDIA GTX 580M							.*NVIDIA .*GTX 58[0-9]M.*							5	1	1	4.2 +NVIDIA 610M								.*NVIDIA.* 61[0-9]M.*								3	1	1	4.2 +NVIDIA GT 620M							.*NVIDIA .*GT 62[0-9]M.*							3	1	0	4.2 +NVIDIA GT 630M							.*NVIDIA .*GT 63[0-9]M.*							3	1	0	4.2 +NVIDIA GT 640M							.*NVIDIA .*GT 64[0-9]M.*							3	1	0	4.2 +NVIDIA GT 650M							.*NVIDIA .*GT 65[0-9]M.*							3	1	0	4.2 +NVIDIA GTX 660M							.*NVIDIA .*GTX 66[0-9]M.*							5	1	0	4.3 +NVIDIA GTX 670M							.*NVIDIA .*GTX 67[0-9]M.*							5	1	1	4.2 +NVIDIA GTX 680M							.*NVIDIA .*GTX 68[0-9]M.*							5	1	0	4.2 +NVIDIA GTX 690M							.*NVIDIA .*GTX 69[0-9]M.*							5	1	0	0 +NVIDIA G100								.*NVIDIA .*G10.*									3	1	1	4.2 +NVIDIA GT 120							.*NVIDIA .*GT 12.*									2	1	0	3.3 +NVIDIA GT 130							.*NVIDIA .*GT 13.*									2	1	0	3.3 +NVIDIA GT 140							.*NVIDIA .*GT 14.*									2	1	0	3.3 +NVIDIA GTS 150							.*NVIDIA .*GTS 15.*									2	1	0	0 +NVIDIA 200								.*NVIDIA .*GeForce 20.*								2	1	1	3.3 +NVIDIA G200								.*NVIDIA .*GeForce G20.*							2	1	1	3.3 +NVIDIA G210								.*NVIDIA .*GeForce G210.*							3	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 GT 230							.*NVIDIA .*GT 23.*									2	1	1	3.3 +NVIDIA GT 240							.*NVIDIA .*GT 24.*									4	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	3.3 +NVIDIA GTX 280							.*NVIDIA .*GTX 28.*									4	1	1	3.3 +NVIDIA GTX 290							.*NVIDIA .*GTX 29.*									5	1	0	3.3 +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	3.3 +NVIDIA GT 330							.*NVIDIA .*GT 33.*									3	1	0	3.3 +NVIDIA GT 340							.*NVIDIA .*GT 34.*									3	1	0	3.3 +NVIDIA 405								.*NVIDIA .* 405.*									3	1	0	3.3 +NVIDIA GT 420							.*NVIDIA .*GT 42.*									3	1	1	4.2 +NVIDIA GT 430							.*NVIDIA .*GT 43.*									3	1	1	4.3 +NVIDIA GT 440							.*NVIDIA .*GT 44.*									4	1	0	4.3 +NVIDIA GTS 450							.*NVIDIA .*GTS 45.*									4	1	1	4.2 +NVIDIA GTX 460							.*NVIDIA .*GTX 46.*									5	1	1	4.3 +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	4.2 +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.3 +NVIDIA GTX 560							.*NVIDIA .*GTX 56.*									5	1	1	4.3 +NVIDIA GTX 570							.*NVIDIA .*GTX 57.*									5	1	1	4.2 +NVIDIA GTX 580							.*NVIDIA .*GTX 58.*									5	1	1	4.3 +NVIDIA GTX 590							.*NVIDIA .*GTX 59.*									5	1	1	4.2 +NVIDIA 605								.*NVIDIA .* 605.*									3	1	1	4.2 +NVIDIA GT 610							.*NVIDIA .*GT 61.*									3	1	1	4.2 +NVIDIA GT 620							.*NVIDIA .*GT 62.*									3	1	0	4.2 +NVIDIA GT 630							.*NVIDIA .*GT 63.*									3	1	0	4.2 +NVIDIA GT 640							.*NVIDIA .*GT 64.*									3	1	0	4.2 +NVIDIA GT 650							.*NVIDIA .*GT 65.*									3	1	1	4.2 +NVIDIA GTX 650							.*NVIDIA .*GTX 65.*									3	1	1	4.2 +NVIDIA GTX 660							.*NVIDIA .*GTX 66.*									5	1	0	4.3 +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 4						.*NVIDIA .*GeForce ?4.*								0	1	1	1.5 +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	3.3 +NVIDIA GeForce 8200M					.*NVIDIA .*GeForce 820[0-9]M.*						1	1	0	3.3 +NVIDIA GeForce 8200						.*NVIDIA .*GeForce 82.*								1	1	0	3.3 +NVIDIA GeForce 8300						.*NVIDIA .*GeForce 83.*								3	1	1	3.3 +NVIDIA GeForce 8400M					.*NVIDIA .*GeForce 840[0-9]M.*						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 860[0-9]M.*						2	1	1	3.3 +NVIDIA GeForce 8600						.*NVIDIA .*GeForce 86.*								3	1	1	3.3 +NVIDIA GeForce 8700M					.*NVIDIA .*GeForce 870[0-9]M.*						2	1	1	3.3 +NVIDIA GeForce 8700						.*NVIDIA .*GeForce 87.*								3	1	0	0 +NVIDIA GeForce 8800M					.*NVIDIA .*GeForce 880[0-9]M.*						2	1	1	3.3 +NVIDIA GeForce 8800						.*NVIDIA .*GeForce 88.*								3	1	1	3.3 +NVIDIA GeForce 9100M					.*NVIDIA .*GeForce 910[0-9]M.*						0	1	0	3.3 +NVIDIA GeForce 9100						.*NVIDIA .*GeForce 91.*								0	1	0	3.3 +NVIDIA GeForce 9200M					.*NVIDIA .*GeForce 920[0-9]M.*						1	1	0	3.3 +NVIDIA GeForce 9200						.*NVIDIA .*GeForce 92.*								1	1	0	3.3 +NVIDIA GeForce 9300M					.*NVIDIA .*GeForce 930[0-9]M.*						1	1	1	3.3 +NVIDIA GeForce 9300						.*NVIDIA .*GeForce 93.*								1	1	1	3.3 +NVIDIA GeForce 9400M					.*NVIDIA .*GeForce 940[0-9]M.*						2	1	1	3.3 +NVIDIA GeForce 9400						.*NVIDIA .*GeForce 94.*								3	1	1	3.3 +NVIDIA GeForce 9500M					.*NVIDIA .*GeForce 950[0-9]M.*						1	1	1	3.3 +NVIDIA GeForce 9500						.*NVIDIA .*GeForce 95.*								3	1	1	3.3 +NVIDIA GeForce 9600M					.*NVIDIA .*GeForce 960[0-9]M.*						2	1	1	3.3 +NVIDIA GeForce 9600						.*NVIDIA .*GeForce 96.*								3	1	1	3.3 +NVIDIA GeForce 9700M					.*NVIDIA .*GeForce 970[0-9]M.*						0	1	1	3.3 +NVIDIA GeForce 9800M					.*NVIDIA .*GeForce 980[0-9]M.*						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	2.1 +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	1.5 +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	1.5 +NVIDIA GeForce Go 6400					.*NVIDIA .*GeForce Go 64.*							1	1	1	2.1 +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	2.1 +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	3.3 +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	2.1 +NVIDIA GeForce PCX						.*GeForce PCX.*										0	1	0	1.5 +NVIDIA Generic							.*NVIDIA .*Unknown.*								0	0	0	2.1 +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	3.3 +NVIDIA MCP51							.*NVIDIA .*MCP51.*									1	1	0	0 +NVIDIA MCP61							.*NVIDIA .*MCP61.*									1	1	0	2.1 +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	1.5 +NVIDIA Quadro 1000M						.*Quadro.* (K1|1)00[0-9]M.*							2	1	0	4.2 +NVIDIA Quadro 2000 M/D					.*Quadro.* (K2|2)000.*								3	1	0	4.2 +NVIDIA Quadro 3000M						.*Quadro.* (K3|3)00[0-9]M.*							3	1	0	4.2 +NVIDIA Quadro 4000M						.*Quadro.* (K4|4)00[0-9]M.*							3	1	0	4.2 +NVIDIA Quadro 4000						.*Quadro 4000.*										3	1	0	4.2 +NVIDIA Quadro 50x0 M					.*Quadro.* 50.0.*									3	1	0	4.2 +NVIDIA Quadro 6000						.*Quadro.* 6000.*									3	1	0	0 +NVIDIA Quadro 400						.*Quadro.* 400.*									2	1	0	3.3 +NVIDIA Quadro 600						.*Quadro.* 600.*									2	1	0	4.2 +NVIDIA Quadro4							.*Quadro4.*											0	1	0	1.5 +NVIDIA Quadro DCC						.*Quadro DCC.*										0	1	0	0 +NVIDIA Quadro CX						.*Quadro.*CX.*										3	1	0	0 +NVIDIA Quadro FX 770M					.*Quadro.*FX 77[0-9]M.*								2	1	0	3.3 +NVIDIA Quadro FX 1500M					.*Quadro.*FX 150[0-9]M.*							1	1	0	2.1 +NVIDIA Quadro FX 1600M					.*Quadro.*FX 160[0-9]M.*							2	1	0	3.3 +NVIDIA Quadro FX 2500M					.*Quadro.*FX 250[0-9]M.*							2	1	0	2.1 +NVIDIA Quadro FX 2700M					.*Quadro.*FX 270[0-9]M.*							3	1	0	3.3 +NVIDIA Quadro FX 2800M					.*Quadro.*FX 280[0-9]M.*							3	1	0	3.3 +NVIDIA Quadro FX 3500					.*Quadro.*FX 3500.*									2	1	0	2.1 +NVIDIA Quadro FX 3600					.*Quadro.*FX 3600.*									3	1	0	3.3 +NVIDIA Quadro FX 3700					.*Quadro.*FX 3700.*									3	1	0	3.3 +NVIDIA Quadro FX 3800					.*Quadro.*FX 3800.*									3	1	0	3.3 +NVIDIA Quadro FX 4500					.*Quadro.*FX 45.*									3	1	0	2.1 +NVIDIA Quadro FX 880M					.*Quadro.*FX 88[0-9]M.*								3	1	0	3.3 +NVIDIA Quadro FX 4800					.*NVIDIA .*Quadro FX 4800.*							3	1	0	3.1 +NVIDIA Quadro FX						.*Quadro FX.*										1	1	0	3.3 +NVIDIA Quadro NVS 1xxM					.*Quadro NVS 1.[05]M.*								0	1	1	3.3 +NVIDIA Quadro NVS 300M					.*NVIDIA .*NVS 30[0-9]M.*							2	1	0	0 +NVIDIA Quadro NVS 320M					.*NVIDIA .*NVS 32[0-9]M.*							2	1	0	0 +NVIDIA Quadro NVS 2100M					.*NVIDIA .*NVS 210[0-9]M.*							2	1	0	3.3 +NVIDIA Quadro NVS 3100M					.*NVIDIA .*NVS 310[0-9]M.*							2	1	0	3.3 +NVIDIA Quadro NVS 4200M					.*NVIDIA .*NVS 420[0-9]M.*							2	1	0	4.2 +NVIDIA Quadro NVS 5100M					.*NVIDIA .*NVS 510[0-9]M.*							2	1	0	0 +NVIDIA Quadro NVS						.*NVIDIA .*NVS										0	1	0	4.2 +NVIDIA Corporation N12P					.*NVIDIA .*N12P.*									1	1	1	4.1 +NVIDIA Corporation N11M					.*NVIDIA .*N11M.*									2	1	0	3.1 +NVIDIA RIVA TNT							.*RIVA TNT.*										0	0	0	1.5 +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 diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 28e4b32793..28e4b32793 100644..100755 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 8602271f84..8eaf691d6f 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -413,7 +413,7 @@ public:  	void startRequest() { ++mPendingUploads; }  	void stopRequest() { --mPendingUploads; } -		 +  	bool finished() { return mFinished; }  	virtual void run();  	void preStart(); diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index b9b347d4be..c082e9a2d1 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -85,6 +85,7 @@ public:  	std::string		mAlreadyInGroup;  	std::string		mTooManySelected;  	bool		mConfirmedOwnerInvite; +	std::set<LLUUID>	mInviteeIDs;  	void (*mCloseCallback)(void* data); @@ -110,31 +111,30 @@ LLPanelGroupInvite::impl::~impl()  {  } +const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap. +  void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names,  										const uuid_vec_t& agent_ids)  {  	std::string name;  	LLUUID id; +	if (names.size() + mInviteeIDs.size() > MAX_GROUP_INVITES) +	{ +		// Fail! Show a warning and don't add any names. +		LLSD msg; +		msg["MESSAGE"] = mTooManySelected; +		LLNotificationsUtil::add("GenericAlert", msg); +		return; +	} +  	for (S32 i = 0; i < (S32)names.size(); i++)  	{  		name = names[i];  		id = agent_ids[i];  		// Make sure this agent isn't already in the list. -		bool already_in_list = false; -		std::vector<LLScrollListItem*> items = mInvitees->getAllData(); -		for (std::vector<LLScrollListItem*>::iterator iter = items.begin(); -			 iter != items.end(); ++iter) -		{ -			LLScrollListItem* item = *iter; -			if (item->getUUID() == id) -			{ -				already_in_list = true; -				break; -			} -		} -		if (already_in_list) +		if (mInviteeIDs.find(id) != mInviteeIDs.end())  		{  			continue;  		} @@ -145,6 +145,7 @@ void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names,  		row["columns"][0]["value"] = name;  		mInvitees->addElement(row); +		mInviteeIDs.insert(id);  	}  } @@ -186,7 +187,6 @@ void LLPanelGroupInvite::impl::submitInvitations()  		role_member_pairs[item->getUUID()] = role_id;  	} -	const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap.  	if (role_member_pairs.size() > MAX_GROUP_INVITES)  	{  		// Fail! @@ -325,6 +325,12 @@ void LLPanelGroupInvite::impl::handleRemove()  			mInvitees->getAllSelected();  	if (selection.empty()) return; +	std::vector<LLScrollListItem*>::iterator iter; +	for(iter = selection.begin(); iter != selection.end(); ++iter) +	{ +		mInviteeIDs.erase( (*iter)->getUUID() ); +	} +  	// Remove all selected invitees.  	mInvitees->deleteSelectedItems();  	mRemoveButton->setEnabled(FALSE); @@ -430,6 +436,7 @@ void LLPanelGroupInvite::clear()  	mImplementation->mRoleNames->clear();  	mImplementation->mRoleNames->removeall();  	mImplementation->mOKButton->setEnabled(FALSE); +	mImplementation->mInviteeIDs.clear();  }  void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids) diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index af740fe73d..dd69172184 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -3359,7 +3359,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)  	}  	else if	(type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::SPHERE)  	{ -		/*LLVolumeParams volume_params; +		LLVolumeParams volume_params;  		volume_params.setType( LL_PCODE_PROFILE_CIRCLE_HALF, LL_PCODE_PATH_CIRCLE );  		volume_params.setBeginAndEndS( 0.f, 1.f );  		volume_params.setBeginAndEndT( 0.f, 1.f ); @@ -3369,7 +3369,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)  		gGL.diffuseColor4fv(color.mV);  		pushVerts(sphere); -		LLPrimitive::sVolumeManager->unrefVolume(sphere);*/ +		LLPrimitive::sVolumeManager->unrefVolume(sphere);  	}  	else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::CYLINDER)  	{ @@ -3447,51 +3447,67 @@ void renderPhysicsShapes(LLSpatialGroup* group)  	for (LLSpatialGroup::OctreeNode::const_element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)  	{  		LLDrawable* drawable = *i; -		LLVOVolume* volume = drawable->getVOVolume(); -		if (volume && !volume->isAttachment() && volume->getPhysicsShapeType() != LLViewerObject::PHYSICS_SHAPE_NONE ) + +		if (drawable->isSpatialBridge())  		{ -			if (!group->mSpatialPartition->isBridge()) +			LLSpatialBridge* bridge = drawable->asPartition()->asBridge(); + +			if (bridge)  			{  				gGL.pushMatrix(); -				LLVector3 trans = drawable->getRegion()->getOriginAgent(); -				gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]); -				renderPhysicsShape(drawable, volume); +				gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix); +				bridge->renderPhysicsShapes();  				gGL.popMatrix();  			} -			else -			{ -				renderPhysicsShape(drawable, volume); -			}  		}  		else  		{ -			LLViewerObject* object = drawable->getVObj(); -			if (object && object->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH) +			LLVOVolume* volume = drawable->getVOVolume(); +			if (volume && !volume->isAttachment() && volume->getPhysicsShapeType() != LLViewerObject::PHYSICS_SHAPE_NONE )  			{ -				gGL.pushMatrix(); -				gGL.multMatrix((F32*) object->getRegion()->mRenderMatrix.mMatrix); -				//push face vertices for terrain -				for (S32 i = 0; i < drawable->getNumFaces(); ++i) +				if (!group->mSpatialPartition->isBridge())  				{ -					LLFace* face = drawable->getFace(i); -					if (face) +					gGL.pushMatrix(); +					LLVector3 trans = drawable->getRegion()->getOriginAgent(); +					gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]); +					renderPhysicsShape(drawable, volume); +					gGL.popMatrix(); +				} +				else +				{ +					renderPhysicsShape(drawable, volume); +				} +			} +			else +			{ +				LLViewerObject* object = drawable->getVObj(); +				if (object && object->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH) +				{ +					gGL.pushMatrix(); +					gGL.multMatrix((F32*) object->getRegion()->mRenderMatrix.mMatrix); +					//push face vertices for terrain +					for (S32 i = 0; i < drawable->getNumFaces(); ++i)  					{ -						LLVertexBuffer* buff = face->getVertexBuffer(); -						if (buff) +						LLFace* face = drawable->getFace(i); +						if (face)  						{ -							glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); +							LLVertexBuffer* buff = face->getVertexBuffer(); +							if (buff) +							{ +								glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -							buff->setBuffer(LLVertexBuffer::MAP_VERTEX); -							gGL.diffuseColor3f(0.2f, 0.5f, 0.3f); -							buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0); +								buff->setBuffer(LLVertexBuffer::MAP_VERTEX); +								gGL.diffuseColor3f(0.2f, 0.5f, 0.3f); +								buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0); -							gGL.diffuseColor3f(0.2f, 1.f, 0.3f); -							glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -							buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0); +								gGL.diffuseColor3f(0.2f, 1.f, 0.3f); +								glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); +								buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0); +							}  						}  					} +					gGL.popMatrix();  				} -				gGL.popMatrix();  			}  		}  	} diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 0e3007724b..0e3007724b 100644..100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h index 760e38890b..760e38890b 100644..100755 --- a/indra/newview/llstartup.h +++ b/indra/newview/llstartup.h diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 7de66b139f..7de66b139f 100755..100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 16c42dbd43..16c42dbd43 100644..100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index a0c12df834..33bdc8ddcd 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -121,7 +121,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)  BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask)  {  	// don't pick transparent so users can't "pay" transparent objects -	mPick = gViewerWindow->pickImmediate(x, y, FALSE); +	mPick = gViewerWindow->pickImmediate(x, y, FALSE, TRUE);  	mPick.mKeyMask = mask;  	// claim not handled so UI focus stays same @@ -1711,6 +1711,13 @@ BOOL LLToolPie::handleRightClickPick()  			showVisualContextMenuEffect();  		}  	} +	else if (mPick.mParticleOwnerID.notNull()) +	{ +		if (gMenuMuteParticle && mPick.mParticleOwnerID != gAgent.getID()) +		{ +			gMenuMuteParticle->show(x,y); +		} +	}  	LLTool::handleRightMouseDown(x, y, mask);  	// We handled the event. diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 93e4f4428a..0a0d084183 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -165,6 +165,7 @@ LLContextMenu	*gMenuObject = NULL;  LLContextMenu	*gMenuAttachmentSelf = NULL;  LLContextMenu	*gMenuAttachmentOther = NULL;  LLContextMenu	*gMenuLand	= NULL; +LLContextMenu	*gMenuMuteParticle = NULL;  const std::string SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents"); @@ -423,6 +424,9 @@ void init_menus()  	gMenuLand = LLUICtrlFactory::createFromFile<LLContextMenu>(  		"menu_land.xml", gMenuHolder, registry); +	gMenuMuteParticle = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_mute_particle.xml", gMenuHolder, registry); +  	///  	/// set up the colors  	/// @@ -2457,6 +2461,9 @@ void cleanup_menus()  	delete gMenuLand;  	gMenuLand = NULL; +	delete gMenuMuteParticle; +	gMenuMuteParticle = NULL; +  	delete gMenuBarView;  	gMenuBarView = NULL; @@ -2810,6 +2817,13 @@ bool enable_object_edit()  	return enable;  } +bool enable_mute_particle() +{ +	const LLPickInfo& pick = LLToolPie::getInstance()->getPick(); + +	return pick.mParticleOwnerID != LLUUID::null && pick.mParticleOwnerID != gAgent.getID(); +} +  // mutually exclusive - show either edit option or build in menu  bool enable_object_build()  { @@ -6245,6 +6259,33 @@ class LLLandEdit : public view_listener_t  	}  }; +class LLMuteParticle : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		LLUUID id = LLToolPie::getInstance()->getPick().mParticleOwnerID; +		 +		if (id.notNull()) +		{ +			std::string name; +			gCacheName->getFullName(id, name); + +			LLMute mute(id, name, LLMute::AGENT); +			if (LLMuteList::getInstance()->isMuted(mute.mID)) +			{ +				LLMuteList::getInstance()->remove(mute); +			} +			else +			{ +				LLMuteList::getInstance()->add(mute); +				LLPanelBlockedList::showPanelAndSelect(mute.mID); +			} +		} + +		return true; +	} +}; +  class LLWorldEnableBuyLand : public view_listener_t  {  	bool handleEvent(const LLSD& userdata) @@ -8657,6 +8698,9 @@ void initialize_menus()  	view_listener_t::addMenu(new LLLandBuyPass(), "Land.BuyPass");  	view_listener_t::addMenu(new LLLandEdit(), "Land.Edit"); +	// Particle muting +	view_listener_t::addMenu(new LLMuteParticle(), "Particle.Mute"); +  	view_listener_t::addMenu(new LLLandEnableBuyPass(), "Land.EnableBuyPass");  	commit.add("Land.Buy", boost::bind(&handle_buy_land)); @@ -8679,6 +8723,7 @@ void initialize_menus()  	enable.add("EnablePayObject", boost::bind(&enable_pay_object));  	enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));  	enable.add("EnableEdit", boost::bind(&enable_object_edit)); +	enable.add("EnableMuteParticle", boost::bind(&enable_mute_particle));  	enable.add("VisibleBuild", boost::bind(&enable_object_build));  	commit.add("Pathfinding.Linksets.Select", boost::bind(&LLFloaterPathfindingLinksets::openLinksetsWithSelectedObjects));  	enable.add("EnableSelectInPathfindingLinksets", boost::bind(&enable_object_select_in_pathfinding_linksets)); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 2eb458fa02..87d679f54f 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -172,6 +172,7 @@ extern LLContextMenu		*gMenuObject;  extern LLContextMenu		*gMenuAttachmentSelf;  extern LLContextMenu		*gMenuAttachmentOther;  extern LLContextMenu		*gMenuLand; +extern LLContextMenu		*gMenuMuteParticle;  // Needed to build menus when attachment site list available  extern LLMenuGL* gAttachSubMenu; diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 6bd9f66b9c..61cdfd7818 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -488,9 +488,13 @@ void LLViewerPartSim::destroyClass()  //static  BOOL LLViewerPartSim::shouldAddPart()  { -	if (sParticleCount > PART_THROTTLE_THRESHOLD*sMaxParticleCount) +	if (sParticleCount >= MAX_PART_COUNT)  	{ +		return FALSE; +	} +	if (sParticleCount > PART_THROTTLE_THRESHOLD*sMaxParticleCount) +	{  		F32 frac = (F32)sParticleCount/(F32)sMaxParticleCount;  		frac -= PART_THROTTLE_THRESHOLD;  		frac *= PART_THROTTLE_RESCALE; @@ -500,7 +504,10 @@ BOOL LLViewerPartSim::shouldAddPart()  			return FALSE;  		}  	} -	if (sParticleCount >= MAX_PART_COUNT) + +	// Check frame rate, and don't add more if the viewer is really slow +	const F32 MIN_FRAME_RATE_FOR_NEW_PARTICLES = 4.f; +	if (gFPSClamped < MIN_FRAME_RATE_FOR_NEW_PARTICLES)  	{  		return FALSE;  	} diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 35839ae459..35839ae459 100644..100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 2eaa0ac92d..2eaa0ac92d 100644..100755 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b9243f3fdb..7ab98d6633 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -225,6 +225,8 @@ LLFrameTimer	gAwayTriggerTimer;  BOOL			gShowOverlayTitle = FALSE;  LLViewerObject*  gDebugRaycastObject = NULL; +LLVOPartGroup* gDebugRaycastParticle = NULL; +LLVector3		gDebugRaycastParticleIntersection;  LLVector3       gDebugRaycastIntersection;  LLVector2       gDebugRaycastTexCoord;  LLVector3       gDebugRaycastNormal; @@ -2811,6 +2813,8 @@ void LLViewerWindow::updateUI()  											  &gDebugRaycastBinormal,  											  &gDebugRaycastStart,  											  &gDebugRaycastEnd); + +		gDebugRaycastParticle = gPipeline.lineSegmentIntersectParticle(gDebugRaycastStart, gDebugRaycastEnd, &gDebugRaycastParticleIntersection, NULL);  	}  	updateMouseDelta(); @@ -3633,7 +3637,7 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback  		pick_transparent = TRUE;  	} -	LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, TRUE, callback); +	LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, FALSE, TRUE, callback);  	schedulePick(pick_info);  } @@ -3689,7 +3693,7 @@ void LLViewerWindow::returnEmptyPicks()  }  // Performs the GL object/land pick. -LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot,  BOOL pick_transparent) +LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot,  BOOL pick_transparent, BOOL pick_particle)  {  	BOOL in_build_mode = LLFloaterReg::instanceVisible("build");  	if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha) @@ -3698,10 +3702,10 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot,  BOOL pick_trans  		// "Show Debug Alpha" means no object actually transparent  		pick_transparent = TRUE;  	} - +	  	// shortcut queueing in mPicks and just update mLastPick in place  	MASK	key_mask = gKeyboard->currentMask(TRUE); -	mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, TRUE, NULL); +	mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_particle, TRUE, NULL);  	mLastPick.fetchResults();  	return mLastPick; @@ -5107,13 +5111,15 @@ LLPickInfo::LLPickInfo()  	  mNormal(),  	  mBinormal(),  	  mHUDIcon(NULL), -	  mPickTransparent(FALSE) +	  mPickTransparent(FALSE), +	  mPickParticle(FALSE)  {  }  LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,   		       MASK keyboard_mask,   		       BOOL pick_transparent, +			   BOOL pick_particle,  		       BOOL pick_uv_coords,  		       void (*pick_callback)(const LLPickInfo& pick_info))  	: mMousePt(mouse_pos), @@ -5128,7 +5134,8 @@ LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,  	  mNormal(),  	  mBinormal(),  	  mHUDIcon(NULL), -	  mPickTransparent(pick_transparent) +	  mPickTransparent(pick_transparent), +	  mPickParticle(pick_particle)  {  } @@ -5142,20 +5149,34 @@ void LLPickInfo::fetchResults()  	LLHUDIcon* hit_icon = gViewerWindow->cursorIntersectIcon(mMousePt.mX, mMousePt.mY, 512.f, &intersection);  	F32 icon_dist = 0.f; +	LLVector3 start; +	LLVector3 end; +	LLVector3 particle_end; +  	if (hit_icon)  	{  		icon_dist = (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec();  	}  	LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f,  									NULL, -1, mPickTransparent, &face_hit, -									&intersection, &uv, &normal, &binormal); +									&intersection, &uv, &normal, &binormal, &start, &end);  	mPickPt = mMousePt;  	U32 te_offset = face_hit > -1 ? face_hit : 0; -	//unproject relative clicked coordinate from window coordinate using GL -	 +	if (mPickParticle) +	{ //get the end point of line segement to use for particle raycast +		if (hit_object) +		{ +			particle_end = intersection; +		} +		else +		{ +			particle_end = end; +		} +	} +  	LLViewerObject* objectp = hit_object;  	if (hit_icon &&  @@ -5166,6 +5187,7 @@ void LLPickInfo::fetchResults()  		mHUDIcon = hit_icon;  		mPickType = PICK_ICON;  		mPosGlobal = mHUDIcon->getPositionGlobal(); +  	}  	else if (objectp)  	{ @@ -5210,6 +5232,18 @@ void LLPickInfo::fetchResults()  		}  	} +	if (mPickParticle) +	{ //search for closest particle to click origin out to intersection point +		S32 part_face = -1; + +		LLVOPartGroup* group = gPipeline.lineSegmentIntersectParticle(start, particle_end, NULL, &part_face); +		if (group) +		{ +			mParticleOwnerID = group->getPartOwner(part_face); +			mParticleSourceID = group->getPartSource(part_face); +		} +	} +  	if (mPickCallback)  	{  		mPickCallback(*this); diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 5f475fe145..35ed25ba9c 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -64,6 +64,7 @@ class LLWindow;  class LLRootView;  class LLWindowListener;  class LLViewerWindowListener; +class LLVOPartGroup;  class LLPopupView;  #define PICK_HALF_WIDTH 5 @@ -86,7 +87,8 @@ public:  	LLPickInfo();  	LLPickInfo(const LLCoordGL& mouse_pos,   		MASK keyboard_mask,  -		BOOL pick_transparent,  +		BOOL pick_transparent, +		BOOL pick_particle,  		BOOL pick_surface_info,  		void (*pick_callback)(const LLPickInfo& pick_info)); @@ -107,6 +109,8 @@ public:  	LLVector3d		mPosGlobal;  	LLVector3		mObjectOffset;  	LLUUID			mObjectID; +	LLUUID			mParticleOwnerID; +	LLUUID			mParticleSourceID;  	S32				mObjectFace;  	LLHUDIcon*		mHUDIcon;  	LLVector3       mIntersection; @@ -116,6 +120,7 @@ public:  	LLVector3		mNormal;  	LLVector3		mBinormal;  	BOOL			mPickTransparent; +	BOOL			mPickParticle;  	void		    getSurfaceInfo();  private: @@ -354,7 +359,7 @@ public:  	void			returnEmptyPicks();  	void			pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE); -	LLPickInfo		pickImmediate(S32 x, S32 y, BOOL pick_transparent); +	LLPickInfo		pickImmediate(S32 x, S32 y, BOOL pick_transparent, BOOL pick_particle = FALSE);  	LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,  										   LLVector3* intersection); @@ -494,6 +499,8 @@ extern LLFrameTimer		gAwayTimer;				// tracks time before setting the avatar awa  extern LLFrameTimer		gAwayTriggerTimer;		// how long the avatar has been away  extern LLViewerObject*  gDebugRaycastObject; +extern LLVOPartGroup*	gDebugRaycastParticle; +extern LLVector3		gDebugRaycastParticleIntersection;  extern LLVector3        gDebugRaycastIntersection;  extern LLVector2        gDebugRaycastTexCoord;  extern LLVector3        gDebugRaycastNormal; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 62e93b7a53..62e93b7a53 100644..100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index e32fd3c3c8..e32fd3c3c8 100644..100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index fa34a6f1f5..1a9769f09d 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -232,6 +232,37 @@ LLDrawable* LLVOPartGroup::createDrawable(LLPipeline *pipeline)   const F32 MAX_PARTICLE_AREA_SCALE = 0.02f; // some tuned constant, limits on how much particle area to draw + LLUUID LLVOPartGroup::getPartOwner(S32 idx) + { +	 LLUUID ret = LLUUID::null; + +	 if (idx < (S32) mViewerPartGroupp->mParticles.size()) +	 { +		 ret = mViewerPartGroupp->mParticles[idx]->mPartSourcep->getOwnerUUID(); +	 } + +	 return ret; + } + + LLUUID LLVOPartGroup::getPartSource(S32 idx) + { +	 LLUUID ret = LLUUID::null; + +	 if (idx < (S32) mViewerPartGroupp->mParticles.size()) +	 { +		 LLViewerPart* part = mViewerPartGroupp->mParticles[idx]; +		 if (part && part->mPartSourcep.notNull() && +			 part->mPartSourcep->mSourceObjectp.notNull()) +		 { +			 LLViewerObject* source = part->mPartSourcep->mSourceObjectp; +			 ret = source->getID(); +		 } +	 } + +	 return ret; + } + +  F32 LLVOPartGroup::getPartSize(S32 idx)  {  	if (idx < (S32) mViewerPartGroupp->mParticles.size()) @@ -385,20 +416,68 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)  	return TRUE;  } -void LLVOPartGroup::getGeometry(S32 idx, -								LLStrider<LLVector4a>& verticesp, -								LLStrider<LLVector3>& normalsp,  -								LLStrider<LLVector2>& texcoordsp, -								LLStrider<LLColor4U>& colorsp,  -								LLStrider<U16>& indicesp) + +BOOL LLVOPartGroup::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, +										  S32 face, +										  BOOL pick_transparent, +										  S32* face_hit, +										  LLVector3* intersection, +										  LLVector2* tex_coord, +										  LLVector3* normal, +										  LLVector3* bi_normal)  { -	if (idx >= (S32) mViewerPartGroupp->mParticles.size()) +	LLVector4a starta, enda; +	starta.load3(start.mV); +	enda.load3(end.mV); + +	LLVector4a dir; +	dir.setSub(enda, starta); + +	F32 closest_t = 2.f; +	BOOL ret = FALSE; +	 +	for (U32 idx = 0; idx < mViewerPartGroupp->mParticles.size(); ++idx)  	{ -		return; +		const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx])); + +		LLVector4a v[4]; +		LLStrider<LLVector4a> verticesp; +		verticesp = v; +		 +		getGeometry(part, verticesp); + +		F32 a,b,t; +		if (LLTriangleRayIntersect(v[0], v[1], v[2], starta, dir, a,b,t) || +			LLTriangleRayIntersect(v[1], v[3], v[2], starta, dir, a,b,t)) +		{ +			if (t >= 0.f && +				t <= 1.f && +				t < closest_t) +			{ +				ret = TRUE; +				closest_t = t; +				if (face_hit) +				{ +					*face_hit = idx; +				} + +				if (intersection) +				{ +					LLVector4a intersect = dir; +					intersect.mul(closest_t); +					intersect.add(starta); +					intersection->set(intersect.getF32ptr()); +				} +			} +		}  	} -	const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx])); +	return ret; +} +void LLVOPartGroup::getGeometry(const LLViewerPart& part, +								LLStrider<LLVector4a>& verticesp) +{  	LLVector4a part_pos_agent;  	part_pos_agent.load3(part.mPosAgent.mV);  	LLVector4a camera_agent; @@ -449,8 +528,6 @@ void LLVOPartGroup::getGeometry(S32 idx,  	up.mul(0.5f*part.mScale.mV[1]); -	LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis(); -  	//HACK -- the verticesp->mV[3] = 0.f here are to set the texture index to 0 (particles don't use texture batching, maybe they should)  	// this works because there is actually a 4th float stored after the vertex position which is used as a texture index  	// also, somebody please VECTORIZE THIS @@ -469,6 +546,25 @@ void LLVOPartGroup::getGeometry(S32 idx,  	(*verticesp++).getF32ptr()[3] = 0.f;  	verticesp->setAdd(ppamu, right);  	(*verticesp++).getF32ptr()[3] = 0.f; +} + + +								 +void LLVOPartGroup::getGeometry(S32 idx, +								LLStrider<LLVector4a>& verticesp, +								LLStrider<LLVector3>& normalsp,  +								LLStrider<LLVector2>& texcoordsp, +								LLStrider<LLColor4U>& colorsp,  +								LLStrider<U16>& indicesp) +{ +	if (idx >= (S32) mViewerPartGroupp->mParticles.size()) +	{ +		return; +	} +	 +	const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx])); + +	getGeometry(part, verticesp);  	*colorsp++ = part.mColor;  	*colorsp++ = part.mColor; @@ -477,6 +573,7 @@ void LLVOPartGroup::getGeometry(S32 idx,  	if (!(part.mFlags & LLPartData::LL_PART_EMISSIVE_MASK))  	{ //not fullbright, needs normal +		LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis();  		*normalsp++   = normal;  		*normalsp++   = normal;  		*normalsp++   = normal; diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h index 42c1252d01..ce05a0282e 100644 --- a/indra/newview/llvopartgroup.h +++ b/indra/newview/llvopartgroup.h @@ -69,11 +69,23 @@ public:  	virtual void updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax);  	virtual U32 getPartitionType() const; +	/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, +										  S32 face, +										  BOOL pick_transparent, +										  S32* face_hit, +										  LLVector3* intersection, +										  LLVector2* tex_coord, +										  LLVector3* normal, +										  LLVector3* bi_normal); +  	/*virtual*/ void setPixelAreaAndAngle(LLAgent &agent);  	/*virtual*/ void updateTextures();  	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);  	/*virtual*/ BOOL        updateGeometry(LLDrawable *drawable); +	void		getGeometry(const LLViewerPart& part,							 +								LLStrider<LLVector4a>& verticesp); +				  				void		getGeometry(S32 idx,  								LLStrider<LLVector4a>& verticesp,  								LLStrider<LLVector3>& normalsp,  @@ -83,6 +95,9 @@ public:  	void updateFaceSize(S32 idx) { }  	F32 getPartSize(S32 idx); +	LLUUID getPartOwner(S32 idx); +	LLUUID getPartSource(S32 idx); +  	void setViewerPartGroup(LLViewerPartGroup *part_groupp)		{ mViewerPartGroupp = part_groupp; }  	LLViewerPartGroup* getViewerPartGroup()	{ return mViewerPartGroupp; } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 75f5e16452..4306b3da12 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -4586,18 +4586,6 @@ void LLPipeline::renderPhysicsDisplay()  		}  	} -	for (LLCullResult::bridge_iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i) -	{ -		LLSpatialBridge* bridge = *i; -		if (!bridge->isDead() && hasRenderType(bridge->mDrawableType)) -		{ -			gGL.pushMatrix(); -			gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix); -			bridge->renderPhysicsShapes(); -			gGL.popMatrix(); -		} -	} -  	gGL.flush();  	if (LLGLSLShader::sNoFixedFunction) @@ -5023,6 +5011,42 @@ void LLPipeline::renderDebug()  		gUIProgram.bind();  	} +	if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_RAYCAST) && !hud_only) +	{ //draw crosshairs on particle intersection +		if (gDebugRaycastParticle) +		{ +			if (LLGLSLShader::sNoFixedFunction) +			{ //this debug display requires shaders +				gDebugProgram.bind(); + +				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + +				LLVector3 center = gDebugRaycastParticleIntersection; +				LLVector3 size(0.1f, 0.1f, 0.1f); + +				LLVector3 p[6]; + +				p[0] = center + size.scaledVec(LLVector3(1,0,0)); +				p[1] = center + size.scaledVec(LLVector3(-1,0,0)); +				p[2] = center + size.scaledVec(LLVector3(0,1,0)); +				p[3] = center + size.scaledVec(LLVector3(0,-1,0)); +				p[4] = center + size.scaledVec(LLVector3(0,0,1)); +				p[5] = center + size.scaledVec(LLVector3(0,0,-1)); +				 +				gGL.begin(LLRender::LINES); +				gGL.diffuseColor3f(1.f, 1.f, 0.f); +				for (U32 i = 0; i < 6; i++) +				{ +					gGL.vertex3fv(p[i].mV); +				} +				gGL.end(); +				gGL.flush(); + +				gDebugProgram.unbind(); +			} +		} +	} +  	if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))  	{  		LLVertexBuffer::unbind(); @@ -6600,6 +6624,48 @@ BOOL LLPipeline::getRenderHighlights(void*)  	return sRenderHighlight;  } +LLVOPartGroup* LLPipeline::lineSegmentIntersectParticle(const LLVector3& start, const LLVector3& end, LLVector3* intersection, +														S32* face_hit) +{ +	LLVector3 local_end = end; + +	LLVector3 position; + +	LLDrawable* drawable = NULL; + +	for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();  +			iter != LLWorld::getInstance()->getRegionList().end(); ++iter) +	{ +		LLViewerRegion* region = *iter; + +		LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_PARTICLE); +		if (part && hasRenderType(part->mDrawableType)) +		{ +			LLDrawable* hit = part->lineSegmentIntersect(start, local_end, TRUE, face_hit, &position, NULL, NULL, NULL); +			if (hit) +			{ +				drawable = hit; +				local_end = position;						 +			} +		} +	} + +	LLVOPartGroup* ret = NULL; +	if (drawable) +	{ +		//make sure we're returning an LLVOPartGroup +		llassert(drawable->getVObj()->getPCode() == LLViewerObject::LL_VO_PART_GROUP); +		ret = (LLVOPartGroup*) drawable->getVObj().get(); +	} +		 +	if (intersection) +	{ +		*intersection = position; +	} + +	return ret; +} +  LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start, const LLVector3& end,  														BOOL pick_transparent,												  														S32* face_hit, diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 9e113289fc..4d32e47433 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -57,6 +57,7 @@ class LLRenderFunc;  class LLCubeMap;  class LLCullResult;  class LLVOAvatar; +class LLVOPartGroup;  class LLGLSLShader;  class LLCurlRequest; @@ -193,6 +194,12 @@ public:  												LLVector3* normal = NULL,               // return the surface normal at the intersection point  												LLVector3* bi_normal = NULL             // return the surface bi-normal at the intersection point    		); + +	//get the closest particle to start between start and end, returns the LLVOPartGroup and particle index +	LLVOPartGroup* lineSegmentIntersectParticle(const LLVector3& start, const LLVector3& end, LLVector3* intersection, +														S32* face_hit); + +  	LLViewerObject* lineSegmentIntersectInHUD(const LLVector3& start, const LLVector3& end,  											  BOOL pick_transparent,  											  S32* face_hit,                          // return the face hit diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index b46b62ec4d..00d4b1dab1 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -104,4 +104,15 @@           <menu_item_call.on_enable            function="Object.EnableInspect" />     </menu_item_call> +  <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index b8128da358..73c9e8a9d8 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -135,4 +135,15 @@ name="Edit Outfit">      <menu_item_call.on_enable       function="Attachment.EnableDrop" />    </menu_item_call> +  <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index 276b5f106f..73fa086f28 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -95,4 +95,15 @@          <menu_item_call.on_enable           function="EnablePayAvatar" />      </menu_item_call> +  <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index d9bdfece38..ed35e5e771 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -261,4 +261,15 @@              <menu_item_call.on_visible               function="IsGodCustomerService"/>      </menu_item_call> +  <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml index cc6d8ad9c1..7b40e89535 100644 --- a/indra/newview/skins/default/xui/en/menu_land.xml +++ b/indra/newview/skins/default/xui/en/menu_land.xml @@ -61,4 +61,15 @@          <menu_item_call.on_enable           function="EnableEdit" />      </menu_item_call> +   <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_mute_particle.xml b/indra/newview/skins/default/xui/en/menu_mute_particle.xml new file mode 100644 index 0000000000..41d5613623 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_mute_particle.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu + layout="topleft" + name="Mute Particle Pie"> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index f6004621a6..97b24d2aba 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -196,4 +196,15 @@      <menu_item_call.on_enable          function="Object.EnableDelete" />    </menu_item_call> +  <menu_item_separator +       layout="topleft" /> +  <menu_item_call +     enabled="false" +     label="Mute Particle Owner" +     name="Mute Particle"> +    <menu_item_call.on_click +     function="Particle.Mute" /> +    <menu_item_call.on_enable +     function="EnableMuteParticle" /> +  </menu_item_call>  </context_menu> | 
