summaryrefslogtreecommitdiff
path: root/indra/newview/tests
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/tests')
-rw-r--r--indra/newview/tests/gpus_results.txt1726
-rw-r--r--indra/newview/tests/gpus_seen.txt2422
-rw-r--r--indra/newview/tests/llcapabilitylistener_test.cpp3
-rw-r--r--indra/newview/tests/lldir_stub.cpp62
-rw-r--r--indra/newview/tests/llglslshader_stub.cpp39
-rw-r--r--indra/newview/tests/lllogininstance_test.cpp49
-rw-r--r--indra/newview/tests/llpipeline_stub.cpp32
-rw-r--r--indra/newview/tests/llremoteparcelrequest_test.cpp268
-rw-r--r--indra/newview/tests/llsechandler_basic_test.cpp3
-rw-r--r--indra/newview/tests/llsimplestat_test.cpp580
-rw-r--r--indra/newview/tests/llsky_stub.cpp37
-rw-r--r--indra/newview/tests/lltranslate_test.cpp345
-rw-r--r--indra/newview/tests/llversioninfo_test.cpp12
-rw-r--r--indra/newview/tests/llviewerassetstats_test.cpp984
-rw-r--r--indra/newview/tests/llviewerhelputil_test.cpp4
-rw-r--r--indra/newview/tests/llviewernetwork_test.cpp12
-rw-r--r--indra/newview/tests/llviewershadermgr_stub.cpp50
-rw-r--r--indra/newview/tests/llwlanimator_stub.cpp29
-rw-r--r--indra/newview/tests/llwldaycycle_stub.cpp52
-rw-r--r--indra/newview/tests/llwlparammanager_test.cpp271
-rw-r--r--indra/newview/tests/llwlparamset_stub.cpp41
-rw-r--r--indra/newview/tests/llworldmap_test.cpp42
-rw-r--r--indra/newview/tests/llworldmipmap_test.cpp31
-rw-r--r--indra/newview/tests/llxmlrpclistener_test.cpp11
-rw-r--r--indra/newview/tests/test_llxmlrpc_peer.py23
25 files changed, 6924 insertions, 204 deletions
diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt
new file mode 100644
index 0000000000..68e2e688cb
--- /dev/null
+++ b/indra/newview/tests/gpus_results.txt
@@ -0,0 +1,1726 @@
+GPU String Supported? Class Recognizer
+------------------------------------------------------------------------------------------------------ ----------- ----- ------------------------------------
+ATI NO MATCH
+ATI 3D-Analyze unsupported 0 ATI 3D-Analyze
+ATI ASUS A9xxx supported 1 ATI ASUS A9xxx
+ATI ASUS AH24xx supported 1 ATI ASUS AH24xx
+ATI ASUS AH26xx supported 3 ATI ASUS AH26xx
+ATI ASUS AH34xx supported 1 ATI ASUS AH34xx
+ATI ASUS AH36xx supported 3 ATI ASUS AH36xx
+ATI ASUS AH46xx supported 3 ATI ASUS AH46xx
+ATI ASUS AX3xx supported 1 ATI ASUS AX3xx
+ATI ASUS AX5xx supported 1 ATI ASUS AX5xx
+ATI ASUS AX8xx supported 2 ATI ASUS AX8xx
+ATI ASUS EAH38xx supported 3 ATI ASUS EAH38xx
+ATI ASUS EAH43xx supported 1 ATI ASUS EAH43xx
+ATI ASUS EAH45xx supported 1 ATI ASUS EAH45xx
+ATI ASUS EAH48xx supported 3 ATI ASUS EAH48xx
+ATI ASUS EAH57xx supported 3 ATI ASUS EAH57xx
+ATI ASUS EAH58xx supported 3 ATI ASUS EAH58xx
+ATI ASUS X1xxx supported 3 ATI ASUS Radeon X1xxx
+ATI All-in-Wonder 9xxx supported 1 ATI All-in-Wonder 9xxx
+ATI All-in-Wonder HD supported 1 ATI All-in-Wonder HD
+ATI All-in-Wonder PCI-E supported 1 ATI All-in-Wonder PCI-E
+ATI All-in-Wonder X1800 supported 3 ATI All-in-Wonder X1800
+ATI All-in-Wonder X1900 supported 3 ATI All-in-Wonder X1900
+ATI All-in-Wonder X600 supported 1 ATI All-in-Wonder X600
+ATI All-in-Wonder X800 supported 2 ATI All-in-Wonder X800
+ATI Diamond X1xxx supported 1 ATI Radeon X1xxx
+ATI Display Adapter supported 0 ATI Display Adapter
+ATI FireGL supported 0 ATI FireGL
+ATI FireGL 5200 supported 0 ATI FireGL
+ATI FireGL 5xxx supported 0 ATI FireGL
+ATI FireMV supported 0 ATI FireMV
+ATI Generic unsupported 0 ATI Generic
+ATI Hercules 9800 supported 1 ATI Hercules 9800
+ATI IGP 340M unsupported 0 ATI IGP 340M
+ATI M52 supported 1 ATI M52
+ATI M54 supported 1 ATI M54
+ATI M56 supported 1 ATI M56
+ATI M71 supported 1 ATI M71
+ATI M72 supported 1 ATI M72
+ATI M76 supported 3 ATI M76
+ATI Mobility Radeon supported 0 ATI Radeon
+ATI Mobility Radeon 7xxx supported 0 ATI Mobility Radeon 7xxx
+ATI Mobility Radeon 9600 supported 0 ATI Mobility Radeon 9600
+ATI Mobility Radeon 9700 supported 1 ATI Mobility Radeon 9700
+ATI Mobility Radeon 9800 supported 1 ATI Mobility Radeon 9800
+ATI Mobility Radeon HD 2300 supported 1 ATI Mobility Radeon HD 2300
+ATI Mobility Radeon HD 2400 supported 1 ATI Mobility Radeon HD 2400
+ATI Mobility Radeon HD 2600 supported 3 ATI Mobility Radeon HD 2600
+ATI Mobility Radeon HD 2700 supported 3 ATI Mobility Radeon HD 2700
+ATI Mobility Radeon HD 3400 supported 2 ATI Mobility Radeon HD 3400
+ATI Mobility Radeon HD 3600 supported 3 ATI Mobility Radeon HD 3600
+ATI Mobility Radeon HD 3800 supported 3 ATI Mobility Radeon HD 3800
+ATI Mobility Radeon HD 4200 supported 2 ATI Mobility Radeon HD 4200
+ATI Mobility Radeon HD 4300 supported 2 ATI Mobility Radeon HD 4300
+ATI Mobility Radeon HD 4500 supported 3 ATI Mobility Radeon HD 4500
+ATI Mobility Radeon HD 4600 supported 3 ATI Mobility Radeon HD 4600
+ATI Mobility Radeon HD 4800 supported 3 ATI Mobility Radeon HD 4800
+ATI Mobility Radeon HD 5400 supported 3 ATI Mobility Radeon HD 5400
+ATI Mobility Radeon HD 5600 supported 3 ATI Mobility Radeon HD 5600
+ATI Mobility Radeon X1xxx supported 1 ATI Radeon X1xxx
+ATI Mobility Radeon X2xxx supported 1 ATI Radeon X2xxx
+ATI Mobility Radeon X3xx supported 0 ATI Radeon X300
+ATI Mobility Radeon X6xx supported 1 ATI Radeon X600
+ATI Mobility Radeon X7xx supported 1 ATI Radeon X700
+ATI Mobility Radeon Xxxx supported 0 ATI Radeon
+ATI RV380 supported 0 ATI RV380
+ATI RV530 supported 1 ATI RV530
+ATI Radeon 2100 supported 0 ATI Radeon 2100
+ATI Radeon 3000 supported 0 ATI Radeon 3000
+ATI Radeon 3100 supported 1 ATI Radeon 3100
+ATI Radeon 7000 supported 0 ATI Radeon 7xxx
+ATI Radeon 7xxx supported 0 ATI Radeon 7xxx
+ATI Radeon 8xxx supported 0 ATI Radeon 8xxx
+ATI Radeon 9000 supported 0 ATI Radeon 9000
+ATI Radeon 9100 supported 0 ATI Radeon 9100
+ATI Radeon 9200 supported 0 ATI Radeon 9200
+ATI Radeon 9500 supported 0 ATI Radeon 9500
+ATI Radeon 9600 supported 0 ATI Radeon 9600
+ATI Radeon 9700 supported 1 ATI Radeon 9700
+ATI Radeon 9800 supported 1 ATI Radeon 9800
+ATI Radeon HD 2300 supported 0 ATI Radeon HD 2300
+ATI Radeon HD 2400 supported 1 ATI Radeon HD 2400
+ATI Radeon HD 2600 supported 2 ATI Radeon HD 2600
+ATI Radeon HD 2900 supported 3 ATI Radeon HD 2900
+ATI Radeon HD 3000 supported 0 ATI Radeon HD 3000
+ATI Radeon HD 3100 supported 1 ATI Radeon HD 3100
+ATI Radeon HD 3200 supported 1 ATI Radeon HD 3200
+ATI Radeon HD 3300 supported 1 ATI Radeon HD 3300
+ATI Radeon HD 3400 supported 1 ATI Radeon HD 3400
+ATI Radeon HD 3600 supported 3 ATI Radeon HD 3600
+ATI Radeon HD 3800 supported 3 ATI Radeon HD 3800
+ATI Radeon HD 4200 supported 1 ATI Radeon HD 4200
+ATI Radeon HD 4300 supported 1 ATI Radeon HD 4300
+ATI Radeon HD 4500 supported 3 ATI Radeon HD 4500
+ATI Radeon HD 4600 supported 3 ATI Radeon HD 4600
+ATI Radeon HD 4700 supported 3 ATI Radeon HD 4700
+ATI Radeon HD 4800 supported 3 ATI Radeon HD 4800
+ATI Radeon HD 5400 supported 3 ATI Radeon HD 5400
+ATI Radeon HD 5500 supported 3 ATI Radeon HD 5500
+ATI Radeon HD 5600 supported 3 ATI Radeon HD 5600
+ATI Radeon HD 5700 supported 3 ATI Radeon HD 5700
+ATI Radeon HD 5800 supported 3 ATI Radeon HD 5800
+ATI Radeon HD 5900 supported 3 ATI Radeon HD 5900
+ATI Radeon HD 6200 supported 3 ATI Radeon HD 6200
+ATI Radeon HD 6300 supported 3 ATI Radeon HD 6300
+ATI Radeon HD 6500 supported 3 ATI Radeon HD 6500
+ATI Radeon HD 6800 supported 3 ATI Radeon HD 6800
+ATI Radeon HD 6900 supported 3 ATI Radeon HD 6900
+ATI Radeon OpenGL unsupported 0 ATI Radeon OpenGL
+ATI Radeon RV250 supported 0 ATI Radeon RV250
+ATI Radeon RV600 supported 1 ATI Radeon RV600
+ATI Radeon RX9550 supported 1 ATI Radeon RX9550
+ATI Radeon VE unsupported 0 ATI Radeon VE
+ATI Radeon X1000 supported 1 ATI Radeon X1xxx
+ATI Radeon X1200 supported 1 ATI Radeon X1xxx
+ATI Radeon X1300 supported 1 ATI Radeon X13xx
+ATI Radeon X13xx supported 1 ATI Radeon X13xx
+ATI Radeon X1400 supported 1 ATI Radeon X1xxx
+ATI Radeon X1500 supported 2 ATI Radeon X15xx
+ATI Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Radeon X16xx supported 2 ATI Radeon X16xx
+ATI Radeon X1700 supported 2 ATI Radeon X17xx
+ATI Radeon X1800 supported 3 ATI Radeon X18xx
+ATI Radeon X1900 supported 3 ATI Radeon X19xx
+ATI Radeon X19xx supported 3 ATI Radeon X19xx
+ATI Radeon X1xxx supported 1 ATI Radeon X1xxx
+ATI Radeon X300 supported 0 ATI Radeon X300
+ATI Radeon X500 supported 0 ATI Radeon X500
+ATI Radeon X600 supported 1 ATI Radeon X600
+ATI Radeon X700 supported 1 ATI Radeon X700
+ATI Radeon X7xx supported 1 ATI Radeon X700
+ATI Radeon X800 supported 2 ATI Radeon X800
+ATI Radeon Xpress supported 0 ATI Radeon Xpress
+ATI Rage 128 supported 0 ATI Rage 128
+ATI Technologies Inc. supported 0 ATI Technologies
+ATI Technologies Inc. x86 supported 0 ATI Technologies
+ATI Technologies Inc. x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730 supported 3 ATI Mobility Radeon HD 5700
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. AMD 760G supported 1 ATI 760G/Radeon 3000
+ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1) supported 1 ATI 760G/Radeon 3000
+ATI Technologies Inc. AMD 780L supported 1 ATI 780L/Radeon 3000
+ATI Technologies Inc. AMD FirePro 2270 supported 1 ATI FirePro 2000
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100 supported 1 ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD RADEON HD 6350 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD RADEON HD 6450 supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. AMD RADEON HD 6670 supported 3 ATI Radeon HD 6600
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series supported 0 ATI Technologies
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6300M Series supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310M supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6330M supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6350 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6370M supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6400M Series supported 3 ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon HD 6450 supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. AMD Radeon HD 6470M supported 3 ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon HD 6490M supported 3 ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon HD 6500 Series supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6500M Series supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6530M supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6550M supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6570 supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6570M supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6600 Series supported 3 ATI Radeon HD 6600
+ATI Technologies Inc. AMD Radeon HD 6600M Series supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6630M supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6650M supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6670 supported 3 ATI Radeon HD 6600
+ATI Technologies Inc. AMD Radeon HD 6700 Series supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6750 supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6750M supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6770 supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6770M supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6800 Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6800M Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6850 supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6850M supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6870 supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6870M supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6900 Series supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon HD 6900M Series supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon HD 6970M supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon HD 6990 supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M supported 3 ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G supported 3 ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G supported 3 ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. ASUS 5870 Eyefinity 6 supported 0 ATI Technologies
+ATI Technologies Inc. ASUS A9550 Series supported 1 ATI ASUS A9xxx
+ATI Technologies Inc. ASUS AH2600 Series supported 3 ATI ASUS AH26xx
+ATI Technologies Inc. ASUS AH3450 Series supported 1 ATI ASUS AH34xx
+ATI Technologies Inc. ASUS AH3650 Series supported 3 ATI ASUS AH36xx
+ATI Technologies Inc. ASUS AH4650 Series supported 3 ATI ASUS AH46xx
+ATI Technologies Inc. ASUS ARES supported 3 ATI ASUS ARES
+ATI Technologies Inc. ASUS EAH2900 Series supported 3 ATI ASUS EAH29xx
+ATI Technologies Inc. ASUS EAH3450 Series supported 1 ATI ASUS AH34xx
+ATI Technologies Inc. ASUS EAH3650 Series supported 3 ATI ASUS AH36xx
+ATI Technologies Inc. ASUS EAH4350 series supported 1 ATI ASUS EAH43xx
+ATI Technologies Inc. ASUS EAH4550 series supported 1 ATI ASUS EAH45xx
+ATI Technologies Inc. ASUS EAH4650 series supported 3 ATI ASUS AH46xx
+ATI Technologies Inc. ASUS EAH4670 series supported 3 ATI ASUS AH46xx
+ATI Technologies Inc. ASUS EAH4750 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH4770 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH4770 series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH4850 series supported 3 ATI ASUS EAH48xx
+ATI Technologies Inc. ASUS EAH5450 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH5550 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH5570 series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH5670 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH5750 Series supported 3 ATI ASUS EAH57xx
+ATI Technologies Inc. ASUS EAH5770 Series supported 3 ATI ASUS EAH57xx
+ATI Technologies Inc. ASUS EAH5830 Series supported 3 ATI ASUS EAH58xx
+ATI Technologies Inc. ASUS EAH5850 Series supported 3 ATI ASUS EAH58xx
+ATI Technologies Inc. ASUS EAH5870 Series supported 3 ATI ASUS EAH58xx
+ATI Technologies Inc. ASUS EAH5970 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH6450 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6570 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6670 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6850 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6870 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6950 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6970 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAHG4670 series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS Extreme AX600 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS Extreme AX600XT-TD supported 0 ATI Technologies
+ATI Technologies Inc. ASUS X1300 Series x86/SSE2 supported 3 ATI ASUS Radeon X1xxx
+ATI Technologies Inc. ASUS X1550 Series supported 3 ATI ASUS Radeon X1xxx
+ATI Technologies Inc. ASUS X1950 Series x86/SSE2 supported 3 ATI ASUS Radeon X1xxx
+ATI Technologies Inc. ASUS X800 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS X850 Series supported 0 ATI Technologies
+ATI Technologies Inc. ATI All-in-Wonder HD supported 1 ATI All-in-Wonder HD
+ATI Technologies Inc. ATI FirePro 2260 supported 1 ATI FirePro 2000
+ATI Technologies Inc. ATI FirePro 2450 supported 1 ATI FirePro 2000
+ATI Technologies Inc. ATI FirePro M5800 supported 3 ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M7740 supported 3 ATI FirePro M7740
+ATI Technologies Inc. ATI FirePro M7820 supported 3 ATI FirePro M7820
+ATI Technologies Inc. ATI FirePro V3700 (FireGL) supported 0 ATI FireGL
+ATI Technologies Inc. ATI FirePro V3800 supported 1 ATI FirePro 3000
+ATI Technologies Inc. ATI FirePro V4800 supported 2 ATI FirePro 4000
+ATI Technologies Inc. ATI FirePro V4800 (FireGL) supported 0 ATI FireGL
+ATI Technologies Inc. ATI FirePro V5800 supported 3 ATI FirePro 5000
+ATI Technologies Inc. ATI FirePro V7800 supported 3 ATI FirePro 7000
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series supported 1 ATI Mobility Radeon 9700
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300 supported 1 ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3450 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650 supported 3 ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI MOBILITY RADEON X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X300 supported 0 ATI Radeon X300
+ATI Technologies Inc. ATI MOBILITY RADEON X600 supported 1 ATI Radeon X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700 supported 1 ATI Radeon X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Mobility FireGL V5700 supported 1 ATI FireGL 5xxx
+ATI Technologies Inc. ATI Mobility Radeon 4100 supported 1 ATI Mobility Radeon 4100
+ATI Technologies Inc. ATI Mobility Radeon Graphics supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 2300 supported 1 ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 supported 1 ATI Mobility Radeon HD 2400
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT supported 1 ATI Mobility Radeon HD 2400
+ATI Technologies Inc. ATI Mobility Radeon HD 2600 supported 3 ATI Mobility Radeon HD 2600
+ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT supported 3 ATI Mobility Radeon HD 2600
+ATI Technologies Inc. ATI Mobility Radeon HD 2700 supported 3 ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3410 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3430 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3450 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3470 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2 supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3650 supported 3 ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI Mobility Radeon HD 3670 supported 3 ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4270 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4330 supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4330 Series supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series supported 2 ATI Mobility Radeon HD 4300
+ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4550 supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4570 supported 3 ATI Mobility Radeon HD 4500
+ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series supported 3 ATI Mobility Radeon HD 4600
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 supported 3 ATI Mobility Radeon HD 4600
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series supported 3 ATI Mobility Radeon HD 4600
+ATI Technologies Inc. ATI Mobility Radeon HD 4670 supported 3 ATI Mobility Radeon HD 4600
+ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series supported 3 ATI Mobility Radeon HD 4800
+ATI Technologies Inc. ATI Mobility Radeon HD 4850 supported 3 ATI Mobility Radeon HD 4800
+ATI Technologies Inc. ATI Mobility Radeon HD 4870 supported 3 ATI Mobility Radeon HD 4800
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5145 supported 3 ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 5165 supported 3 ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 530v supported 1 ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 540v supported 2 ATI Mobility Radeon HD 540v
+ATI Technologies Inc. ATI Mobility Radeon HD 5430 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 545v supported 2 ATI Mobility Radeon HD 545v
+ATI Technologies Inc. ATI Mobility Radeon HD 5470 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 550v supported 2 ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series supported 3 ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 560v supported 2 ATI Mobility Radeon HD 560v
+ATI Technologies Inc. ATI Mobility Radeon HD 5650 supported 3 ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series supported 3 ATI Mobility Radeon HD 5700
+ATI Technologies Inc. ATI Mobility Radeon HD 5730 supported 3 ATI Mobility Radeon HD 5700
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5850 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5870 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series supported 3 ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 6370 supported 3 ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 6470M supported 3 ATI Mobility Radeon HD 6400M
+ATI Technologies Inc. ATI Mobility Radeon HD 6550 supported 3 ATI Mobility Radeon HD 6500M
+ATI Technologies Inc. ATI Mobility Radeon HD 6570 supported 3 ATI Mobility Radeon HD 6500M
+ATI Technologies Inc. ATI Mobility Radeon X1300 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1400 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2 supported 2 ATI Radeon X17xx
+ATI Technologies Inc. ATI Mobility Radeon X2300 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442) supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2500 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon. HD 530v supported 1 ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO supported 1 ATI Radeon HD 3200
+ATI Technologies Inc. ATI RADEON XPRESS 1100 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon 2100 supported 0 ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100 (Microsoft - WDDM) supported 0 ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100 Graphics supported 0 ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 3000 supported 0 ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3000 Graphics supported 0 ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3100 Graphics supported 1 ATI Radeon 3100
+ATI Technologies Inc. ATI Radeon 5xxx series supported 3 ATI Radeon 5xxx
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2 supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM) supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9600 / X1050 Series supported 0 ATI Radeon 9600
+ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series supported 0 ATI Radeon 9600
+ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine supported 2 AMD CEDAR (HD 5450)
+ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine supported 3 AMD CYPRESS (HD 5800)
+ATI Technologies Inc. ATI Radeon Graphics Processor supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon HD 2200 Graphics supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon HD 2350 supported 0 ATI Radeon HD 2300
+ATI Technologies Inc. ATI Radeon HD 2400 supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 PRO supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 PRO AGP supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 Pro supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 Series supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 XT supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine supported 1 ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2600 OpenGL Engine supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2600 PRO supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2600 Pro supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2600 Series supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2600 XT supported 2 ATI Radeon HD 2600
+ATI Technologies Inc. ATI Radeon HD 2900 GT supported 3 ATI Radeon HD 2900
+ATI Technologies Inc. ATI Radeon HD 2900 XT supported 3 ATI Radeon HD 2900
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics supported 1 ATI Radeon HD 3200
+ATI Technologies Inc. ATI Radeon HD 3300 Graphics supported 1 ATI Radeon HD 3300
+ATI Technologies Inc. ATI Radeon HD 3400 Series supported 1 ATI Radeon HD 3400
+ATI Technologies Inc. ATI Radeon HD 3450 supported 1 ATI Radeon HD 3400
+ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex supported 1 ATI Radeon HD 3400
+ATI Technologies Inc. ATI Radeon HD 3470 supported 1 ATI Radeon HD 3400
+ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex supported 1 ATI Radeon HD 3400
+ATI Technologies Inc. ATI Radeon HD 3550 supported 1 ATI Radeon HD 3500
+ATI Technologies Inc. ATI Radeon HD 3600 Series supported 3 ATI Radeon HD 3600
+ATI Technologies Inc. ATI Radeon HD 3650 supported 3 ATI Radeon HD 3600
+ATI Technologies Inc. ATI Radeon HD 3650 AGP supported 3 ATI Radeon HD 3600
+ATI Technologies Inc. ATI Radeon HD 3730 supported 3 ATI Radeon HD 3700
+ATI Technologies Inc. ATI Radeon HD 3800 Series supported 3 ATI Radeon HD 3800
+ATI Technologies Inc. ATI Radeon HD 3850 supported 3 ATI Radeon HD 3800
+ATI Technologies Inc. ATI Radeon HD 3850 AGP supported 3 ATI Radeon HD 3800
+ATI Technologies Inc. ATI Radeon HD 3870 supported 3 ATI Radeon HD 3800
+ATI Technologies Inc. ATI Radeon HD 3870 X2 supported 3 ATI Radeon HD 3800
+ATI Technologies Inc. ATI Radeon HD 4200 supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4250 supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4250 Graphics supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4270 supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4290 supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample) supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4300 Series supported 1 ATI Radeon HD 4300
+ATI Technologies Inc. ATI Radeon HD 4300/4500 Series supported 1 ATI Radeon HD 4300
+ATI Technologies Inc. ATI Radeon HD 4350 supported 1 ATI Radeon HD 4300
+ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft WDDM 1.1) supported 1 ATI Radeon HD 4300
+ATI Technologies Inc. ATI Radeon HD 4450 supported 1 ATI Radeon HD 4400
+ATI Technologies Inc. ATI Radeon HD 4500 Series supported 3 ATI Radeon HD 4500
+ATI Technologies Inc. ATI Radeon HD 4550 supported 3 ATI Radeon HD 4500
+ATI Technologies Inc. ATI Radeon HD 4600 Series supported 3 ATI Radeon HD 4600
+ATI Technologies Inc. ATI Radeon HD 4650 supported 3 ATI Radeon HD 4600
+ATI Technologies Inc. ATI Radeon HD 4670 supported 3 ATI Radeon HD 4600
+ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine supported 3 ATI Radeon HD 4600
+ATI Technologies Inc. ATI Radeon HD 4700 Series supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4720 supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4730 supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4730 Series supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4750 supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4770 supported 3 ATI Radeon HD 4700
+ATI Technologies Inc. ATI Radeon HD 4800 Series supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4850 supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4850 Series supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4870 supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 4870 X2 supported 3 ATI Radeon HD 4800
+ATI Technologies Inc. ATI Radeon HD 5400 Series supported 3 ATI Radeon HD 5400
+ATI Technologies Inc. ATI Radeon HD 5450 supported 3 ATI Radeon HD 5400
+ATI Technologies Inc. ATI Radeon HD 5470 supported 3 ATI Radeon HD 5400
+ATI Technologies Inc. ATI Radeon HD 5500 Series supported 3 ATI Radeon HD 5500
+ATI Technologies Inc. ATI Radeon HD 5570 supported 3 ATI Radeon HD 5500
+ATI Technologies Inc. ATI Radeon HD 5600 Series supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5600/5700 supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5630 supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5670 supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5700 Series supported 3 ATI Radeon HD 5700
+ATI Technologies Inc. ATI Radeon HD 5750 supported 3 ATI Radeon HD 5700
+ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine supported 3 ATI Radeon HD 5700
+ATI Technologies Inc. ATI Radeon HD 5770 supported 3 ATI Radeon HD 5700
+ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine supported 3 ATI Radeon HD 5700
+ATI Technologies Inc. ATI Radeon HD 5800 Series supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Radeon HD 5850 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Radeon HD 5870 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Radeon HD 5900 Series supported 3 ATI Radeon HD 5900
+ATI Technologies Inc. ATI Radeon HD 5970 supported 3 ATI Radeon HD 5900
+ATI Technologies Inc. ATI Radeon HD 6230 supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6250 supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6350 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6390 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. ATI Radeon HD 6510 supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. ATI Radeon HD 6570M supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine supported 3 ATI Radeon HD 6600
+ATI Technologies Inc. ATI Radeon HD 6750 supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. ATI Radeon HD 6770 supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. ATI Radeon HD 6800 Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. ATI Radeon HD3750 supported 3 ATI Radeon HD 3700
+ATI Technologies Inc. ATI Radeon HD4300/HD4500 series supported 1 ATI Radeon HD 4300
+ATI Technologies Inc. ATI Radeon HD4670 supported 3 ATI Radeon HD 4600
+ATI Technologies Inc. ATI Radeon Juniper LE Prototype OpenGL Engine supported 3 AMD JUNIPER (HD 5700)
+ATI Technologies Inc. ATI Radeon RV710 Prototype OpenGL Engine supported 1 AMD RV710 (HD 4300)
+ATI Technologies Inc. ATI Radeon RV730 Prototype OpenGL Engine supported 3 AMD RV730 (HD 4600)
+ATI Technologies Inc. ATI Radeon RV770 Prototype OpenGL Engine supported 3 AMD RV770 (HD 4800)
+ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine supported 3 AMD RV790 (HD 4800)
+ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine supported 3 AMD REDWOOD (HD 5500/5600)
+ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine supported 3 AMD REDWOOD (HD 5500/5600)
+ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon X1050 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1050 Series supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1300/X1550 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine supported 3 ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X1950 GT supported 3 ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series supported 0 ATI Radeon X300
+ATI Technologies Inc. ATI Radeon Xpress 1100 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1150 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1200 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1250 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress Series supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Yamaha HD 9000 supported 0 ATI Technologies
+ATI Technologies Inc. ATi RS880M supported 1 ATI RS880M
+ATI Technologies Inc. Carte graphique VGA standard supported 0 ATI Technologies
+ATI Technologies Inc. Diamond Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. EG JUNIPER supported 3 AMD JUNIPER (HD 5700)
+ATI Technologies Inc. EG PARK supported 3 AMD PARK
+ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2) supported 0 ATI FireGL
+ATI Technologies Inc. FireMV 2400 PCI DDR x86 supported 0 ATI FireMV
+ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2 supported 0 ATI FireMV
+ATI Technologies Inc. GeCube Radeon X1550 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. GeForce 9600 GT x86/SSE2 supported 2 ATI Geforce 9600 GT
+ATI Technologies Inc. Geforce 9500 GT supported 2 ATI Geforce 9500 GT
+ATI Technologies Inc. Geforce 9500GT supported 2 ATI Geforce 9500 GT
+ATI Technologies Inc. Geforce 9800 GT supported 2 ATI Geforce 9800 GT
+ATI Technologies Inc. HD3730 supported 0 ATI Technologies
+ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series supported 0 ATI Radeon 9500
+ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO supported 0 ATI Technologies
+ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. M76M supported 3 ATI M76
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2 supported 0 ATI Mobility Radeon 7xxx
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2 supported 0 ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Radeon 9100
+ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2 supported 0 ATI Mobility Radeon 9600
+ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2 supported 1 ATI Mobility Radeon 9700
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2 supported 1 ATI Radeon X600
+ATI Technologies Inc. MOBILITY RADEON X700 SE x86 supported 1 ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2 supported 1 ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. MSI RX9550SE supported 1 ATI Radeon RX9550
+ATI Technologies Inc. MSI Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Mobility Radeon HD 6000 series supported 0 ATI Technologies
+ATI Technologies Inc. Mobility Radeon X2300 HD supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2 supported 1 ATI Radeon X2xxx
+ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. RADEON 7000 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. RADEON 7500 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Radeon 9100
+ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 DDR x86/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 PRO DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200SE DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9200SE DDR x86/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2 supported 0 ATI Radeon 9200
+ATI Technologies Inc. RADEON 9500 supported 0 ATI Radeon 9500
+ATI Technologies Inc. RADEON 9550 x86/SSE2 supported 0 ATI Radeon 9500
+ATI Technologies Inc. RADEON 9600 SERIES supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 TX x86/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 x86/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9700 PRO x86/MMX/3DNow!/SSE supported 1 ATI Radeon 9700
+ATI Technologies Inc. RADEON 9800 PRO supported 1 ATI Radeon 9800
+ATI Technologies Inc. RADEON 9800 x86/SSE2 supported 1 ATI Radeon 9800
+ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2 unsupported 0 ATI IGP 340M
+ATI Technologies Inc. RADEON X300 Series x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. RADEON X300 x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X500
+ATI Technologies Inc. RADEON X550 x86/SSE2 supported 0 ATI Radeon X500
+ATI Technologies Inc. RADEON X600 Series supported 1 ATI Radeon X600
+ATI Technologies Inc. RADEON X600 x86/SSE2 supported 1 ATI Radeon X600
+ATI Technologies Inc. RADEON X600/X550 Series supported 1 ATI Radeon X600
+ATI Technologies Inc. RADEON X700 PRO x86/SSE2 supported 1 ATI Radeon X700
+ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X800
+ATI Technologies Inc. RADEON X800 XT supported 2 ATI Radeon X800
+ATI Technologies Inc. RADEON X800GT supported 2 ATI Radeon X800
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RADEON XPRESS Series x86/SSE2 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. RS740 supported 0 ATI Technologies
+ATI Technologies Inc. RS780C supported 0 AMD RS780 (HD 3200)
+ATI Technologies Inc. RS780M supported 0 AMD RS780 (HD 3200)
+ATI Technologies Inc. RS880 supported 1 AMD RS880 (HD 4200)
+ATI Technologies Inc. RV410 Pro x86/SSE2 supported 1 ATI RV410 (X700)
+ATI Technologies Inc. RV790 supported 3 AMD RV790 (HD 4800)
+ATI Technologies Inc. Radeon (TM) HD 6470M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6490M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6750M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6770M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6850M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. Radeon 7000 SDR x86/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. Radeon 7500 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
+ATI Technologies Inc. Radeon 9000 DDR x86/SSE2 supported 0 ATI Radeon 9000
+ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon DDR
+ATI Technologies Inc. Radeon DDR x86/SSE supported 0 ATI Radeon DDR
+ATI Technologies Inc. Radeon DDR x86/SSE2 supported 0 ATI Radeon DDR
+ATI Technologies Inc. Radeon HD 6310 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. Radeon HD 6470M supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. Radeon HD 6490M supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. Radeon HD 6800 Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. Radeon SDR x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. Radeon X1300 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM) supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series x86/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/X1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2 supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2 supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series (Microsoft - WDDM) supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X300/X550/X1050 Series supported 0 ATI Radeon X300
+ATI Technologies Inc. Radeon X550/X700 Series supported 0 ATI Radeon X500
+ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X500
+ATI Technologies Inc. SAPPHIRE RADEON X300SE supported 0 ATI Radeon X300
+ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Sapphire Radeon HD 3730 supported 3 ATI Radeon HD 3700
+ATI Technologies Inc. Sapphire Radeon HD 3750 supported 3 ATI Radeon HD 3700
+ATI Technologies Inc. Standard VGA Graphics Adapter supported 0 ATI Technologies
+ATI Technologies Inc. Tul, RADEON X600 PRO supported 0 ATI Technologies
+ATI Technologies Inc. Tul, RADEON X600 PRO x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. Tul, RADEON X700 PRO supported 0 ATI Technologies
+ATI Technologies Inc. Tul, RADEON X700 PRO x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. VisionTek Radeon 4350 supported 0 ATI Technologies
+ATI Technologies Inc. VisionTek Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. WRESTLER 9802 supported 0 ATI Technologies
+ATI Technologies Inc. WRESTLER 9803 supported 0 ATI Technologies
+ATI Technologies Inc. XFX Radeon HD 4570 supported 3 ATI Radeon HD 4500
+ATI Technologies Inc. Yamaha ATI HD 9000da/s supported 0 ATI Technologies
+ATI Technologies Inc. Yamaha ATI HD 9000da/s 2048 supported 0 ATI Technologies
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS780 9612) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 0 AMD RS780 (HD 3200)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9710) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 1 AMD RS880 (HD 4200)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9712) 20090101 TCL supported 1 AMD RS880 (HD 4200)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV610 94C1) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 1 AMD RV610 (HD 2400)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV610 94C9) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV610 (HD 2400)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C4) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV620 (HD 3400)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 1 AMD RV620 (HD 3400)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV620 (HD 3400)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2 supported 3 AMD RV635 (HD 3600)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV670 (HD 3800)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV670 (HD 3800)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV710 (HD 4300)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV730 (HD 4600)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV730 (HD 4600)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9498) 20090101 TCL DRI2 supported 3 AMD RV730 (HD 4600)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9440) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV770 (HD 4800)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9442) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV770 (HD 4800)
+Alex Mohr GL Hijacker! NO MATCH
+Apple Software Renderer unsupported 0 Apple Software Renderer
+DRI R300 Project Mesa DRI R300 (RS400 5954) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
+DRI R300 Project Mesa DRI R300 (RS400 5975) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
+DRI R300 Project Mesa DRI R300 (RS400 5A62) 20090101 x86/MMX/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
+DRI R300 Project Mesa DRI R300 (RS600 7941) 20090101 x86/MMX/SSE2 NO-TCL unsupported 0 ATI RS600 (Xpress 3200)
+DRI R300 Project Mesa DRI R300 (RS690 791F) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
+DRI R300 Project Mesa DRI R300 (RV350 4151) 20090101 AGP 4x x86/MMX+/3DNow!+/SSE TCL supported 0 ATI RV350 (9600)
+DRI R300 Project Mesa DRI R300 (RV350 4153) 20090101 AGP 8x x86/MMX+/3DNow!+/SSE TCL supported 0 ATI RV350 (9600)
+DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 0 ATI RV380
+DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX/SSE2 TCL DRI2 supported 0 ATI RV380
+DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2 supported 0 ATI RV380
+DRI R300 Project Mesa DRI R300 (RV380 5B62) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 0 ATI RV380
+DRI R300 Project Mesa DRI R300 (RV515 7145) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV515 7149) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV515
+DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV530
+GPU_CLASS_UNKNOWN NO MATCH
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com supported 0 Humper
+Humper Chromium supported 0 Humper
+Imagination Technologies PowerVR SGX545 NO MATCH
+Intel NO MATCH
+Intel HD Graphics Family supported 2 Intel HD Graphics
+Intel 3D-Analyze v2.2 - http://www.tommti-systems.com NO MATCH
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com NO MATCH
+Intel 4 Series Internal Chipset NO MATCH
+Intel 830M unsupported 0 Intel 830M
+Intel 845G unsupported 0 Intel 845G
+Intel 855GM unsupported 0 Intel 855GM
+Intel 865G unsupported 0 Intel 865G
+Intel 915G unsupported 0 Intel 915G
+Intel 915GM unsupported 0 Intel 915GM
+Intel 945G supported 0 Intel 945G
+Intel 945GM supported 0 Intel 945GM
+Intel 950 supported 0 Intel 950
+Intel 965 supported 0 Intel 965
+Intel B43 Express Chipset NO MATCH
+Intel Bear Lake unsupported 0 Intel Bear Lake
+Intel Broadwater unsupported 0 Intel Broadwater
+Intel Brookdale unsupported 0 Intel Brookdale
+Intel Cantiga unsupported 0 Intel Cantiga
+Intel EMGD on PowerVR SGX535 NO MATCH
+Intel Eaglelake supported 0 Intel Eaglelake
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1) NO MATCH
+Intel G33 unsupported 0 Intel G33
+Intel G41 supported 0 Intel G41
+Intel G41 Express Chipset supported 0 Intel G41
+Intel G45 supported 0 Intel G45
+Intel G45/G43 Express Chipset supported 0 Intel G45
+Intel Graphics Media Accelerator HD supported 0 Intel Graphics Media HD
+Intel HD Graphics supported 2 Intel HD Graphics
+Intel HD Graphics 100 supported 2 Intel HD Graphics
+Intel HD Graphics 200 supported 2 Intel HD Graphics
+Intel HD Graphics 200 BR-1101-00SH supported 2 Intel HD Graphics
+Intel HD Graphics 200 BR-1101-00SJ supported 2 Intel HD Graphics
+Intel HD Graphics 200 BR-1101-00SK supported 2 Intel HD Graphics
+Intel HD Graphics 200 BR-1101-01M5 supported 2 Intel HD Graphics
+Intel HD Graphics 200 BR-1101-01M6 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1004-01Y1 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1006-0364 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1006-0365 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1006-0366 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1007-02G4 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1101-04SY supported 2 Intel HD Graphics
+Intel HD Graphics BR-1101-04SZ supported 2 Intel HD Graphics
+Intel HD Graphics BR-1101-04T0 supported 2 Intel HD Graphics
+Intel HD Graphics BR-1101-04T9 supported 2 Intel HD Graphics
+Intel HD Graphics Family supported 2 Intel HD Graphics
+Intel HD Graphics Family BR-1012-00Y8 supported 2 Intel HD Graphics
+Intel HD Graphics Family BR-1012-00YF supported 2 Intel HD Graphics
+Intel HD Graphics Family BR-1012-00ZD supported 2 Intel HD Graphics
+Intel HD Graphics Family BR-1102-00ML supported 2 Intel HD Graphics
+Intel Inc. Intel GMA 900 OpenGL Engine NO MATCH
+Intel Inc. Intel GMA 950 OpenGL Engine supported 0 Intel 950
+Intel Inc. Intel GMA X3100 OpenGL Engine supported 0 Intel X3100
+Intel Inc. Intel HD Graphics 3000 OpenGL Engine supported 2 Intel HD Graphics
+Intel Inc. Intel HD Graphics OpenGL Engine supported 2 Intel HD Graphics
+Intel Inc. Intel HD xxxx OpenGL Engine NO MATCH
+Intel Intel 845G unsupported 0 Intel 845G
+Intel Intel 855GM unsupported 0 Intel 855GM
+Intel Intel 865G unsupported 0 Intel 865G
+Intel Intel 915G unsupported 0 Intel 915G
+Intel Intel 915GM unsupported 0 Intel 915GM
+Intel Intel 945G supported 0 Intel 945G
+Intel Intel 945GM supported 0 Intel 945GM
+Intel Intel 965/963 Graphics Media Accelerator supported 0 Intel 965
+Intel Intel Bear Lake B unsupported 0 Intel Bear Lake
+Intel Intel Broadwater G unsupported 0 Intel Broadwater
+Intel Intel Brookdale-G unsupported 0 Intel Brookdale
+Intel Intel Calistoga NO MATCH
+Intel Intel Cantiga unsupported 0 Intel Cantiga
+Intel Intel Eaglelake supported 0 Intel Eaglelake
+Intel Intel Generic Renderer NO MATCH
+Intel Intel Grantsdale-G NO MATCH
+Intel Intel HD Graphics 3000 supported 2 Intel HD Graphics
+Intel Intel Lakeport NO MATCH
+Intel Intel Montara-GM unsupported 0 Intel Montara
+Intel Intel Pineview Platform supported 0 Intel Pineview
+Intel Intel Springdale-G unsupported 0 Intel Springdale
+Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1) NO MATCH
+Intel Mobile 4 Series supported 0 Intel Mobile 4 Series
+Intel Mobile 4 Series Express Chipset Family supported 0 Intel Mobile 4 Series
+Intel Mobile 45 Express Chipset Family NO MATCH
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1) NO MATCH
+Intel Mobile HD Graphics supported 2 Intel HD Graphics
+Intel Mobile Intel(R) 4 Series Express Chipset Family supported 0 Intel Mobile 4 Series
+Intel Mobile SandyBridge HD Graphics supported 2 Intel HD Graphics
+Intel Montara unsupported 0 Intel Montara
+Intel Pineview supported 0 Intel Pineview
+Intel Q45/Q43 Express Chipset NO MATCH
+Intel Royal BNA Driver NO MATCH
+Intel SandyBridge HD Graphics supported 2 Intel HD Graphics
+Intel SandyBridge HD Graphics BR-1006-00V8 supported 2 Intel HD Graphics
+Intel Springdale unsupported 0 Intel Springdale
+Intel X3100 supported 0 Intel X3100
+Intergraph wcgdrv 06.05.06.18 NO MATCH
+Intergraph wcgdrv 06.06.00.35 NO MATCH
+LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgra... NO MATCH
+LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgr... supported 3 NVIDIA GT 430M
+Linden Lab Headless NO MATCH
+Matrox unsupported 0 Matrox
+Mesa unsupported 0 Mesa
+Mesa Project Software Rasterizer unsupported 0 Mesa
+NVIDIA /PCI/SSE2 NO MATCH
+NVIDIA /PCI/SSE2/3DNOW! NO MATCH
+NVIDIA 205 supported 0 NVIDIA G 205M
+NVIDIA 210 supported 1 NVIDIA G 210
+NVIDIA 310 supported 2 NVIDIA G 310M
+NVIDIA 310M supported 2 NVIDIA G 310M
+NVIDIA 315 supported 2 NVIDIA G 315
+NVIDIA 315M supported 2 NVIDIA G 315
+NVIDIA 320M supported 2 NVIDIA G 320M
+NVIDIA C51 supported 0 NVIDIA C51
+NVIDIA Corporation GeForce GT 230/PCI/SSE2 supported 2 NVIDIA GT 230M
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2 supported 3 NVIDIA GTX 285
+NVIDIA D10M2-20/PCI/SSE2 NO MATCH
+NVIDIA D10P1-25/PCI/SSE2 NO MATCH
+NVIDIA D10P1-25/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA D10P1-30/PCI/SSE2 NO MATCH
+NVIDIA D10P2-50/PCI/SSE2 NO MATCH
+NVIDIA D11M2-30/PCI/SSE2 NO MATCH
+NVIDIA D12-P1-35/PCI/SSE2 NO MATCH
+NVIDIA D12U-15/PCI/SSE2 NO MATCH
+NVIDIA D13M1-40/PCI/SSE2 NO MATCH
+NVIDIA D13P1-40/PCI/SSE2 NO MATCH
+NVIDIA D13P1-40/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA D13U-10/PCI/SSE2 NO MATCH
+NVIDIA D13U/PCI/SSE2 NO MATCH
+NVIDIA D9M supported 1 NVIDIA D9M
+NVIDIA D9M-20/PCI/SSE2 supported 1 NVIDIA D9M
+NVIDIA Entry Graphics/PCI/SSE2 NO MATCH
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA G 102M supported 0 NVIDIA G102M
+NVIDIA G 103M supported 0 NVIDIA G103M
+NVIDIA G 105M supported 0 NVIDIA G105M
+NVIDIA G 110M supported 0 NVIDIA G 110M
+NVIDIA G100 supported 0 NVIDIA G100
+NVIDIA G102M supported 0 NVIDIA G102M
+NVIDIA G103M supported 0 NVIDIA G103M
+NVIDIA G105M supported 0 NVIDIA G105M
+NVIDIA G210 supported 1 NVIDIA G 210
+NVIDIA G210M supported 1 NVIDIA G 210
+NVIDIA G70/PCI/SSE2 NO MATCH
+NVIDIA G72 supported 1 NVIDIA G72
+NVIDIA G73 supported 1 NVIDIA G73
+NVIDIA G84 supported 2 NVIDIA G84
+NVIDIA G86 supported 3 NVIDIA G86
+NVIDIA G92 supported 3 NVIDIA G92
+NVIDIA G92-200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA G94 supported 3 NVIDIA G94
+NVIDIA G96/PCI/SSE2 NO MATCH
+NVIDIA G98/PCI/SSE2 NO MATCH
+NVIDIA G98/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA GT 120 supported 2 NVIDIA GT 120M
+NVIDIA GT 130 supported 2 NVIDIA GT 130M
+NVIDIA GT 130M supported 2 NVIDIA GT 130M
+NVIDIA GT 140 supported 2 NVIDIA GT 140M
+NVIDIA GT 150 supported 2 NVIDIA GT 150M
+NVIDIA GT 160M supported 2 NVIDIA GT 160M
+NVIDIA GT 220 supported 2 NVIDIA GT 220M
+NVIDIA GT 220/PCI/SSE2 supported 2 NVIDIA GT 220M
+NVIDIA GT 220/PCI/SSE2/3DNOW! supported 2 NVIDIA GT 220M
+NVIDIA GT 230 supported 2 NVIDIA GT 230M
+NVIDIA GT 230M supported 2 NVIDIA GT 230M
+NVIDIA GT 240 supported 2 NVIDIA GT 240M
+NVIDIA GT 240M supported 2 NVIDIA GT 240M
+NVIDIA GT 250M supported 2 NVIDIA GT 250M
+NVIDIA GT 260M supported 2 NVIDIA GT 260M
+NVIDIA GT 320 supported 2 NVIDIA G 320M
+NVIDIA GT 320M supported 2 NVIDIA G 320M
+NVIDIA GT 330 supported 3 NVIDIA GT 330M
+NVIDIA GT 330M supported 3 NVIDIA GT 330M
+NVIDIA GT 340 supported 2 NVIDIA GT 340M
+NVIDIA GT 420 supported 2 NVIDIA GT 420M
+NVIDIA GT 430 supported 3 NVIDIA GT 430M
+NVIDIA GT 440 supported 3 NVIDIA GT 440M
+NVIDIA GT 450 supported 3 NVIDIA GT 450M
+NVIDIA GT 520 supported 3 NVIDIA GT 520M
+NVIDIA GT 540 supported 3 NVIDIA GT 540M
+NVIDIA GT 540M supported 3 NVIDIA GT 540M
+NVIDIA GT-120 supported 2 NVIDIA GT 120
+NVIDIA GT200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GTS 150 supported 2 NVIDIA GT 150M
+NVIDIA GTS 240 supported 3 NVIDIA GTS 240
+NVIDIA GTS 250 supported 3 NVIDIA GTS 250
+NVIDIA GTS 350M supported 3 NVIDIA GTS 350M
+NVIDIA GTS 360 supported 3 NVIDIA GTS 360
+NVIDIA GTS 360M supported 3 NVIDIA GTS 360M
+NVIDIA GTS 450 supported 3 NVIDIA GTS 450
+NVIDIA GTX 260 supported 3 NVIDIA GTX 260
+NVIDIA GTX 260M supported 3 NVIDIA GTX 260
+NVIDIA GTX 270 supported 3 NVIDIA GTX 270
+NVIDIA GTX 280 supported 3 NVIDIA GTX 280
+NVIDIA GTX 285 supported 3 NVIDIA GTX 285
+NVIDIA GTX 290 supported 3 NVIDIA GTX 290
+NVIDIA GTX 460 supported 3 NVIDIA GTX 460
+NVIDIA GTX 460M supported 3 NVIDIA GTX 460M
+NVIDIA GTX 465 supported 3 NVIDIA GTX 465
+NVIDIA GTX 470 supported 3 NVIDIA GTX 470
+NVIDIA GTX 470M supported 3 NVIDIA GTX 470M
+NVIDIA GTX 480 supported 3 NVIDIA GTX 480
+NVIDIA GTX 480M supported 3 NVIDIA GTX 480M
+NVIDIA GTX 550 Ti supported 3 NVIDIA GTX 550
+NVIDIA GTX 560 supported 3 NVIDIA GTX 560
+NVIDIA GTX 560 Ti supported 3 NVIDIA GTX 560
+NVIDIA GTX 570 supported 3 NVIDIA GTX 570
+NVIDIA GTX 580 supported 3 NVIDIA GTX 580
+NVIDIA GTX 590 supported 3 NVIDIA GTX 590
+NVIDIA GeForce NO MATCH
+NVIDIA GeForce 2 supported 0 NVIDIA GeForce 2
+NVIDIA GeForce 205/PCI/SSE2 supported 2 NVIDIA 205
+NVIDIA GeForce 210 supported 2 NVIDIA 210
+NVIDIA GeForce 210/PCI/SSE2 supported 2 NVIDIA 210
+NVIDIA GeForce 210/PCI/SSE2/3DNOW! supported 2 NVIDIA 210
+NVIDIA GeForce 3 supported 0 NVIDIA GeForce 3
+NVIDIA GeForce 305M/PCI/SSE2 supported 1 NVIDIA 305M
+NVIDIA GeForce 310/PCI/SSE2 supported 3 NVIDIA 310
+NVIDIA GeForce 310/PCI/SSE2/3DNOW! supported 3 NVIDIA 310
+NVIDIA GeForce 310M/PCI/SSE2 supported 1 NVIDIA 310M
+NVIDIA GeForce 315/PCI/SSE2 supported 3 NVIDIA 315
+NVIDIA GeForce 315/PCI/SSE2/3DNOW! supported 3 NVIDIA 315
+NVIDIA GeForce 315M/PCI/SSE2 supported 2 NVIDIA 315M
+NVIDIA GeForce 320M/PCI/SSE2 supported 2 NVIDIA 320M
+NVIDIA GeForce 4 Go supported 0 NVIDIA GeForce 4
+NVIDIA GeForce 4 MX supported 0 NVIDIA GeForce 4
+NVIDIA GeForce 4 Ti supported 0 NVIDIA GeForce 4
+NVIDIA GeForce 405/PCI/SSE2 supported 1 NVIDIA G 405
+NVIDIA GeForce 410M/PCI/SSE2 supported 1 NVIDIA G 410M
+NVIDIA GeForce 6100 supported 0 NVIDIA G100
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6150/PCI/SSE2 supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6150/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2 supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 6100
+NVIDIA GeForce 6200 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 LE/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 6500 supported 0 NVIDIA GeForce 6500
+NVIDIA GeForce 6500/PCI/SSE2 supported 0 NVIDIA GeForce 6500
+NVIDIA GeForce 6600 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/AGP/SSE/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/AGP/SSE2 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/PCI/SSE/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/PCI/SSE2 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600 LE/PCI/SSE2 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600/AGP/SSE/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600/AGP/SSE2 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600/AGP/SSE2/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600/PCI/SSE2 supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6600/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 6600
+NVIDIA GeForce 6700 supported 2 NVIDIA GeForce 6700
+NVIDIA GeForce 6800 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GT/AGP/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GT/PCI/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 XT/AGP/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 XT/PCI/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800/PCI/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 7000 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7000M supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2 supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7050 SE / NVIDIA nForce 630a/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7000
+NVIDIA GeForce 7100 supported 0 NVIDIA G100
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 7100 GS/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2 supported 0 NVIDIA GeForce 7100
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 7100
+NVIDIA GeForce 7300 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GS/PCI/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GT/AGP/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GT/AGP/SSE2/3DNOW! supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GT/PCI/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 LE/PCI/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 7300 SE/PCI/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7350 LE/PCI/SSE2 supported 1 NVIDIA GeForce 7300
+NVIDIA GeForce 7500 supported 1 NVIDIA GeForce 7500
+NVIDIA GeForce 7500 LE/PCI/SSE2 supported 1 NVIDIA GeForce 7500
+NVIDIA GeForce 7500 LE/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 7500
+NVIDIA GeForce 7600 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GS/AGP/SSE2 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GS/AGP/SSE2/3DNOW! supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GS/PCI/SSE2 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GT/AGP/SSE/3DNOW! supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GT/AGP/SSE2 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GT/PCI/SSE2 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7650 GS/PCI/SSE2 supported 2 NVIDIA GeForce 7600
+NVIDIA GeForce 7800 supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GS/AGP/SSE2 supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GT/PCI/SSE2 supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GTX/PCI/SSE2 supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7900 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GS/PCI/SSE2 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GTX/PCI/SSE2 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7950 GT/PCI/SSE2 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7950 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 8100 supported 0 NVIDIA G100
+NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 8200 supported 0 NVIDIA G 200
+NVIDIA GeForce 8200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 8200M supported 0 NVIDIA G 200
+NVIDIA GeForce 8200M G/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 8300 supported 1 NVIDIA GeForce 8300
+NVIDIA GeForce 8300 GS/PCI/SSE2 supported 1 NVIDIA GeForce 8300
+NVIDIA GeForce 8400 supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400 GS/PCI/SSE/3DNOW! supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400 GS/PCI/SSE2 supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400GS/PCI/SSE2 supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8400
+NVIDIA GeForce 8400M supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M G/PCI/SSE2 supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M GS/PCI/SSE2 supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M GT/PCI/SSE2 supported 1 NVIDIA GeForce 8400M
+NVIDIA GeForce 8500 supported 3 NVIDIA GeForce 8500
+NVIDIA GeForce 8500 GT/PCI/SSE2 supported 3 NVIDIA GeForce 8500
+NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8500
+NVIDIA GeForce 8600 supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GS/PCI/SSE2 supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GS/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GT/PCI/SSE2 supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GTS/PCI/SSE2 supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GTS/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600GS/PCI/SSE2 supported 3 NVIDIA GeForce 8600
+NVIDIA GeForce 8600M supported 1 NVIDIA GeForce 8600M
+NVIDIA GeForce 8600M GS/PCI/SSE2 supported 1 NVIDIA GeForce 8600M
+NVIDIA GeForce 8600M GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 8600M
+NVIDIA GeForce 8600M GT/PCI/SSE2 supported 1 NVIDIA GeForce 8600M
+NVIDIA GeForce 8700 supported 3 NVIDIA GeForce 8700
+NVIDIA GeForce 8700M supported 3 NVIDIA GeForce 8700M
+NVIDIA GeForce 8700M GT/PCI/SSE2 supported 3 NVIDIA GeForce 8700M
+NVIDIA GeForce 8800 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GS/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GT/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GTS 512/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GTS 512/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GTS/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GTS/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GTX/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800 Ultra/PCI/SSE2 supported 3 NVIDIA GeForce 8800
+NVIDIA GeForce 8800M GTS/PCI/SSE2 supported 3 NVIDIA GeForce 8800M
+NVIDIA GeForce 8800M GTX/PCI/SSE2 supported 3 NVIDIA GeForce 8800M
+NVIDIA GeForce 9100 supported 0 NVIDIA G100
+NVIDIA GeForce 9100/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce 9100/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce 9100M supported 0 NVIDIA G100M
+NVIDIA GeForce 9100M G/PCI/SSE2 supported 0 NVIDIA G100M
+NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW! supported 0 NVIDIA G100M
+NVIDIA GeForce 9200 supported 0 NVIDIA G 200
+NVIDIA GeForce 9200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce 9200M GE/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 9200M GS/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce 9300 supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 / nForce 730i/PCI/SSE2 supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 GE/PCI/SSE2 supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 GS/PCI/SSE2 supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300 SE/PCI/SSE2 supported 1 NVIDIA GeForce 9300
+NVIDIA GeForce 9300M supported 1 NVIDIA GeForce 9300M
+NVIDIA GeForce 9300M G/PCI/SSE2 supported 1 NVIDIA GeForce 9300M
+NVIDIA GeForce 9300M G/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 9300M
+NVIDIA GeForce 9300M GS/PCI/SSE2 supported 1 NVIDIA GeForce 9300M
+NVIDIA GeForce 9300M GS/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 9300M
+NVIDIA GeForce 9400 supported 1 NVIDIA GeForce 9400
+NVIDIA GeForce 9400 GT/PCI/SSE2 supported 1 NVIDIA GeForce 9400
+NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 9400
+NVIDIA GeForce 9400/PCI/SSE2 supported 1 NVIDIA GeForce 9400
+NVIDIA GeForce 9400M supported 1 NVIDIA GeForce 9400M
+NVIDIA GeForce 9400M G/PCI/SSE2 supported 1 NVIDIA GeForce 9400M
+NVIDIA GeForce 9400M/PCI/SSE2 supported 1 NVIDIA GeForce 9400M
+NVIDIA GeForce 9500 supported 2 NVIDIA GeForce 9500
+NVIDIA GeForce 9500 GS/PCI/SSE2 supported 2 NVIDIA GeForce 9500
+NVIDIA GeForce 9500 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 9500
+NVIDIA GeForce 9500 GT/PCI/SSE2 supported 2 NVIDIA GeForce 9500
+NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 9500
+NVIDIA GeForce 9500M supported 2 NVIDIA GeForce 9500M
+NVIDIA GeForce 9500M GS/PCI/SSE2 supported 2 NVIDIA GeForce 9500M
+NVIDIA GeForce 9600 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GS/PCI/SSE2 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GSO 512/PCI/SSE2 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GSO/PCI/SSE2 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GT/PCI/SSE2 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9600M supported 3 NVIDIA GeForce 9600M
+NVIDIA GeForce 9600M GS/PCI/SSE2 supported 3 NVIDIA GeForce 9600M
+NVIDIA GeForce 9600M GT/PCI/SSE2 supported 3 NVIDIA GeForce 9600M
+NVIDIA GeForce 9650M GT/PCI/SSE2 supported 2 NVIDIA GeForce 9600
+NVIDIA GeForce 9700M supported 2 NVIDIA GeForce 9700M
+NVIDIA GeForce 9700M GT/PCI/SSE2 supported 2 NVIDIA GeForce 9700M
+NVIDIA GeForce 9700M GTS/PCI/SSE2 supported 2 NVIDIA GeForce 9700M
+NVIDIA GeForce 9800 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GT/PCI/SSE2 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GTX+/PCI/SSE2 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GTX+/PCI/SSE2/3DNOW! supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GTX/PCI/SSE2 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GX2/PCI/SSE2 supported 3 NVIDIA GeForce 9800
+NVIDIA GeForce 9800M supported 3 NVIDIA GeForce 9800M
+NVIDIA GeForce 9800M GS/PCI/SSE2 supported 3 NVIDIA GeForce 9800M
+NVIDIA GeForce 9800M GT/PCI/SSE2 supported 3 NVIDIA GeForce 9800M
+NVIDIA GeForce 9800M GTS/PCI/SSE2 supported 3 NVIDIA GeForce 9800M
+NVIDIA GeForce FX 5100 supported 0 NVIDIA G100
+NVIDIA GeForce FX 5100/AGP/SSE/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce FX 5200 supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5200LE/AGP/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce FX 5500 supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/AGP/SSE2 supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/PCI/SSE2 supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5600 supported 0 NVIDIA GeForce FX 5600
+NVIDIA GeForce FX 5600/AGP/SSE2 supported 0 NVIDIA GeForce FX 5600
+NVIDIA GeForce FX 5600/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce FX 5600
+NVIDIA GeForce FX 5600XT/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce FX 5600
+NVIDIA GeForce FX 5700 supported 1 NVIDIA GeForce FX 5700
+NVIDIA GeForce FX 5700/AGP/SSE/3DNOW! supported 1 NVIDIA GeForce FX 5700
+NVIDIA GeForce FX 5700LE/AGP/SSE supported 1 NVIDIA GeForce FX 5700
+NVIDIA GeForce FX 5700LE/AGP/SSE/3DNOW! supported 1 NVIDIA GeForce FX 5700
+NVIDIA GeForce FX 5800 supported 1 NVIDIA GeForce FX 5800
+NVIDIA GeForce FX 5900 supported 1 NVIDIA GeForce FX 5900
+NVIDIA GeForce FX 5900/AGP/SSE2 supported 1 NVIDIA GeForce FX 5900
+NVIDIA GeForce FX 5900XT/AGP/SSE2 supported 1 NVIDIA GeForce FX 5900
+NVIDIA GeForce FX Go5100 supported 0 NVIDIA G100
+NVIDIA GeForce FX Go5100/AGP/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce FX Go5200 supported 0 NVIDIA G 200
+NVIDIA GeForce FX Go5200/AGP/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce FX Go5300 supported 0 NVIDIA GeForce FX Go5300
+NVIDIA GeForce FX Go5600 supported 0 NVIDIA GeForce FX Go5600
+NVIDIA GeForce FX Go5600/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5600
+NVIDIA GeForce FX Go5650/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5600
+NVIDIA GeForce FX Go5700 supported 1 NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2 supported 1 NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5xxx/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5xxx
+NVIDIA GeForce G 103M/PCI/SSE2 supported 0 NVIDIA G103M
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW! supported 0 NVIDIA G103M
+NVIDIA GeForce G 105M/PCI/SSE2 supported 0 NVIDIA G105M
+NVIDIA GeForce G 110M/PCI/SSE2 supported 0 NVIDIA G 110M
+NVIDIA GeForce G100/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce G100/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce G102M/PCI/SSE2 supported 0 NVIDIA G102M
+NVIDIA GeForce G105M/PCI/SSE2 supported 0 NVIDIA G105M
+NVIDIA GeForce G200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce G205M/PCI/SSE2 supported 0 NVIDIA G 205M
+NVIDIA GeForce G210/PCI/SSE2 supported 1 NVIDIA G 210
+NVIDIA GeForce G210/PCI/SSE2/3DNOW! supported 1 NVIDIA G 210
+NVIDIA GeForce G210M/PCI/SSE2 supported 1 NVIDIA G 210
+NVIDIA GeForce G310M/PCI/SSE2 supported 2 NVIDIA G 310M
+NVIDIA GeForce GT 120/PCI/SSE2 supported 2 NVIDIA GT 120M
+NVIDIA GeForce GT 120/PCI/SSE2/3DNOW! supported 2 NVIDIA GT 120M
+NVIDIA GeForce GT 120M/PCI/SSE2 supported 1 NVIDIA G 120M
+NVIDIA GeForce GT 130M/PCI/SSE2 supported 2 NVIDIA GT 130M
+NVIDIA GeForce GT 140/PCI/SSE2 supported 2 NVIDIA GT 140M
+NVIDIA GeForce GT 220/PCI/SSE2 supported 2 NVIDIA GT 220M
+NVIDIA GeForce GT 220/PCI/SSE2/3DNOW! supported 2 NVIDIA GT 220M
+NVIDIA GeForce GT 220M/PCI/SSE2 supported 2 NVIDIA GT 220M
+NVIDIA GeForce GT 230/PCI/SSE2 supported 2 NVIDIA GT 230M
+NVIDIA GeForce GT 230M/PCI/SSE2 supported 2 NVIDIA GT 230M
+NVIDIA GeForce GT 240 supported 2 NVIDIA GT 240M
+NVIDIA GeForce GT 240/PCI/SSE2 supported 2 NVIDIA GT 240M
+NVIDIA GeForce GT 240/PCI/SSE2/3DNOW! supported 2 NVIDIA GT 240M
+NVIDIA GeForce GT 240M/PCI/SSE2 supported 2 NVIDIA GT 240M
+NVIDIA GeForce GT 320/PCI/SSE2 supported 2 NVIDIA G 320M
+NVIDIA GeForce GT 320M/PCI/SSE2 supported 2 NVIDIA G 320M
+NVIDIA GeForce GT 325M/PCI/SSE2 supported 0 NVIDIA GT 325M
+NVIDIA GeForce GT 330/PCI/SSE2 supported 3 NVIDIA GT 330M
+NVIDIA GeForce GT 330/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 330M
+NVIDIA GeForce GT 330M/PCI/SSE2 supported 3 NVIDIA GT 330M
+NVIDIA GeForce GT 335M/PCI/SSE2 supported 1 NVIDIA GT 335M
+NVIDIA GeForce GT 340/PCI/SSE2 supported 2 NVIDIA GT 340M
+NVIDIA GeForce GT 340/PCI/SSE2/3DNOW! supported 2 NVIDIA GT 340M
+NVIDIA GeForce GT 415M/PCI/SSE2 supported 2 NVIDIA GT 415M
+NVIDIA GeForce GT 420/PCI/SSE2 supported 2 NVIDIA GT 420M
+NVIDIA GeForce GT 420M/PCI/SSE2 supported 2 NVIDIA GT 420M
+NVIDIA GeForce GT 425M/PCI/SSE2 supported 3 NVIDIA GT 425M
+NVIDIA GeForce GT 430/PCI/SSE2 supported 3 NVIDIA GT 430M
+NVIDIA GeForce GT 430/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 430M
+NVIDIA GeForce GT 435M/PCI/SSE2 supported 3 NVIDIA GT 435M
+NVIDIA GeForce GT 440/PCI/SSE2 supported 3 NVIDIA GT 440M
+NVIDIA GeForce GT 440/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 440M
+NVIDIA GeForce GT 445M/PCI/SSE2 supported 3 NVIDIA GT 445M
+NVIDIA GeForce GT 520/PCI/SSE2 supported 3 NVIDIA GT 520M
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 520M
+NVIDIA GeForce GT 520M/PCI/SSE2 supported 3 NVIDIA GT 520M
+NVIDIA GeForce GT 525M/PCI/SSE2 supported 3 NVIDIA GT 520M
+NVIDIA GeForce GT 530/PCI/SSE2 supported 3 NVIDIA GT 530M
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 530M
+NVIDIA GeForce GT 540M/PCI/SSE2 supported 3 NVIDIA GT 540M
+NVIDIA GeForce GT 545/PCI/SSE2 supported 3 NVIDIA GT 540M
+NVIDIA GeForce GT 550M/PCI/SSE2 supported 3 NVIDIA GT 550M
+NVIDIA GeForce GT 555M/PCI/SSE2 supported 3 NVIDIA GT 555M
+NVIDIA GeForce GTS 150/PCI/SSE2 supported 2 NVIDIA GT 150M
+NVIDIA GeForce GTS 160M/PCI/SSE2 supported 2 NVIDIA GTS 160M
+NVIDIA GeForce GTS 240/PCI/SSE2 supported 3 NVIDIA GTS 240
+NVIDIA GeForce GTS 250/PCI/SSE2 supported 3 NVIDIA GTS 250
+NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW! supported 3 NVIDIA GTS 250
+NVIDIA GeForce GTS 250M/PCI/SSE2 supported 3 NVIDIA GTS 250
+NVIDIA GeForce GTS 350M/PCI/SSE2 supported 3 NVIDIA GTS 350M
+NVIDIA GeForce GTS 360M/PCI/SSE2 supported 3 NVIDIA GTS 360M
+NVIDIA GeForce GTS 450/PCI/SSE2 supported 3 NVIDIA GTS 450
+NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW! supported 3 NVIDIA GTS 450
+NVIDIA GeForce GTS 455/PCI/SSE2 supported 3 NVIDIA GTS 450
+NVIDIA GeForce GTX 260/PCI/SSE2 supported 3 NVIDIA GTX 260
+NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 260
+NVIDIA GeForce GTX 260M/PCI/SSE2 supported 3 NVIDIA GTX 260
+NVIDIA GeForce GTX 275/PCI/SSE2 supported 3 NVIDIA GTX 275
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 275
+NVIDIA GeForce GTX 280 supported 3 NVIDIA GTX 280
+NVIDIA GeForce GTX 280/PCI/SSE2 supported 3 NVIDIA GTX 280
+NVIDIA GeForce GTX 280M/PCI/SSE2 supported 3 NVIDIA GTX 280
+NVIDIA GeForce GTX 285 supported 3 NVIDIA GTX 285
+NVIDIA GeForce GTX 285/PCI/SSE2 supported 3 NVIDIA GTX 285
+NVIDIA GeForce GTX 295/PCI/SSE2 supported 3 NVIDIA GTX 295
+NVIDIA GeForce GTX 460 SE/PCI/SSE2 supported 3 NVIDIA GTX 460
+NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 460
+NVIDIA GeForce GTX 460/PCI/SSE2 supported 3 NVIDIA GTX 460
+NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 460
+NVIDIA GeForce GTX 460M/PCI/SSE2 supported 3 NVIDIA GTX 460M
+NVIDIA GeForce GTX 465/PCI/SSE2 supported 3 NVIDIA GTX 465
+NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 465
+NVIDIA GeForce GTX 470/PCI/SSE2 supported 3 NVIDIA GTX 470
+NVIDIA GeForce GTX 470/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 470
+NVIDIA GeForce GTX 480/PCI/SSE2 supported 3 NVIDIA GTX 480
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2 supported 3 NVIDIA GTX 550
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 550
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2 supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560/PCI/SSE2 supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560M/PCI/SSE2 supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 570/PCI/SSE2 supported 3 NVIDIA GTX 570
+NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 570
+NVIDIA GeForce GTX 580/PCI/SSE2 supported 3 NVIDIA GTX 580
+NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 580
+NVIDIA GeForce GTX 580M/PCI/SSE2 supported 3 NVIDIA GTX 580M
+NVIDIA GeForce GTX 590/PCI/SSE2 supported 3 NVIDIA GTX 590
+NVIDIA GeForce Go 6 supported 1 NVIDIA GeForce Go 6
+NVIDIA GeForce Go 6100 supported 0 NVIDIA G100
+NVIDIA GeForce Go 6100/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA GeForce Go 6150/PCI/SSE2 supported 0 NVIDIA GeForce Go 6100
+NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce Go 6100
+NVIDIA GeForce Go 6200 supported 0 NVIDIA G 200
+NVIDIA GeForce Go 6200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce Go 6400 supported 1 NVIDIA GeForce Go 6400
+NVIDIA GeForce Go 6400/PCI/SSE2 supported 1 NVIDIA GeForce Go 6400
+NVIDIA GeForce Go 6600 supported 1 NVIDIA GeForce Go 6600
+NVIDIA GeForce Go 6600/PCI/SSE2 supported 1 NVIDIA GeForce Go 6600
+NVIDIA GeForce Go 6800 supported 1 NVIDIA GeForce Go 6800
+NVIDIA GeForce Go 6800 Ultra/PCI/SSE2 supported 1 NVIDIA GeForce Go 6800
+NVIDIA GeForce Go 6800/PCI/SSE2 supported 1 NVIDIA GeForce Go 6800
+NVIDIA GeForce Go 7200 supported 0 NVIDIA G 200
+NVIDIA GeForce Go 7200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce Go 7300 supported 1 NVIDIA GeForce Go 7300
+NVIDIA GeForce Go 7300/PCI/SSE2 supported 1 NVIDIA GeForce Go 7300
+NVIDIA GeForce Go 7300/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce Go 7300
+NVIDIA GeForce Go 7400 supported 1 NVIDIA GeForce Go 7400
+NVIDIA GeForce Go 7400/PCI/SSE2 supported 1 NVIDIA GeForce Go 7400
+NVIDIA GeForce Go 7400/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce Go 7400
+NVIDIA GeForce Go 7600 supported 2 NVIDIA GeForce Go 7600
+NVIDIA GeForce Go 7600/PCI/SSE2 supported 2 NVIDIA GeForce Go 7600
+NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce Go 7600
+NVIDIA GeForce Go 7700 supported 2 NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2 supported 2 NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7800 supported 2 NVIDIA GeForce Go 7800
+NVIDIA GeForce Go 7800 GTX/PCI/SSE2 supported 2 NVIDIA GeForce Go 7800
+NVIDIA GeForce Go 7900 supported 2 NVIDIA GeForce Go 7900
+NVIDIA GeForce Go 7900 GS/PCI/SSE2 supported 2 NVIDIA GeForce Go 7900
+NVIDIA GeForce Go 7900 GTX/PCI/SSE2 supported 2 NVIDIA GeForce Go 7900
+NVIDIA GeForce Go 7950 GTX/PCI/SSE2 supported 2 NVIDIA GeForce Go 7900
+NVIDIA GeForce PCX supported 0 NVIDIA GeForce PCX
+NVIDIA GeForce2 GTS/AGP/SSE supported 0 NVIDIA GeForce 2
+NVIDIA GeForce2 MX/AGP/3DNOW! supported 0 NVIDIA GeForce 2
+NVIDIA GeForce2 MX/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 2
+NVIDIA GeForce2 MX/AGP/SSE2 supported 0 NVIDIA GeForce 2
+NVIDIA GeForce2 MX/PCI/SSE2 supported 0 NVIDIA GeForce 2
+NVIDIA GeForce3/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 3
+NVIDIA GeForce3/AGP/SSE2 supported 0 NVIDIA GeForce 3
+NVIDIA GeForce4 420 Go 32M/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 420 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 440 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 460 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 4000/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 4000/PCI/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 4000/PCI/SSE/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 4000/PCI/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 420/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 420/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 440/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 440/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE supported 0 NVIDIA G 200
+NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW! supported 0 NVIDIA G 200
+NVIDIA GeForce4 Ti 4400/AGP/SSE2 supported 0 NVIDIA GeForce 4
+NVIDIA Generic NO MATCH
+NVIDIA ION LE/PCI/SSE2 supported 2 NVIDIA ION
+NVIDIA ION/PCI/SSE2 supported 2 NVIDIA ION
+NVIDIA ION/PCI/SSE2/3DNOW! supported 2 NVIDIA ION
+NVIDIA MCP61/PCI/SSE2 supported 1 NVIDIA MCP61
+NVIDIA MCP61/PCI/SSE2/3DNOW! supported 1 NVIDIA MCP61
+NVIDIA MCP73/PCI/SSE2 supported 1 NVIDIA MCP73
+NVIDIA MCP79MH/PCI/SSE2 supported 1 NVIDIA MCP79
+NVIDIA MCP79MX/PCI/SSE2 supported 1 NVIDIA MCP79
+NVIDIA MCP7A-O/PCI/SSE2 supported 1 NVIDIA MCP7A
+NVIDIA MCP7A-S/PCI/SSE2 supported 1 NVIDIA MCP7A
+NVIDIA MCP89-EPT/PCI/SSE2 NO MATCH
+NVIDIA N10M-GE1/PCI/SSE2 supported 1 NVIDIA N10
+NVIDIA N10P-GE1/PCI/SSE2 supported 1 NVIDIA N10
+NVIDIA N10P-GV2/PCI/SSE2 supported 1 NVIDIA N10
+NVIDIA N11M-GE1/PCI/SSE2 NO MATCH
+NVIDIA N11M-GE2/PCI/SSE2 NO MATCH
+NVIDIA N12E-GS-A1/PCI/SSE2 NO MATCH
+NVIDIA N12P-GVR-B-A1/PCI/SSE2 NO MATCH
+NVIDIA N13M-GE1-B-A1/PCI/SSE2 NO MATCH
+NVIDIA N13P-GL-A1/PCI/SSE2 NO MATCH
+NVIDIA NB9M-GE/PCI/SSE2 supported 1 NVIDIA NB9M
+NVIDIA NB9M-GE1/PCI/SSE2 supported 1 NVIDIA NB9M
+NVIDIA NB9M-GS/PCI/SSE2 supported 1 NVIDIA NB9M
+NVIDIA NB9M-NS/PCI/SSE2 supported 1 NVIDIA NB9M
+NVIDIA NB9P-GE1/PCI/SSE2 supported 2 NVIDIA NB9P
+NVIDIA NB9P-GS/PCI/SSE2 supported 2 NVIDIA NB9P
+NVIDIA NV17/AGP/3DNOW! supported 0 NVIDIA NV17
+NVIDIA NV17/AGP/SSE2 supported 0 NVIDIA NV17
+NVIDIA NV34 supported 0 NVIDIA NV34
+NVIDIA NV35 supported 0 NVIDIA NV35
+NVIDIA NV36/AGP/SSE/3DNOW! supported 1 NVIDIA NV36
+NVIDIA NV36/AGP/SSE2 supported 1 NVIDIA NV36
+NVIDIA NV41/PCI/SSE2 supported 1 NVIDIA NV41
+NVIDIA NV43 supported 1 NVIDIA NV43
+NVIDIA NV43/PCI/SSE2 supported 1 NVIDIA NV43
+NVIDIA NV44 supported 1 NVIDIA NV44
+NVIDIA NV44/AGP/SSE2 supported 1 NVIDIA NV44
+NVIDIA NVIDIA GeForce 210 OpenGL Engine supported 2 NVIDIA 210
+NVIDIA NVIDIA GeForce 320M OpenGL Engine supported 2 NVIDIA 320M
+NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine supported 1 NVIDIA GeForce 7300
+NVIDIA NVIDIA GeForce 7600 GT OpenGL Engine supported 2 NVIDIA GeForce 7600
+NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine supported 1 NVIDIA GeForce 8600M
+NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine supported 3 NVIDIA GeForce 8800
+NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine supported 3 NVIDIA GeForce 8800
+NVIDIA NVIDIA GeForce 9400 OpenGL Engine supported 1 NVIDIA GeForce 9400
+NVIDIA NVIDIA GeForce 9400M OpenGL Engine supported 1 NVIDIA GeForce 9400M
+NVIDIA NVIDIA GeForce 9500 GT OpenGL Engine supported 2 NVIDIA GeForce 9500
+NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine supported 3 NVIDIA GeForce 9600M
+NVIDIA NVIDIA GeForce GT 120 OpenGL Engine supported 2 NVIDIA GT 120M
+NVIDIA NVIDIA GeForce GT 130 OpenGL Engine supported 2 NVIDIA GT 130M
+NVIDIA NVIDIA GeForce GT 220 OpenGL Engine supported 2 NVIDIA GT 220M
+NVIDIA NVIDIA GeForce GT 230M OpenGL Engine supported 2 NVIDIA GT 230M
+NVIDIA NVIDIA GeForce GT 240M OpenGL Engine supported 2 NVIDIA GT 240M
+NVIDIA NVIDIA GeForce GT 330M OpenGL Engine supported 3 NVIDIA GT 330M
+NVIDIA NVIDIA GeForce GT 420M OpenGL Engine supported 2 NVIDIA GT 420M
+NVIDIA NVIDIA GeForce GT 425M OpenGL Engine supported 3 NVIDIA GT 425M
+NVIDIA NVIDIA GeForce GT 430 OpenGL Engine supported 3 NVIDIA GT 430M
+NVIDIA NVIDIA GeForce GT 440 OpenGL Engine supported 3 NVIDIA GT 440M
+NVIDIA NVIDIA GeForce GT 540M OpenGL Engine supported 3 NVIDIA GT 540M
+NVIDIA NVIDIA GeForce GTS 240 OpenGL Engine supported 3 NVIDIA GTS 240
+NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine supported 3 NVIDIA GTS 250
+NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine supported 3 NVIDIA GTS 450
+NVIDIA NVIDIA GeForce GTX 285 OpenGL Engine supported 3 NVIDIA GTX 285
+NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine supported 3 NVIDIA GTX 460
+NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine supported 3 NVIDIA GTX 460M
+NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine supported 3 NVIDIA GTX 465
+NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine supported 3 NVIDIA GTX 470
+NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine supported 3 NVIDIA GTX 480
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine NO MATCH
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine supported 2 NVIDIA ION
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine supported 1 NVIDIA MCP7A
+NVIDIA NVIDIA GeForce4 OpenGL Engine supported 0 NVIDIA GeForce 4
+NVIDIA NVIDIA NV34MAP OpenGL Engine supported 0 NVIDIA NV34
+NVIDIA NVIDIA Quadro 4000 OpenGL Engine supported 3 NVIDIA Quadro 4000
+NVIDIA NVIDIA Quadro FX 4800 OpenGL Engine supported 3 NVIDIA Quadro FX 4800
+NVIDIA NVS 2100M/PCI/SSE2 supported 0 NVIDIA G100M
+NVIDIA NVS 300/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA NVS 3100M/PCI/SSE2 supported 0 NVIDIA G100M
+NVIDIA NVS 4100/PCI/SSE2/3DNOW! supported 0 NVIDIA G100
+NVIDIA NVS 4200M/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA NVS 5100M/PCI/SSE2 supported 0 NVIDIA G100M
+NVIDIA PCI NO MATCH
+NVIDIA Quadro 1000M/PCI/SSE2 supported 0 NVIDIA G100
+NVIDIA Quadro 2000/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA Quadro 2000M/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA Quadro 3000M/PCI/SSE2 supported 3 NVIDIA Quadro 3000M
+NVIDIA Quadro 4000 supported 3 NVIDIA Quadro 4000
+NVIDIA Quadro 4000 OpenGL Engine supported 3 NVIDIA Quadro 4000
+NVIDIA Quadro 4000/PCI/SSE2 supported 3 NVIDIA Quadro 4000
+NVIDIA Quadro 4000M/PCI/SSE2 supported 3 NVIDIA Quadro 4000M
+NVIDIA Quadro 5000/PCI/SSE2 supported 3 NVIDIA Quadro 50x0 M
+NVIDIA Quadro 5000M/PCI/SSE2 supported 3 NVIDIA Quadro 50x0 M
+NVIDIA Quadro 600 supported 2 NVIDIA Quadro 600
+NVIDIA Quadro 600/PCI/SSE2 supported 2 NVIDIA Quadro 600
+NVIDIA Quadro 600/PCI/SSE2/3DNOW! supported 2 NVIDIA Quadro 600
+NVIDIA Quadro 6000 supported 3 NVIDIA Quadro 6000
+NVIDIA Quadro 6000/PCI/SSE2 supported 3 NVIDIA Quadro 6000
+NVIDIA Quadro CX/PCI/SSE2 supported 3 NVIDIA Quadro CX
+NVIDIA Quadro DCC supported 0 NVIDIA Quadro DCC
+NVIDIA Quadro FX supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1100/AGP/SSE2 supported 0 NVIDIA G100
+NVIDIA Quadro FX 1400/PCI/SSE2 supported 2 NVIDIA Quadro 400
+NVIDIA Quadro FX 1500 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1500/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1500M/PCI/SSE2 supported 1 NVIDIA Quadro FX 1500M
+NVIDIA Quadro FX 1600M/PCI/SSE2 supported 2 NVIDIA Quadro 600
+NVIDIA Quadro FX 1700 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1700M/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1800 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1800/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1800M/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 2500M/PCI/SSE2 supported 2 NVIDIA Quadro FX 2500M
+NVIDIA Quadro FX 2700M/PCI/SSE2 supported 3 NVIDIA Quadro FX 2700M
+NVIDIA Quadro FX 2800M/PCI/SSE2 supported 3 NVIDIA Quadro FX 2800M
+NVIDIA Quadro FX 3400 supported 2 NVIDIA Quadro 400
+NVIDIA Quadro FX 3450 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 3450/4000 SDI/PCI/SSE2 supported 2 NVIDIA Quadro 400
+NVIDIA Quadro FX 3500 supported 2 NVIDIA Quadro FX 3500
+NVIDIA Quadro FX 3500M/PCI/SSE2 supported 2 NVIDIA Quadro FX 3500
+NVIDIA Quadro FX 360M/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 370 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 370/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 3700 supported 3 NVIDIA Quadro FX 3700
+NVIDIA Quadro FX 3700M/PCI/SSE2 supported 3 NVIDIA Quadro FX 3700
+NVIDIA Quadro FX 370M/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 3800 supported 3 NVIDIA Quadro FX 3800
+NVIDIA Quadro FX 3800M/PCI/SSE2 supported 3 NVIDIA Quadro FX 3800
+NVIDIA Quadro FX 4500 supported 3 NVIDIA Quadro FX 4500
+NVIDIA Quadro FX 4600 supported 2 NVIDIA Quadro 600
+NVIDIA Quadro FX 4800 supported 3 NVIDIA Quadro FX 4800
+NVIDIA Quadro FX 4800/PCI/SSE2 supported 3 NVIDIA Quadro FX 4800
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW! supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 560 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 560/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 5600 supported 2 NVIDIA Quadro 600
+NVIDIA Quadro FX 570 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 570/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 570M/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 580/PCI/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 770M/PCI/SSE2 supported 2 NVIDIA Quadro FX 770M
+NVIDIA Quadro FX 880M supported 3 NVIDIA Quadro FX 880M
+NVIDIA Quadro FX 880M/PCI/SSE2 supported 3 NVIDIA Quadro FX 880M
+NVIDIA Quadro FX Go700/AGP/SSE2 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro NVS supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro NVS 110M/PCI/SSE2 supported 0 NVIDIA G 110M
+NVIDIA Quadro NVS 130M/PCI/SSE2 supported 0 NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 135M/PCI/SSE2 supported 0 NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 140M/PCI/SSE2 supported 0 NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 150M/PCI/SSE2 supported 0 NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 160M/PCI/SSE2 supported 0 NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW! supported 1 NVIDIA G 210
+NVIDIA Quadro NVS 285/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro NVS 290/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro NVS 295/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro NVS 320M/PCI/SSE2 supported 2 NVIDIA G 320M
+NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro NVS/PCI/SSE2 supported 0 NVIDIA Quadro NVS
+NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA Quadro VX 200/PCI/SSE2 supported 0 NVIDIA G 200
+NVIDIA Quadro/AGP/SSE2 NO MATCH
+NVIDIA Quadro2 supported 0 NVIDIA Quadro2
+NVIDIA Quadro4 supported 0 NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2 supported 0 NVIDIA Quadro4
+NVIDIA RIVA TNT unsupported 0 NVIDIA RIVA TNT
+NVIDIA RIVA TNT2/AGP/SSE2 unsupported 0 NVIDIA RIVA TNT
+NVIDIA RIVA TNT2/PCI/3DNOW! unsupported 0 NVIDIA RIVA TNT
+NVIDIA Tesla C2050/PCI/SSE2 supported 0 NVIDIA G 205M
+NVIDIA nForce unsupported 0 NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 760i SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA unknown board/AGP/SSE2 unsupported 0 NVIDIA Generic
+NVIDIA unknown board/PCI/SSE2 unsupported 0 NVIDIA Generic
+NVIDIA unknown board/PCI/SSE2/3DNOW! unsupported 0 NVIDIA Generic
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine supported 3 ATI Radeon HD 5600
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine supported 3 ATI Radeon HD 5700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine supported 3 ATI Radeon HD 5700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine supported 3 ATI Radeon HD 6400
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine supported 3 ATI Radeon HD 6700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine supported 3 ATI Radeon HD 6700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine supported 3 ATI Radeon HD 6900
+Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com NO MATCH
+Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine supported 2 Intel HD Graphics
+Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine supported 2 NVIDIA 320M
+Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine supported 1 NVIDIA GeForce 9400
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine supported 2 NVIDIA GT 120M
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine supported 3 NVIDIA GT 330M
+Radeon RV350 on Gallium supported 0 ATI RV350 (9600)
+S3 NO MATCH
+S3 Fire GL2 NO MATCH
+S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D unsupported 0 S3
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE unsupported 0 S3
+S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE unsupported 0 S3
+S3 Graphics, Incorporated ProSavage/Twister unsupported 0 S3
+S3 Graphics, Incorporated S3 Graphics Chrome9 HC unsupported 0 S3
+S3 Graphics, Incorporated S3 Graphics DeltaChrome unsupported 0 S3
+S3 Graphics, Incorporated VIA Chrome9 HC IGP unsupported 0 S3
+SiS unsupported 0 SiS
+SiS 650/M650 VGA unsupported 0 SiS
+SiS 661 VGA unsupported 0 SiS
+SiS 662 VGA unsupported 0 SiS
+SiS 741 VGA unsupported 0 SiS
+SiS 760 VGA unsupported 0 SiS
+SiS 761GX VGA unsupported 0 SiS
+SiS Mirage Graphics3 unsupported 0 SiS
+SiS Xabre VGA unsupported 0 SiS
+Trident unsupported 0 Trident
+Tungsten Graphics unsupported 0 Tungsten Graphics
+Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 865G GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 915G GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 915G GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945G unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100328 2010Q1 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GME x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GME 20061017 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20090712 2009Q2 RC3 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI G33 20061017 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20090712 2009Q2 RC3 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI G41 GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI GMA500 20081116 - 5.0.1.0046 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX... unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MM... unsupported 0 Mesa
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2 unsupported 0 Mesa
+Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 unsupported 0 Mesa
+VIA unsupported 0 VIA
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE; NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE; NO MATCH
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM) NO MATCH
+VMware, Inc. Gallium 0.4 on llvmpipe NO MATCH
+VMware, Inc. Gallium 0.4 on softpipe NO MATCH
+X.Org Gallium 0.4 on AMD BARTS supported 3 AMD BARTS (HD 6800)
+X.Org Gallium 0.4 on AMD CEDAR supported 2 AMD CEDAR (HD 5450)
+X.Org Gallium 0.4 on AMD HEMLOCK supported 3 AMD HEMLOCK (HD 5970)
+X.Org Gallium 0.4 on AMD JUNIPER supported 3 AMD JUNIPER (HD 5700)
+X.Org Gallium 0.4 on AMD PALM NO MATCH
+X.Org Gallium 0.4 on AMD REDWOOD supported 3 AMD REDWOOD (HD 5500/5600)
+X.Org Gallium 0.4 on AMD RS780 supported 0 AMD RS780 (HD 3200)
+X.Org Gallium 0.4 on AMD RS880 supported 1 AMD RS880 (HD 4200)
+X.Org Gallium 0.4 on AMD RV610 supported 1 AMD RV610 (HD 2400)
+X.Org Gallium 0.4 on AMD RV620 supported 1 AMD RV620 (HD 3400)
+X.Org Gallium 0.4 on AMD RV630 supported 2 AMD RV630 (HD 2600)
+X.Org Gallium 0.4 on AMD RV635 supported 3 AMD RV635 (HD 3600)
+X.Org Gallium 0.4 on AMD RV710 supported 1 AMD RV710 (HD 4300)
+X.Org Gallium 0.4 on AMD RV730 supported 3 AMD RV730 (HD 4600)
+X.Org Gallium 0.4 on AMD RV740 supported 3 AMD RV740 (HD 4700)
+X.Org Gallium 0.4 on AMD RV770 supported 3 AMD RV770 (HD 4800)
+X.Org R300 Project Gallium 0.4 on ATI R300 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI R350 supported 1 ATI R350 (9800)
+X.Org R300 Project Gallium 0.4 on ATI R420 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI R580 supported 3 ATI R580 (X1900)
+X.Org R300 Project Gallium 0.4 on ATI RC410 unsupported 0 ATI RC410 (Xpress 200)
+X.Org R300 Project Gallium 0.4 on ATI RS480 unsupported 0 ATI RS48x (Xpress 200x)
+X.Org R300 Project Gallium 0.4 on ATI RS482 unsupported 0 ATI RS48x (Xpress 200x)
+X.Org R300 Project Gallium 0.4 on ATI RS600 unsupported 0 ATI RS600 (Xpress 3200)
+X.Org R300 Project Gallium 0.4 on ATI RS690 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI RS740 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI RV350 supported 0 ATI RV350 (9600)
+X.Org R300 Project Gallium 0.4 on ATI RV370 supported 0 ATI RV370 (X300)
+X.Org R300 Project Gallium 0.4 on ATI RV410 supported 1 ATI RV410 (X700)
+X.Org R300 Project Gallium 0.4 on ATI RV515 supported 1 ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV530 supported 1 ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI RV570 supported 3 ATI RV570 (X1900 GT/PRO)
+X.Org R300 Project Gallium 0.4 on R420 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on R580 supported 3 ATI R580 (X1900)
+X.Org R300 Project Gallium 0.4 on RC410 unsupported 0 ATI RC410 (Xpress 200)
+X.Org R300 Project Gallium 0.4 on RS480 unsupported 0 ATI RS48x (Xpress 200x)
+X.Org R300 Project Gallium 0.4 on RS482 unsupported 0 ATI RS48x (Xpress 200x)
+X.Org R300 Project Gallium 0.4 on RS600 unsupported 0 ATI RS600 (Xpress 3200)
+X.Org R300 Project Gallium 0.4 on RS690 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on RS740 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on RV350 supported 0 ATI RV350 (9600)
+X.Org R300 Project Gallium 0.4 on RV370 supported 0 ATI RV370 (X300)
+X.Org R300 Project Gallium 0.4 on RV410 supported 1 ATI RV410 (X700)
+X.Org R300 Project Gallium 0.4 on RV515 supported 1 ATI RV515
+X.Org R300 Project Gallium 0.4 on RV530 supported 1 ATI RV530
+XGI unsupported 0 XGI
+nouveau Gallium 0.4 on NV31 NO MATCH
+nouveau Gallium 0.4 on NV34 NO MATCH
+nouveau Gallium 0.4 on NV36 NO MATCH
+nouveau Gallium 0.4 on NV43 NO MATCH
+nouveau Gallium 0.4 on NV44 NO MATCH
+nouveau Gallium 0.4 on NV46 NO MATCH
+nouveau Gallium 0.4 on NV49 NO MATCH
+nouveau Gallium 0.4 on NV4A NO MATCH
+nouveau Gallium 0.4 on NV4B NO MATCH
+nouveau Gallium 0.4 on NV4C NO MATCH
+nouveau Gallium 0.4 on NV4E NO MATCH
+nouveau Gallium 0.4 on NV50 NO MATCH
+nouveau Gallium 0.4 on NV63 NO MATCH
+nouveau Gallium 0.4 on NV67 NO MATCH
+nouveau Gallium 0.4 on NV84 NO MATCH
+nouveau Gallium 0.4 on NV86 NO MATCH
+nouveau Gallium 0.4 on NV92 NO MATCH
+nouveau Gallium 0.4 on NV94 NO MATCH
+nouveau Gallium 0.4 on NV96 NO MATCH
+nouveau Gallium 0.4 on NV98 NO MATCH
+nouveau Gallium 0.4 on NVA0 NO MATCH
+nouveau Gallium 0.4 on NVA3 NO MATCH
+nouveau Gallium 0.4 on NVA5 NO MATCH
+nouveau Gallium 0.4 on NVA8 NO MATCH
+nouveau Gallium 0.4 on NVAA NO MATCH
+nouveau Gallium 0.4 on NVAC NO MATCH
diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt
new file mode 100644
index 0000000000..570f92a9b0
--- /dev/null
+++ b/indra/newview/tests/gpus_seen.txt
@@ -0,0 +1,2422 @@
+ATI
+ATI 3D-Analyze
+ATI ASUS A9xxx
+ATI ASUS AH24xx
+ATI ASUS AH26xx
+ATI ASUS AH34xx
+ATI ASUS AH36xx
+ATI ASUS AH46xx
+ATI ASUS AX3xx
+ATI ASUS AX5xx
+ATI ASUS AX8xx
+ATI ASUS EAH38xx
+ATI ASUS EAH43xx
+ATI ASUS EAH45xx
+ATI ASUS EAH48xx
+ATI ASUS EAH57xx
+ATI ASUS EAH58xx
+ATI ASUS X1xxx
+ATI All-in-Wonder 9xxx
+ATI All-in-Wonder HD
+ATI All-in-Wonder PCI-E
+ATI All-in-Wonder X1800
+ATI All-in-Wonder X1900
+ATI All-in-Wonder X600
+ATI All-in-Wonder X800
+ATI Diamond X1xxx
+ATI Display Adapter
+ATI FireGL
+ATI FireGL 5200
+ATI FireGL 5xxx
+ATI FireMV
+ATI Generic
+ATI Hercules 9800
+ATI IGP 340M
+ATI M52
+ATI M54
+ATI M56
+ATI M71
+ATI M72
+ATI M76
+ATI Mobility Radeon
+ATI Mobility Radeon 7xxx
+ATI Mobility Radeon 9600
+ATI Mobility Radeon 9700
+ATI Mobility Radeon 9800
+ATI Mobility Radeon HD 2300
+ATI Mobility Radeon HD 2400
+ATI Mobility Radeon HD 2600
+ATI Mobility Radeon HD 2700
+ATI Mobility Radeon HD 3400
+ATI Mobility Radeon HD 3600
+ATI Mobility Radeon HD 3800
+ATI Mobility Radeon HD 4200
+ATI Mobility Radeon HD 4300
+ATI Mobility Radeon HD 4500
+ATI Mobility Radeon HD 4600
+ATI Mobility Radeon HD 4800
+ATI Mobility Radeon HD 5400
+ATI Mobility Radeon HD 5600
+ATI Mobility Radeon X1xxx
+ATI Mobility Radeon X2xxx
+ATI Mobility Radeon X3xx
+ATI Mobility Radeon X6xx
+ATI Mobility Radeon X7xx
+ATI Mobility Radeon Xxxx
+ATI RV380
+ATI RV530
+ATI Radeon 2100
+ATI Radeon 3000
+ATI Radeon 3100
+ATI Radeon 7000
+ATI Radeon 7xxx
+ATI Radeon 8xxx
+ATI Radeon 9000
+ATI Radeon 9100
+ATI Radeon 9200
+ATI Radeon 9500
+ATI Radeon 9600
+ATI Radeon 9700
+ATI Radeon 9800
+ATI Radeon HD 2300
+ATI Radeon HD 2400
+ATI Radeon HD 2600
+ATI Radeon HD 2900
+ATI Radeon HD 3000
+ATI Radeon HD 3100
+ATI Radeon HD 3200
+ATI Radeon HD 3300
+ATI Radeon HD 3400
+ATI Radeon HD 3600
+ATI Radeon HD 3800
+ATI Radeon HD 4200
+ATI Radeon HD 4300
+ATI Radeon HD 4500
+ATI Radeon HD 4600
+ATI Radeon HD 4700
+ATI Radeon HD 4800
+ATI Radeon HD 5400
+ATI Radeon HD 5500
+ATI Radeon HD 5600
+ATI Radeon HD 5700
+ATI Radeon HD 5800
+ATI Radeon HD 5900
+ATI Radeon HD 6200
+ATI Radeon HD 6300
+ATI Radeon HD 6500
+ATI Radeon HD 6800
+ATI Radeon HD 6900
+ATI Radeon OpenGL
+ATI Radeon RV250
+ATI Radeon RV600
+ATI Radeon RX9550
+ATI Radeon VE
+ATI Radeon X1000
+ATI Radeon X1200
+ATI Radeon X1300
+ATI Radeon X13xx
+ATI Radeon X1400
+ATI Radeon X1500
+ATI Radeon X1600
+ATI Radeon X16xx
+ATI Radeon X1700
+ATI Radeon X1800
+ATI Radeon X1900
+ATI Radeon X19xx
+ATI Radeon X1xxx
+ATI Radeon X300
+ATI Radeon X500
+ATI Radeon X600
+ATI Radeon X700
+ATI Radeon X7xx
+ATI Radeon X800
+ATI Radeon Xpress
+ATI Rage 128
+ATI Technologies Inc.
+ATI Technologies Inc. x86
+ATI Technologies Inc. x86/SSE2
+ATI Technologies Inc. x86/SSE2
+ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2
+ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2
+ATI Technologies Inc. AMD 760G
+ATI Technologies Inc. AMD 760G
+ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1)
+ATI Technologies Inc. AMD 780L
+ATI Technologies Inc. AMD FirePro 2270
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD RADEON HD 6350
+ATI Technologies Inc. AMD RADEON HD 6450
+ATI Technologies Inc. AMD RADEON HD 6450
+ATI Technologies Inc. AMD RADEON HD 6670
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
+ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics
+ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6330M
+ATI Technologies Inc. AMD Radeon HD 6330M
+ATI Technologies Inc. AMD Radeon HD 6350
+ATI Technologies Inc. AMD Radeon HD 6370M
+ATI Technologies Inc. AMD Radeon HD 6370M
+ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6450
+ATI Technologies Inc. AMD Radeon HD 6450
+ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6490M
+ATI Technologies Inc. AMD Radeon HD 6490M
+ATI Technologies Inc. AMD Radeon HD 6500 Series
+ATI Technologies Inc. AMD Radeon HD 6500M Series
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6530M
+ATI Technologies Inc. AMD Radeon HD 6530M
+ATI Technologies Inc. AMD Radeon HD 6550M
+ATI Technologies Inc. AMD Radeon HD 6550M
+ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570M
+ATI Technologies Inc. AMD Radeon HD 6570M
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6600 Series
+ATI Technologies Inc. AMD Radeon HD 6600M Series
+ATI Technologies Inc. AMD Radeon HD 6630M
+ATI Technologies Inc. AMD Radeon HD 6650M
+ATI Technologies Inc. AMD Radeon HD 6650M
+ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6700 Series
+ATI Technologies Inc. AMD Radeon HD 6700 Series
+ATI Technologies Inc. AMD Radeon HD 6750
+ATI Technologies Inc. AMD Radeon HD 6750
+ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6770
+ATI Technologies Inc. AMD Radeon HD 6770
+ATI Technologies Inc. AMD Radeon HD 6770M
+ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800M Series
+ATI Technologies Inc. AMD Radeon HD 6850
+ATI Technologies Inc. AMD Radeon HD 6850M
+ATI Technologies Inc. AMD Radeon HD 6850M
+ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870M
+ATI Technologies Inc. AMD Radeon HD 6870M
+ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900M Series
+ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6990
+ATI Technologies Inc. AMD Radeon HD 6990
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M
+ATI Technologies Inc. ASUS 5870 Eyefinity 6
+ATI Technologies Inc. ASUS A9550 Series
+ATI Technologies Inc. ASUS AH2600 Series
+ATI Technologies Inc. ASUS AH3450 Series
+ATI Technologies Inc. ASUS AH3650 Series
+ATI Technologies Inc. ASUS AH3650 Series
+ATI Technologies Inc. ASUS AH4650 Series
+ATI Technologies Inc. ASUS ARES
+ATI Technologies Inc. ASUS ARES
+ATI Technologies Inc. ASUS EAH2900 Series
+ATI Technologies Inc. ASUS EAH3450 Series
+ATI Technologies Inc. ASUS EAH3450 Series
+ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH4350 series
+ATI Technologies Inc. ASUS EAH4350 series
+ATI Technologies Inc. ASUS EAH4550 series
+ATI Technologies Inc. ASUS EAH4550 series
+ATI Technologies Inc. ASUS EAH4650 series
+ATI Technologies Inc. ASUS EAH4670 series
+ATI Technologies Inc. ASUS EAH4670 series
+ATI Technologies Inc. ASUS EAH4750 Series
+ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 series
+ATI Technologies Inc. ASUS EAH4770 series
+ATI Technologies Inc. ASUS EAH4850 series
+ATI Technologies Inc. ASUS EAH5450 Series
+ATI Technologies Inc. ASUS EAH5450 Series
+ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5570 series
+ATI Technologies Inc. ASUS EAH5570 series
+ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5750 Series
+ATI Technologies Inc. ASUS EAH5750 Series
+ATI Technologies Inc. ASUS EAH5770 Series
+ATI Technologies Inc. ASUS EAH5770 Series
+ATI Technologies Inc. ASUS EAH5830 Series
+ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5870 Series
+ATI Technologies Inc. ASUS EAH5870 Series
+ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH6450 Series
+ATI Technologies Inc. ASUS EAH6570 Series
+ATI Technologies Inc. ASUS EAH6670 Series
+ATI Technologies Inc. ASUS EAH6850 Series
+ATI Technologies Inc. ASUS EAH6850 Series
+ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6950 Series
+ATI Technologies Inc. ASUS EAH6950 Series
+ATI Technologies Inc. ASUS EAH6970 Series
+ATI Technologies Inc. ASUS EAH6970 Series
+ATI Technologies Inc. ASUS EAHG4670 series
+ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600XT-TD
+ATI Technologies Inc. ASUS Extreme AX600XT-TD
+ATI Technologies Inc. ASUS X1300 Series x86/SSE2
+ATI Technologies Inc. ASUS X1550 Series
+ATI Technologies Inc. ASUS X1950 Series x86/SSE2
+ATI Technologies Inc. ASUS X800 Series
+ATI Technologies Inc. ASUS X800 Series
+ATI Technologies Inc. ASUS X850 Series
+ATI Technologies Inc. ATI All-in-Wonder HD
+ATI Technologies Inc. ATI FirePro 2260
+ATI Technologies Inc. ATI FirePro 2260
+ATI Technologies Inc. ATI FirePro 2450
+ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M7740
+ATI Technologies Inc. ATI FirePro M7740
+ATI Technologies Inc. ATI FirePro M7820
+ATI Technologies Inc. ATI FirePro M7820
+ATI Technologies Inc. ATI FirePro V3700 (FireGL)
+ATI Technologies Inc. ATI FirePro V3800
+ATI Technologies Inc. ATI FirePro V4800
+ATI Technologies Inc. ATI FirePro V4800 (FireGL)
+ATI Technologies Inc. ATI FirePro V5800
+ATI Technologies Inc. ATI FirePro V7800
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3450
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650
+ATI Technologies Inc. ATI MOBILITY RADEON X1600
+ATI Technologies Inc. ATI MOBILITY RADEON X1600
+ATI Technologies Inc. ATI MOBILITY RADEON X2300
+ATI Technologies Inc. ATI MOBILITY RADEON X2300
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X300
+ATI Technologies Inc. ATI MOBILITY RADEON X300
+ATI Technologies Inc. ATI MOBILITY RADEON X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
+ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility Radeon 4100
+ATI Technologies Inc. ATI Mobility Radeon 4100
+ATI Technologies Inc. ATI Mobility Radeon Graphics
+ATI Technologies Inc. ATI Mobility Radeon Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2400
+ATI Technologies Inc. ATI Mobility Radeon HD 2400
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2600
+ATI Technologies Inc. ATI Mobility Radeon HD 2600
+ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 3410
+ATI Technologies Inc. ATI Mobility Radeon HD 3430
+ATI Technologies Inc. ATI Mobility Radeon HD 3430
+ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3470
+ATI Technologies Inc. ATI Mobility Radeon HD 3470
+ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2
+ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3670
+ATI Technologies Inc. ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4225
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4250
+ATI Technologies Inc. ATI Mobility Radeon HD 4250
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4270
+ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4330
+ATI Technologies Inc. ATI Mobility Radeon HD 4330
+ATI Technologies Inc. ATI Mobility Radeon HD 4330 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4350
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4570
+ATI Technologies Inc. ATI Mobility Radeon HD 4570
+ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650
+ATI Technologies Inc. ATI Mobility Radeon HD 4650
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4670
+ATI Technologies Inc. ATI Mobility Radeon HD 4670
+ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4850
+ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 5000
+ATI Technologies Inc. ATI Mobility Radeon HD 5000
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5145
+ATI Technologies Inc. ATI Mobility Radeon HD 5145
+ATI Technologies Inc. ATI Mobility Radeon HD 5165
+ATI Technologies Inc. ATI Mobility Radeon HD 5165
+ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 540v
+ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5450
+ATI Technologies Inc. ATI Mobility Radeon HD 5450
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 545v
+ATI Technologies Inc. ATI Mobility Radeon HD 545v
+ATI Technologies Inc. ATI Mobility Radeon HD 5470
+ATI Technologies Inc. ATI Mobility Radeon HD 5470
+ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 560v
+ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5850
+ATI Technologies Inc. ATI Mobility Radeon HD 5850
+ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
+ATI Technologies Inc. ATI Mobility Radeon HD 6370
+ATI Technologies Inc. ATI Mobility Radeon HD 6370
+ATI Technologies Inc. ATI Mobility Radeon HD 6470M
+ATI Technologies Inc. ATI Mobility Radeon HD 6550
+ATI Technologies Inc. ATI Mobility Radeon HD 6550
+ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon X1300
+ATI Technologies Inc. ATI Mobility Radeon X1300
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1350
+ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300
+ATI Technologies Inc. ATI Mobility Radeon X2300
+ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442)
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2500
+ATI Technologies Inc. ATI Mobility Radeon X2500
+ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470
+ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO
+ATI Technologies Inc. ATI RADEON XPRESS 1100
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2
+ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES
+ATI Technologies Inc. ATI Radeon
+ATI Technologies Inc. ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100 (Microsoft - WDDM)
+ATI Technologies Inc. ATI Radeon 2100 Graphics
+ATI Technologies Inc. ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3100 Graphics
+ATI Technologies Inc. ATI Radeon 3100 Graphics
+ATI Technologies Inc. ATI Radeon 5xxx series
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM)
+ATI Technologies Inc. ATI Radeon 9600 / X1050 Series
+ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series
+ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Graphics Processor
+ATI Technologies Inc. ATI Radeon Graphics Processor
+ATI Technologies Inc. ATI Radeon HD 2200 Graphics
+ATI Technologies Inc. ATI Radeon HD 2350
+ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2400 PRO
+ATI Technologies Inc. ATI Radeon HD 2400 PRO AGP
+ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Series
+ATI Technologies Inc. ATI Radeon HD 2400 Series
+ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 PRO
+ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 Pro
+ATI Technologies Inc. ATI Radeon HD 2600 Pro
+ATI Technologies Inc. ATI Radeon HD 2600 Series
+ATI Technologies Inc. ATI Radeon HD 2600 XT
+ATI Technologies Inc. ATI Radeon HD 2600 XT
+ATI Technologies Inc. ATI Radeon HD 2900 GT
+ATI Technologies Inc. ATI Radeon HD 2900 XT
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics
+ATI Technologies Inc. ATI Radeon HD 3300 Graphics
+ATI Technologies Inc. ATI Radeon HD 3400 Series
+ATI Technologies Inc. ATI Radeon HD 3400 Series
+ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
+ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
+ATI Technologies Inc. ATI Radeon HD 3470
+ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex
+ATI Technologies Inc. ATI Radeon HD 3550
+ATI Technologies Inc. ATI Radeon HD 3550
+ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3650
+ATI Technologies Inc. ATI Radeon HD 3650
+ATI Technologies Inc. ATI Radeon HD 3650 AGP
+ATI Technologies Inc. ATI Radeon HD 3730
+ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3850
+ATI Technologies Inc. ATI Radeon HD 3850
+ATI Technologies Inc. ATI Radeon HD 3850 AGP
+ATI Technologies Inc. ATI Radeon HD 3870
+ATI Technologies Inc. ATI Radeon HD 3870
+ATI Technologies Inc. ATI Radeon HD 3870 X2
+ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4250
+ATI Technologies Inc. ATI Radeon HD 4250
+ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4270
+ATI Technologies Inc. ATI Radeon HD 4270
+ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample)
+ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Radeon HD 4350
+ATI Technologies Inc. ATI Radeon HD 4350
+ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft WDDM 1.1)
+ATI Technologies Inc. ATI Radeon HD 4450
+ATI Technologies Inc. ATI Radeon HD 4450
+ATI Technologies Inc. ATI Radeon HD 4500 Series
+ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4600 Series
+ATI Technologies Inc. ATI Radeon HD 4600 Series
+ATI Technologies Inc. ATI Radeon HD 4650
+ATI Technologies Inc. ATI Radeon HD 4650
+ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4720
+ATI Technologies Inc. ATI Radeon HD 4720
+ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730 Series
+ATI Technologies Inc. ATI Radeon HD 4730 Series
+ATI Technologies Inc. ATI Radeon HD 4750
+ATI Technologies Inc. ATI Radeon HD 4770
+ATI Technologies Inc. ATI Radeon HD 4770
+ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4850
+ATI Technologies Inc. ATI Radeon HD 4850
+ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4850 Series
+ATI Technologies Inc. ATI Radeon HD 4870
+ATI Technologies Inc. ATI Radeon HD 4870
+ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 5400 Series
+ATI Technologies Inc. ATI Radeon HD 5400 Series
+ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5470
+ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5570
+ATI Technologies Inc. ATI Radeon HD 5570
+ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600/5700
+ATI Technologies Inc. ATI Radeon HD 5630
+ATI Technologies Inc. ATI Radeon HD 5670
+ATI Technologies Inc. ATI Radeon HD 5670
+ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5700 Series
+ATI Technologies Inc. ATI Radeon HD 5700 Series
+ATI Technologies Inc. ATI Radeon HD 5750
+ATI Technologies Inc. ATI Radeon HD 5750
+ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770
+ATI Technologies Inc. ATI Radeon HD 5770
+ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5800 Series
+ATI Technologies Inc. ATI Radeon HD 5800 Series
+ATI Technologies Inc. ATI Radeon HD 5850
+ATI Technologies Inc. ATI Radeon HD 5850
+ATI Technologies Inc. ATI Radeon HD 5870
+ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5900 Series
+ATI Technologies Inc. ATI Radeon HD 5900 Series
+ATI Technologies Inc. ATI Radeon HD 5970
+ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6250
+ATI Technologies Inc. ATI Radeon HD 6250
+ATI Technologies Inc. ATI Radeon HD 6350
+ATI Technologies Inc. ATI Radeon HD 6390
+ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6510
+ATI Technologies Inc. ATI Radeon HD 6510
+ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6750
+ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770
+ATI Technologies Inc. ATI Radeon HD 6770
+ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6800 Series
+ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD3750
+ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4670
+ATI Technologies Inc. ATI Radeon HD4670
+ATI Technologies Inc. ATI Radeon Juniper LE Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV710 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV730 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV770 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1050
+ATI Technologies Inc. ATI Radeon X1050 Series
+ATI Technologies Inc. ATI Radeon X1200
+ATI Technologies Inc. ATI Radeon X1200
+ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon X1250
+ATI Technologies Inc. ATI Radeon X1250
+ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon X1300/X1550 Series
+ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1950 GT
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
+ATI Technologies Inc. ATI Radeon Xpress 1100
+ATI Technologies Inc. ATI Radeon Xpress 1150
+ATI Technologies Inc. ATI Radeon Xpress 1150
+ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon Xpress 1200
+ATI Technologies Inc. ATI Radeon Xpress 1200
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2
+ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI Yamaha HD 9000
+ATI Technologies Inc. ATi RS880M
+ATI Technologies Inc. ATi RS880M
+ATI Technologies Inc. Carte graphique VGA standard
+ATI Technologies Inc. Diamond Radeon X1550 Series
+ATI Technologies Inc. EG JUNIPER
+ATI Technologies Inc. EG PARK
+ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2)
+ATI Technologies Inc. FireMV 2400 PCI DDR x86
+ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
+ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
+ATI Technologies Inc. GeCube Radeon X1550
+ATI Technologies Inc. GeForce 9600 GT x86/SSE2
+ATI Technologies Inc. Geforce 9500 GT
+ATI Technologies Inc. Geforce 9500GT
+ATI Technologies Inc. Geforce 9800 GT
+ATI Technologies Inc. HD3730
+ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series
+ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO
+ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. M76M
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X700 SE x86
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. MSI RX9550SE
+ATI Technologies Inc. MSI Radeon X1550 Series
+ATI Technologies Inc. Mobility Radeon HD 6000 series
+ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
+ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 7000 DDR x86/SSE2
+ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 DDR x86/SSE2
+ATI Technologies Inc. RADEON 9200 PRO DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9200SE DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9200SE DDR x86/SSE2
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9500
+ATI Technologies Inc. RADEON 9550 x86/SSE2
+ATI Technologies Inc. RADEON 9600 SERIES
+ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2
+ATI Technologies Inc. RADEON 9600 TX x86/SSE2
+ATI Technologies Inc. RADEON 9600 TX x86/SSE2
+ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9600 x86/SSE2
+ATI Technologies Inc. RADEON 9600 x86/SSE2
+ATI Technologies Inc. RADEON 9700 PRO x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9800 PRO
+ATI Technologies Inc. RADEON 9800 x86/SSE2
+ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
+ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
+ATI Technologies Inc. RADEON X300 Series x86/SSE2
+ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
+ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
+ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON X550 x86/SSE2
+ATI Technologies Inc. RADEON X600 Series
+ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600/X550 Series
+ATI Technologies Inc. RADEON X700 PRO x86/SSE2
+ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON X800 XT
+ATI Technologies Inc. RADEON X800GT
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
+ATI Technologies Inc. RS740
+ATI Technologies Inc. RS780C
+ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS880
+ATI Technologies Inc. RS880
+ATI Technologies Inc. RV410 Pro x86/SSE2
+ATI Technologies Inc. RV790
+ATI Technologies Inc. RV790
+ATI Technologies Inc. Radeon (TM) HD 6470M
+ATI Technologies Inc. Radeon (TM) HD 6470M
+ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6750M
+ATI Technologies Inc. Radeon (TM) HD 6770M
+ATI Technologies Inc. Radeon (TM) HD 6770M
+ATI Technologies Inc. Radeon (TM) HD 6850M
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE2
+ATI Technologies Inc. Radeon 7000 SDR x86/SSE2
+ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
+ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
+ATI Technologies Inc. Radeon 9000 DDR x86/SSE2
+ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon DDR x86/SSE
+ATI Technologies Inc. Radeon DDR x86/SSE2
+ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6470M
+ATI Technologies Inc. Radeon HD 6490M
+ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon SDR x86/SSE2
+ATI Technologies Inc. Radeon SDR x86/SSE2
+ATI Technologies Inc. Radeon X1300 Series
+ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1300 Series x86/SSE2
+ATI Technologies Inc. Radeon X1300/X1550 Series
+ATI Technologies Inc. Radeon X1300/X1550 Series
+ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2
+ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM)
+ATI Technologies Inc. Radeon X1550 Series
+ATI Technologies Inc. Radeon X1550 Series x86/SSE2
+ATI Technologies Inc. Radeon X1600
+ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1600 Series
+ATI Technologies Inc. Radeon X1600 Series x86/SSE2
+ATI Technologies Inc. Radeon X1600/1650 Series
+ATI Technologies Inc. Radeon X1600/X1650 Series
+ATI Technologies Inc. Radeon X1650 Series
+ATI Technologies Inc. Radeon X1650 Series
+ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2
+ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1950 Pro
+ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1950 Series
+ATI Technologies Inc. Radeon X1950 Series (Microsoft - WDDM)
+ATI Technologies Inc. Radeon X300/X550/X1050 Series
+ATI Technologies Inc. Radeon X550/X700 Series
+ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. SAPPHIRE RADEON X300SE
+ATI Technologies Inc. SAPPHIRE RADEON X300SE
+ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2
+ATI Technologies Inc. Sapphire Radeon HD 3730
+ATI Technologies Inc. Sapphire Radeon HD 3730
+ATI Technologies Inc. Sapphire Radeon HD 3750
+ATI Technologies Inc. Standard VGA Graphics Adapter
+ATI Technologies Inc. Standard VGA Graphics Adapter
+ATI Technologies Inc. Tul, RADEON X600 PRO
+ATI Technologies Inc. Tul, RADEON X600 PRO x86/SSE2
+ATI Technologies Inc. Tul, RADEON X700 PRO
+ATI Technologies Inc. Tul, RADEON X700 PRO x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. VisionTek Radeon 4350
+ATI Technologies Inc. VisionTek Radeon 4350
+ATI Technologies Inc. VisionTek Radeon X1550 Series
+ATI Technologies Inc. WRESTLER 9802
+ATI Technologies Inc. WRESTLER 9803
+ATI Technologies Inc. XFX Radeon HD 4570
+ATI Technologies Inc. Yamaha ATI HD 9000da/s
+ATI Technologies Inc. Yamaha ATI HD 9000da/s 2048
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS780 9612) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9710) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9712) 20090101 TCL
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV610 94C1) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV610 94C9) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C4) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9498) 20090101 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9440) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9442) 20090101 x86/MMX/SSE2 TCL DRI2
+Alex Mohr GL Hijacker!
+Apple Software Renderer
+DRI R300 Project Mesa DRI R300 (RS400 5954) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2
+DRI R300 Project Mesa DRI R300 (RS400 5975) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2
+DRI R300 Project Mesa DRI R300 (RS400 5A62) 20090101 x86/MMX/SSE2 NO-TCL DRI2
+DRI R300 Project Mesa DRI R300 (RS600 7941) 20090101 x86/MMX/SSE2 NO-TCL
+DRI R300 Project Mesa DRI R300 (RS690 791F) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV350 4151) 20090101 AGP 4x x86/MMX+/3DNow!+/SSE TCL
+DRI R300 Project Mesa DRI R300 (RV350 4153) 20090101 AGP 8x x86/MMX+/3DNow!+/SSE TCL
+DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 5B62) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV515 7145) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV515 7149) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL
+DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2
+GPU_CLASS_UNKNOWN
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com
+Humper Chromium
+Humper Chromium
+Imagination Technologies PowerVR SGX545
+Intel
+Intel HD Graphics Family
+Intel HD Graphics Family
+Intel 3D-Analyze v2.2 - http://www.tommti-systems.com
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 4 Series Internal Chipset
+Intel 4 Series Internal Chipset
+Intel 830M
+Intel 845G
+Intel 855GM
+Intel 865G
+Intel 915G
+Intel 915GM
+Intel 945G
+Intel 945GM
+Intel 950
+Intel 965
+Intel B43 Express Chipset
+Intel B43 Express Chipset
+Intel Bear Lake
+Intel Broadwater
+Intel Brookdale
+Intel Cantiga
+Intel EMGD on PowerVR SGX535
+Intel Eaglelake
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
+Intel G33
+Intel G41
+Intel G41 Express Chipset
+Intel G41 Express Chipset
+Intel G45
+Intel G45/G43 Express Chipset
+Intel G45/G43 Express Chipset
+Intel Graphics Media Accelerator HD
+Intel Graphics Media Accelerator HD
+Intel HD Graphics
+Intel HD Graphics
+Intel HD Graphics 100
+Intel HD Graphics 200
+Intel HD Graphics 200 BR-1101-00SH
+Intel HD Graphics 200 BR-1101-00SJ
+Intel HD Graphics 200 BR-1101-00SK
+Intel HD Graphics 200 BR-1101-01M5
+Intel HD Graphics 200 BR-1101-01M6
+Intel HD Graphics BR-1004-01Y1
+Intel HD Graphics BR-1004-01Y1
+Intel HD Graphics BR-1006-0364
+Intel HD Graphics BR-1006-0365
+Intel HD Graphics BR-1006-0366
+Intel HD Graphics BR-1007-02G4
+Intel HD Graphics BR-1101-04SY
+Intel HD Graphics BR-1101-04SZ
+Intel HD Graphics BR-1101-04T0
+Intel HD Graphics BR-1101-04T9
+Intel HD Graphics Family
+Intel HD Graphics Family
+Intel HD Graphics Family BR-1012-00Y8
+Intel HD Graphics Family BR-1012-00YF
+Intel HD Graphics Family BR-1012-00ZD
+Intel HD Graphics Family BR-1102-00ML
+Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 950 OpenGL Engine
+Intel Inc. Intel GMA 950 OpenGL Engine
+Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel HD Graphics 3000 OpenGL Engine
+Intel Inc. Intel HD Graphics 3000 OpenGL Engine
+Intel Inc. Intel HD Graphics OpenGL Engine
+Intel Inc. Intel HD Graphics OpenGL Engine
+Intel Inc. Intel HD xxxx OpenGL Engine
+Intel Intel 845G
+Intel Intel 845G
+Intel Intel 855GM
+Intel Intel 855GM
+Intel Intel 865G
+Intel Intel 865G
+Intel Intel 915G
+Intel Intel 915G
+Intel Intel 915GM
+Intel Intel 915GM
+Intel Intel 945G
+Intel Intel 945G
+Intel Intel 945GM
+Intel Intel 945GM
+Intel Intel 965/963 Graphics Media Accelerator
+Intel Intel 965/963 Graphics Media Accelerator
+Intel Intel Bear Lake B
+Intel Intel Bear Lake B
+Intel Intel Broadwater G
+Intel Intel Brookdale-G
+Intel Intel Brookdale-G
+Intel Intel Calistoga
+Intel Intel Cantiga
+Intel Intel Cantiga
+Intel Intel Eaglelake
+Intel Intel Eaglelake
+Intel Intel Generic Renderer
+Intel Intel Grantsdale-G
+Intel Intel Grantsdale-G
+Intel Intel HD Graphics 3000
+Intel Intel Lakeport
+Intel Intel Montara-GM
+Intel Intel Pineview Platform
+Intel Intel Pineview Platform
+Intel Intel Springdale-G
+Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)
+Intel Mobile 4 Series
+Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 45 Express Chipset Family
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile HD Graphics
+Intel Mobile HD Graphics
+Intel Mobile Intel(R) 4 Series Express Chipset Family
+Intel Mobile SandyBridge HD Graphics
+Intel Montara
+Intel Pineview
+Intel Q45/Q43 Express Chipset
+Intel Q45/Q43 Express Chipset
+Intel Royal BNA Driver
+Intel Royal BNA Driver
+Intel SandyBridge HD Graphics
+Intel SandyBridge HD Graphics BR-1006-00V8
+Intel Springdale
+Intel X3100
+Intergraph wcgdrv 06.05.06.18
+Intergraph wcgdrv 06.06.00.35
+Intergraph wcgdrv 06.06.00.35
+LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
+LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
+Linden Lab Headless
+Matrox
+Mesa
+Mesa Project Software Rasterizer
+Mesa Project Software Rasterizer
+NVIDIA /PCI/SSE2
+NVIDIA /PCI/SSE2
+NVIDIA /PCI/SSE2/3DNOW!
+NVIDIA /PCI/SSE2/3DNOW!
+NVIDIA 205
+NVIDIA 210
+NVIDIA 310
+NVIDIA 310M
+NVIDIA 315
+NVIDIA 315M
+NVIDIA 320M
+NVIDIA C51
+NVIDIA Corporation GeForce GT 230/PCI/SSE2
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2
+NVIDIA D10M2-20/PCI/SSE2
+NVIDIA D10M2-20/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2/3DNOW!
+NVIDIA D10P1-30/PCI/SSE2
+NVIDIA D10P2-50/PCI/SSE2
+NVIDIA D11M2-30/PCI/SSE2
+NVIDIA D12-P1-35/PCI/SSE2
+NVIDIA D12U-15/PCI/SSE2
+NVIDIA D13M1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2/3DNOW!
+NVIDIA D13U-10/PCI/SSE2
+NVIDIA D13U/PCI/SSE2
+NVIDIA D13U/PCI/SSE2
+NVIDIA D9M
+NVIDIA D9M-20/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
+NVIDIA G 102M
+NVIDIA G 103M
+NVIDIA G 105M
+NVIDIA G 110M
+NVIDIA G100
+NVIDIA G102M
+NVIDIA G103M
+NVIDIA G105M
+NVIDIA G210
+NVIDIA G210M
+NVIDIA G70/PCI/SSE2
+NVIDIA G72
+NVIDIA G73
+NVIDIA G84
+NVIDIA G86
+NVIDIA G92
+NVIDIA G92-200/PCI/SSE2
+NVIDIA G94
+NVIDIA G96/PCI/SSE2
+NVIDIA G96/PCI/SSE2
+NVIDIA G98/PCI/SSE2
+NVIDIA G98/PCI/SSE2
+NVIDIA G98/PCI/SSE2/3DNOW!
+NVIDIA GT 120
+NVIDIA GT 130
+NVIDIA GT 130M
+NVIDIA GT 140
+NVIDIA GT 150
+NVIDIA GT 160M
+NVIDIA GT 220
+NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2/3DNOW!
+NVIDIA GT 220/PCI/SSE2/3DNOW!
+NVIDIA GT 230
+NVIDIA GT 230M
+NVIDIA GT 240
+NVIDIA GT 240M
+NVIDIA GT 250M
+NVIDIA GT 260M
+NVIDIA GT 320
+NVIDIA GT 320M
+NVIDIA GT 330
+NVIDIA GT 330M
+NVIDIA GT 340
+NVIDIA GT 420
+NVIDIA GT 430
+NVIDIA GT 440
+NVIDIA GT 450
+NVIDIA GT 520
+NVIDIA GT 540
+NVIDIA GT 540M
+NVIDIA GT-120
+NVIDIA GT200/PCI/SSE2
+NVIDIA GTS 150
+NVIDIA GTS 240
+NVIDIA GTS 250
+NVIDIA GTS 350M
+NVIDIA GTS 360
+NVIDIA GTS 360M
+NVIDIA GTS 450
+NVIDIA GTX 260
+NVIDIA GTX 260M
+NVIDIA GTX 270
+NVIDIA GTX 280
+NVIDIA GTX 285
+NVIDIA GTX 290
+NVIDIA GTX 460
+NVIDIA GTX 460M
+NVIDIA GTX 465
+NVIDIA GTX 470
+NVIDIA GTX 470M
+NVIDIA GTX 480
+NVIDIA GTX 480M
+NVIDIA GTX 550 Ti
+NVIDIA GTX 560
+NVIDIA GTX 560 Ti
+NVIDIA GTX 570
+NVIDIA GTX 580
+NVIDIA GTX 590
+NVIDIA GeForce
+NVIDIA GeForce 2
+NVIDIA GeForce 205/PCI/SSE2
+NVIDIA GeForce 205/PCI/SSE2
+NVIDIA GeForce 210
+NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2/3DNOW!
+NVIDIA GeForce 210/PCI/SSE2/3DNOW!
+NVIDIA GeForce 3
+NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 310/PCI/SSE2
+NVIDIA GeForce 310/PCI/SSE2
+NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310M/PCI/SSE2
+NVIDIA GeForce 310M/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2/3DNOW!
+NVIDIA GeForce 315/PCI/SSE2/3DNOW!
+NVIDIA GeForce 315M/PCI/SSE2
+NVIDIA GeForce 315M/PCI/SSE2
+NVIDIA GeForce 320M/PCI/SSE2
+NVIDIA GeForce 4 Go
+NVIDIA GeForce 4 MX
+NVIDIA GeForce 4 Ti
+NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 410M/PCI/SSE2
+NVIDIA GeForce 6100
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150/PCI/SSE2
+NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6200
+NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200 A-LE/AGP/SSE2
+NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW!
+NVIDIA GeForce 6200 LE/PCI/SSE2
+NVIDIA GeForce 6200 LE/PCI/SSE2
+NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE2
+NVIDIA GeForce 6200/AGP/SSE2
+NVIDIA GeForce 6200/AGP/SSE2/3DNOW!
+NVIDIA GeForce 6200/PCI/SSE/3DNOW!
+NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6500
+NVIDIA GeForce 6500/PCI/SSE2
+NVIDIA GeForce 6500/PCI/SSE2
+NVIDIA GeForce 6600
+NVIDIA GeForce 6600 GT/AGP/SSE/3DNOW!
+NVIDIA GeForce 6600 GT/AGP/SSE2
+NVIDIA GeForce 6600 GT/AGP/SSE2
+NVIDIA GeForce 6600 GT/PCI/SSE/3DNOW!
+NVIDIA GeForce 6600 GT/PCI/SSE2
+NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6600 LE/PCI/SSE2
+NVIDIA GeForce 6600/AGP/SSE/3DNOW!
+NVIDIA GeForce 6600/AGP/SSE2
+NVIDIA GeForce 6600/AGP/SSE2/3DNOW!
+NVIDIA GeForce 6600/PCI/SSE2
+NVIDIA GeForce 6600/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6700
+NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2
+NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6800 GT/AGP/SSE2
+NVIDIA GeForce 6800 GT/PCI/SSE2
+NVIDIA GeForce 6800 XT/AGP/SSE2
+NVIDIA GeForce 6800 XT/PCI/SSE2
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6800/PCI/SSE2
+NVIDIA GeForce 6800/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7000
+NVIDIA GeForce 7000M
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
+NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2
+NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 SE / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7100
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 GS/PCI/SSE2
+NVIDIA GeForce 7100 GS/PCI/SSE2
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300
+NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 GT/AGP/SSE2
+NVIDIA GeForce 7300 GT/AGP/SSE2/3DNOW!
+NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 LE/PCI/SSE2
+NVIDIA GeForce 7300 LE/PCI/SSE2
+NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7350 LE/PCI/SSE2
+NVIDIA GeForce 7350 LE/PCI/SSE2
+NVIDIA GeForce 7500
+NVIDIA GeForce 7500 LE/PCI/SSE2
+NVIDIA GeForce 7500 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7600
+NVIDIA GeForce 7600 GS/AGP/SSE2
+NVIDIA GeForce 7600 GS/AGP/SSE2/3DNOW!
+NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7600 GT/AGP/SSE/3DNOW!
+NVIDIA GeForce 7600 GT/AGP/SSE2
+NVIDIA GeForce 7600 GT/PCI/SSE2
+NVIDIA GeForce 7600 GT/PCI/SSE2
+NVIDIA GeForce 7600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7650 GS/PCI/SSE2
+NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GS/AGP/SSE2
+NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW!
+NVIDIA GeForce 7800 GT/PCI/SSE2
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7800 GTX/PCI/SSE2
+NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GS/PCI/SSE2
+NVIDIA GeForce 7900 GS/PCI/SSE2
+NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GTX/PCI/SSE2
+NVIDIA GeForce 7950 GT/PCI/SSE2
+NVIDIA GeForce 7950 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8100
+NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8200
+NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8200M
+NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8300
+NVIDIA GeForce 8300 GS/PCI/SSE2
+NVIDIA GeForce 8300 GS/PCI/SSE2
+NVIDIA GeForce 8400
+NVIDIA GeForce 8400 GS/PCI/SSE/3DNOW!
+NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M
+NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GS/PCI/SSE2
+NVIDIA GeForce 8400M GS/PCI/SSE2
+NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GT/PCI/SSE2
+NVIDIA GeForce 8400M GT/PCI/SSE2
+NVIDIA GeForce 8500
+NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600
+NVIDIA GeForce 8600 GS/PCI/SSE2
+NVIDIA GeForce 8600 GS/PCI/SSE2
+NVIDIA GeForce 8600 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600 GTS/PCI/SSE2
+NVIDIA GeForce 8600 GTS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600GS/PCI/SSE2
+NVIDIA GeForce 8600GS/PCI/SSE2
+NVIDIA GeForce 8600M
+NVIDIA GeForce 8600M GS/PCI/SSE2
+NVIDIA GeForce 8600M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8600M GT/PCI/SSE2
+NVIDIA GeForce 8600M GT/PCI/SSE2
+NVIDIA GeForce 8700
+NVIDIA GeForce 8700M
+NVIDIA GeForce 8700M GT/PCI/SSE2
+NVIDIA GeForce 8700M GT/PCI/SSE2
+NVIDIA GeForce 8800
+NVIDIA GeForce 8800 GS/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8800 GTS 512/PCI/SSE2
+NVIDIA GeForce 8800 GTS 512/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8800 GTS/PCI/SSE2
+NVIDIA GeForce 8800 GTS/PCI/SSE2
+NVIDIA GeForce 8800 GTS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8800 GTX/PCI/SSE2
+NVIDIA GeForce 8800 Ultra/PCI/SSE2
+NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTX/PCI/SSE2
+NVIDIA GeForce 8800M GTX/PCI/SSE2
+NVIDIA GeForce 9100
+NVIDIA GeForce 9100/PCI/SSE2
+NVIDIA GeForce 9100/PCI/SSE2
+NVIDIA GeForce 9100/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9100M
+NVIDIA GeForce 9100M G/PCI/SSE2
+NVIDIA GeForce 9100M G/PCI/SSE2
+NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200
+NVIDIA GeForce 9200/PCI/SSE2
+NVIDIA GeForce 9200/PCI/SSE2
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200M GE/PCI/SSE2
+NVIDIA GeForce 9200M GE/PCI/SSE2
+NVIDIA GeForce 9200M GS/PCI/SSE2
+NVIDIA GeForce 9200M GS/PCI/SSE2
+NVIDIA GeForce 9300
+NVIDIA GeForce 9300 / nForce 730i/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9300 SE/PCI/SSE2
+NVIDIA GeForce 9300M
+NVIDIA GeForce 9300M G/PCI/SSE2
+NVIDIA GeForce 9300M G/PCI/SSE2
+NVIDIA GeForce 9300M G/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9300M GS/PCI/SSE2
+NVIDIA GeForce 9300M GS/PCI/SSE2
+NVIDIA GeForce 9300M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9400
+NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9400/PCI/SSE2
+NVIDIA GeForce 9400M
+NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M/PCI/SSE2
+NVIDIA GeForce 9400M/PCI/SSE2
+NVIDIA GeForce 9500
+NVIDIA GeForce 9500 GS/PCI/SSE2
+NVIDIA GeForce 9500 GS/PCI/SSE2
+NVIDIA GeForce 9500 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9500M
+NVIDIA GeForce 9500M GS/PCI/SSE2
+NVIDIA GeForce 9500M GS/PCI/SSE2
+NVIDIA GeForce 9600
+NVIDIA GeForce 9600 GS/PCI/SSE2
+NVIDIA GeForce 9600 GSO 512/PCI/SSE2
+NVIDIA GeForce 9600 GSO/PCI/SSE2
+NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600M
+NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GT/PCI/SSE2
+NVIDIA GeForce 9600M GT/PCI/SSE2
+NVIDIA GeForce 9650M GT/PCI/SSE2
+NVIDIA GeForce 9650M GT/PCI/SSE2
+NVIDIA GeForce 9700M
+NVIDIA GeForce 9700M GT/PCI/SSE2
+NVIDIA GeForce 9700M GTS/PCI/SSE2
+NVIDIA GeForce 9700M GTS/PCI/SSE2
+NVIDIA GeForce 9800
+NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX+/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX/PCI/SSE2
+NVIDIA GeForce 9800 GX2/PCI/SSE2
+NVIDIA GeForce 9800M
+NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GT/PCI/SSE2
+NVIDIA GeForce 9800M GT/PCI/SSE2
+NVIDIA GeForce 9800M GTS/PCI/SSE2
+NVIDIA GeForce 9800M GTS/PCI/SSE2
+NVIDIA GeForce FX 5100
+NVIDIA GeForce FX 5100/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200
+NVIDIA GeForce FX 5200/AGP/SSE
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE2
+NVIDIA GeForce FX 5200/AGP/SSE2
+NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5200/PCI/SSE2
+NVIDIA GeForce FX 5200/PCI/SSE2/3DNOW!
+NVIDIA GeForce FX 5200LE/AGP/SSE2
+NVIDIA GeForce FX 5500
+NVIDIA GeForce FX 5500/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5500/AGP/SSE2
+NVIDIA GeForce FX 5500/AGP/SSE2
+NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2
+NVIDIA GeForce FX 5500/PCI/SSE2
+NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
+NVIDIA GeForce FX 5600
+NVIDIA GeForce FX 5600/AGP/SSE2
+NVIDIA GeForce FX 5600/AGP/SSE2
+NVIDIA GeForce FX 5600/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5600XT/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5700
+NVIDIA GeForce FX 5700/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5700LE/AGP/SSE
+NVIDIA GeForce FX 5700LE/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5800
+NVIDIA GeForce FX 5900
+NVIDIA GeForce FX 5900/AGP/SSE2
+NVIDIA GeForce FX 5900XT/AGP/SSE2
+NVIDIA GeForce FX Go5100
+NVIDIA GeForce FX Go5100/AGP/SSE2
+NVIDIA GeForce FX Go5200
+NVIDIA GeForce FX Go5200/AGP/SSE2
+NVIDIA GeForce FX Go5200/AGP/SSE2
+NVIDIA GeForce FX Go5300
+NVIDIA GeForce FX Go5600
+NVIDIA GeForce FX Go5600/AGP/SSE2
+NVIDIA GeForce FX Go5600/AGP/SSE2
+NVIDIA GeForce FX Go5650/AGP/SSE2
+NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2
+NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW!
+NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 110M/PCI/SSE2
+NVIDIA GeForce G 110M/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2/3DNOW!
+NVIDIA GeForce G100/PCI/SSE2/3DNOW!
+NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G105M/PCI/SSE2
+NVIDIA GeForce G105M/PCI/SSE2
+NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G205M/PCI/SSE2
+NVIDIA GeForce G205M/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2/3DNOW!
+NVIDIA GeForce G210/PCI/SSE2/3DNOW!
+NVIDIA GeForce G210M/PCI/SSE2
+NVIDIA GeForce G210M/PCI/SSE2
+NVIDIA GeForce G310M/PCI/SSE2
+NVIDIA GeForce GT 120/PCI/SSE2
+NVIDIA GeForce GT 120/PCI/SSE2
+NVIDIA GeForce GT 120/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 120M/PCI/SSE2
+NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 140/PCI/SSE2
+NVIDIA GeForce GT 140/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 230/PCI/SSE2
+NVIDIA GeForce GT 230/PCI/SSE2
+NVIDIA GeForce GT 230M/PCI/SSE2
+NVIDIA GeForce GT 230M/PCI/SSE2
+NVIDIA GeForce GT 240
+NVIDIA GeForce GT 240/PCI/SSE2
+NVIDIA GeForce GT 240/PCI/SSE2
+NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240M/PCI/SSE2
+NVIDIA GeForce GT 240M/PCI/SSE2
+NVIDIA GeForce GT 320/PCI/SSE2
+NVIDIA GeForce GT 320M/PCI/SSE2
+NVIDIA GeForce GT 320M/PCI/SSE2
+NVIDIA GeForce GT 325M/PCI/SSE2
+NVIDIA GeForce GT 330/PCI/SSE2
+NVIDIA GeForce GT 330/PCI/SSE2
+NVIDIA GeForce GT 330/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 335M/PCI/SSE2
+NVIDIA GeForce GT 335M/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 420/PCI/SSE2
+NVIDIA GeForce GT 420/PCI/SSE2
+NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 425M/PCI/SSE2
+NVIDIA GeForce GT 425M/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 440/PCI/SSE2
+NVIDIA GeForce GT 440/PCI/SSE2
+NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 445M/PCI/SSE2
+NVIDIA GeForce GT 445M/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 525M/PCI/SSE2
+NVIDIA GeForce GT 525M/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 545/PCI/SSE2
+NVIDIA GeForce GT 550M/PCI/SSE2
+NVIDIA GeForce GT 550M/PCI/SSE2
+NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GTS 150/PCI/SSE2
+NVIDIA GeForce GTS 150/PCI/SSE2
+NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 240/PCI/SSE2
+NVIDIA GeForce GTS 240/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTS 250M/PCI/SSE2
+NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 360M/PCI/SSE2
+NVIDIA GeForce GTS 360M/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTS 455/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 280
+NVIDIA GeForce GTX 280/PCI/SSE2
+NVIDIA GeForce GTX 280M/PCI/SSE2
+NVIDIA GeForce GTX 285
+NVIDIA GeForce GTX 285/PCI/SSE2
+NVIDIA GeForce GTX 285/PCI/SSE2
+NVIDIA GeForce GTX 285/PCI/SSE2
+NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 460 SE/PCI/SSE2
+NVIDIA GeForce GTX 460 SE/PCI/SSE2
+NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2
+NVIDIA GeForce GTX 460/PCI/SSE2
+NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460M/PCI/SSE2
+NVIDIA GeForce GTX 460M/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 470/PCI/SSE2
+NVIDIA GeForce GTX 470/PCI/SSE2
+NVIDIA GeForce GTX 470/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 480/PCI/SSE2
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560/PCI/SSE2
+NVIDIA GeForce GTX 560/PCI/SSE2
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560M/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 580M/PCI/SSE2
+NVIDIA GeForce GTX 590/PCI/SSE2
+NVIDIA GeForce GTX 590/PCI/SSE2
+NVIDIA GeForce Go 6
+NVIDIA GeForce Go 6100
+NVIDIA GeForce Go 6100/PCI/SSE2
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6150/PCI/SSE2
+NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6200
+NVIDIA GeForce Go 6200/PCI/SSE2
+NVIDIA GeForce Go 6400
+NVIDIA GeForce Go 6400/PCI/SSE2
+NVIDIA GeForce Go 6400/PCI/SSE2
+NVIDIA GeForce Go 6600
+NVIDIA GeForce Go 6600/PCI/SSE2
+NVIDIA GeForce Go 6600/PCI/SSE2
+NVIDIA GeForce Go 6800
+NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
+NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
+NVIDIA GeForce Go 6800/PCI/SSE2
+NVIDIA GeForce Go 7200
+NVIDIA GeForce Go 7200/PCI/SSE2
+NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 7300
+NVIDIA GeForce Go 7300/PCI/SSE2
+NVIDIA GeForce Go 7300/PCI/SSE2
+NVIDIA GeForce Go 7300/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 7400
+NVIDIA GeForce Go 7400/PCI/SSE2
+NVIDIA GeForce Go 7400/PCI/SSE2
+NVIDIA GeForce Go 7400/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 7600
+NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2
+NVIDIA GeForce Go 7800
+NVIDIA GeForce Go 7800 GTX/PCI/SSE2
+NVIDIA GeForce Go 7900
+NVIDIA GeForce Go 7900 GS/PCI/SSE2
+NVIDIA GeForce Go 7900 GS/PCI/SSE2
+NVIDIA GeForce Go 7900 GTX/PCI/SSE2
+NVIDIA GeForce Go 7950 GTX/PCI/SSE2
+NVIDIA GeForce PCX
+NVIDIA GeForce2 GTS/AGP/SSE
+NVIDIA GeForce2 MX/AGP/3DNOW!
+NVIDIA GeForce2 MX/AGP/SSE/3DNOW!
+NVIDIA GeForce2 MX/AGP/SSE2
+NVIDIA GeForce2 MX/AGP/SSE2
+NVIDIA GeForce2 MX/PCI/SSE2
+NVIDIA GeForce3/AGP/SSE/3DNOW!
+NVIDIA GeForce3/AGP/SSE2
+NVIDIA GeForce4 420 Go 32M/AGP/SSE2
+NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW!
+NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW!
+NVIDIA GeForce4 420 Go/AGP/SSE2
+NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW!
+NVIDIA GeForce4 440 Go/AGP/SSE2
+NVIDIA GeForce4 460 Go/AGP/SSE2
+NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE2
+NVIDIA GeForce4 MX 4000/AGP/SSE2
+NVIDIA GeForce4 MX 4000/PCI/3DNOW!
+NVIDIA GeForce4 MX 4000/PCI/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/PCI/SSE2
+NVIDIA GeForce4 MX 420/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 420/AGP/SSE2
+NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440/AGP/SSE2
+NVIDIA GeForce4 MX 440/AGP/SSE2
+NVIDIA GeForce4 MX 440/AGP/SSE2/3DNOW!
+NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
+NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE
+NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW!
+NVIDIA GeForce4 Ti 4400/AGP/SSE2
+NVIDIA Generic
+NVIDIA ION LE/PCI/SSE2
+NVIDIA ION LE/PCI/SSE2
+NVIDIA ION/PCI/SSE2
+NVIDIA ION/PCI/SSE2
+NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2
+NVIDIA MCP61/PCI/SSE2
+NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP73/PCI/SSE2
+NVIDIA MCP73/PCI/SSE2
+NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MX/PCI/SSE2
+NVIDIA MCP79MX/PCI/SSE2
+NVIDIA MCP7A-O/PCI/SSE2
+NVIDIA MCP7A-O/PCI/SSE2
+NVIDIA MCP7A-S/PCI/SSE2
+NVIDIA MCP89-EPT/PCI/SSE2
+NVIDIA MCP89-EPT/PCI/SSE2
+NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10P-GE1/PCI/SSE2
+NVIDIA N10P-GE1/PCI/SSE2
+NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N11M-GE1/PCI/SSE2
+NVIDIA N11M-GE1/PCI/SSE2
+NVIDIA N11M-GE2/PCI/SSE2
+NVIDIA N11M-GE2/PCI/SSE2
+NVIDIA N12E-GS-A1/PCI/SSE2
+NVIDIA N12P-GVR-B-A1/PCI/SSE2
+NVIDIA N13M-GE1-B-A1/PCI/SSE2
+NVIDIA N13P-GL-A1/PCI/SSE2
+NVIDIA NB9M-GE/PCI/SSE2
+NVIDIA NB9M-GE/PCI/SSE2
+NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GS/PCI/SSE2
+NVIDIA NB9M-GS/PCI/SSE2
+NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9P-GE1/PCI/SSE2
+NVIDIA NB9P-GE1/PCI/SSE2
+NVIDIA NB9P-GS/PCI/SSE2
+NVIDIA NV17/AGP/3DNOW!
+NVIDIA NV17/AGP/SSE2
+NVIDIA NV17/AGP/SSE2
+NVIDIA NV34
+NVIDIA NV35
+NVIDIA NV36/AGP/SSE/3DNOW!
+NVIDIA NV36/AGP/SSE2
+NVIDIA NV41/PCI/SSE2
+NVIDIA NV43
+NVIDIA NV43/PCI/SSE2
+NVIDIA NV44
+NVIDIA NV44/AGP/SSE2
+NVIDIA NVIDIA GeForce 210 OpenGL Engine
+NVIDIA NVIDIA GeForce 210 OpenGL Engine
+NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 7600 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9400 OpenGL Engine
+NVIDIA NVIDIA GeForce 9400 OpenGL Engine
+NVIDIA NVIDIA GeForce 9400M OpenGL Engine
+NVIDIA NVIDIA GeForce 9400M OpenGL Engine
+NVIDIA NVIDIA GeForce 9500 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 220 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 230M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 240M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 420M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 425M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 440 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 540M OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 240 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 285 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine
+NVIDIA NVIDIA GeForce4 OpenGL Engine
+NVIDIA NVIDIA NV34MAP OpenGL Engine
+NVIDIA NVIDIA Quadro 4000 OpenGL Engine
+NVIDIA NVIDIA Quadro 4000 OpenGL Engine
+NVIDIA NVIDIA Quadro FX 4800 OpenGL Engine
+NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 300/PCI/SSE2
+NVIDIA NVS 300/PCI/SSE2
+NVIDIA NVS 3100M/PCI/SSE2
+NVIDIA NVS 3100M/PCI/SSE2
+NVIDIA NVS 4100/PCI/SSE2/3DNOW!
+NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 5100M/PCI/SSE2
+NVIDIA NVS 5100M/PCI/SSE2
+NVIDIA PCI
+NVIDIA Quadro 1000M/PCI/SSE2
+NVIDIA Quadro 2000/PCI/SSE2
+NVIDIA Quadro 2000/PCI/SSE2
+NVIDIA Quadro 2000M/PCI/SSE2
+NVIDIA Quadro 3000M/PCI/SSE2
+NVIDIA Quadro 4000
+NVIDIA Quadro 4000 OpenGL Engine
+NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000M/PCI/SSE2
+NVIDIA Quadro 5000/PCI/SSE2
+NVIDIA Quadro 5000/PCI/SSE2
+NVIDIA Quadro 5000M/PCI/SSE2
+NVIDIA Quadro 600
+NVIDIA Quadro 600/PCI/SSE2
+NVIDIA Quadro 600/PCI/SSE2
+NVIDIA Quadro 600/PCI/SSE2/3DNOW!
+NVIDIA Quadro 6000
+NVIDIA Quadro 6000/PCI/SSE2
+NVIDIA Quadro CX/PCI/SSE2
+NVIDIA Quadro DCC
+NVIDIA Quadro FX
+NVIDIA Quadro FX 1100/AGP/SSE2
+NVIDIA Quadro FX 1400/PCI/SSE2
+NVIDIA Quadro FX 1400/PCI/SSE2
+NVIDIA Quadro FX 1500
+NVIDIA Quadro FX 1500/PCI/SSE2
+NVIDIA Quadro FX 1500M/PCI/SSE2
+NVIDIA Quadro FX 1600M/PCI/SSE2
+NVIDIA Quadro FX 1600M/PCI/SSE2
+NVIDIA Quadro FX 1700
+NVIDIA Quadro FX 1700M/PCI/SSE2
+NVIDIA Quadro FX 1800
+NVIDIA Quadro FX 1800/PCI/SSE2
+NVIDIA Quadro FX 1800M/PCI/SSE2
+NVIDIA Quadro FX 2500M/PCI/SSE2
+NVIDIA Quadro FX 2500M/PCI/SSE2
+NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2800M/PCI/SSE2
+NVIDIA Quadro FX 2800M/PCI/SSE2
+NVIDIA Quadro FX 3400
+NVIDIA Quadro FX 3450
+NVIDIA Quadro FX 3450/4000 SDI/PCI/SSE2
+NVIDIA Quadro FX 3500
+NVIDIA Quadro FX 3500M/PCI/SSE2
+NVIDIA Quadro FX 360M/PCI/SSE2
+NVIDIA Quadro FX 370
+NVIDIA Quadro FX 370/PCI/SSE2
+NVIDIA Quadro FX 3700
+NVIDIA Quadro FX 3700M/PCI/SSE2
+NVIDIA Quadro FX 3700M/PCI/SSE2
+NVIDIA Quadro FX 370M/PCI/SSE2
+NVIDIA Quadro FX 3800
+NVIDIA Quadro FX 3800M/PCI/SSE2
+NVIDIA Quadro FX 3800M/PCI/SSE2
+NVIDIA Quadro FX 4500
+NVIDIA Quadro FX 4600
+NVIDIA Quadro FX 4800
+NVIDIA Quadro FX 4800/PCI/SSE2
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW!
+NVIDIA Quadro FX 560
+NVIDIA Quadro FX 560/PCI/SSE2
+NVIDIA Quadro FX 5600
+NVIDIA Quadro FX 570
+NVIDIA Quadro FX 570/PCI/SSE2
+NVIDIA Quadro FX 570M/PCI/SSE2
+NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 770M/PCI/SSE2
+NVIDIA Quadro FX 770M/PCI/SSE2
+NVIDIA Quadro FX 880M
+NVIDIA Quadro FX 880M/PCI/SSE2
+NVIDIA Quadro FX 880M/PCI/SSE2
+NVIDIA Quadro FX Go700/AGP/SSE2
+NVIDIA Quadro NVS
+NVIDIA Quadro NVS 110M/PCI/SSE2
+NVIDIA Quadro NVS 110M/PCI/SSE2
+NVIDIA Quadro NVS 130M/PCI/SSE2
+NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 140M/PCI/SSE2
+NVIDIA Quadro NVS 140M/PCI/SSE2
+NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 160M/PCI/SSE2
+NVIDIA Quadro NVS 160M/PCI/SSE2
+NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW!
+NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 290/PCI/SSE2
+NVIDIA Quadro NVS 290/PCI/SSE2
+NVIDIA Quadro NVS 295/PCI/SSE2
+NVIDIA Quadro NVS 320M/PCI/SSE2
+NVIDIA Quadro NVS 320M/PCI/SSE2
+NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2
+NVIDIA Quadro NVS/PCI/SSE2
+NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW!
+NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro/AGP/SSE2
+NVIDIA Quadro/AGP/SSE2
+NVIDIA Quadro2
+NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2
+NVIDIA RIVA TNT
+NVIDIA RIVA TNT2/AGP/SSE2
+NVIDIA RIVA TNT2/PCI/3DNOW!
+NVIDIA Tesla C2050/PCI/SSE2
+NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2
+NVIDIA nForce 730a/PCI/SSE2/3DNOW!
+NVIDIA nForce 750a SLI/PCI/SSE2
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 760i SLI/PCI/SSE2
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 980a/780a SLI/PCI/SSE2
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW!
+NVIDIA unknown board/AGP/SSE2
+NVIDIA unknown board/PCI/SSE2
+NVIDIA unknown board/PCI/SSE2/3DNOW!
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine
+Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com
+Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
+Radeon RV350 on Gallium
+S3
+S3 Fire GL2
+S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE
+S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
+S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
+S3 Graphics, Incorporated ProSavage/Twister
+S3 Graphics, Incorporated S3 Graphics Chrome9 HC
+S3 Graphics, Incorporated S3 Graphics Chrome9 HC
+S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated VIA Chrome9 HC IGP
+S3 Graphics, Incorporated VIA Chrome9 HC IGP
+SiS
+SiS 650/M650 VGA
+SiS 661 VGA
+SiS 661 VGA
+SiS 662 VGA
+SiS 741 VGA
+SiS 760 VGA
+SiS 760 VGA
+SiS 761GX VGA
+SiS 761GX VGA
+SiS Mirage Graphics3
+SiS Mirage Graphics3
+SiS Xabre VGA
+Trident
+Tungsten Graphics
+Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 865G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915G GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945G
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT
+Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100328 2010Q1 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME 20061017
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 20061017 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G41 GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI GMA500 20081116 - 5.0.1.0046 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT
+Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2
+Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+VIA
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
+VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on softpipe
+VMware, Inc. Gallium 0.4 on softpipe
+X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD CEDAR
+X.Org Gallium 0.4 on AMD CEDAR
+X.Org Gallium 0.4 on AMD HEMLOCK
+X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD PALM
+X.Org Gallium 0.4 on AMD REDWOOD
+X.Org Gallium 0.4 on AMD REDWOOD
+X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS880
+X.Org Gallium 0.4 on AMD RS880
+X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV620
+X.Org Gallium 0.4 on AMD RV620
+X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV635
+X.Org Gallium 0.4 on AMD RV635
+X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV730
+X.Org Gallium 0.4 on AMD RV730
+X.Org Gallium 0.4 on AMD RV740
+X.Org Gallium 0.4 on AMD RV740
+X.Org Gallium 0.4 on AMD RV770
+X.Org R300 Project Gallium 0.4 on ATI R300
+X.Org R300 Project Gallium 0.4 on ATI R350
+X.Org R300 Project Gallium 0.4 on ATI R420
+X.Org R300 Project Gallium 0.4 on ATI R580
+X.Org R300 Project Gallium 0.4 on ATI R580
+X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RS480
+X.Org R300 Project Gallium 0.4 on ATI RS482
+X.Org R300 Project Gallium 0.4 on ATI RS482
+X.Org R300 Project Gallium 0.4 on ATI RS600
+X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS740
+X.Org R300 Project Gallium 0.4 on ATI RV350
+X.Org R300 Project Gallium 0.4 on ATI RV350
+X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV410
+X.Org R300 Project Gallium 0.4 on ATI RV410
+X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560
+X.Org R300 Project Gallium 0.4 on ATI RV570
+X.Org R300 Project Gallium 0.4 on ATI RV570
+X.Org R300 Project Gallium 0.4 on R420
+X.Org R300 Project Gallium 0.4 on R580
+X.Org R300 Project Gallium 0.4 on RC410
+X.Org R300 Project Gallium 0.4 on RS480
+X.Org R300 Project Gallium 0.4 on RS482
+X.Org R300 Project Gallium 0.4 on RS600
+X.Org R300 Project Gallium 0.4 on RS690
+X.Org R300 Project Gallium 0.4 on RS740
+X.Org R300 Project Gallium 0.4 on RV350
+X.Org R300 Project Gallium 0.4 on RV370
+X.Org R300 Project Gallium 0.4 on RV410
+X.Org R300 Project Gallium 0.4 on RV515
+X.Org R300 Project Gallium 0.4 on RV530
+XGI
+nouveau Gallium 0.4 on NV31
+nouveau Gallium 0.4 on NV34
+nouveau Gallium 0.4 on NV34
+nouveau Gallium 0.4 on NV36
+nouveau Gallium 0.4 on NV43
+nouveau Gallium 0.4 on NV44
+nouveau Gallium 0.4 on NV46
+nouveau Gallium 0.4 on NV46
+nouveau Gallium 0.4 on NV49
+nouveau Gallium 0.4 on NV4A
+nouveau Gallium 0.4 on NV4A
+nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4C
+nouveau Gallium 0.4 on NV4E
+nouveau Gallium 0.4 on NV50
+nouveau Gallium 0.4 on NV63
+nouveau Gallium 0.4 on NV67
+nouveau Gallium 0.4 on NV84
+nouveau Gallium 0.4 on NV84
+nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV92
+nouveau Gallium 0.4 on NV92
+nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV96
+nouveau Gallium 0.4 on NV96
+nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NVA0
+nouveau Gallium 0.4 on NVA0
+nouveau Gallium 0.4 on NVA3
+nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA8
+nouveau Gallium 0.4 on NVA8
+nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAC
+nouveau Gallium 0.4 on NVAC
diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp
index 9da851ffc4..2ad08dc1f3 100644
--- a/indra/newview/tests/llcapabilitylistener_test.cpp
+++ b/indra/newview/tests/llcapabilitylistener_test.cpp
@@ -72,7 +72,7 @@ struct TestCapabilityProvider: public LLCapabilityProvider
{
mCaps[cap] = url;
}
- LLHost getHost() const { return mHost; }
+ const LLHost& getHost() const { return mHost; }
std::string getDescription() const { return "TestCapabilityProvider"; }
LLHost mHost;
@@ -114,6 +114,7 @@ namespace tut
regionListener("testCapabilityListener", NULL, provider, LLUUID(), LLUUID()),
regionPump(regionListener.getCapAPI())
{
+ LLCurl::initClass();
provider.setCapability("good", server + "capability-test");
provider.setCapability("fail", server + "fail");
}
diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp
new file mode 100644
index 0000000000..18cf4e7419
--- /dev/null
+++ b/indra/newview/tests/lldir_stub.cpp
@@ -0,0 +1,62 @@
+/**
+ * @file lldir_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+// Use me only if you need to stub out some helper functions, not if you e.g. need sane numbers from countFilesInDir
+
+LLDir::LLDir() {}
+LLDir::~LLDir() {}
+BOOL LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask) { return true; }
+void LLDir::setChatLogsDir(const std::string &path) {}
+void LLDir::setPerAccountChatLogsDir(const std::string &first, const std::string &last) {}
+void LLDir::setLindenUserDir(const std::string &first, const std::string &last) {}
+void LLDir::setSkinFolder(const std::string &skin_folder) {}
+bool LLDir::setCacheDir(const std::string &path) { return true; }
+void LLDir::dumpCurrentDirectories() {}
+
+class LLDir_stub : public LLDir
+{
+public:
+ LLDir_stub() {}
+ ~LLDir_stub() {}
+
+ /*virtual*/ void initAppDirs(const std::string &app_name) {}
+
+ /*virtual*/ std::string getCurPath() { return "CUR_PATH_FROM_LLDIR"; }
+ /*virtual*/ U32 countFilesInDir(const std::string &dirname, const std::string &mask) { return 42; }
+ /*virtual*/ BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname, BOOL wrap) { fname = fname + "_NEXT"; return false; }
+ /*virtual*/ void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname) { fname = "RANDOM_FILE"; }
+ /*virtual*/ BOOL fileExists(const std::string &filename) const { return false; }
+};
+
+LLDir_stub gDirUtil;
+
+LLDir* gDirUtilp = &gDirUtil;
+
+std::string LLDir::getExpandedFilename(ELLPath loc, const std::string& subdir, const std::string& filename) const
+{
+ return subdir + " --- " + filename + " --- expanded!";
+}
+
diff --git a/indra/newview/tests/llglslshader_stub.cpp b/indra/newview/tests/llglslshader_stub.cpp
new file mode 100644
index 0000000000..8947a632c8
--- /dev/null
+++ b/indra/newview/tests/llglslshader_stub.cpp
@@ -0,0 +1,39 @@
+/**
+ * @file llglslshader_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llglslshader.h"
+
+void LLGLSLShader::uniform1f(const std::string& uniform, F32 num)
+{
+}
+
+void LLGLSLShader::uniform3fv(const std::string& uniform, U32 count, const GLfloat *v)
+{
+}
+
+void LLGLSLShader::uniform4fv(U32 index, U32 count, const GLfloat* v)
+{
+}
diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp
index b902c7ab09..9e321db889 100644
--- a/indra/newview/tests/lllogininstance_test.cpp
+++ b/indra/newview/tests/lllogininstance_test.cpp
@@ -40,6 +40,7 @@
#if defined(LL_WINDOWS)
#pragma warning(disable: 4355) // using 'this' in base-class ctor initializer expr
+#pragma warning(disable: 4702) // disable 'unreachable code' so we can safely use skip().
#endif
// Constants
@@ -68,6 +69,7 @@ static bool gDisconnectCalled = false;
#include "../llviewerwindow.h"
void LLViewerWindow::setShowProgress(BOOL show) {}
+LLProgressView * LLViewerWindow::getProgressView(void) const { return 0; }
LLViewerWindow* gViewerWindow;
@@ -181,10 +183,45 @@ void LLUIColorTable::saveUserSettings(void)const {}
//-----------------------------------------------------------------------------
#include "../llversioninfo.h"
-const std::string &LLVersionInfo::getVersionAndChannel() { return VIEWERLOGIN_VERSION_CHANNEL; }
+const std::string &LLVersionInfo::getChannelAndVersion() { return VIEWERLOGIN_VERSION_CHANNEL; }
const std::string &LLVersionInfo::getChannel() { return VIEWERLOGIN_CHANNEL; }
//-----------------------------------------------------------------------------
+#include "../llappviewer.h"
+void LLAppViewer::forceQuit(void) {}
+LLAppViewer * LLAppViewer::sInstance = 0;
+
+//-----------------------------------------------------------------------------
+#include "llnotificationsutil.h"
+LLNotificationPtr LLNotificationsUtil::add(const std::string& name,
+ const LLSD& substitutions,
+ const LLSD& payload,
+ boost::function<void (const LLSD&, const LLSD&)> functor) { return LLNotificationPtr((LLNotification*)0); }
+
+
+//-----------------------------------------------------------------------------
+#include "llupdaterservice.h"
+
+std::string const & LLUpdaterService::pumpName(void)
+{
+ static std::string wakka = "wakka wakka wakka";
+ return wakka;
+}
+bool LLUpdaterService::updateReadyToInstall(void) { return false; }
+void LLUpdaterService::initialize(const std::string& protocol_version,
+ const std::string& url,
+ const std::string& path,
+ const std::string& channel,
+ const std::string& version) {}
+
+void LLUpdaterService::setCheckPeriod(unsigned int seconds) {}
+void LLUpdaterService::startChecking(bool install_if_ready) {}
+void LLUpdaterService::stopChecking() {}
+bool LLUpdaterService::isChecking() { return false; }
+LLUpdaterService::eUpdaterState LLUpdaterService::getState() { return INITIAL; }
+std::string LLUpdaterService::updatedVersion() { return ""; }
+
+//-----------------------------------------------------------------------------
#include "llnotifications.h"
#include "llfloaterreg.h"
static std::string gTOSType;
@@ -198,6 +235,12 @@ LLFloater* LLFloaterReg::showInstance(const std::string& name, const LLSD& key,
return NULL;
}
+//----------------------------------------------------------------------------
+#include "../llprogressview.h"
+void LLProgressView::setText(std::string const &){}
+void LLProgressView::setPercent(float){}
+void LLProgressView::setMessage(std::string const &){}
+
//-----------------------------------------------------------------------------
// LLNotifications
class MockNotifications : public LLNotificationsInterface
@@ -435,6 +478,8 @@ namespace tut
template<> template<>
void lllogininstance_object::test<3>()
{
+ skip();
+
set_test_name("Test Mandatory Update User Accepts");
// Part 1 - Mandatory Update, with User accepts response.
@@ -462,6 +507,8 @@ namespace tut
template<> template<>
void lllogininstance_object::test<4>()
{
+ skip();
+
set_test_name("Test Mandatory Update User Decline");
// Test connect with update needed.
diff --git a/indra/newview/tests/llpipeline_stub.cpp b/indra/newview/tests/llpipeline_stub.cpp
new file mode 100644
index 0000000000..ad112cbf6a
--- /dev/null
+++ b/indra/newview/tests/llpipeline_stub.cpp
@@ -0,0 +1,32 @@
+/**
+ * @file llpipeline_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+class LLPipeline
+{
+public: BOOL canUseWindLightShaders() const;
+};
+BOOL LLPipeline::canUseWindLightShaders() const {return TRUE;}
+LLPipeline gPipeline;
diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp
index a6c1f69c82..ed66066b0a 100644
--- a/indra/newview/tests/llremoteparcelrequest_test.cpp
+++ b/indra/newview/tests/llremoteparcelrequest_test.cpp
@@ -1,134 +1,134 @@
-/**
- * @file llremoteparcelrequest_test.cpp
- * @author Brad Kittenbrink <brad@lindenlab.com>
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "../test/lltut.h"
-
-#include "../llremoteparcelrequest.h"
-
-#include "../llagent.h"
-#include "message.h"
-
-namespace {
- LLControlGroup s_saved_settings("dummy_settings");
- const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111");
-}
-
-LLCurl::Responder::Responder() { }
-LLCurl::Responder::~Responder() { }
-void LLCurl::Responder::error(U32,std::string const &) { }
-void LLCurl::Responder::result(LLSD const &) { }
-void LLCurl::Responder::errorWithContent(U32 status,std::string const &,LLSD const &) { }
-void LLCurl::Responder::completedRaw(U32 status, std::string const &, LLChannelDescriptors const &,boost::shared_ptr<LLBufferArray> const &) { }
-void LLCurl::Responder::completed(U32 status, std::string const &, LLSD const &) { }
-void LLCurl::Responder::completedHeader(U32 status, std::string const &, LLSD const &) { }
-void LLMessageSystem::getF32(char const *,char const *,F32 &,S32) { }
-void LLMessageSystem::getU8(char const *,char const *,U8 &,S32) { }
-void LLMessageSystem::getS32(char const *,char const *,S32 &,S32) { }
-void LLMessageSystem::getString(char const *,char const *, std::string &,S32) { }
-void LLMessageSystem::getUUID(char const *,char const *, LLUUID & out_id,S32)
-{
- out_id = TEST_PARCEL_ID;
-}
-void LLMessageSystem::nextBlock(char const *) { }
-void LLMessageSystem::addUUID(char const *,LLUUID const &) { }
-void LLMessageSystem::addUUIDFast(char const *,LLUUID const &) { }
-void LLMessageSystem::nextBlockFast(char const *) { }
-void LLMessageSystem::newMessage(char const *) { }
-LLMessageSystem * gMessageSystem;
-char * _PREHASH_AgentID;
-char * _PREHASH_AgentData;
-LLAgent gAgent;
-LLAgent::LLAgent() : mAgentAccess(s_saved_settings) { }
-LLAgent::~LLAgent() { }
-void LLAgent::sendReliableMessage(void) { }
-LLUUID gAgentSessionID;
-LLUUID gAgentID;
-LLUIColor::LLUIColor(void) { }
-LLAgentAccess::LLAgentAccess(LLControlGroup & settings) : mSavedSettings(settings) { }
-LLControlGroup::LLControlGroup(std::string const & name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
-LLControlGroup::~LLControlGroup(void) { }
-
-namespace tut
-{
- struct TestObserver : public LLRemoteParcelInfoObserver {
- TestObserver() : mProcessed(false) { }
-
- virtual void processParcelInfo(const LLParcelData& parcel_data)
- {
- mProcessed = true;
- }
-
- virtual void setParcelID(const LLUUID& parcel_id) { }
-
- virtual void setErrorStatus(U32 status, const std::string& reason) { }
-
- bool mProcessed;
- };
-
- struct RemoteParcelRequestData
- {
- RemoteParcelRequestData()
- {
- }
- };
-
- typedef test_group<RemoteParcelRequestData> remoteparcelrequest_t;
- typedef remoteparcelrequest_t::object remoteparcelrequest_object_t;
- tut::remoteparcelrequest_t tut_remoteparcelrequest("LLRemoteParcelRequest");
-
- template<> template<>
- void remoteparcelrequest_object_t::test<1>()
- {
- set_test_name("observer pointer");
-
- boost::scoped_ptr<TestObserver> observer(new TestObserver());
-
- LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
- processor.addObserver(LLUUID(TEST_PARCEL_ID), observer.get());
-
- processor.processParcelInfoReply(gMessageSystem, NULL);
-
- ensure(observer->mProcessed);
- }
-
- template<> template<>
- void remoteparcelrequest_object_t::test<2>()
- {
- set_test_name("CHOP-220: dangling observer pointer");
-
- LLRemoteParcelInfoObserver * observer = new TestObserver();
-
- LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
- processor.addObserver(LLUUID(TEST_PARCEL_ID), observer);
-
- delete observer;
- observer = NULL;
-
- processor.processParcelInfoReply(gMessageSystem, NULL);
- }
-}
+/**
+ * @file llremoteparcelrequest_test.cpp
+ * @author Brad Kittenbrink <brad@lindenlab.com>
+ *
+ * $LicenseInfo:firstyear=2010&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+
+#include "../llremoteparcelrequest.h"
+
+#include "../llagent.h"
+#include "message.h"
+#include "llurlentry.h"
+
+namespace {
+ const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111");
+}
+
+LLCurl::Responder::Responder() { }
+LLCurl::Responder::~Responder() { }
+void LLCurl::Responder::error(U32,std::string const &) { }
+void LLCurl::Responder::result(LLSD const &) { }
+void LLCurl::Responder::errorWithContent(U32 status,std::string const &,LLSD const &) { }
+void LLCurl::Responder::completedRaw(U32 status, std::string const &, LLChannelDescriptors const &,boost::shared_ptr<LLBufferArray> const &) { }
+void LLCurl::Responder::completed(U32 status, std::string const &, LLSD const &) { }
+void LLCurl::Responder::completedHeader(U32 status, std::string const &, LLSD const &) { }
+void LLMessageSystem::getF32(char const *,char const *,F32 &,S32) { }
+void LLMessageSystem::getU8(char const *,char const *,U8 &,S32) { }
+void LLMessageSystem::getS32(char const *,char const *,S32 &,S32) { }
+void LLMessageSystem::getString(char const *,char const *, std::string &,S32) { }
+void LLMessageSystem::getUUID(char const *,char const *, LLUUID & out_id,S32)
+{
+ out_id = TEST_PARCEL_ID;
+}
+void LLMessageSystem::nextBlock(char const *) { }
+void LLMessageSystem::addUUID(char const *,LLUUID const &) { }
+void LLMessageSystem::addUUIDFast(char const *,LLUUID const &) { }
+void LLMessageSystem::nextBlockFast(char const *) { }
+void LLMessageSystem::newMessage(char const *) { }
+LLMessageSystem * gMessageSystem;
+char const* const _PREHASH_AgentID = 0; // never dereferenced during this test
+char const* const _PREHASH_AgentData = 0; // never dereferenced during this test
+LLAgent gAgent;
+LLAgent::LLAgent() : mAgentAccess(NULL) { }
+LLAgent::~LLAgent() { }
+void LLAgent::sendReliableMessage(void) { }
+LLUUID gAgentSessionID;
+LLUUID gAgentID;
+LLUIColor::LLUIColor(void) { }
+LLControlGroup::LLControlGroup(std::string const & name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
+LLControlGroup::~LLControlGroup(void) { }
+void LLUrlEntryParcel::processParcelInfo(const LLUrlEntryParcel::LLParcelData& parcel_data) { }
+
+namespace tut
+{
+ struct TestObserver : public LLRemoteParcelInfoObserver {
+ TestObserver() : mProcessed(false) { }
+
+ virtual void processParcelInfo(const LLParcelData& parcel_data)
+ {
+ mProcessed = true;
+ }
+
+ virtual void setParcelID(const LLUUID& parcel_id) { }
+
+ virtual void setErrorStatus(U32 status, const std::string& reason) { }
+
+ bool mProcessed;
+ };
+
+ struct RemoteParcelRequestData
+ {
+ RemoteParcelRequestData()
+ {
+ }
+ };
+
+ typedef test_group<RemoteParcelRequestData> remoteparcelrequest_t;
+ typedef remoteparcelrequest_t::object remoteparcelrequest_object_t;
+ tut::remoteparcelrequest_t tut_remoteparcelrequest("LLRemoteParcelRequest");
+
+ template<> template<>
+ void remoteparcelrequest_object_t::test<1>()
+ {
+ set_test_name("observer pointer");
+
+ boost::scoped_ptr<TestObserver> observer(new TestObserver());
+
+ LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
+ processor.addObserver(LLUUID(TEST_PARCEL_ID), observer.get());
+
+ processor.processParcelInfoReply(gMessageSystem, NULL);
+
+ ensure(observer->mProcessed);
+ }
+
+ template<> template<>
+ void remoteparcelrequest_object_t::test<2>()
+ {
+ set_test_name("CHOP-220: dangling observer pointer");
+
+ LLRemoteParcelInfoObserver * observer = new TestObserver();
+
+ LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
+ processor.addObserver(LLUUID(TEST_PARCEL_ID), observer);
+
+ delete observer;
+ observer = NULL;
+
+ processor.processParcelInfoReply(gMessageSystem, NULL);
+ }
+}
diff --git a/indra/newview/tests/llsechandler_basic_test.cpp b/indra/newview/tests/llsechandler_basic_test.cpp
index daa10819fc..0235400976 100644
--- a/indra/newview/tests/llsechandler_basic_test.cpp
+++ b/indra/newview/tests/llsechandler_basic_test.cpp
@@ -86,6 +86,9 @@ std::string LLControlGroup::getString(const std::string& name)
return "";
}
+// Stub for --no-verify-ssl-cert
+BOOL LLControlGroup::getBOOL(const std::string& name) { return FALSE; }
+
LLSD LLCredential::getLoginParams()
{
LLSD result = LLSD::emptyMap();
diff --git a/indra/newview/tests/llsimplestat_test.cpp b/indra/newview/tests/llsimplestat_test.cpp
new file mode 100644
index 0000000000..b556941f4a
--- /dev/null
+++ b/indra/newview/tests/llsimplestat_test.cpp
@@ -0,0 +1,580 @@
+/**
+ * @file llsimplestats_test.cpp
+ * @date 2010-10-22
+ * @brief Test cases for some of llsimplestat.h
+ *
+ * $LicenseInfo:firstyear=2010&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include <tut/tut.hpp>
+
+#include "lltut.h"
+#include "../llsimplestat.h"
+#include "llsd.h"
+#include "llmath.h"
+
+// @brief Used as a pointer cast type to get access to LLSimpleStatCounter
+class TutStatCounter: public LLSimpleStatCounter
+{
+public:
+ TutStatCounter(); // Not defined
+ ~TutStatCounter(); // Not defined
+ void operator=(const TutStatCounter &); // Not defined
+
+ void setRawCount(U32 c) { mCount = c; }
+ U32 getRawCount() const { return mCount; }
+};
+
+
+namespace tut
+{
+ struct stat_counter_index
+ {};
+ typedef test_group<stat_counter_index> stat_counter_index_t;
+ typedef stat_counter_index_t::object stat_counter_index_object_t;
+ tut::stat_counter_index_t tut_stat_counter_index("stat_counter_test");
+
+ // Testing LLSimpleStatCounter's external interface
+ template<> template<>
+ void stat_counter_index_object_t::test<1>()
+ {
+ LLSimpleStatCounter c1;
+ ensure("Initialized counter is zero", (0 == c1.getCount()));
+
+ ensure("Counter increment return is 1", (1 == ++c1));
+ ensure("Counter increment return is 2", (2 == ++c1));
+
+ ensure("Current counter is 2", (2 == c1.getCount()));
+
+ c1.reset();
+ ensure("Counter is 0 after reset", (0 == c1.getCount()));
+
+ ensure("Counter increment return is 1", (1 == ++c1));
+ }
+
+ // Testing LLSimpleStatCounter's internal state
+ template<> template<>
+ void stat_counter_index_object_t::test<2>()
+ {
+ LLSimpleStatCounter c1;
+ TutStatCounter * tc1 = (TutStatCounter *) &c1;
+
+ ensure("Initialized private counter is zero", (0 == tc1->getRawCount()));
+
+ ++c1;
+ ++c1;
+
+ ensure("Current private counter is 2", (2 == tc1->getRawCount()));
+
+ c1.reset();
+ ensure("Raw counter is 0 after reset", (0 == tc1->getRawCount()));
+ }
+
+ // Testing LLSimpleStatCounter's wrapping behavior
+ template<> template<>
+ void stat_counter_index_object_t::test<3>()
+ {
+ LLSimpleStatCounter c1;
+ TutStatCounter * tc1 = (TutStatCounter *) &c1;
+
+ tc1->setRawCount(U32_MAX);
+ ensure("Initialized private counter is zero", (U32_MAX == c1.getCount()));
+
+ ensure("Increment of max value wraps to 0", (0 == ++c1));
+ }
+
+ // Testing LLSimpleStatMMM's external behavior
+ template<> template<>
+ void stat_counter_index_object_t::test<4>()
+ {
+ LLSimpleStatMMM<> m1;
+ typedef LLSimpleStatMMM<>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Freshly-constructed
+ ensure("Constructed MMM<> has 0 count", (0 == m1.getCount()));
+ ensure("Constructed MMM<> has 0 min", (zero == m1.getMin()));
+ ensure("Constructed MMM<> has 0 max", (zero == m1.getMax()));
+ ensure("Constructed MMM<> has 0 mean no div-by-zero", (zero == m1.getMean()));
+
+ // Single insert
+ m1.record(1.0);
+ ensure("Single insert MMM<> has 1 count", (1 == m1.getCount()));
+ ensure("Single insert MMM<> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("Single insert MMM<> has 1.0 max", (1.0 == m1.getMax()));
+ ensure("Single insert MMM<> has 1.0 mean", (1.0 == m1.getMean()));
+
+ // Second insert
+ m1.record(3.0);
+ ensure("2nd insert MMM<> has 2 count", (2 == m1.getCount()));
+ ensure("2nd insert MMM<> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("2nd insert MMM<> has 3.0 max", (3.0 == m1.getMax()));
+ ensure_approximately_equals("2nd insert MMM<> has 2.0 mean", m1.getMean(), lcl_float(2.0), 1);
+
+ // Third insert
+ m1.record(5.0);
+ ensure("3rd insert MMM<> has 3 count", (3 == m1.getCount()));
+ ensure("3rd insert MMM<> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("3rd insert MMM<> has 5.0 max", (5.0 == m1.getMax()));
+ ensure_approximately_equals("3rd insert MMM<> has 3.0 mean", m1.getMean(), lcl_float(3.0), 1);
+
+ // Fourth insert
+ m1.record(1000000.0);
+ ensure("4th insert MMM<> has 4 count", (4 == m1.getCount()));
+ ensure("4th insert MMM<> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("4th insert MMM<> has 100000.0 max", (1000000.0 == m1.getMax()));
+ ensure_approximately_equals("4th insert MMM<> has 250002.0 mean", m1.getMean(), lcl_float(250002.0), 1);
+
+ // Reset
+ m1.reset();
+ ensure("Reset MMM<> has 0 count", (0 == m1.getCount()));
+ ensure("Reset MMM<> has 0 min", (zero == m1.getMin()));
+ ensure("Reset MMM<> has 0 max", (zero == m1.getMax()));
+ ensure("Reset MMM<> has 0 mean no div-by-zero", (zero == m1.getMean()));
+ }
+
+ // Testing LLSimpleStatMMM's response to large values
+ template<> template<>
+ void stat_counter_index_object_t::test<5>()
+ {
+ LLSimpleStatMMM<> m1;
+ typedef LLSimpleStatMMM<>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Insert overflowing values
+ const lcl_float bignum(F32_MAX / 2);
+
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(zero);
+
+ ensure("Overflowed MMM<> has 8 count", (8 == m1.getCount()));
+ ensure("Overflowed MMM<> has 0 min", (zero == m1.getMin()));
+ ensure("Overflowed MMM<> has huge max", (bignum == m1.getMax()));
+ ensure("Overflowed MMM<> has fetchable mean", (1.0 == m1.getMean() || true));
+ // We should be infinte but not interested in proving the IEEE standard here.
+ LLSD sd1(m1.getMean());
+ // std::cout << "Thingy: " << m1.getMean() << " and as LLSD: " << sd1 << std::endl;
+ ensure("Overflowed MMM<> produces LLSDable Real", (sd1.isReal()));
+ }
+
+ // Testing LLSimpleStatMMM<F32>'s external behavior
+ template<> template<>
+ void stat_counter_index_object_t::test<6>()
+ {
+ LLSimpleStatMMM<F32> m1;
+ typedef LLSimpleStatMMM<F32>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Freshly-constructed
+ ensure("Constructed MMM<F32> has 0 count", (0 == m1.getCount()));
+ ensure("Constructed MMM<F32> has 0 min", (zero == m1.getMin()));
+ ensure("Constructed MMM<F32> has 0 max", (zero == m1.getMax()));
+ ensure("Constructed MMM<F32> has 0 mean no div-by-zero", (zero == m1.getMean()));
+
+ // Single insert
+ m1.record(1.0);
+ ensure("Single insert MMM<F32> has 1 count", (1 == m1.getCount()));
+ ensure("Single insert MMM<F32> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("Single insert MMM<F32> has 1.0 max", (1.0 == m1.getMax()));
+ ensure("Single insert MMM<F32> has 1.0 mean", (1.0 == m1.getMean()));
+
+ // Second insert
+ m1.record(3.0);
+ ensure("2nd insert MMM<F32> has 2 count", (2 == m1.getCount()));
+ ensure("2nd insert MMM<F32> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("2nd insert MMM<F32> has 3.0 max", (3.0 == m1.getMax()));
+ ensure_approximately_equals("2nd insert MMM<F32> has 2.0 mean", m1.getMean(), lcl_float(2.0), 1);
+
+ // Third insert
+ m1.record(5.0);
+ ensure("3rd insert MMM<F32> has 3 count", (3 == m1.getCount()));
+ ensure("3rd insert MMM<F32> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("3rd insert MMM<F32> has 5.0 max", (5.0 == m1.getMax()));
+ ensure_approximately_equals("3rd insert MMM<F32> has 3.0 mean", m1.getMean(), lcl_float(3.0), 1);
+
+ // Fourth insert
+ m1.record(1000000.0);
+ ensure("4th insert MMM<F32> has 4 count", (4 == m1.getCount()));
+ ensure("4th insert MMM<F32> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("4th insert MMM<F32> has 1000000.0 max", (1000000.0 == m1.getMax()));
+ ensure_approximately_equals("4th insert MMM<F32> has 250002.0 mean", m1.getMean(), lcl_float(250002.0), 1);
+
+ // Reset
+ m1.reset();
+ ensure("Reset MMM<F32> has 0 count", (0 == m1.getCount()));
+ ensure("Reset MMM<F32> has 0 min", (zero == m1.getMin()));
+ ensure("Reset MMM<F32> has 0 max", (zero == m1.getMax()));
+ ensure("Reset MMM<F32> has 0 mean no div-by-zero", (zero == m1.getMean()));
+ }
+
+ // Testing LLSimpleStatMMM's response to large values
+ template<> template<>
+ void stat_counter_index_object_t::test<7>()
+ {
+ LLSimpleStatMMM<F32> m1;
+ typedef LLSimpleStatMMM<F32>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Insert overflowing values
+ const lcl_float bignum(F32_MAX / 2);
+
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(zero);
+
+ ensure("Overflowed MMM<F32> has 8 count", (8 == m1.getCount()));
+ ensure("Overflowed MMM<F32> has 0 min", (zero == m1.getMin()));
+ ensure("Overflowed MMM<F32> has huge max", (bignum == m1.getMax()));
+ ensure("Overflowed MMM<F32> has fetchable mean", (1.0 == m1.getMean() || true));
+ // We should be infinte but not interested in proving the IEEE standard here.
+ LLSD sd1(m1.getMean());
+ // std::cout << "Thingy: " << m1.getMean() << " and as LLSD: " << sd1 << std::endl;
+ ensure("Overflowed MMM<F32> produces LLSDable Real", (sd1.isReal()));
+ }
+
+ // Testing LLSimpleStatMMM<F64>'s external behavior
+ template<> template<>
+ void stat_counter_index_object_t::test<8>()
+ {
+ LLSimpleStatMMM<F64> m1;
+ typedef LLSimpleStatMMM<F64>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Freshly-constructed
+ ensure("Constructed MMM<F64> has 0 count", (0 == m1.getCount()));
+ ensure("Constructed MMM<F64> has 0 min", (zero == m1.getMin()));
+ ensure("Constructed MMM<F64> has 0 max", (zero == m1.getMax()));
+ ensure("Constructed MMM<F64> has 0 mean no div-by-zero", (zero == m1.getMean()));
+
+ // Single insert
+ m1.record(1.0);
+ ensure("Single insert MMM<F64> has 1 count", (1 == m1.getCount()));
+ ensure("Single insert MMM<F64> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("Single insert MMM<F64> has 1.0 max", (1.0 == m1.getMax()));
+ ensure("Single insert MMM<F64> has 1.0 mean", (1.0 == m1.getMean()));
+
+ // Second insert
+ m1.record(3.0);
+ ensure("2nd insert MMM<F64> has 2 count", (2 == m1.getCount()));
+ ensure("2nd insert MMM<F64> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("2nd insert MMM<F64> has 3.0 max", (3.0 == m1.getMax()));
+ ensure_approximately_equals("2nd insert MMM<F64> has 2.0 mean", m1.getMean(), lcl_float(2.0), 1);
+
+ // Third insert
+ m1.record(5.0);
+ ensure("3rd insert MMM<F64> has 3 count", (3 == m1.getCount()));
+ ensure("3rd insert MMM<F64> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("3rd insert MMM<F64> has 5.0 max", (5.0 == m1.getMax()));
+ ensure_approximately_equals("3rd insert MMM<F64> has 3.0 mean", m1.getMean(), lcl_float(3.0), 1);
+
+ // Fourth insert
+ m1.record(1000000.0);
+ ensure("4th insert MMM<F64> has 4 count", (4 == m1.getCount()));
+ ensure("4th insert MMM<F64> has 1.0 min", (1.0 == m1.getMin()));
+ ensure("4th insert MMM<F64> has 1000000.0 max", (1000000.0 == m1.getMax()));
+ ensure_approximately_equals("4th insert MMM<F64> has 250002.0 mean", m1.getMean(), lcl_float(250002.0), 1);
+
+ // Reset
+ m1.reset();
+ ensure("Reset MMM<F64> has 0 count", (0 == m1.getCount()));
+ ensure("Reset MMM<F64> has 0 min", (zero == m1.getMin()));
+ ensure("Reset MMM<F64> has 0 max", (zero == m1.getMax()));
+ ensure("Reset MMM<F64> has 0 mean no div-by-zero", (zero == m1.getMean()));
+ }
+
+ // Testing LLSimpleStatMMM's response to large values
+ template<> template<>
+ void stat_counter_index_object_t::test<9>()
+ {
+ LLSimpleStatMMM<F64> m1;
+ typedef LLSimpleStatMMM<F64>::Value lcl_float;
+ lcl_float zero(0);
+
+ // Insert overflowing values
+ const lcl_float bignum(F64_MAX / 2);
+
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(zero);
+
+ ensure("Overflowed MMM<F64> has 8 count", (8 == m1.getCount()));
+ ensure("Overflowed MMM<F64> has 0 min", (zero == m1.getMin()));
+ ensure("Overflowed MMM<F64> has huge max", (bignum == m1.getMax()));
+ ensure("Overflowed MMM<F64> has fetchable mean", (1.0 == m1.getMean() || true));
+ // We should be infinte but not interested in proving the IEEE standard here.
+ LLSD sd1(m1.getMean());
+ // std::cout << "Thingy: " << m1.getMean() << " and as LLSD: " << sd1 << std::endl;
+ ensure("Overflowed MMM<F64> produces LLSDable Real", (sd1.isReal()));
+ }
+
+ // Testing LLSimpleStatMMM<U64>'s external behavior
+ template<> template<>
+ void stat_counter_index_object_t::test<10>()
+ {
+ LLSimpleStatMMM<U64> m1;
+ typedef LLSimpleStatMMM<U64>::Value lcl_int;
+ lcl_int zero(0);
+
+ // Freshly-constructed
+ ensure("Constructed MMM<U64> has 0 count", (0 == m1.getCount()));
+ ensure("Constructed MMM<U64> has 0 min", (zero == m1.getMin()));
+ ensure("Constructed MMM<U64> has 0 max", (zero == m1.getMax()));
+ ensure("Constructed MMM<U64> has 0 mean no div-by-zero", (zero == m1.getMean()));
+
+ // Single insert
+ m1.record(1);
+ ensure("Single insert MMM<U64> has 1 count", (1 == m1.getCount()));
+ ensure("Single insert MMM<U64> has 1 min", (1 == m1.getMin()));
+ ensure("Single insert MMM<U64> has 1 max", (1 == m1.getMax()));
+ ensure("Single insert MMM<U64> has 1 mean", (1 == m1.getMean()));
+
+ // Second insert
+ m1.record(3);
+ ensure("2nd insert MMM<U64> has 2 count", (2 == m1.getCount()));
+ ensure("2nd insert MMM<U64> has 1 min", (1 == m1.getMin()));
+ ensure("2nd insert MMM<U64> has 3 max", (3 == m1.getMax()));
+ ensure("2nd insert MMM<U64> has 2 mean", (2 == m1.getMean()));
+
+ // Third insert
+ m1.record(5);
+ ensure("3rd insert MMM<U64> has 3 count", (3 == m1.getCount()));
+ ensure("3rd insert MMM<U64> has 1 min", (1 == m1.getMin()));
+ ensure("3rd insert MMM<U64> has 5 max", (5 == m1.getMax()));
+ ensure("3rd insert MMM<U64> has 3 mean", (3 == m1.getMean()));
+
+ // Fourth insert
+ m1.record(U64L(1000000000000));
+ ensure("4th insert MMM<U64> has 4 count", (4 == m1.getCount()));
+ ensure("4th insert MMM<U64> has 1 min", (1 == m1.getMin()));
+ ensure("4th insert MMM<U64> has 1000000000000ULL max", (U64L(1000000000000) == m1.getMax()));
+ ensure("4th insert MMM<U64> has 250000000002ULL mean", (U64L( 250000000002) == m1.getMean()));
+
+ // Reset
+ m1.reset();
+ ensure("Reset MMM<U64> has 0 count", (0 == m1.getCount()));
+ ensure("Reset MMM<U64> has 0 min", (zero == m1.getMin()));
+ ensure("Reset MMM<U64> has 0 max", (zero == m1.getMax()));
+ ensure("Reset MMM<U64> has 0 mean no div-by-zero", (zero == m1.getMean()));
+ }
+
+ // Testing LLSimpleStatMMM's response to large values
+ template<> template<>
+ void stat_counter_index_object_t::test<11>()
+ {
+ LLSimpleStatMMM<U64> m1;
+ typedef LLSimpleStatMMM<U64>::Value lcl_int;
+ lcl_int zero(0);
+
+ // Insert overflowing values
+ const lcl_int bignum(U64L(0xffffffffffffffff) / 2);
+
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(bignum);
+ m1.record(zero);
+
+ ensure("Overflowed MMM<U64> has 8 count", (8 == m1.getCount()));
+ ensure("Overflowed MMM<U64> has 0 min", (zero == m1.getMin()));
+ ensure("Overflowed MMM<U64> has huge max", (bignum == m1.getMax()));
+ ensure("Overflowed MMM<U64> has fetchable mean", (zero == m1.getMean() || true));
+ }
+
+ // Testing LLSimpleStatCounter's merge() method
+ template<> template<>
+ void stat_counter_index_object_t::test<12>()
+ {
+ LLSimpleStatCounter c1;
+ LLSimpleStatCounter c2;
+
+ ++c1;
+ ++c1;
+ ++c1;
+ ++c1;
+
+ ++c2;
+ ++c2;
+ c2.merge(c1);
+
+ ensure_equals("4 merged into 2 results in 6", 6, c2.getCount());
+
+ ensure_equals("Source of merge is undamaged", 4, c1.getCount());
+ }
+
+ // Testing LLSimpleStatMMM's merge() method
+ template<> template<>
+ void stat_counter_index_object_t::test<13>()
+ {
+ LLSimpleStatMMM<> m1;
+ LLSimpleStatMMM<> m2;
+
+ m1.record(3.5);
+ m1.record(4.5);
+ m1.record(5.5);
+ m1.record(6.5);
+
+ m2.record(5.0);
+ m2.record(7.0);
+ m2.record(9.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p1)", 7, m2.getCount());
+ ensure_approximately_equals("Min after merge (p1)", F32(3.5), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p1)", F32(9.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p1)", F32(41.000/7.000), m2.getMean(), 22);
+
+
+ ensure_equals("Source count of merge is undamaged (p1)", 4, m1.getCount());
+ ensure_approximately_equals("Source min of merge is undamaged (p1)", F32(3.5), m1.getMin(), 22);
+ ensure_approximately_equals("Source max of merge is undamaged (p1)", F32(6.5), m1.getMax(), 22);
+ ensure_approximately_equals("Source mean of merge is undamaged (p1)", F32(5.0), m1.getMean(), 22);
+
+ m2.reset();
+
+ m2.record(-22.0);
+ m2.record(-1.0);
+ m2.record(30.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p2)", 7, m2.getCount());
+ ensure_approximately_equals("Min after merge (p2)", F32(-22.0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p2)", F32(30.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p2)", F32(27.000/7.000), m2.getMean(), 22);
+
+ }
+
+ // Testing LLSimpleStatMMM's merge() method when src contributes nothing
+ template<> template<>
+ void stat_counter_index_object_t::test<14>()
+ {
+ LLSimpleStatMMM<> m1;
+ LLSimpleStatMMM<> m2;
+
+ m2.record(5.0);
+ m2.record(7.0);
+ m2.record(9.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p1)", 3, m2.getCount());
+ ensure_approximately_equals("Min after merge (p1)", F32(5.0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p1)", F32(9.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p1)", F32(7.000), m2.getMean(), 22);
+
+ ensure_equals("Source count of merge is undamaged (p1)", 0, m1.getCount());
+ ensure_approximately_equals("Source min of merge is undamaged (p1)", F32(0), m1.getMin(), 22);
+ ensure_approximately_equals("Source max of merge is undamaged (p1)", F32(0), m1.getMax(), 22);
+ ensure_approximately_equals("Source mean of merge is undamaged (p1)", F32(0), m1.getMean(), 22);
+
+ m2.reset();
+
+ m2.record(-22.0);
+ m2.record(-1.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p2)", 2, m2.getCount());
+ ensure_approximately_equals("Min after merge (p2)", F32(-22.0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p2)", F32(-1.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p2)", F32(-11.5), m2.getMean(), 22);
+ }
+
+ // Testing LLSimpleStatMMM's merge() method when dst contributes nothing
+ template<> template<>
+ void stat_counter_index_object_t::test<15>()
+ {
+ LLSimpleStatMMM<> m1;
+ LLSimpleStatMMM<> m2;
+
+ m1.record(5.0);
+ m1.record(7.0);
+ m1.record(9.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p1)", 3, m2.getCount());
+ ensure_approximately_equals("Min after merge (p1)", F32(5.0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p1)", F32(9.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p1)", F32(7.000), m2.getMean(), 22);
+
+ ensure_equals("Source count of merge is undamaged (p1)", 3, m1.getCount());
+ ensure_approximately_equals("Source min of merge is undamaged (p1)", F32(5.0), m1.getMin(), 22);
+ ensure_approximately_equals("Source max of merge is undamaged (p1)", F32(9.0), m1.getMax(), 22);
+ ensure_approximately_equals("Source mean of merge is undamaged (p1)", F32(7.0), m1.getMean(), 22);
+
+ m1.reset();
+ m2.reset();
+
+ m1.record(-22.0);
+ m1.record(-1.0);
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p2)", 2, m2.getCount());
+ ensure_approximately_equals("Min after merge (p2)", F32(-22.0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p2)", F32(-1.0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p2)", F32(-11.5), m2.getMean(), 22);
+ }
+
+ // Testing LLSimpleStatMMM's merge() method when neither dst nor src contributes
+ template<> template<>
+ void stat_counter_index_object_t::test<16>()
+ {
+ LLSimpleStatMMM<> m1;
+ LLSimpleStatMMM<> m2;
+
+ m2.merge(m1);
+
+ ensure_equals("Count after merge (p1)", 0, m2.getCount());
+ ensure_approximately_equals("Min after merge (p1)", F32(0), m2.getMin(), 22);
+ ensure_approximately_equals("Max after merge (p1)", F32(0), m2.getMax(), 22);
+ ensure_approximately_equals("Mean after merge (p1)", F32(0), m2.getMean(), 22);
+
+ ensure_equals("Source count of merge is undamaged (p1)", 0, m1.getCount());
+ ensure_approximately_equals("Source min of merge is undamaged (p1)", F32(0), m1.getMin(), 22);
+ ensure_approximately_equals("Source max of merge is undamaged (p1)", F32(0), m1.getMax(), 22);
+ ensure_approximately_equals("Source mean of merge is undamaged (p1)", F32(0), m1.getMean(), 22);
+ }
+}
diff --git a/indra/newview/tests/llsky_stub.cpp b/indra/newview/tests/llsky_stub.cpp
new file mode 100644
index 0000000000..241d740635
--- /dev/null
+++ b/indra/newview/tests/llsky_stub.cpp
@@ -0,0 +1,37 @@
+/**
+ * @file llsky_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+class LLSky
+{
+public:
+ void setOverrideSun(BOOL override);
+ void setSunDirection(const LLVector3 &sun_direction, const LLVector3 &sun_ang_velocity);
+};
+
+void LLSky::setOverrideSun(BOOL override) {}
+void LLSky::setSunDirection(const LLVector3 &sun_direction, const LLVector3 &sun_ang_velocity) {}
+
+LLSky gSky;
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
new file mode 100644
index 0000000000..10e37fae97
--- /dev/null
+++ b/indra/newview/tests/lltranslate_test.cpp
@@ -0,0 +1,345 @@
+/**
+ * @file lltranslate_test.cpp
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+#include "../lltranslate.h"
+#include "../llversioninfo.h"
+#include "../llviewercontrol.h"
+
+#include "llbufferstream.h"
+#include "lltrans.h"
+#include "llui.h"
+
+static const std::string GOOGLE_VALID_RESPONSE1 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\",\
+ \"detectedSourceLanguage\": \"es\"\
+ }\
+ ]\
+ }\
+}";
+
+static const std::string GOOGLE_VALID_RESPONSE2 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\"\
+ }\
+ ]\
+ }\
+}\
+";
+
+static const std::string GOOGLE_VALID_RESPONSE3 =
+"{\
+ \"error\": {\
+ \"errors\": [\
+ {\
+ \"domain\": \"global\",\
+ \"reason\": \"invalid\",\
+ \"message\": \"Invalid Value\"\
+ }\
+ ],\
+ \"code\": 400,\
+ \"message\": \"Invalid Value\"\
+ }\
+}";
+
+static const std::string BING_VALID_RESPONSE1 =
+"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет</string>";
+
+static const std::string BING_VALID_RESPONSE2 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p>\
+<p>Message: 'from' must be a valid language</p><code></code>\
+<p>message id=3743.V2_Rest.Translate.58E8454F</p></body></html>";
+
+static const std::string BING_VALID_RESPONSE3 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p>\
+<p>Parameter: appId</p><p>Message: Invalid appId&#xD;\nParameter name: appId</p>\
+<code></code><p>message id=3737.V2_Rest.Translate.56016759</p></body></html>";
+
+namespace tut
+{
+ class translate_test
+ {
+ protected:
+ void test_translation(
+ LLTranslationAPIHandler& handler,
+ int status, const std::string& resp,
+ const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err)
+ {
+ std::string translation, detected_lang, err_msg;
+ bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg);
+ ensure_equals("rc", rc, (status == 200));
+ ensure_equals("err_msg", err_msg, exp_err);
+ ensure_equals("translation", translation, exp_trans);
+ ensure_equals("detected_lang", detected_lang, exp_lang);
+ }
+
+ LLGoogleTranslationHandler mGoogle;
+ LLBingTranslationHandler mBing;
+ };
+
+ typedef test_group<translate_test> translate_test_group_t;
+ typedef translate_test_group_t::object translate_test_object_t;
+ tut::translate_test_group_t tut_translate("LLTranslate");
+
+ template<> template<>
+ void translate_test_object_t::test<1>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<2>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<3>()
+ {
+ test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<4>()
+ {
+ test_translation(mGoogle, 400,
+ "",
+ "", "", "* Line 1, Column 1\n Syntax error: value, object or array expected.\n");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<5>()
+ {
+ test_translation(mGoogle, 400,
+ "[]",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<6>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"oops\": \"invalid\"}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<7>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": {}}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<8>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ {} ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<9>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<10>()
+ {
+ test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<11>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<12>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<13>()
+ {
+ test_translation(mBing, 200,
+ "Привет</string>",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<14>()
+ {
+ test_translation(mBing, 200,
+ "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<15>()
+ {
+ test_translation(mBing, 200,
+ "Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<16>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error</p>",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<17>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<18>()
+ {
+ test_translation(mBing, 400,
+ "some error</p>",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<19>()
+ {
+ test_translation(mBing, 400,
+ "some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<20>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<21>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<22>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<23>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es");
+ }
+}
+
+//== Misc stubs ===============================================================
+LLControlGroup gSavedSettings("test");
+
+std::string LLUI::getLanguage() { return "en"; }
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; }
+
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) {}
+std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }
+LLControlGroup::~LLControlGroup() {}
+
+namespace boost {
+ void intrusive_ptr_add_ref(LLCurl::Responder*) {}
+ void intrusive_ptr_release(LLCurl::Responder*) {}
+}
+
+LLCurl::Responder::Responder() {}
+void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {}
+void LLCurl::Responder::completed(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::error(U32, std::string const&) {}
+void LLCurl::Responder::errorWithContent(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::result(LLSD const&) {}
+LLCurl::Responder::~Responder() {}
+
+void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {}
+void LLHTTPClient::get(const std::string&, boost::intrusive_ptr<LLCurl::Responder>, const LLSD&, const F32) {}
+
+LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer)
+: std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {}
+LLBufferStream::~LLBufferStream() {}
+
+LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {}
+#if( LL_WINDOWS || __GNUC__ > 2)
+LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff(
+ off_type off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#else
+streampos LLBufferStreamBuf::seekoff(
+ streamoff off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#endif
+{ return 0; }
+int LLBufferStreamBuf::sync() {return 0;}
+int LLBufferStreamBuf::underflow() {return 0;}
+int LLBufferStreamBuf::overflow(int) {return 0;}
+LLBufferStreamBuf::~LLBufferStreamBuf() {}
+
+S32 LLVersionInfo::getBuild() { return 0; }
+const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;}
+S32 LLVersionInfo::getMajor() { return 0; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp
index 8855a24ead..398d8f16ed 100644
--- a/indra/newview/tests/llversioninfo_test.cpp
+++ b/indra/newview/tests/llversioninfo_test.cpp
@@ -51,15 +51,15 @@ namespace tut
mShortVersion = stream.str();
stream.str("");
- stream << mVersion
+ stream << LL_CHANNEL
<< " "
- << LL_CHANNEL;
+ << mVersion;
mVersionAndChannel = stream.str();
stream.str("");
- stream << mVersion
+ stream << mResetChannel
<< " "
- << mResetChannel;
+ << mVersion;
mResetVersionAndChannel = stream.str();
}
std::string mResetChannel;
@@ -99,7 +99,7 @@ namespace tut
LLVersionInfo::getShortVersion(),
mShortVersion);
ensure_equals("Version and channel String",
- LLVersionInfo::getVersionAndChannel(),
+ LLVersionInfo::getChannelAndVersion(),
mVersionAndChannel);
LLVersionInfo::resetChannel(mResetChannel);
@@ -108,7 +108,7 @@ namespace tut
mResetChannel);
ensure_equals("Reset Version and channel String",
- LLVersionInfo::getVersionAndChannel(),
+ LLVersionInfo::getChannelAndVersion(),
mResetVersionAndChannel);
}
}
diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp
new file mode 100644
index 0000000000..3faddc13c1
--- /dev/null
+++ b/indra/newview/tests/llviewerassetstats_test.cpp
@@ -0,0 +1,984 @@
+/**
+ * @file llviewerassetstats_tut.cpp
+ * @date 2010-10-28
+ * @brief Test cases for some of newview/llviewerassetstats.cpp
+ *
+ * $LicenseInfo:firstyear=2010&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include <tut/tut.hpp>
+#include <iostream>
+
+#include "lltut.h"
+#include "../llviewerassetstats.h"
+#include "lluuid.h"
+#include "llsdutil.h"
+#include "llregionhandle.h"
+
+static const char * all_keys[] =
+{
+ "duration",
+ "fps",
+ "get_other",
+ "get_texture_temp_http",
+ "get_texture_temp_udp",
+ "get_texture_non_temp_http",
+ "get_texture_non_temp_udp",
+ "get_wearable_udp",
+ "get_sound_udp",
+ "get_gesture_udp"
+};
+
+static const char * resp_keys[] =
+{
+ "get_other",
+ "get_texture_temp_http",
+ "get_texture_temp_udp",
+ "get_texture_non_temp_http",
+ "get_texture_non_temp_udp",
+ "get_wearable_udp",
+ "get_sound_udp",
+ "get_gesture_udp"
+};
+
+static const char * sub_keys[] =
+{
+ "dequeued",
+ "enqueued",
+ "resp_count",
+ "resp_max",
+ "resp_min",
+ "resp_mean"
+};
+
+static const char * mmm_resp_keys[] =
+{
+ "fps"
+};
+
+static const char * mmm_sub_keys[] =
+{
+ "count",
+ "max",
+ "min",
+ "mean"
+};
+
+static const LLUUID region1("4e2d81a3-6263-6ffe-ad5c-8ce04bee07e8");
+static const LLUUID region2("68762cc8-b68b-4e45-854b-e830734f2d4a");
+static const U64 region1_handle(0x0000040000003f00ULL);
+static const U64 region2_handle(0x0000030000004200ULL);
+static const std::string region1_handle_str("0000040000003f00");
+static const std::string region2_handle_str("0000030000004200");
+
+#if 0
+static bool
+is_empty_map(const LLSD & sd)
+{
+ return sd.isMap() && 0 == sd.size();
+}
+
+static bool
+is_single_key_map(const LLSD & sd, const std::string & key)
+{
+ return sd.isMap() && 1 == sd.size() && sd.has(key);
+}
+#endif
+
+static bool
+is_double_key_map(const LLSD & sd, const std::string & key1, const std::string & key2)
+{
+ return sd.isMap() && 2 == sd.size() && sd.has(key1) && sd.has(key2);
+}
+
+static bool
+is_no_stats_map(const LLSD & sd)
+{
+ return is_double_key_map(sd, "duration", "regions");
+}
+
+static bool
+is_single_slot_array(const LLSD & sd, U64 region_handle)
+{
+ U32 grid_x(0), grid_y(0);
+ grid_from_region_handle(region_handle, &grid_x, &grid_y);
+
+ return (sd.isArray() &&
+ 1 == sd.size() &&
+ sd[0].has("grid_x") &&
+ sd[0].has("grid_y") &&
+ sd[0]["grid_x"].isInteger() &&
+ sd[0]["grid_y"].isInteger() &&
+ grid_x == sd[0]["grid_x"].asInteger() &&
+ grid_y == sd[0]["grid_y"].asInteger());
+}
+
+static bool
+is_double_slot_array(const LLSD & sd, U64 region_handle1, U64 region_handle2)
+{
+ U32 grid_x1(0), grid_y1(0);
+ U32 grid_x2(0), grid_y2(0);
+ grid_from_region_handle(region_handle1, &grid_x1, &grid_y1);
+ grid_from_region_handle(region_handle2, &grid_x2, &grid_y2);
+
+ return (sd.isArray() &&
+ 2 == sd.size() &&
+ sd[0].has("grid_x") &&
+ sd[0].has("grid_y") &&
+ sd[0]["grid_x"].isInteger() &&
+ sd[0]["grid_y"].isInteger() &&
+ sd[1].has("grid_x") &&
+ sd[1].has("grid_y") &&
+ sd[1]["grid_x"].isInteger() &&
+ sd[1]["grid_y"].isInteger() &&
+ ((grid_x1 == sd[0]["grid_x"].asInteger() &&
+ grid_y1 == sd[0]["grid_y"].asInteger() &&
+ grid_x2 == sd[1]["grid_x"].asInteger() &&
+ grid_y2 == sd[1]["grid_y"].asInteger()) ||
+ (grid_x1 == sd[1]["grid_x"].asInteger() &&
+ grid_y1 == sd[1]["grid_y"].asInteger() &&
+ grid_x2 == sd[0]["grid_x"].asInteger() &&
+ grid_y2 == sd[0]["grid_y"].asInteger())));
+}
+
+static LLSD
+get_region(const LLSD & sd, U64 region_handle1)
+{
+ U32 grid_x(0), grid_y(0);
+ grid_from_region_handle(region_handle1, &grid_x, &grid_y);
+
+ for (LLSD::array_const_iterator it(sd["regions"].beginArray());
+ sd["regions"].endArray() != it;
+ ++it)
+ {
+ if ((*it).has("grid_x") &&
+ (*it).has("grid_y") &&
+ (*it)["grid_x"].isInteger() &&
+ (*it)["grid_y"].isInteger() &&
+ (*it)["grid_x"].asInteger() == grid_x &&
+ (*it)["grid_y"].asInteger() == grid_y)
+ {
+ return *it;
+ }
+ }
+ return LLSD();
+}
+
+namespace tut
+{
+ struct tst_viewerassetstats_index
+ {};
+ typedef test_group<tst_viewerassetstats_index> tst_viewerassetstats_index_t;
+ typedef tst_viewerassetstats_index_t::object tst_viewerassetstats_index_object_t;
+ tut::tst_viewerassetstats_index_t tut_tst_viewerassetstats_index("tst_viewerassetstats_test");
+
+ // Testing free functions without global stats allocated
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<1>()
+ {
+ // Check that helpers aren't bothered by missing global stats
+ ensure("Global gViewerAssetStatsMain should be NULL", (NULL == gViewerAssetStatsMain));
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_response_main(LLViewerAssetType::AT_GESTURE, false, false, 12300000ULL);
+ }
+
+ // Create a non-global instance and check the structure
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<2>()
+ {
+ ensure("Global gViewerAssetStatsMain should be NULL", (NULL == gViewerAssetStatsMain));
+
+ LLViewerAssetStats * it = new LLViewerAssetStats();
+
+ ensure("Global gViewerAssetStatsMain should still be NULL", (NULL == gViewerAssetStatsMain));
+
+ LLSD sd_full = it->asLLSD(false);
+
+ // Default (NULL) region ID doesn't produce LLSD results so should
+ // get an empty map back from output
+ ensure("Stat-less LLSD initially", is_no_stats_map(sd_full));
+
+ // Once the region is set, we will get a response even with no data collection
+ it->setRegion(region1_handle);
+ sd_full = it->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd_full, "duration", "regions"));
+ ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd_full["regions"], region1_handle));
+
+ LLSD sd = sd_full["regions"][0];
+
+ delete it;
+
+ // Check the structure of the LLSD
+ for (int i = 0; i < LL_ARRAY_SIZE(all_keys); ++i)
+ {
+ std::string line = llformat("Has '%s' key", all_keys[i]);
+ ensure(line, sd.has(all_keys[i]));
+ }
+
+ for (int i = 0; i < LL_ARRAY_SIZE(resp_keys); ++i)
+ {
+ for (int j = 0; j < LL_ARRAY_SIZE(sub_keys); ++j)
+ {
+ std::string line = llformat("Key '%s' has '%s' key", resp_keys[i], sub_keys[j]);
+ ensure(line, sd[resp_keys[i]].has(sub_keys[j]));
+ }
+ }
+
+ for (int i = 0; i < LL_ARRAY_SIZE(mmm_resp_keys); ++i)
+ {
+ for (int j = 0; j < LL_ARRAY_SIZE(mmm_sub_keys); ++j)
+ {
+ std::string line = llformat("Key '%s' has '%s' key", mmm_resp_keys[i], mmm_sub_keys[j]);
+ ensure(line, sd[mmm_resp_keys[i]].has(mmm_sub_keys[j]));
+ }
+ }
+ }
+
+ // Create a non-global instance and check some content
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<3>()
+ {
+ LLViewerAssetStats * it = new LLViewerAssetStats();
+ it->setRegion(region1_handle);
+
+ LLSD sd = it->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
+ ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
+ sd = sd[0];
+
+ delete it;
+
+ // Check a few points on the tree for content
+ ensure("sd[get_texture_temp_http][dequeued] is 0", (0 == sd["get_texture_temp_http"]["dequeued"].asInteger()));
+ ensure("sd[get_sound_udp][resp_min] is 0", (0.0 == sd["get_sound_udp"]["resp_min"].asReal()));
+ }
+
+ // Create a global instance and verify free functions do something useful
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<4>()
+ {
+ gViewerAssetStatsMain = new LLViewerAssetStats();
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLSD sd = gViewerAssetStatsMain->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
+ ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
+ sd = sd["regions"][0];
+
+ // Check a few points on the tree for content
+ ensure("sd[get_texture_non_temp_udp][enqueued] is 1", (1 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_temp_udp][enqueued] is 0", (0 == sd["get_texture_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_non_temp_http][enqueued] is 0", (0 == sd["get_texture_non_temp_http"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_temp_http][enqueued] is 0", (0 == sd["get_texture_temp_http"]["enqueued"].asInteger()));
+ ensure("sd[get_gesture_udp][dequeued] is 0", (0 == sd["get_gesture_udp"]["dequeued"].asInteger()));
+
+ // Reset and check zeros...
+ // Reset leaves current region in place
+ gViewerAssetStatsMain->reset();
+ sd = gViewerAssetStatsMain->asLLSD(false)["regions"][region1_handle_str];
+
+ delete gViewerAssetStatsMain;
+ gViewerAssetStatsMain = NULL;
+
+ ensure("sd[get_texture_non_temp_udp][enqueued] is reset", (0 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_gesture_udp][dequeued] is reset", (0 == sd["get_gesture_udp"]["dequeued"].asInteger()));
+ }
+
+ // Create two global instances and verify no interactions
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<5>()
+ {
+ gViewerAssetStatsThread1 = new LLViewerAssetStats();
+ gViewerAssetStatsMain = new LLViewerAssetStats();
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
+ ensure("Other collector is empty", is_no_stats_map(sd));
+ sd = gViewerAssetStatsMain->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
+ ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
+ sd = sd["regions"][0];
+
+ // Check a few points on the tree for content
+ ensure("sd[get_texture_non_temp_udp][enqueued] is 1", (1 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_temp_udp][enqueued] is 0", (0 == sd["get_texture_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_non_temp_http][enqueued] is 0", (0 == sd["get_texture_non_temp_http"]["enqueued"].asInteger()));
+ ensure("sd[get_texture_temp_http][enqueued] is 0", (0 == sd["get_texture_temp_http"]["enqueued"].asInteger()));
+ ensure("sd[get_gesture_udp][dequeued] is 0", (0 == sd["get_gesture_udp"]["dequeued"].asInteger()));
+
+ // Reset and check zeros...
+ // Reset leaves current region in place
+ gViewerAssetStatsMain->reset();
+ sd = gViewerAssetStatsMain->asLLSD(false)["regions"][0];
+
+ delete gViewerAssetStatsMain;
+ gViewerAssetStatsMain = NULL;
+ delete gViewerAssetStatsThread1;
+ gViewerAssetStatsThread1 = NULL;
+
+ ensure("sd[get_texture_non_temp_udp][enqueued] is reset", (0 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_gesture_udp][dequeued] is reset", (0 == sd["get_gesture_udp"]["dequeued"].asInteger()));
+ }
+
+ // Check multiple region collection
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<6>()
+ {
+ gViewerAssetStatsMain = new LLViewerAssetStats();
+
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLViewerAssetStatsFF::set_region_main(region2_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+
+ LLSD sd = gViewerAssetStatsMain->asLLSD(false);
+
+ // std::cout << sd << std::endl;
+
+ ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
+ ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
+ LLSD sd1 = get_region(sd, region1_handle);
+ LLSD sd2 = get_region(sd, region2_handle);
+ ensure("Region1 is present in results", sd1.isMap());
+ ensure("Region2 is present in results", sd2.isMap());
+
+ // Check a few points on the tree for content
+ ensure_equals("sd1[get_texture_non_temp_udp][enqueued] is 1", sd1["get_texture_non_temp_udp"]["enqueued"].asInteger(), 1);
+ ensure_equals("sd1[get_texture_temp_udp][enqueued] is 0", sd1["get_texture_temp_udp"]["enqueued"].asInteger(), 0);
+ ensure_equals("sd1[get_texture_non_temp_http][enqueued] is 0", sd1["get_texture_non_temp_http"]["enqueued"].asInteger(), 0);
+ ensure_equals("sd1[get_texture_temp_http][enqueued] is 0", sd1["get_texture_temp_http"]["enqueued"].asInteger(), 0);
+ ensure_equals("sd1[get_gesture_udp][dequeued] is 0", sd1["get_gesture_udp"]["dequeued"].asInteger(), 0);
+
+ // Check a few points on the tree for content
+ ensure("sd2[get_gesture_udp][enqueued] is 4", (4 == sd2["get_gesture_udp"]["enqueued"].asInteger()));
+ ensure("sd2[get_gesture_udp][dequeued] is 0", (0 == sd2["get_gesture_udp"]["dequeued"].asInteger()));
+ ensure("sd2[get_texture_non_temp_udp][enqueued] is 0", (0 == sd2["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+
+ // Reset and check zeros...
+ // Reset leaves current region in place
+ gViewerAssetStatsMain->reset();
+ sd = gViewerAssetStatsMain->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
+ ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
+ sd2 = sd["regions"][0];
+
+ delete gViewerAssetStatsMain;
+ gViewerAssetStatsMain = NULL;
+
+ ensure("sd2[get_texture_non_temp_udp][enqueued] is reset", (0 == sd2["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd2[get_gesture_udp][enqueued] is reset", (0 == sd2["get_gesture_udp"]["enqueued"].asInteger()));
+ }
+
+ // Check multiple region collection jumping back-and-forth between regions
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<7>()
+ {
+ gViewerAssetStatsMain = new LLViewerAssetStats();
+
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLViewerAssetStatsFF::set_region_main(region2_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, true, true);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, true, true);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLViewerAssetStatsFF::set_region_main(region2_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);
+
+ LLSD sd = gViewerAssetStatsMain->asLLSD(false);
+
+ ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
+ ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
+ LLSD sd1 = get_region(sd, region1_handle);
+ LLSD sd2 = get_region(sd, region2_handle);
+ ensure("Region1 is present in results", sd1.isMap());
+ ensure("Region2 is present in results", sd2.isMap());
+
+ // Check a few points on the tree for content
+ ensure("sd1[get_texture_non_temp_udp][enqueued] is 1", (1 == sd1["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd1[get_texture_temp_udp][enqueued] is 0", (0 == sd1["get_texture_temp_udp"]["enqueued"].asInteger()));
+ ensure("sd1[get_texture_non_temp_http][enqueued] is 0", (0 == sd1["get_texture_non_temp_http"]["enqueued"].asInteger()));
+ ensure("sd1[get_texture_temp_http][enqueued] is 1", (1 == sd1["get_texture_temp_http"]["enqueued"].asInteger()));
+ ensure("sd1[get_gesture_udp][dequeued] is 0", (0 == sd1["get_gesture_udp"]["dequeued"].asInteger()));
+
+ // Check a few points on the tree for content
+ ensure("sd2[get_gesture_udp][enqueued] is 8", (8 == sd2["get_gesture_udp"]["enqueued"].asInteger()));
+ ensure("sd2[get_gesture_udp][dequeued] is 0", (0 == sd2["get_gesture_udp"]["dequeued"].asInteger()));
+ ensure("sd2[get_texture_non_temp_udp][enqueued] is 0", (0 == sd2["get_texture_non_temp_udp"]["enqueued"].asInteger()));
+
+ // Reset and check zeros...
+ // Reset leaves current region in place
+ gViewerAssetStatsMain->reset();
+ sd = gViewerAssetStatsMain->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
+ ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
+ sd2 = get_region(sd, region2_handle);
+ ensure("Region2 is present in results", sd2.isMap());
+
+ delete gViewerAssetStatsMain;
+ gViewerAssetStatsMain = NULL;
+
+ ensure_equals("sd2[get_texture_non_temp_udp][enqueued] is reset", sd2["get_texture_non_temp_udp"]["enqueued"].asInteger(), 0);
+ ensure_equals("sd2[get_gesture_udp][enqueued] is reset", sd2["get_gesture_udp"]["enqueued"].asInteger(), 0);
+ }
+
+ // Non-texture assets ignore transport and persistence flags
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<8>()
+ {
+ gViewerAssetStatsThread1 = new LLViewerAssetStats();
+ gViewerAssetStatsMain = new LLViewerAssetStats();
+ LLViewerAssetStatsFF::set_region_main(region1_handle);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, true);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, true);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, true, false);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, true, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, true, true);
+ LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, true, true);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_LSL_BYTECODE, false, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_LSL_BYTECODE, false, true);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_LSL_BYTECODE, true, false);
+
+ LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
+ ensure("Other collector is empty", is_no_stats_map(sd));
+ sd = gViewerAssetStatsMain->asLLSD(false);
+ ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
+ ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
+ sd = get_region(sd, region1_handle);
+ ensure("Region1 is present in results", sd.isMap());
+
+ // Check a few points on the tree for content
+ ensure("sd[get_gesture_udp][enqueued] is 0", (0 == sd["get_gesture_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_gesture_udp][dequeued] is 0", (0 == sd["get_gesture_udp"]["dequeued"].asInteger()));
+
+ ensure("sd[get_wearable_udp][enqueued] is 4", (4 == sd["get_wearable_udp"]["enqueued"].asInteger()));
+ ensure("sd[get_wearable_udp][dequeued] is 4", (4 == sd["get_wearable_udp"]["dequeued"].asInteger()));
+
+ ensure("sd[get_other][enqueued] is 4", (4 == sd["get_other"]["enqueued"].asInteger()));
+ ensure("sd[get_other][dequeued] is 0", (0 == sd["get_other"]["dequeued"].asInteger()));
+
+ // Reset and check zeros...
+ // Reset leaves current region in place
+ gViewerAssetStatsMain->reset();
+ sd = get_region(gViewerAssetStatsMain->asLLSD(false), region1_handle);
+ ensure("Region1 is present in results", sd.isMap());
+
+ delete gViewerAssetStatsMain;
+ gViewerAssetStatsMain = NULL;
+ delete gViewerAssetStatsThread1;
+ gViewerAssetStatsThread1 = NULL;
+
+ ensure_equals("sd[get_texture_non_temp_udp][enqueued] is reset", sd["get_texture_non_temp_udp"]["enqueued"].asInteger(), 0);
+ ensure_equals("sd[get_gesture_udp][dequeued] is reset", sd["get_gesture_udp"]["dequeued"].asInteger(), 0);
+ }
+
+
+ // LLViewerAssetStats::merge() basic functions work
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<9>()
+ {
+ LLViewerAssetStats s1;
+ LLViewerAssetStats s2;
+
+ s1.setRegion(region1_handle);
+ s2.setRegion(region1_handle);
+
+ s1.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 5000000);
+ s1.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 6000000);
+ s1.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 8000000);
+ s1.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 7000000);
+ s1.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 9000000);
+
+ s2.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 2000000);
+ s2.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 3000000);
+ s2.recordGetServiced(LLViewerAssetType::AT_TEXTURE, true, true, 4000000);
+
+ s2.merge(s1);
+
+ LLSD s2_llsd = get_region(s2.asLLSD(false), region1_handle);
+ ensure("Region1 is present in results", s2_llsd.isMap());
+
+ ensure_equals("count after merge", s2_llsd["get_texture_temp_http"]["resp_count"].asInteger(), 8);
+ ensure_approximately_equals("min after merge", s2_llsd["get_texture_temp_http"]["resp_min"].asReal(), 2.0, 22);
+ ensure_approximately_equals("max after merge", s2_llsd["get_texture_temp_http"]["resp_max"].asReal(), 9.0, 22);
+ ensure_approximately_equals("max after merge", s2_llsd["get_texture_temp_http"]["resp_mean"].asReal(), 5.5, 22);
+ }
+
+ // LLViewerAssetStats::merge() basic functions work without corrupting source data
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<10>()
+ {
+ LLViewerAssetStats s1;
+ LLViewerAssetStats s2;
+
+ s1.setRegion(region1_handle);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 23289200);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 282900);
+
+
+ s2.setRegion(region2_handle);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 6500000);
+ s2.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 10000);
+
+ {
+ s2.merge(s1);
+
+ LLSD src = s1.asLLSD(false);
+ LLSD dst = s2.asLLSD(false);
+
+ ensure_equals("merge src has single region", src["regions"].size(), 1);
+ ensure_equals("merge dst has dual regions", dst["regions"].size(), 2);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+ dst["regions"][1].erase("duration");
+
+ LLSD s1_llsd = get_region(src, region1_handle);
+ ensure("Region1 is present in src", s1_llsd.isMap());
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure("result from src is in dst", llsd_equals(s1_llsd, s2_llsd));
+ }
+
+ s1.setRegion(region1_handle);
+ s2.setRegion(region1_handle);
+ s1.reset();
+ s2.reset();
+
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 23289200);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 282900);
+
+
+ s2.setRegion(region1_handle);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 6500000);
+ s2.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 10000);
+
+ {
+ s2.merge(s1);
+
+ LLSD src = s1.asLLSD(false);
+ LLSD dst = s2.asLLSD(false);
+
+ ensure_equals("merge src has single region (p2)", src["regions"].size(), 1);
+ ensure_equals("merge dst has single region (p2)", dst["regions"].size(), 1);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+
+ LLSD s1_llsd = get_region(src, region1_handle);
+ ensure("Region1 is present in src", s1_llsd.isMap());
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure_equals("src counts okay (enq)", s1_llsd["get_other"]["enqueued"].asInteger(), 4);
+ ensure_equals("src counts okay (deq)", s1_llsd["get_other"]["dequeued"].asInteger(), 4);
+ ensure_equals("src resp counts okay", s1_llsd["get_other"]["resp_count"].asInteger(), 2);
+ ensure_approximately_equals("src respmin okay", s1_llsd["get_other"]["resp_min"].asReal(), 0.2829, 20);
+ ensure_approximately_equals("src respmax okay", s1_llsd["get_other"]["resp_max"].asReal(), 23.2892, 20);
+
+ ensure_equals("dst counts okay (enq)", s2_llsd["get_other"]["enqueued"].asInteger(), 12);
+ ensure_equals("src counts okay (deq)", s2_llsd["get_other"]["dequeued"].asInteger(), 11);
+ ensure_equals("dst resp counts okay", s2_llsd["get_other"]["resp_count"].asInteger(), 4);
+ ensure_approximately_equals("dst respmin okay", s2_llsd["get_other"]["resp_min"].asReal(), 0.010, 20);
+ ensure_approximately_equals("dst respmax okay", s2_llsd["get_other"]["resp_max"].asReal(), 23.2892, 20);
+ }
+ }
+
+
+ // Maximum merges are interesting when one side contributes nothing
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<11>()
+ {
+ LLViewerAssetStats s1;
+ LLViewerAssetStats s2;
+
+ s1.setRegion(region1_handle);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ // Want to test negative numbers here but have to work in U64
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+
+ s2.setRegion(region1_handle);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ {
+ s2.merge(s1);
+
+ LLSD src = s1.asLLSD(false);
+ LLSD dst = s2.asLLSD(false);
+
+ ensure_equals("merge src has single region", src["regions"].size(), 1);
+ ensure_equals("merge dst has single region", dst["regions"].size(), 1);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure_equals("dst counts come from src only", s2_llsd["get_other"]["resp_count"].asInteger(), 3);
+
+ ensure_approximately_equals("dst maximum with count 0 does not contribute to merged maximum",
+ s2_llsd["get_other"]["resp_max"].asReal(), F64(0.0), 20);
+ }
+
+ // Other way around
+ s1.setRegion(region1_handle);
+ s2.setRegion(region1_handle);
+ s1.reset();
+ s2.reset();
+
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ // Want to test negative numbers here but have to work in U64
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 0);
+
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ {
+ s1.merge(s2);
+
+ LLSD src = s2.asLLSD(false);
+ LLSD dst = s1.asLLSD(false);
+
+ ensure_equals("merge src has single region", src["regions"].size(), 1);
+ ensure_equals("merge dst has single region", dst["regions"].size(), 1);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure_equals("dst counts come from src only (flipped)", s2_llsd["get_other"]["resp_count"].asInteger(), 3);
+
+ ensure_approximately_equals("dst maximum with count 0 does not contribute to merged maximum (flipped)",
+ s2_llsd["get_other"]["resp_max"].asReal(), F64(0.0), 20);
+ }
+ }
+
+ // Minimum merges are interesting when one side contributes nothing
+ template<> template<>
+ void tst_viewerassetstats_index_object_t::test<12>()
+ {
+ LLViewerAssetStats s1;
+ LLViewerAssetStats s2;
+
+ s1.setRegion(region1_handle);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 3800000);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 2700000);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 2900000);
+
+ s2.setRegion(region1_handle);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ {
+ s2.merge(s1);
+
+ LLSD src = s1.asLLSD(false);
+ LLSD dst = s2.asLLSD(false);
+
+ ensure_equals("merge src has single region", src["regions"].size(), 1);
+ ensure_equals("merge dst has single region", dst["regions"].size(), 1);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure_equals("dst counts come from src only", s2_llsd["get_other"]["resp_count"].asInteger(), 3);
+
+ ensure_approximately_equals("dst minimum with count 0 does not contribute to merged minimum",
+ s2_llsd["get_other"]["resp_min"].asReal(), F64(2.7), 20);
+ }
+
+ // Other way around
+ s1.setRegion(region1_handle);
+ s2.setRegion(region1_handle);
+ s1.reset();
+ s2.reset();
+
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s1.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 3800000);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 2700000);
+ s1.recordGetServiced(LLViewerAssetType::AT_LSL_BYTECODE, true, true, 2900000);
+
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetEnqueued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+ s2.recordGetDequeued(LLViewerAssetType::AT_LSL_BYTECODE, true, true);
+
+ {
+ s1.merge(s2);
+
+ LLSD src = s2.asLLSD(false);
+ LLSD dst = s1.asLLSD(false);
+
+ ensure_equals("merge src has single region", src["regions"].size(), 1);
+ ensure_equals("merge dst has single region", dst["regions"].size(), 1);
+
+ // Remove time stamps, they're a problem
+ src.erase("duration");
+ src["regions"][0].erase("duration");
+ dst.erase("duration");
+ dst["regions"][0].erase("duration");
+
+ LLSD s2_llsd = get_region(dst, region1_handle);
+ ensure("Region1 is present in dst", s2_llsd.isMap());
+
+ ensure_equals("dst counts come from src only (flipped)", s2_llsd["get_other"]["resp_count"].asInteger(), 3);
+
+ ensure_approximately_equals("dst minimum with count 0 does not contribute to merged minimum (flipped)",
+ s2_llsd["get_other"]["resp_min"].asReal(), F64(2.7), 20);
+ }
+ }
+
+}
diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp
index b425b50c8b..710881d811 100644
--- a/indra/newview/tests/llviewerhelputil_test.cpp
+++ b/indra/newview/tests/llviewerhelputil_test.cpp
@@ -73,11 +73,9 @@ static void substitute_string(std::string &input, const std::string &search, con
}
#include "../llagent.h"
-LLAgent::LLAgent() : mAgentAccess(gSavedSettings) { }
+LLAgent::LLAgent() : mAgentAccess(NULL) { }
LLAgent::~LLAgent() { }
bool LLAgent::isGodlike() const { return FALSE; }
-LLAgentAccess::LLAgentAccess(LLControlGroup& settings) : mSavedSettings(settings) { }
-LLUIColor::LLUIColor() {}
LLAgent gAgent;
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp
index dd7761475e..3c89b64d52 100644
--- a/indra/newview/tests/llviewernetwork_test.cpp
+++ b/indra/newview/tests/llviewernetwork_test.cpp
@@ -164,7 +164,7 @@ namespace tut
std::string("https://secondlife.com/helpers/"));
ensure_equals("Agni login page is correct",
grid[GRID_LOGIN_PAGE_VALUE].asString(),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
ensure("Agni is a favorite",
grid.has(GRID_IS_FAVORITE_VALUE));
ensure("Agni is a system grid",
@@ -208,7 +208,7 @@ namespace tut
std::string("https://secondlife.com/helpers/"));
ensure_equals("Agni login page the same after grid file",
grid[GRID_LOGIN_PAGE_VALUE].asString(),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
ensure("Agni still a favorite after grid file",
grid.has(GRID_IS_FAVORITE_VALUE));
ensure("Agni system grid still set after grid file",
@@ -310,7 +310,7 @@ namespace tut
std::string("http://aditi-secondlife.webdev.lindenlab.com/helpers/"));
ensure_equals("Override known grid login uri: login page is not set",
grid[GRID_LOGIN_PAGE_VALUE].asString(),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
// Override with loginuri
// override custom grid
@@ -359,7 +359,7 @@ namespace tut
std::string("https://my.helper.uri/mycustomhelpers"));
ensure_equals("Override known grid helper uri: login page is not changed",
grid[GRID_LOGIN_PAGE_VALUE].asString(),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
// Override with helperuri
// override custom grid
@@ -451,9 +451,9 @@ namespace tut
ensure_equals("getHelperURI", LLGridManager::getInstance()->getHelperURI(),
std::string("https://secondlife.com/helpers/"));
ensure_equals("getLoginPage", LLGridManager::getInstance()->getLoginPage(),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
ensure_equals("getLoginPage2", LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"),
- std::string("http://secondlife.com/app/login/"));
+ std::string("http://viewer-login.agni.lindenlab.com/"));
ensure("Is Agni a production grid", LLGridManager::getInstance()->isInProductionGrid());
std::vector<std::string> uris;
LLGridManager::getInstance()->getLoginURIs(uris);
diff --git a/indra/newview/tests/llviewershadermgr_stub.cpp b/indra/newview/tests/llviewershadermgr_stub.cpp
new file mode 100644
index 0000000000..18eff72f3c
--- /dev/null
+++ b/indra/newview/tests/llviewershadermgr_stub.cpp
@@ -0,0 +1,50 @@
+/**
+ * @file llglslshader_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "../llviewershadermgr.h"
+
+LLShaderMgr::LLShaderMgr() {}
+LLShaderMgr::~LLShaderMgr() {}
+
+LLViewerShaderMgr::LLViewerShaderMgr() {}
+LLViewerShaderMgr::~LLViewerShaderMgr() {}
+
+LLViewerShaderMgr* stub_instance = NULL;
+
+LLViewerShaderMgr* LLViewerShaderMgr::instance() {
+ if(NULL == stub_instance)
+ {
+ stub_instance = new LLViewerShaderMgr();
+ }
+
+ return stub_instance;
+}
+LLViewerShaderMgr::shader_iter fake_iter;
+LLViewerShaderMgr::shader_iter LLViewerShaderMgr::beginShaders() const {return fake_iter;}
+LLViewerShaderMgr::shader_iter LLViewerShaderMgr::endShaders() const {return fake_iter;}
+
+void LLViewerShaderMgr::updateShaderUniforms(LLGLSLShader* shader) {return;}
+std::string LLViewerShaderMgr::getShaderDirPrefix() {return "SHADER_DIR_PREFIX-";}
diff --git a/indra/newview/tests/llwlanimator_stub.cpp b/indra/newview/tests/llwlanimator_stub.cpp
new file mode 100644
index 0000000000..f5e15b2e7b
--- /dev/null
+++ b/indra/newview/tests/llwlanimator_stub.cpp
@@ -0,0 +1,29 @@
+/**
+ * @file llwlanimator_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+LLWLAnimator::LLWLAnimator(void) {}
+void LLWLAnimator::update(LLWLParamSet& set) {}
+void LLWLAnimator::setTrack(std::map<F32, LLWLParamKey>& track, F32 dayRate, F64 dayTime, bool run) {}
diff --git a/indra/newview/tests/llwldaycycle_stub.cpp b/indra/newview/tests/llwldaycycle_stub.cpp
new file mode 100644
index 0000000000..a7bc9a7b83
--- /dev/null
+++ b/indra/newview/tests/llwldaycycle_stub.cpp
@@ -0,0 +1,52 @@
+/**
+ * @file llwldaycycle_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+LLWLDayCycle::LLWLDayCycle(void)
+{
+}
+
+LLWLDayCycle::~LLWLDayCycle(void)
+{
+}
+
+bool LLWLDayCycle::getKeytime(LLWLParamKey keyFrame, F32& keyTime)
+{
+ keyTime = 0.5;
+ return true;
+}
+
+bool LLWLDayCycle::removeKeyframe(F32 time)
+{
+ return true;
+}
+
+void LLWLDayCycle::loadDayCycleFromFile(const std::string& fileName)
+{
+}
+
+void LLWLDayCycle::removeReferencesTo(const LLWLParamKey &keyframe)
+{
+}
diff --git a/indra/newview/tests/llwlparammanager_test.cpp b/indra/newview/tests/llwlparammanager_test.cpp
new file mode 100644
index 0000000000..be0dc9fd0c
--- /dev/null
+++ b/indra/newview/tests/llwlparammanager_test.cpp
@@ -0,0 +1,271 @@
+/**
+ * @file llwlparammanager_test.cpp
+ * @brief LLWLParamManager tests
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+// Precompiled headers
+#include "../llviewerprecompiledheaders.h"
+
+// Class to test
+#include "../llwlparammanager.h"
+
+// Dependencies
+#include "linden_common.h"
+
+// TUT header
+#include "lltut.h"
+
+// Stubs
+#include "llwldaycycle_stub.cpp"
+#include "llwlparamset_stub.cpp"
+#include "llwlanimator_stub.cpp"
+#include "llglslshader_stub.cpp"
+#include "lldir_stub.cpp"
+#include "llsky_stub.cpp"
+#include "llpipeline_stub.cpp"
+#include "llviewershadermgr_stub.cpp"
+
+void assert_glerror(void) {}
+LLViewerCamera::LLViewerCamera() {}
+void LLViewerCamera::setView(F32 vertical_fov_rads) {}
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return std::string(""); }
+
+char* curl_unescape(const char* c_str, int length)
+{
+ char* copy = new char[length+4];
+ memcpy(copy, c_str, length);
+ copy[length+0] = 'E';
+ copy[length+1] = 'S';
+ copy[length+2] = 'C';
+ copy[length+3] = '\0';
+ return copy;
+}
+void curl_free(void* p) {delete[] ((char*)p);}
+char* curl_escape(const char* c_str, int length) {
+ char* copy = new char[length+6];
+ memcpy(copy, c_str, length);
+ copy[length+0] = 'U';
+ copy[length+1] = 'N';
+ copy[length+2] = 'E';
+ copy[length+3] = 'S';
+ copy[length+4] = 'C';
+ copy[length+5] = '\0';
+ return copy;
+}
+
+namespace tut
+{
+ // Main Setup
+ struct LLWLParamManagerFixture
+ {
+ class LLWLParamManagerTest
+ {
+ };
+
+ LLWLParamManager* mTestManager;
+
+ LLWLParamManagerFixture()
+ : mTestManager(LLWLParamManager::getInstance())
+ {
+ }
+
+ ~LLWLParamManagerFixture()
+ {
+ }
+ };
+ typedef test_group<LLWLParamManagerFixture> factory;
+ typedef factory::object object;
+ factory tf("LLWLParamManager test");
+
+ // Tests
+ template<> template<>
+ void object::test<1>()
+ {
+ try
+ {
+ std::string preset =
+ "<llsd>\
+ <map>\
+ <key>ambient</key>\
+ <array>\
+ <real>1.0499999523162842</real>\
+ <real>1.0499999523162842</real>\
+ <real>1.0499999523162842</real>\
+ <real>0.34999999403953552</real>\
+ </array>\
+ <key>blue_density</key>\
+ <array>\
+ <real>0.2447581488182351</real>\
+ <real>0.44872328639030457</real>\
+ <real>0.75999999046325684</real>\
+ <real>0.38000004053115788</real>\
+ </array>\
+ <key>blue_horizon</key>\
+ <array>\
+ <real>0.49548382097675159</real>\
+ <real>0.49548381382419748</real>\
+ <real>0.63999999284744291</real>\
+ <real>0.31999999642372146</real>\
+ </array>\
+ <key>cloud_color</key>\
+ <array>\
+ <real>0.40999999165535073</real>\
+ <real>0.40999999165535073</real>\
+ <real>0.40999999165535073</real>\
+ <real>0.40999999165535073</real>\
+ </array>\
+ <key>cloud_pos_density1</key>\
+ <array>\
+ <real>1.6884100437164307</real>\
+ <real>0.52609699964523315</real>\
+ <real>0.99999999999999289</real>\
+ <real>1</real>\
+ </array>\
+ <key>cloud_pos_density2</key>\
+ <array>\
+ <real>1.6884100437164307</real>\
+ <real>0.52609699964523315</real>\
+ <real>0.125</real>\
+ <real>1</real>\
+ </array>\
+ <key>cloud_scale</key>\
+ <array>\
+ <real>0.4199999868869746</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>cloud_scroll_rate</key>\
+ <array>\
+ <real>10.199999809265137</real>\
+ <real>10.01099967956543</real>\
+ </array>\
+ <key>cloud_shadow</key>\
+ <array>\
+ <real>0.26999998092651367</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>density_multiplier</key>\
+ <array>\
+ <real>0.00017999998817685818</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>distance_multiplier</key>\
+ <array>\
+ <real>0.80000001192093606</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>east_angle</key>\
+ <real>0</real>\
+ <key>enable_cloud_scroll</key>\
+ <array>\
+ <boolean>1</boolean>\
+ <boolean>1</boolean>\
+ </array>\
+ <key>gamma</key>\
+ <array>\
+ <real>1</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>glow</key>\
+ <array>\
+ <real>5</real>\
+ <real>0.0010000000474974513</real>\
+ <real>-0.47999998927116394</real>\
+ <real>1</real>\
+ </array>\
+ <key>haze_density</key>\
+ <array>\
+ <real>0.69999998807907104</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>haze_horizon</key>\
+ <array>\
+ <real>0.18999999761581243</real>\
+ <real>0.19915600121021271</real>\
+ <real>0.19915600121021271</real>\
+ <real>1</real>\
+ </array>\
+ <key>lightnorm</key>\
+ <array>\
+ <real>0</real>\
+ <real>0.70710659027099609</real>\
+ <real>-0.70710694789886475</real>\
+ <real>0</real>\
+ </array>\
+ <key>max_y</key>\
+ <array>\
+ <real>1605</real>\
+ <real>0</real>\
+ <real>0</real>\
+ <real>1</real>\
+ </array>\
+ <key>preset_num</key>\
+ <integer>22</integer>\
+ <key>star_brightness</key>\
+ <real>0</real>\
+ <key>sun_angle</key>\
+ <real>2.3561947345733643</real>\
+ <key>sunlight_color</key>\
+ <array>\
+ <real>0.73421055078505759</real>\
+ <real>0.78157895803450828</real>\
+ <real>0.89999997615813498</real>\
+ <real>0.29999998211860301</real>\
+ </array>\
+ </map>\
+ </llsd>";
+
+ std::stringstream preset_stream(preset);
+ mTestManager->loadPresetFromXML(LLWLParamKey("test1", LLWLParamKey::SCOPE_LOCAL), preset_stream);
+ LLWLParamSet dummy;
+ ensure("Couldn't get ParamSet after loading it", mTestManager->getParamSet(LLWLParamKey("test1", LLWLParamKey::SCOPE_LOCAL), dummy));
+ }
+ catch (...)
+ {
+ fail("loadPresetFromXML test crashed!");
+ }
+ }
+
+ template<> template<>
+ void object::test<2>()
+ {
+ mTestManager->propagateParameters();
+ ensure_equals("Wrong value from getDomeOffset()", mTestManager->getDomeOffset(), 0.96f);
+ ensure_equals("Wrong value from getDomeRadius()", mTestManager->getDomeRadius(), 15000.f);
+ ensure_equals("Wrong value from getLightDir()", mTestManager->getLightDir(), LLVector4(-0,0,1,0));
+ ensure_equals("Wrong value from getClampedLightDir()", mTestManager->getClampedLightDir(), LLVector4(-0,0,1,0));
+ ensure_equals("Wrong value from getRotatedLightDir()", mTestManager->getRotatedLightDir(), LLVector4(0,0,0,1));
+ }
+}
diff --git a/indra/newview/tests/llwlparamset_stub.cpp b/indra/newview/tests/llwlparamset_stub.cpp
new file mode 100644
index 0000000000..ccb99db475
--- /dev/null
+++ b/indra/newview/tests/llwlparamset_stub.cpp
@@ -0,0 +1,41 @@
+/**
+ * @file llwlparamset_stub.cpp
+ * @brief stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+LLWLParamSet::LLWLParamSet(void)
+{
+}
+
+void LLWLParamSet::updateCloudScrolling()
+{
+}
+
+void LLWLParamSet::set(const std::string& name, const LLVector4& val)
+{
+}
+
+void LLWLParamSet::update(LLGLSLShader *shader) const
+{
+}
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index b976ac5ea9..acc6e814bc 100644
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -25,13 +25,16 @@
* $/LicenseInfo$
*/
-// Precompiled header: almost always required for newview cpp files
-#include "../llviewerprecompiledheaders.h"
-// Class to test
-#include "../llworldmap.h"
// Dependencies
-#include "../llviewerimagelist.h"
+#include "linden_common.h"
+#include "llapr.h"
+#include "llsingleton.h"
+#include "lltrans.h"
+#include "lluistring.h"
+#include "../llviewertexture.h"
#include "../llworldmapmessage.h"
+// Class to test
+#include "../llworldmap.h"
// Tut header
#include "../test/lltut.h"
@@ -44,34 +47,29 @@
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
// Stub image calls
-LLViewerImageList::LLViewerImageList() { }
-LLViewerImageList::~LLViewerImageList() { }
-LLViewerImageList gImageList;
-LLViewerImage* LLViewerImageList::getImage(const LLUUID &image_id,
- BOOL usemipmaps,
- BOOL level_immediate,
- LLGLint internal_format,
- LLGLenum primary_format,
- LLHost request_from_host)
-{ return NULL; }
-void LLViewerImage::setBoostLevel(S32 level) { }
-void LLImageGL::setAddressMode(LLTexUnit::eTextureAddressMode mode) { }
+void LLViewerTexture::setBoostLevel(S32 ) { }
+void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLViewerTexture::EBoostLevel, S8,
+ LLGLint, LLGLenum, LLHost ) { return NULL; }
// Stub related map calls
LLWorldMapMessage::LLWorldMapMessage() { }
LLWorldMapMessage::~LLWorldMapMessage() { }
void LLWorldMapMessage::sendItemRequest(U32 type, U64 handle) { }
void LLWorldMapMessage::sendMapBlockRequest(U16 min_x, U16 min_y, U16 max_x, U16 max_y, bool return_nonexistent) { }
+
LLWorldMipmap::LLWorldMipmap() { }
LLWorldMipmap::~LLWorldMipmap() { }
void LLWorldMipmap::reset() { }
void LLWorldMipmap::dropBoostLevels() { }
void LLWorldMipmap::equalizeBoostLevels() { }
-LLPointer<LLViewerImage> LLWorldMipmap::getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load)
-{ return NULL; }
+LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load) { return NULL; }
// Stub other stuff
-BOOL gPacificDaylightTime;
+std::string LLTrans::getString(const std::string &, const LLStringUtil::format_map_t& ) { return std::string("test_trans"); }
+void LLUIString::updateResult() const { }
+void LLUIString::setArg(const std::string& , const std::string& ) { }
+void LLUIString::assign(const std::string& ) { }
// End Stubbing
// -------------------------------------------------------------------------------------------
@@ -237,7 +235,7 @@ namespace tut
// Test 9 : setLandForSaleImage() / getLandForSaleImage()
LLUUID id;
mSim->setLandForSaleImage(id);
- LLPointer<LLViewerImage> image = mSim->getLandForSaleImage();
+ LLPointer<LLViewerFetchedTexture> image = mSim->getLandForSaleImage();
ensure("LLSimInfo::getLandForSaleImage() test failed", image.isNull());
// Test 10 : isPG()
mSim->setAccess(SIM_ACCESS_PG);
@@ -370,7 +368,7 @@ namespace tut
}
// Test 7 : getObjectsTile()
try {
- LLPointer<LLViewerImage> image = mWorld->getObjectsTile((U32)(X_WORLD_TEST/REGION_WIDTH_METERS), (U32)(Y_WORLD_TEST/REGION_WIDTH_METERS), 1);
+ LLPointer<LLViewerFetchedTexture> image = mWorld->getObjectsTile((U32)(X_WORLD_TEST/REGION_WIDTH_METERS), (U32)(Y_WORLD_TEST/REGION_WIDTH_METERS), 1);
ensure("LLWorldMap::getObjectsTile() failed", image.isNull());
} catch (...) {
fail("LLWorldMap::getObjectsTile() test failed with exception");
diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp
index 54887ae219..e7ef017760 100644
--- a/indra/newview/tests/llworldmipmap_test.cpp
+++ b/indra/newview/tests/llworldmipmap_test.cpp
@@ -25,12 +25,12 @@
* $/LicenseInfo$
*/
-// Precompiled header: almost always required for newview cpp files
-#include "../llviewerprecompiledheaders.h"
+// Dependencies
+#include "linden_common.h"
+#include "../llviewertexture.h"
+#include "../llviewercontrol.h"
// Class to test
#include "../llworldmipmap.h"
-// Dependencies
-#include "../llviewerimagelist.h"
// Tut header
#include "../test/lltut.h"
@@ -42,19 +42,14 @@
// * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
-LLViewerImageList::LLViewerImageList() { }
-LLViewerImageList::~LLViewerImageList() { }
-
-LLViewerImageList gImageList;
+void LLViewerTexture::setBoostLevel(S32 ) { }
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLViewerTexture::EBoostLevel, S8,
+ LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
-LLViewerImage* LLViewerImageList::getImageFromUrl(const std::string& url,
- BOOL usemipmaps,
- BOOL level_immediate,
- LLGLint internal_format,
- LLGLenum primary_format,
- const LLUUID& force_id)
-{ return NULL; }
-void LLViewerImage::setBoostLevel(S32 level) { }
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
+LLControlGroup::~LLControlGroup() { }
+std::string LLControlGroup::getString(const std::string& ) { return std::string("test_url"); }
+LLControlGroup gSavedSettings("test_settings");
// End Stubbing
// -------------------------------------------------------------------------------------------
@@ -105,9 +100,9 @@ namespace tut
{
S32 level = mMap->scaleToLevel(0.0);
ensure("scaleToLevel() test 1 failed", level == LLWorldMipmap::MAP_LEVELS);
- level = mMap->scaleToLevel(LLWorldMipmap::MAP_TILE_SIZE);
+ level = mMap->scaleToLevel((F32)LLWorldMipmap::MAP_TILE_SIZE);
ensure("scaleToLevel() test 2 failed", level == 1);
- level = mMap->scaleToLevel(10 * LLWorldMipmap::MAP_TILE_SIZE);
+ level = mMap->scaleToLevel(10.f * LLWorldMipmap::MAP_TILE_SIZE);
ensure("scaleToLevel() test 3 failed", level == 1);
}
// Test 2 : globalToMipmap()
diff --git a/indra/newview/tests/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp
index 4d5df1043e..711c2a3d51 100644
--- a/indra/newview/tests/llxmlrpclistener_test.cpp
+++ b/indra/newview/tests/llxmlrpclistener_test.cpp
@@ -40,8 +40,10 @@
#include "llevents.h"
#include "lleventfilter.h"
#include "llsd.h"
+#include "llhost.h"
#include "llcontrol.h"
#include "tests/wrapllerrs.h"
+#include "tests/commtest.h"
LLControlGroup gSavedSettings("Global");
@@ -54,7 +56,8 @@ namespace tut
{
data():
pumps(LLEventPumps::instance()),
- uri("http://127.0.0.1:8000")
+ uri(std::string("http://") +
+ LLHost("127.0.0.1", commtest_data::getport("PORT")).getString())
{
// These variables are required by machinery used by
// LLXMLRPCTransaction. The values reflect reality for this test
@@ -145,7 +148,7 @@ namespace tut
pumps.obtain("LLXMLRPCTransaction").post(request);
// Set the timer
F32 timeout(10);
- watchdog.eventAfter(timeout, LLSD().insert("timeout", 0));
+ watchdog.eventAfter(timeout, LLSD().with("timeout", 0));
// and pump "mainloop" until we get something, whether from
// LLXMLRPCListener or from the watchdog filter.
LLTimer timer;
@@ -182,7 +185,7 @@ namespace tut
pumps.obtain("LLXMLRPCTransaction").post(request);
// Set the timer
F32 timeout(10);
- watchdog.eventAfter(timeout, LLSD().insert("timeout", 0));
+ watchdog.eventAfter(timeout, LLSD().with("timeout", 0));
// and pump "mainloop" until we get something, whether from
// LLXMLRPCListener or from the watchdog filter.
LLTimer timer;
@@ -218,7 +221,7 @@ namespace tut
pumps.obtain("LLXMLRPCTransaction").post(request);
// Set the timer
F32 timeout(10);
- watchdog.eventAfter(timeout, LLSD().insert("timeout", 0));
+ watchdog.eventAfter(timeout, LLSD().with("timeout", 0));
// and pump "mainloop" until we get something, whether from
// LLXMLRPCListener or from the watchdog filter.
LLTimer timer;
diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py
index aeebb0cfd1..281b72a058 100644
--- a/indra/newview/tests/test_llxmlrpc_peer.py
+++ b/indra/newview/tests/test_llxmlrpc_peer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
"""\
@file test_llxmlrpc_peer.py
@author Nat Goodspeed
@@ -37,7 +37,7 @@ from SimpleXMLRPCServer import SimpleXMLRPCServer
mydir = os.path.dirname(__file__) # expected to be .../indra/newview/tests/
sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
sys.path.insert(1, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests"))
-from testrunner import run, debug
+from testrunner import freeport, run, debug
class TestServer(SimpleXMLRPCServer):
def _dispatch(self, method, params):
@@ -66,11 +66,16 @@ class TestServer(SimpleXMLRPCServer):
# Suppress error output as well
pass
-class ServerRunner(Thread):
- def run(self):
- server = TestServer(('127.0.0.1', 8000))
- debug("Starting XMLRPC server...\n")
- server.serve_forever()
-
if __name__ == "__main__":
- sys.exit(run(server=ServerRunner(name="xmlrpc"), *sys.argv[1:]))
+ # Instantiate a TestServer on the first free port in the specified port
+ # range. Doing this inline is better than in a daemon thread: if it blows
+ # up here, we'll get a traceback. If it blew up in some other thread, the
+ # traceback would get eaten and we'd run the subject test program anyway.
+ xmlrpcd, port = freeport(xrange(8000, 8020),
+ lambda port: TestServer(('127.0.0.1', port)))
+ # Pass the selected port number to the subject test program via the
+ # environment. We don't want to impose requirements on the test program's
+ # command-line parsing -- and anyway, for C++ integration tests, that's
+ # performed in TUT code rather than our own.
+ os.environ["PORT"] = str(port)
+ sys.exit(run(server=Thread(name="xmlrpc", target=xmlrpcd.serve_forever), *sys.argv[1:]))