summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorJonathan "Geenz" Goodman <geenz@geenzo.com>2026-08-11 21:39:19 -0400
committerJonathan "Geenz" Goodman <geenz@geenzo.com>2026-08-11 21:39:19 -0400
commit8cabc33e960ca93fdc1a32c77cf611269d95d51b (patch)
tree931fcecac10bf73214efa07cc3d704ba2bd01272 /indra/newview
parent9b7ab49575b54523128952af6686d17eb6696725 (diff)
parentd045f9aa32789a35628aced166145c182751acbf (diff)
Merge remote-tracking branch 'origin/develop-linux' into geenz/linux-to-develop
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/CMakeLists.txt198
-rw-r--r--indra/newview/Info-SecondLifeVorbis.plist28
-rw-r--r--indra/newview/VertexCache.h105
-rw-r--r--indra/newview/VorbisFramework.h80
-rw-r--r--[-rwxr-xr-x]indra/newview/app_settings/llsd.xsd0
-rw-r--r--[-rwxr-xr-x]indra/newview/app_settings/message.xml0
-rw-r--r--indra/newview/app_settings/settings.xml50
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl1
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl137
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl126
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/skyF.glsl118
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/skyV.glsl123
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl8
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/materialF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class3/environment/waterF.glsl20
-rwxr-xr-xindra/newview/build_win32_appConfig.py68
-rw-r--r--indra/newview/featuretable.txt46
-rw-r--r--indra/newview/featuretable_linux.txt662
-rw-r--r--indra/newview/featuretable_mac.txt44
-rw-r--r--indra/newview/gltf/accessor.cpp2
-rw-r--r--indra/newview/gltf/asset.cpp4
-rw-r--r--indra/newview/gltf/llgltfloader.cpp4
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/darwin/dmg-cleanup.applescript0
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/darwin/release-dmg/Applications-alias.r0
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/darwin/release-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_de.nsi0
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_es.nsibin13790 -> 13790 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_fr.nsibin14302 -> 14302 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_it.nsibin13528 -> 13528 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_ja.nsibin10698 -> 10698 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_pt-br.nsibin13970 -> 13970 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_ru.nsibin13264 -> 13264 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_tr.nsibin13174 -> 13174 bytes
-rw-r--r--[-rwxr-xr-x]indra/newview/installers/windows/lang_zh.nsibin10154 -> 10154 bytes
-rw-r--r--indra/newview/licenses-linux.txt177
-rw-r--r--indra/newview/linux_tools/client-readme-joystick.txt78
-rw-r--r--indra/newview/linux_tools/client-readme-voice.txt81
-rw-r--r--indra/newview/linux_tools/client-readme.txt244
-rwxr-xr-xindra/newview/linux_tools/launch_url.sh86
-rwxr-xr-xindra/newview/linux_tools/refresh_desktop_app_entry.sh15
-rwxr-xr-xindra/newview/linux_tools/register_secondlifeprotocol.sh75
-rwxr-xr-xindra/newview/linux_tools/wrapper.sh108
-rw-r--r--indra/newview/llappdelegate-objc.mm10
-rw-r--r--indra/newview/llappviewer.cpp80
-rw-r--r--indra/newview/llappviewerlinux.cpp789
-rw-r--r--indra/newview/llappviewerlinux.h47
-rw-r--r--indra/newview/llappviewerlinux_api.h143
-rw-r--r--indra/newview/llappviewerlinux_api.xml14
-rw-r--r--indra/newview/llappviewerlinux_api_dbus.cpp126
-rw-r--r--indra/newview/llappviewerlinux_api_dbus.h44
-rw-r--r--indra/newview/llappviewerlinux_api_dbus_syms_raw.inc9
-rw-r--r--indra/newview/llappviewerwin32.cpp1
-rw-r--r--indra/newview/llcallbacklist.cpp12
-rw-r--r--indra/newview/llconversationlog.cpp4
-rw-r--r--indra/newview/lldirpicker.cpp176
-rw-r--r--indra/newview/lldirpicker.h8
-rw-r--r--indra/newview/lldrawable.h5
-rw-r--r--indra/newview/lldrawpool.cpp2
-rw-r--r--indra/newview/lldrawpoolbump.cpp2
-rw-r--r--indra/newview/lldrawpoolterrain.cpp373
-rw-r--r--indra/newview/lldrawpoolterrain.h3
-rw-r--r--indra/newview/lldynamictexture.h4
-rw-r--r--indra/newview/lleventnotifier.h2
-rw-r--r--indra/newview/llface.cpp8
-rw-r--r--indra/newview/llfasttimerview.cpp6
-rw-r--r--indra/newview/llfeaturemanager.cpp10
-rw-r--r--indra/newview/llfilepicker.cpp940
-rw-r--r--indra/newview/llfilepicker.h34
-rw-r--r--indra/newview/llflexibleobject.cpp2
-rw-r--r--indra/newview/llfloaterdirectory.h2
-rw-r--r--indra/newview/llfloaterimsession.h1
-rw-r--r--indra/newview/llfloaterimsessiontab.h1
-rw-r--r--indra/newview/llfloaterland.cpp23
-rw-r--r--[-rwxr-xr-x]indra/newview/llfloatermap.cpp0
-rw-r--r--indra/newview/llfloaternotificationstabbed.cpp4
-rw-r--r--indra/newview/llfloaternotificationstabbed.h2
-rw-r--r--indra/newview/llfloaterpreference.cpp20
-rw-r--r--indra/newview/llfloaterpreferencesgraphicsadvanced.cpp35
-rw-r--r--indra/newview/llfloaterregioninfo.h4
-rw-r--r--indra/newview/llfloateruipreview.cpp39
-rw-r--r--[-rwxr-xr-x]indra/newview/llfloaterworldmap.cpp0
-rw-r--r--indra/newview/llglsandbox.cpp12
-rw-r--r--indra/newview/llgltfmaterialpreviewmgr.cpp6
-rw-r--r--indra/newview/llinventorygallerymenu.cpp4
-rw-r--r--indra/newview/llinventorymodel.cpp4
-rw-r--r--indra/newview/llkeyconflict.cpp2
-rw-r--r--indra/newview/lllocalbitmaps.cpp20
-rw-r--r--indra/newview/lllocalbitmaps.h3
-rw-r--r--indra/newview/lllocalgltfmaterials.cpp20
-rw-r--r--indra/newview/lllocalgltfmaterials.h3
-rw-r--r--indra/newview/lllocationinputctrl.h4
-rw-r--r--indra/newview/lllogchat.cpp12
-rw-r--r--indra/newview/lllookshistorypanel.h67
-rw-r--r--indra/newview/llmaniprotate.cpp1
-rw-r--r--indra/newview/llmarketplacefunctions.cpp23
-rw-r--r--indra/newview/llmarketplacefunctions.h10
-rw-r--r--indra/newview/llmaterialmgr.cpp22
-rw-r--r--indra/newview/llmaterialmgr.h6
-rw-r--r--indra/newview/llmediactrl.cpp4
-rw-r--r--indra/newview/llmediactrl.h1
-rw-r--r--indra/newview/llmeshrepository.cpp2
-rw-r--r--indra/newview/llmodelpreview.cpp20
-rw-r--r--indra/newview/llmutelist.cpp8
-rw-r--r--[-rwxr-xr-x]indra/newview/llnavigationbar.h0
-rw-r--r--indra/newview/lloutfitgallery.cpp2
-rw-r--r--indra/newview/lloutfitobserver.h2
-rw-r--r--indra/newview/llpaneldirland.cpp2
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp44
-rw-r--r--indra/newview/llpanelimcontrolpanel.h84
-rw-r--r--indra/newview/llpaneloutfitedit.cpp2
-rw-r--r--indra/newview/llpathfindingnavmesh.cpp3
-rw-r--r--indra/newview/llpreviewnotecard.cpp7
-rw-r--r--indra/newview/llpreviewscript.cpp7
-rw-r--r--indra/newview/llselectmgr.cpp2
-rw-r--r--indra/newview/llsettingsvo.cpp4
-rw-r--r--indra/newview/llsnapshotlivepreview.cpp5
-rw-r--r--indra/newview/llspatialpartition.cpp34
-rw-r--r--indra/newview/llspatialpartition.h13
-rw-r--r--indra/newview/llstartup.cpp11
-rw-r--r--indra/newview/lltexturecache.cpp176
-rw-r--r--indra/newview/lltexturecache.h3
-rw-r--r--indra/newview/lltoolbarview.cpp2
-rw-r--r--indra/newview/lltoolview.cpp196
-rw-r--r--indra/newview/lltoolview.h84
-rw-r--r--indra/newview/llvelopack.cpp1
-rw-r--r--indra/newview/llversioninfo.cpp13
-rw-r--r--indra/newview/llversioninfo.h1
-rw-r--r--indra/newview/llversioninfovars.h.in (renamed from indra/newview/tests/llwlanimator_stub.cpp)15
-rw-r--r--indra/newview/llviewerassetstorage.cpp4
-rw-r--r--indra/newview/llviewerassetupload.cpp39
-rw-r--r--indra/newview/llviewercontrol.cpp30
-rw-r--r--indra/newview/llviewerdisplay.cpp8
-rw-r--r--indra/newview/llviewerinput.cpp2
-rw-r--r--indra/newview/llviewerjoint.h3
-rw-r--r--indra/newview/llviewerjointattachment.h3
-rw-r--r--indra/newview/llviewerjointmesh.cpp8
-rw-r--r--indra/newview/llviewerjointmesh.h3
-rw-r--r--indra/newview/llviewermedia.cpp29
-rw-r--r--indra/newview/llviewermenufile.cpp8
-rw-r--r--indra/newview/llviewermessage.cpp4
-rw-r--r--indra/newview/llvieweroctree.h26
-rw-r--r--[-rwxr-xr-x]indra/newview/llviewerparceloverlay.cpp2
-rw-r--r--[-rwxr-xr-x]indra/newview/llviewerregion.cpp0
-rw-r--r--indra/newview/llviewershadermgr.cpp30
-rw-r--r--indra/newview/llviewerstatsrecorder.cpp2
-rw-r--r--indra/newview/llviewerwindow.cpp40
-rw-r--r--indra/newview/llviewerwindow.h1
-rw-r--r--indra/newview/llvoavatar.cpp8
-rw-r--r--indra/newview/llvoavatar.h8
-rw-r--r--indra/newview/llvocache.cpp6
-rw-r--r--indra/newview/llvoiceclient.cpp121
-rw-r--r--indra/newview/llvoicevisualizer.cpp1
-rw-r--r--indra/newview/llvoicewebrtc.cpp6
-rw-r--r--indra/newview/llvowlsky.cpp7
-rw-r--r--[-rwxr-xr-x]indra/newview/llworldmapview.cpp0
-rw-r--r--indra/newview/llxmlrpctransaction.cpp2
-rw-r--r--indra/newview/macutil_Prefix.h38
-rw-r--r--indra/newview/macview_Prefix.h229
-rw-r--r--indra/newview/pipeline.cpp61
-rw-r--r--[-rwxr-xr-x]indra/newview/res/have_artwork_bundle.marker0
-rw-r--r--[-rwxr-xr-x]indra/newview/res/viewerRes.rc0
-rw-r--r--[-rwxr-xr-x]indra/newview/secondlife-i686.supp0
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml78
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml0
-rw-r--r--indra/newview/skins/default/xui/en/mime_types_linux.xml70
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_local.xml20
-rw-r--r--indra/newview/tests/gpus_results.txt3111
-rw-r--r--indra/newview/tests/gpus_seen.txt4225
-rw-r--r--indra/newview/tests/gpus_unmatched.txt9
-rw-r--r--indra/newview/tests/lldir_stub.cpp2
-rw-r--r--indra/newview/tests/llglslshader_stub.cpp39
-rw-r--r--indra/newview/tests/llpipeline_stub.cpp32
-rw-r--r--indra/newview/tests/llremoteparcelrequest_test.cpp12
-rw-r--r--indra/newview/tests/llsechandler_basic_test.cpp4
-rw-r--r--indra/newview/tests/llsky_stub.cpp37
-rw-r--r--indra/newview/tests/lltextureinfo_test.cpp81
-rw-r--r--indra/newview/tests/lltexturestatsuploader_test.cpp150
-rw-r--r--indra/newview/tests/llversioninfo_test.cpp2
-rw-r--r--indra/newview/tests/llvieweroctree_stub.cpp8
-rw-r--r--indra/newview/tests/llviewershadermgr_stub.cpp50
-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/llxmlrpclistener_test.cpp4
-rwxr-xr-xindra/newview/viewer_manifest.py168
190 files changed, 2601 insertions, 13268 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 3e0c343913..2807ab25b1 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -13,7 +13,6 @@ include(BuildPackagesInfo)
include(BuildVersion)
include(CMakeCopyIfDifferent)
include(CubemapToEquirectangularJS)
-include(DBusGlib)
include(DragDrop)
if (USE_DISCORD)
include(Discord)
@@ -47,7 +46,6 @@ include(Velopack)
include(ViewerMiscLibs)
include(ViewerManager)
include(VisualLeakDetector)
-include(VulkanGltf)
include(ZLIBNG)
include(LLPrimitive)
@@ -79,6 +77,8 @@ if (HAVOK)
endif()
endif ()
+configure_file(llversioninfovars.h.in llversioninfovars.h @ONLY)
+
set(viewer_SOURCE_FILES
gltfscenemanager.cpp
gltf/asset.cpp
@@ -532,6 +532,7 @@ set(viewer_SOURCE_FILES
llpathfindingobjectlist.cpp
llpathfindingpathtool.cpp
llpbrterrainfeatures.cpp
+ llperfstats.cpp
llpersistentnotificationstorage.cpp
llphysicsmotion.cpp
llphysicsshapebuilderutil.cpp
@@ -724,7 +725,6 @@ set(viewer_SOURCE_FILES
llvoicechannel.cpp
llvoiceclient.cpp
llvoicevisualizer.cpp
- llvoicewebrtc.cpp
llvoinventorylistener.cpp
llvopartgroup.cpp
llvosky.cpp
@@ -1199,6 +1199,7 @@ set(viewer_HEADER_FILES
llpathfindingobject.h
llpathfindingobjectlist.h
llpathfindingpathtool.h
+ llperfstats.h
llpbrterrainfeatures.h
llpersistentnotificationstorage.h
llphysicsmotion.h
@@ -1397,7 +1398,6 @@ set(viewer_HEADER_FILES
llvoicechannel.h
llvoiceclient.h
llvoicevisualizer.h
- llvoicewebrtc.h
llvoinventorylistener.h
llvopartgroup.h
llvosky.h
@@ -1423,13 +1423,8 @@ set(viewer_HEADER_FILES
noise.h
pipeline.h
roles_constants.h
- VertexCache.h
- VorbisFramework.h
)
- list(APPEND viewer_SOURCE_FILES llperfstats.cpp)
- list(APPEND viewer_HEADER_FILES llperfstats.h)
-
source_group("CMake Rules" FILES ViewerInstall.cmake)
#build_data.json creation moved to viewer_manifest.py MAINT-6413
@@ -1437,11 +1432,10 @@ source_group("CMake Rules" FILES ViewerInstall.cmake)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt"
"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\n")
-set_source_files_properties(
- llversioninfo.cpp tests/llversioninfo_test.cpp
- PROPERTIES
- COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake
- )
+if (NOT DISABLE_WEBRTC)
+ LIST(APPEND viewer_SOURCE_FILES llvoicewebrtc.cpp)
+ LIST(APPEND viewer_HEADER_FILES llvoicewebrtc.h)
+endif()
if (DARWIN)
LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp)
@@ -1470,7 +1464,6 @@ if (DARWIN)
llappdelegate-objc.mm
PROPERTIES
SKIP_PRECOMPILE_HEADERS TRUE
- COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
# BugsplatMac is a module, imported with @import. That language feature
# demands these -f switches.
# Xcode 10.2 requires that Objective-C++ headers declare nullability of
@@ -1513,7 +1506,6 @@ set(macosx_viewer_HEADER_FILES
set(linux_viewer_SOURCE_FILES
llappviewerlinux.cpp
- llappviewerlinux_api_dbus.cpp
)
set(linux_viewer_HEADER_FILES
@@ -1531,14 +1523,6 @@ set(windows_viewer_HEADER_FILES
if (LINUX)
LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp)
- set_source_files_properties(
- llappviewerlinux.cpp
- PROPERTIES
- COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
- )
- LIST(APPEND viewer_SOURCE_FILES llappviewerlinux_api_dbus.cpp)
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
-
endif (LINUX)
if (WINDOWS)
@@ -1548,12 +1532,6 @@ if (WINDOWS)
llvelopack.cpp
llwindebug.cpp
)
- set_source_files_properties(
- llappviewerwin32.cpp
- llvelopack.cpp
- PROPERTIES
- COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
- )
list(APPEND viewer_HEADER_FILES
llappviewerwin32.h
@@ -1767,6 +1745,7 @@ set(viewer_APPSETTINGS_FILES
packages-info.txt
featuretable.txt
featuretable_mac.txt
+ featuretable_linux.txt
)
source_group("App Settings" FILES ${viewer_APPSETTINGS_FILES})
@@ -1790,6 +1769,15 @@ set_source_files_properties(${viewer_CHARACTER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_CHARACTER_FILES})
+set(viewer_MISC_FILES
+ viewer_manifest.py
+ )
+
+set_source_files_properties(${viewer_MISC_FILES}
+ PROPERTIES HEADER_FILE_ONLY TRUE)
+
+list(APPEND viewer_SOURCE_FILES ${viewer_MISC_FILES})
+
if (WINDOWS)
file(GLOB viewer_INSTALLER_FILES installers/windows/*.nsi)
@@ -1801,13 +1789,6 @@ if (WINDOWS)
list(APPEND viewer_SOURCE_FILES ${viewer_INSTALLER_FILES})
endif (WINDOWS)
-if( DEFINED LLSTARTUP_COMPILE_FLAGS )
- # progress view disables/enables icons based on available packages
- set_source_files_properties(llprogressview.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
-
- set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
-endif()
-
list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
add_executable(${VIEWER_BINARY_NAME}
@@ -1816,6 +1797,8 @@ add_executable(${VIEWER_BINARY_NAME}
${viewer_SOURCE_FILES}
)
+target_include_directories(${VIEWER_BINARY_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+
# add package files
file(GLOB EVENT_HOST_SCRIPT_GLOB_LIST
${CMAKE_CURRENT_SOURCE_DIR}/../viewer_components/*.py)
@@ -2053,11 +2036,13 @@ elseif (DARWIN)
target_link_libraries(${VIEWER_BINARY_NAME} llphysicsextensionsos)
endif()
else (WINDOWS)
- # Linux
- set_target_properties(${VIEWER_BINARY_NAME}
- PROPERTIES
- LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--Map=${VIEWER_BINARY_NAME}.MAP"
- )
+ if (HAVOK OR HAVOK_TPV)
+ # Linux
+ set_target_properties(${VIEWER_BINARY_NAME}
+ PROPERTIES
+ LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -no-pie -Wl,--Map=${VIEWER_BINARY_NAME}.MAP"
+ )
+ endif ()
endif (WINDOWS)
# *NOTE: - this list is very sensitive to ordering, test carefully on all
@@ -2105,7 +2090,6 @@ target_link_libraries(${VIEWER_BINARY_NAME}
llcorehttp
llcommon
llmeshoptimizer
- llwebrtc
lllogin
llprimitive
llappearance
@@ -2116,8 +2100,12 @@ target_link_libraries(${VIEWER_BINARY_NAME}
ll::openxr
)
+if (NOT DISABLE_WEBRTC)
+ target_link_libraries(${VIEWER_BINARY_NAME} llwebrtc )
+endif()
+
if (USE_DISCORD)
- target_link_libraries(${VIEWER_BINARY_NAME} ll::discord_sdk )
+ target_link_libraries(${VIEWER_BINARY_NAME} ll::discord_sdk )
endif ()
if (TARGET ll::velopack)
@@ -2125,11 +2113,11 @@ if (TARGET ll::velopack)
endif ()
if( TARGET ll::intel_memops )
- target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
+ target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
endif()
if( TARGET ll::nvapi )
- target_link_libraries(${VIEWER_BINARY_NAME} ll::nvapi )
+ target_link_libraries(${VIEWER_BINARY_NAME} ll::nvapi )
endif()
if ( TARGET llconvexdecomposition )
@@ -2168,14 +2156,13 @@ if (LINUX)
set(COPY_INPUT_DEPENDENCIES
${VIEWER_BINARY_NAME}
SLPlugin
- #media_plugin_gstreamer010
- llcommon
+ media_plugin_cef
+ media_plugin_gstreamer10
+ media_plugin_libvlc
+ media_plugin_example
+ llwebrtc
)
- #if (NOT USE_BUGSPLAT)
- # LIST(APPEND COPY_INPUT_DEPENDENCIES linux-crash-logger)
- #endif (NOT USE_BUGSPLAT)
-
add_custom_command(
OUTPUT ${product}.tar.xz
COMMAND ${PYTHON_EXECUTABLE}
@@ -2407,7 +2394,7 @@ if (LL_TESTS)
lldateutil.cpp
# llmediadataclient.cpp
lllogininstance.cpp
-# llremoteparcelrequest.cpp
+ llremoteparcelrequest.cpp
llviewerhelputil.cpp
llversioninfo.cpp
# llvocache.cpp
@@ -2432,21 +2419,24 @@ if (LL_TESTS)
# )
set(test_libs
- llcommon
- llfilesystem
- llxml
- llmessage
- llcharacter
- llui
- lllogin
- llplugin
- llappearance
- )
+ llfilesystem
+ llmath
+ llcommon
+ llmessage
+ llcorehttp
+ llxml
+ llui
+ llplugin
+ llappearance
+ llprimitive
+ lllogin
+ )
- set_source_files_properties(
- llmediadataclient.cpp
- PROPERTIES
- LL_TEST_ADDITIONAL_LIBRARIES "${test_libs}"
+ set_property(SOURCE
+ ${viewer_TEST_SOURCE_FILES}
+ PROPERTY
+ LL_TEST_ADDITIONAL_LIBRARIES
+ ${test_libs}
)
set_source_files_properties(
@@ -2458,66 +2448,39 @@ if (LL_TESTS)
)
set_source_files_properties(
- llmediadataclient.cpp
- PROPERTIES
- LL_TEST_ADDITIONAL_LIBRARIES llprimitive
- )
-
- set_source_files_properties(
lllogininstance.cpp
PROPERTIES
- LL_TEST_ADDITIONAL_SOURCE_FILES llversioninfo.cpp
- )
-
- set_property( SOURCE
- ${viewer_TEST_SOURCE_FILES}
- PROPERTY
- LL_TEST_ADDITIONAL_LIBRARIES ${test_libs}
+ LL_TEST_ADDITIONAL_SOURCE_FILES
+ llversioninfo.cpp
)
LL_ADD_PROJECT_UNIT_TESTS(${VIEWER_BINARY_NAME} "${viewer_TEST_SOURCE_FILES}")
#set(TEST_DEBUG on)
-
- set(test_libs
- llfilesystem
- llmath
- llcommon
- llmessage
- llcorehttp
- llxml
- llui
- llplugin
- llappearance
- lllogin
- llprimitive
- lllogin
- )
-
LL_ADD_INTEGRATION_TEST(cppfeatures
""
"${test_libs}"
- )
+ )
LL_ADD_INTEGRATION_TEST(llsechandler_basic
llsechandler_basic.cpp
"${test_libs}"
- )
+ )
LL_ADD_INTEGRATION_TEST(llsecapi
- llsecapi.cpp
+ llsecapi.cpp
"${test_libs}"
- )
+ )
set(llslurl_test_sources
- llslurl.cpp
- llviewernetwork.cpp
+ llslurl.cpp
+ llviewernetwork.cpp
)
LL_ADD_INTEGRATION_TEST(llslurl
- "${llslurl_test_sources}"
+ "${llslurl_test_sources}"
"${test_libs}"
- )
+ )
set(llviewercontrollistener_test_sources
llviewercontrollistener.cpp
@@ -2525,31 +2488,34 @@ if (LL_TESTS)
../llxml/llxmltree.cpp
../llxml/llxmlparser.cpp
../llcommon/commoncontrol.cpp
- )
+ )
LL_ADD_INTEGRATION_TEST(llviewercontrollistener
"${llviewercontrollistener_test_sources}"
"${test_libs}"
- )
+ )
LL_ADD_INTEGRATION_TEST(llviewernetwork
- llviewernetwork.cpp
+ llviewernetwork.cpp
"${test_libs}"
- )
+ )
LL_ADD_INTEGRATION_TEST(llviewerassetstats
llviewerassetstats.cpp
"${test_libs}"
- )
-
-# LL_ADD_INTEGRATION_TEST(llhttpretrypolicy "llhttpretrypolicy.cpp" "${test_libs}")
-
- #ADD_VIEWER_BUILD_TEST(llmemoryview viewer)
- #ADD_VIEWER_BUILD_TEST(llagentaccess viewer)
- #ADD_VIEWER_BUILD_TEST(lltextureinfo viewer)
- #ADD_VIEWER_BUILD_TEST(lltextureinfodetails viewer)
+ )
+ LL_ADD_INTEGRATION_TEST(llhttpretrypolicy "llhttpretrypolicy.cpp" "${test_libs}")
+ set(lltextureinfo_test_sources
+ lltextureinfo.cpp
+ ../llxml/llcontrol.cpp
+ ../llxml/llxmltree.cpp
+ ../llxml/llxmlparser.cpp
+ ../llcommon/commoncontrol.cpp
+ )
+ LL_ADD_INTEGRATION_TEST(lltextureinfo "${lltextureinfo_test_sources}" "${test_libs}")
+ #LL_ADD_INTEGRATION_TEST(lltextureinfodetails "" "${test_libs}") test cases currently empty
endif (LL_TESTS)
check_message_template(${VIEWER_BINARY_NAME})
diff --git a/indra/newview/Info-SecondLifeVorbis.plist b/indra/newview/Info-SecondLifeVorbis.plist
deleted file mode 100644
index 9cb367eec1..0000000000
--- a/indra/newview/Info-SecondLifeVorbis.plist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>SecondLifeVorbis</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.secondlife.indra.vorbis</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>SecondLifeVorbis</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string></string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.0.1d1</string>
-</dict>
-</plist>
diff --git a/indra/newview/VertexCache.h b/indra/newview/VertexCache.h
deleted file mode 100644
index edb231feb1..0000000000
--- a/indra/newview/VertexCache.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * @file VertexCache.h
- * @brief VertexCache class definition
- *
- * $LicenseInfo:firstyear=2002&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$
- */
-
-
-#ifndef VERTEX_CACHE_H
-
-#define VERTEX_CACHE_H
-
-class VertexCache
-{
-
-public:
-
- VertexCache(int size)
- {
- numEntries = size;
-
- entries = new int[numEntries];
-
- for(int i = 0; i < numEntries; i++)
- entries[i] = -1;
- }
-
- VertexCache() { VertexCache(16); }
- ~VertexCache() { delete[] entries; entries = 0; }
-
- bool InCache(int entry)
- {
- bool returnVal = false;
- for(int i = 0; i < numEntries; i++)
- {
- if(entries[i] == entry)
- {
- returnVal = true;
- break;
- }
- }
-
- return returnVal;
- }
-
- int AddEntry(int entry)
- {
- int removed;
-
- removed = entries[numEntries - 1];
-
- //push everything right one
- for(int i = numEntries - 2; i >= 0; i--)
- {
- entries[i + 1] = entries[i];
- }
-
- entries[0] = entry;
-
- return removed;
- }
-
- void Clear()
- {
- memset(entries, -1, sizeof(int) * numEntries);
- }
-
- void Copy(VertexCache* inVcache)
- {
- for(int i = 0; i < numEntries; i++)
- {
- inVcache->Set(i, entries[i]);
- }
- }
-
- int At(int index) { return entries[index]; }
- void Set(int index, int value) { entries[index] = value; }
-
-private:
-
- int *entries;
- int numEntries;
-
-};
-
-#endif
diff --git a/indra/newview/VorbisFramework.h b/indra/newview/VorbisFramework.h
deleted file mode 100644
index 7ee9a8c411..0000000000
--- a/indra/newview/VorbisFramework.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * @file VorbisFramework.h
- * @author Dave Camp
- * @date Fri Oct 10 2003
- * @brief For the Macview project
- *
- * $LicenseInfo:firstyear=2003&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$
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "ogg/ogg.h"
-#include "vorbis/codec.h"
-#include "vorbis/vorbisenc.h"
-
-extern int mac_vorbis_analysis(vorbis_block *vb,ogg_packet *op);
-
-extern int mac_vorbis_analysis_headerout(vorbis_dsp_state *v,
- vorbis_comment *vc,
- ogg_packet *op,
- ogg_packet *op_comm,
- ogg_packet *op_code);
-
-extern int mac_vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
-
-extern int mac_vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
-
-extern int mac_vorbis_encode_setup_init(vorbis_info *vi);
-
-extern int mac_vorbis_encode_setup_managed(vorbis_info *vi,
- long channels,
- long rate,
-
- long max_bitrate,
- long nominal_bitrate,
- long min_bitrate);
-
-extern void mac_vorbis_info_init(vorbis_info *vi);
-extern void mac_vorbis_info_clear(vorbis_info *vi);
-extern void mac_vorbis_comment_init(vorbis_comment *vc);
-extern void mac_vorbis_comment_clear(vorbis_comment *vc);
-extern int mac_vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
-extern int mac_vorbis_block_clear(vorbis_block *vb);
-extern void mac_vorbis_dsp_clear(vorbis_dsp_state *v);
-extern float **mac_vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
-extern int mac_vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
-extern int mac_vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
-
-extern int mac_ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
-extern int mac_ogg_stream_init(ogg_stream_state *os,int serialno);
-extern int mac_ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
-extern int mac_ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
-extern int mac_ogg_page_eos(ogg_page *og);
-extern int mac_ogg_stream_clear(ogg_stream_state *os);
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/indra/newview/app_settings/llsd.xsd b/indra/newview/app_settings/llsd.xsd
index 34612d9faa..34612d9faa 100755..100644
--- a/indra/newview/app_settings/llsd.xsd
+++ b/indra/newview/app_settings/llsd.xsd
diff --git a/indra/newview/app_settings/message.xml b/indra/newview/app_settings/message.xml
index dee3fd72dd..dee3fd72dd 100755..100644
--- a/indra/newview/app_settings/message.xml
+++ b/indra/newview/app_settings/message.xml
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index d34a5b3eab..d29e006fdd 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5096,6 +5096,28 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MediaPluginPipeWireVolumeCatcher</key>
+ <map>
+ <key>Comment</key>
+ <string>Use PipeWire instead of PulseAudio for controlling web media volume.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>MediaPluginForceVLC</key>
+ <map>
+ <key>Comment</key>
+ <string>Force use of VLC based media plugin. (Linux Only)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>MediaControlFadeTime</key>
<map>
<key>Comment</key>
@@ -7306,7 +7328,7 @@
<key>RenderAnisotropic</key>
<map>
<key>Comment</key>
- <string>Render textures using anisotropic filtering</string>
+ <string>[OBSOLETE] Render textures using anisotropic filtering</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7314,6 +7336,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>RenderAnisotropicLevel</key>
+ <map>
+ <key>Comment</key>
+ <string>Anisotropic filtering strength(0(Disable), 2x, 4x, 8x, 16x</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
<key>RenderAppleUseMultGL</key>
<map>
<key>Comment</key>
@@ -7530,7 +7563,7 @@
<key>RenderHiDPI</key>
<map>
<key>Comment</key>
- <string>Enable support for HiDPI displays, like Retina (macOS ONLY, requires restart)</string>
+ <string>Enable support for HiDPI displays, like Retina (macOS and Linux ONLY, requires restart)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -10205,6 +10238,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>RenderHighPrecisionPostProcess</key>
+ <map>
+ <key>Comment</key>
+ <string>Use 16-bit floating point buffers for post process rendering</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>ReplaySession</key>
<map>
<key>Comment</key>
@@ -13810,7 +13854,7 @@
<key>WLSkyDetail</key>
<map>
<key>Comment</key>
- <string>Controls vertex detail on the WindLight sky. Lower numbers will give better performance and uglier skies.</string>
+ <string>[OBSOLETE]</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl
index 5837308965..0fa4b32fda 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl
@@ -25,7 +25,6 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_shader_texture_lod : enable
-#extension GL_EXT_gpu_shader4 : enable
/*[EXTRA_CODE_HERE]*/
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index 8c51b4a36b..f5200719ae 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -30,9 +30,13 @@ out vec4 frag_data[4];
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
-in vec3 vary_CloudColorSun;
-in vec3 vary_CloudColorAmbient;
-in float vary_CloudDensity;
+// In
+in vec3 pos;
+
+in vec2 vary_texcoord0;
+in vec2 vary_texcoord1;
+in vec2 vary_texcoord2;
+in vec2 vary_texcoord3;
uniform sampler2D cloud_noise_texture;
uniform sampler2D cloud_noise_texture_next;
@@ -42,11 +46,26 @@ uniform vec3 cloud_pos_density2;
uniform float cloud_scale;
uniform float cloud_variance;
-in vec2 vary_texcoord0;
-in vec2 vary_texcoord1;
-in vec2 vary_texcoord2;
-in vec2 vary_texcoord3;
-in float altitude_blend_factor;
+uniform vec3 camPosLocal;
+
+uniform vec3 lightnorm;
+uniform vec3 sunlight_color;
+uniform vec3 moonlight_color;
+uniform int sun_up_factor;
+uniform vec3 ambient_color;
+uniform vec3 blue_horizon;
+uniform vec3 blue_density;
+uniform float haze_horizon;
+uniform float haze_density;
+
+uniform float cloud_shadow;
+uniform float density_multiplier;
+uniform float max_y;
+
+uniform vec3 glow;
+uniform float sun_moon_glow_factor;
+
+uniform vec3 cloud_color;
vec4 cloudNoise(vec2 uv)
{
@@ -58,21 +77,111 @@ vec4 cloudNoise(vec2 uv)
void main()
{
+ if (cloud_scale < 0.001)
+ {
+ discard;
+ }
+
// Set variables
vec2 uv1 = vary_texcoord0.xy;
vec2 uv2 = vary_texcoord1.xy;
-
- vec3 cloudColorSun = vary_CloudColorSun;
- vec3 cloudColorAmbient = vary_CloudColorAmbient;
- float cloudDensity = vary_CloudDensity;
vec2 uv3 = vary_texcoord2.xy;
vec2 uv4 = vary_texcoord3.xy;
- if (cloud_scale < 0.001)
+ // Get relative position
+ vec3 rel_pos = pos.xyz - camPosLocal.xyz + vec3(0, 50, 0);
+
+ float altitude_blend_factor = clamp((rel_pos.y + 512.0) / max_y, 0.0, 1.0);
+
+ // Set altitude
+ if (rel_pos.y > 0)
{
- discard;
+ rel_pos *= (max_y / rel_pos.y);
+ }
+ if (rel_pos.y < 0)
+ {
+ altitude_blend_factor = 0; // SL-11589 Fix clouds drooping below horizon
+ rel_pos *= (-32000. / rel_pos.y);
}
+ // Can normalize then
+ vec3 rel_pos_norm = normalize(rel_pos);
+ float rel_pos_len = length(rel_pos);
+
+ // Initialize temp variables
+ vec3 sunlight = sunlight_color;
+ vec3 light_atten;
+
+ // Sunlight attenuation effect (hue and brightness) due to atmosphere
+ // this is used later for sunlight modulation at various altitudes
+ light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);
+
+ // Calculate relative weights
+ vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density));
+ vec3 blue_weight = blue_density / combined_haze;
+ vec3 haze_weight = haze_density / combined_haze;
+
+ // Compute sunlight from rel_pos & lightnorm (for long rays like sky)
+ float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y);
+ sunlight *= exp(-light_atten * off_axis);
+
+ // Distance
+ float density_dist = rel_pos_len * density_multiplier;
+
+ // Transparency (-> combined_haze)
+ // ATI Bugfix -- can't store combined_haze*density_dist in a variable because the ati
+ // compiler gets confused.
+ combined_haze = exp(-combined_haze * density_dist);
+
+ // Compute haze glow
+ float haze_glow = 1.0 - dot(rel_pos_norm, lightnorm.xyz);
+ // haze_glow is 0 at the sun and increases away from sun
+ haze_glow = max(haze_glow, .001);
+ // Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
+ haze_glow *= glow.x;
+ // Higher glow.x gives dimmer glow (because next step is 1 / "angle")
+ haze_glow = pow(haze_glow, glow.z);
+ // glow.z should be negative, so we're doing a sort of (1 / "angle") function
+
+ haze_glow *= sun_moon_glow_factor;
+
+ // Add "minimum anti-solar illumination"
+ // For sun, add to glow. For moon, remove glow entirely. SL-13768
+ haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25);
+
+ // Increase ambient when there are more clouds
+ vec3 tmpAmbient = ambient_color;
+ tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;
+
+ // Dim sunlight by cloud shadow percentage
+ sunlight *= (1. - cloud_shadow);
+
+ // Haze color below cloud
+ vec3 additiveColorBelowCloud =
+ (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));
+
+ // CLOUDS
+ sunlight = sunlight_color;
+ off_axis = 1.0 / max(1e-6, lightnorm.y * 2.);
+ sunlight *= exp(-light_atten * off_axis);
+
+ // Cloud color out
+ vec3 cloudColorSun = (sunlight * haze_glow) * cloud_color;
+ vec3 cloudColorAmbient = tmpAmbient * cloud_color;
+
+ // Attenuate cloud color by atmosphere
+ combined_haze = sqrt(combined_haze); // less atmos opacity (more transparency) below clouds
+ cloudColorSun *= combined_haze;
+ cloudColorAmbient *= combined_haze;
+ vec3 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze);
+
+ // Make a nice cloud density based on the cloud_shadow value that was passed in.
+ float cloudDensity = 2. * (cloud_shadow - 0.25);
+
+ // Combine these to minimize register use
+ cloudColorAmbient += oHazeColorBelowCloud;
+
+ // Cloud Fragment
vec2 disturbance = vec2(cloudNoise(uv1 / 8.0f).x, cloudNoise((uv3 + uv1) / 16.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
index c019b5606a..89fbe38af0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
@@ -1,5 +1,5 @@
/**
- * @file WLCloudsV.glsl
+ * @file class1/deferred/cloudsV.glsl
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -33,38 +33,15 @@ in vec2 texcoord0;
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-out vec3 vary_CloudColorSun;
-out vec3 vary_CloudColorAmbient;
-out float vary_CloudDensity;
+out vec3 pos;
out vec2 vary_texcoord0;
out vec2 vary_texcoord1;
out vec2 vary_texcoord2;
out vec2 vary_texcoord3;
-out float altitude_blend_factor;
// Inputs
-uniform vec3 camPosLocal;
-
uniform vec3 lightnorm;
-uniform vec3 sunlight_color;
-uniform vec3 moonlight_color;
-uniform int sun_up_factor;
-uniform vec3 ambient_color;
-uniform vec3 blue_horizon;
-uniform vec3 blue_density;
-uniform float haze_horizon;
-uniform float haze_density;
-
-uniform float cloud_shadow;
-uniform float density_multiplier;
-uniform float max_y;
-
-uniform vec3 glow;
-uniform float sun_moon_glow_factor;
-
-uniform vec3 cloud_color;
-
uniform float cloud_scale;
// NOTE: Keep these in sync!
@@ -76,6 +53,7 @@ uniform float cloud_scale;
void main()
{
// World / view / projection
+ pos = position.xyz;
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
// Texture coords
@@ -92,102 +70,4 @@ void main()
vary_texcoord2 = vary_texcoord0 * 16.;
vary_texcoord3 = vary_texcoord1 * 16.;
-
- // Get relative position
- vec3 rel_pos = position.xyz - camPosLocal.xyz + vec3(0, 50, 0);
-
- altitude_blend_factor = clamp((rel_pos.y + 512.0) / max_y, 0.0, 1.0);
-
- // Set altitude
- if (rel_pos.y > 0)
- {
- rel_pos *= (max_y / rel_pos.y);
- }
- if (rel_pos.y < 0)
- {
- altitude_blend_factor = 0; // SL-11589 Fix clouds drooping below horizon
- rel_pos *= (-32000. / rel_pos.y);
- }
-
- // Can normalize then
- vec3 rel_pos_norm = normalize(rel_pos);
- float rel_pos_len = length(rel_pos);
-
- // Initialize temp variables
- vec3 sunlight = sunlight_color;
- vec3 light_atten;
-
- // Sunlight attenuation effect (hue and brightness) due to atmosphere
- // this is used later for sunlight modulation at various altitudes
- light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);
-
- // Calculate relative weights
- vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density));
- vec3 blue_weight = blue_density / combined_haze;
- vec3 haze_weight = haze_density / combined_haze;
-
- // Compute sunlight from rel_pos & lightnorm (for long rays like sky)
- float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y);
- sunlight *= exp(-light_atten * off_axis);
-
- // Distance
- float density_dist = rel_pos_len * density_multiplier;
-
- // Transparency (-> combined_haze)
- // ATI Bugfix -- can't store combined_haze*density_dist in a variable because the ati
- // compiler gets confused.
- combined_haze = exp(-combined_haze * density_dist);
-
- // Compute haze glow
- float haze_glow = 1.0 - dot(rel_pos_norm, lightnorm.xyz);
- // haze_glow is 0 at the sun and increases away from sun
- haze_glow = max(haze_glow, .001);
- // Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- haze_glow *= glow.x;
- // Higher glow.x gives dimmer glow (because next step is 1 / "angle")
- haze_glow = pow(haze_glow, glow.z);
- // glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- haze_glow *= sun_moon_glow_factor;
-
- // Add "minimum anti-solar illumination"
- // For sun, add to glow. For moon, remove glow entirely. SL-13768
- haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25);
-
- // Increase ambient when there are more clouds
- vec3 tmpAmbient = ambient_color;
- tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;
-
- // Dim sunlight by cloud shadow percentage
- sunlight *= (1. - cloud_shadow);
-
- // Haze color below cloud
- vec3 additiveColorBelowCloud =
- (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));
-
- // CLOUDS
- sunlight = sunlight_color;
- off_axis = 1.0 / max(1e-6, lightnorm.y * 2.);
- sunlight *= exp(-light_atten * off_axis);
-
- // Cloud color out
- vary_CloudColorSun = (sunlight * haze_glow) * cloud_color;
- vary_CloudColorAmbient = tmpAmbient * cloud_color;
-
- // Attenuate cloud color by atmosphere
- combined_haze = sqrt(combined_haze); // less atmos opacity (more transparency) below clouds
- vary_CloudColorSun *= combined_haze;
- vary_CloudColorAmbient *= combined_haze;
- vec3 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze);
-
- // Make a nice cloud density based on the cloud_shadow value that was passed in.
- vary_CloudDensity = 2. * (cloud_shadow - 0.25);
-
- // Combine these to minimize register use
- vary_CloudColorAmbient += oHazeColorBelowCloud;
-
- // needs this to compile on mac
- //vary_AtmosAttenuation = vec3(0.0,0.0,0.0);
-
- // END CLOUDS
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
index 7639a5e6fc..b70d1db499 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
@@ -23,13 +23,14 @@
* $/LicenseInfo$
*/
+// Outputs
+out vec4 frag_data[4];
+
// Inputs
-in vec3 vary_HazeColor;
-in float vary_LightNormPosDot;
+in vec3 pos;
#ifdef HAS_HDRI
in vec4 vary_position;
-in vec3 vary_rel_pos;
uniform float sky_hdr_scale;
uniform float hdri_split_screen;
uniform mat3 env_mat;
@@ -43,7 +44,27 @@ uniform float moisture_level;
uniform float droplet_radius;
uniform float ice_level;
-out vec4 frag_data[4];
+uniform vec3 camPosLocal;
+
+uniform vec3 lightnorm;
+uniform vec3 sunlight_color;
+uniform vec3 moonlight_color;
+uniform int sun_up_factor;
+uniform vec3 ambient_color;
+uniform vec3 blue_horizon;
+uniform vec3 blue_density;
+uniform float haze_horizon;
+uniform float haze_density;
+
+uniform float cloud_shadow;
+uniform float density_multiplier;
+uniform float distance_multiplier;
+uniform float max_y;
+
+uniform vec3 glow;
+uniform float sun_moon_glow_factor;
+
+uniform int cube_snapshot;
vec3 srgb_to_linear(vec3 c);
vec3 linear_to_srgb(vec3 c);
@@ -83,12 +104,25 @@ vec3 halo22(float d)
void main()
{
+ // Get relative position
+ vec3 rel_pos = pos.xyz - camPosLocal.xyz + vec3(0, 50, 0);
+
+ // Adj position vector to clamp altitude
+ if (rel_pos.y > 0.)
+ {
+ rel_pos *= (max_y / rel_pos.y);
+ }
+ if (rel_pos.y < 0.)
+ {
+ rel_pos *= (-32000. / rel_pos.y);
+ }
+
vec3 color;
#ifdef HAS_HDRI
vec3 frag_coord = vary_position.xyz/vary_position.w;
if (-frag_coord.x > ((1.0-hdri_split_screen)*2.0-1.0))
{
- vec3 pos = normalize(vary_rel_pos);
+ vec3 pos = normalize(rel_pos);
pos = env_mat * pos;
vec2 texCoord = vec2(atan(pos.z, pos.x) + PI, acos(pos.y)) / vec2(2.0 * PI, PI);
color = textureLod(environmentMap, texCoord.xy, 0).rgb * sky_hdr_scale;
@@ -99,15 +133,75 @@ void main()
else
#endif
{
- // Potential Fill-rate optimization. Add cloud calculation
- // back in and output alpha of 0 (so that alpha culling kills
- // the fragment) if the sky wouldn't show up because the clouds
- // are fully opaque.
+ // Normalized
+ vec3 rel_pos_norm = normalize(rel_pos);
+ float rel_pos_len = length(rel_pos);
+
+ // Grab this value and pass to frag shader for rainbows
+ float rel_pos_lightnorm_dot = dot(rel_pos_norm, lightnorm.xyz);
+
+ // Initialize temp variables
+ vec3 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color * 0.7; //magic 0.7 to match legacy color
+
+ // Sunlight attenuation effect (hue and brightness) due to atmosphere
+ // this is used later for sunlight modulation at various altitudes
+ vec3 light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);
+
+ // Calculate relative weights
+ vec3 combined_haze = max(abs(blue_density) + vec3(abs(haze_density)), vec3(1e-6));
+ vec3 blue_weight = blue_density / combined_haze;
+ vec3 haze_weight = haze_density / combined_haze;
+
+ // Compute sunlight from rel_pos & lightnorm (for long rays like sky)
+ float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y);
+ sunlight *= exp(-light_atten * off_axis);
+
+ // Distance
+ float density_dist = rel_pos_len * density_multiplier;
+
+ // Transparency (-> combined_haze)
+ // ATI Bugfix -- can't store combined_haze*density_dist in a variable because the ati
+ // compiler gets confused.
+ combined_haze = exp(-combined_haze * density_dist);
+
+ // Compute haze glow
+ float haze_glow = 1.0 - rel_pos_lightnorm_dot;
+ // haze_glow is 0 at the sun and increases away from sun
+ haze_glow = max(haze_glow, .001);
+ // Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
+ haze_glow *= glow.x;
+ // Higher glow.x gives dimmer glow (because next step is 1 / "angle")
+ haze_glow = pow(haze_glow, glow.z);
+ // glow.z should be negative, so we're doing a sort of (1 / "angle") function
+
+ // Add "minimum anti-solar illumination"
+ // For sun, add to glow. For moon, remove glow entirely. SL-13768
+ haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (sun_moon_glow_factor * (haze_glow + 0.25));
+
+ // Haze color above cloud
+ color = (blue_horizon * blue_weight * (sunlight + ambient_color)
+ + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient_color));
+
+ // Final atmosphere additive
+ color *= (1. - combined_haze);
+
+ // Increase ambient when there are more clouds
+ vec3 ambient = ambient_color + max(vec3(0), (1. - ambient_color)) * cloud_shadow * 0.5;
+
+ // Dim sunlight by cloud shadow percentage
+ sunlight *= max(0.0, (1. - cloud_shadow));
+
+ // Haze color below cloud
+ vec3 add_below_cloud = (blue_horizon * blue_weight * (sunlight + ambient)
+ + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient));
+
+ // Attenuate cloud color by atmosphere
+ combined_haze = sqrt(combined_haze); // less atmos opacity (more transparency) below clouds
- color = vary_HazeColor;
+ // At horizon, blend high altitude sky color towards the darker color below the clouds
+ color += (add_below_cloud - color) * (1. - sqrt(combined_haze));
- float rel_pos_lightnorm = vary_LightNormPosDot;
- float optic_d = rel_pos_lightnorm;
+ float optic_d = rel_pos_lightnorm_dot;
vec3 halo_22 = halo22(optic_d);
color.rgb += rainbow(optic_d);
color.rgb += halo_22;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
index ea00d240df..836ad66098 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
@@ -1,5 +1,5 @@
/**
- * @file WLSkyV.glsl
+ * @file class1/deferred/skyV.glsl
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -32,36 +32,13 @@ in vec3 position;
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-out vec3 vary_HazeColor;
-out float vary_LightNormPosDot;
+out vec3 pos;
#ifdef HAS_HDRI
out vec4 vary_position;
-out vec3 vary_rel_pos;
#endif
// Inputs
-uniform vec3 camPosLocal;
-
-uniform vec3 lightnorm;
-uniform vec3 sunlight_color;
-uniform vec3 moonlight_color;
-uniform int sun_up_factor;
-uniform vec3 ambient_color;
-uniform vec3 blue_horizon;
-uniform vec3 blue_density;
-uniform float haze_horizon;
-uniform float haze_density;
-
-uniform float cloud_shadow;
-uniform float density_multiplier;
-uniform float distance_multiplier;
-uniform float max_y;
-
-uniform vec3 glow;
-uniform float sun_moon_glow_factor;
-
-uniform int cube_snapshot;
// NOTE: Keep these in sync!
// indra\newview\app_settings\shaders\class1\deferred\skyV.glsl
@@ -70,97 +47,13 @@ uniform int cube_snapshot;
void main()
{
// World / view / projection
- vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
-
- gl_Position = pos;
-
- // Get relative position
- vec3 rel_pos = position.xyz - camPosLocal.xyz + vec3(0, 50, 0);
-
-#ifdef HAS_HDRI
- vary_rel_pos = rel_pos;
- vary_position = pos;
-#endif
-
- // Adj position vector to clamp altitude
- if (rel_pos.y > 0.)
- {
- rel_pos *= (max_y / rel_pos.y);
- }
- if (rel_pos.y < 0.)
- {
- rel_pos *= (-32000. / rel_pos.y);
- }
-
- // Normalized
- vec3 rel_pos_norm = normalize(rel_pos);
- float rel_pos_len = length(rel_pos);
-
- // Grab this value and pass to frag shader for rainbows
- float rel_pos_lightnorm_dot = dot(rel_pos_norm, lightnorm.xyz);
- vary_LightNormPosDot = rel_pos_lightnorm_dot;
-
- // Initialize temp variables
- vec3 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color * 0.7; //magic 0.7 to match legacy color
-
- // Sunlight attenuation effect (hue and brightness) due to atmosphere
- // this is used later for sunlight modulation at various altitudes
- vec3 light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);
-
- // Calculate relative weights
- vec3 combined_haze = max(abs(blue_density) + vec3(abs(haze_density)), vec3(1e-6));
- vec3 blue_weight = blue_density / combined_haze;
- vec3 haze_weight = haze_density / combined_haze;
-
- // Compute sunlight from rel_pos & lightnorm (for long rays like sky)
- float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y);
- sunlight *= exp(-light_atten * off_axis);
-
- // Distance
- float density_dist = rel_pos_len * density_multiplier;
-
- // Transparency (-> combined_haze)
- // ATI Bugfix -- can't store combined_haze*density_dist in a variable because the ati
- // compiler gets confused.
- combined_haze = exp(-combined_haze * density_dist);
-
- // Compute haze glow
- float haze_glow = 1.0 - rel_pos_lightnorm_dot;
- // haze_glow is 0 at the sun and increases away from sun
- haze_glow = max(haze_glow, .001);
- // Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- haze_glow *= glow.x;
- // Higher glow.x gives dimmer glow (because next step is 1 / "angle")
- haze_glow = pow(haze_glow, glow.z);
- // glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- // Add "minimum anti-solar illumination"
- // For sun, add to glow. For moon, remove glow entirely. SL-13768
- haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (sun_moon_glow_factor * (haze_glow + 0.25));
-
- // Haze color above cloud
- vec3 color = (blue_horizon * blue_weight * (sunlight + ambient_color)
- + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient_color));
-
- // Final atmosphere additive
- color *= (1. - combined_haze);
-
- // Increase ambient when there are more clouds
- vec3 ambient = ambient_color + max(vec3(0), (1. - ambient_color)) * cloud_shadow * 0.5;
-
- // Dim sunlight by cloud shadow percentage
- sunlight *= max(0.0, (1. - cloud_shadow));
-
- // Haze color below cloud
- vec3 add_below_cloud = (blue_horizon * blue_weight * (sunlight + ambient)
- + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient));
+ pos = position.xyz;
- // Attenuate cloud color by atmosphere
- combined_haze = sqrt(combined_haze); // less atmos opacity (more transparency) below clouds
+ vec4 transformed_pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
- // At horizon, blend high altitude sky color towards the darker color below the clouds
- color += (add_below_cloud - color) * (1. - sqrt(combined_haze));
+ gl_Position = transformed_pos;
- // Haze color above cloud
- vary_HazeColor = color;
+ #ifdef HAS_HDRI
+ vary_position = transformed_pos;
+ #endif
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
index 5d770948c5..36eac9ed51 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
@@ -27,10 +27,10 @@
out vec3 vary_AdditiveColor;
out vec3 vary_AtmosAttenuation;
-vec3 additive_color;
-vec3 atmos_attenuation;
-vec3 sunlit_color;
-vec3 amblit_color;
+vec3 additive_color = vec3(1.0, 1.0, 1.0);
+vec3 atmos_attenuation = vec3(1.0, 1.0, 1.0);
+vec3 sunlit_color = vec3(1.0, 1.0, 1.0);
+vec3 amblit_color = vec3(1.0, 1.0, 1.0);
vec3 getSunlitColor()
{
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 53bd0c741f..69c9e9ff84 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -255,8 +255,8 @@ void main()
vec3 amblit_linear = amblit;
vec3 irradiance = amblit;
- vec3 glossenv;
- vec3 legacyenv;
+ vec3 glossenv = vec3(0.0);
+ vec3 legacyenv = vec3(0.0);
sampleReflectionProbesLegacy(irradiance, glossenv, legacyenv, frag, pos.xyz, norm.xyz, 0.0, 0.0, true, amblit_linear);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
index 0418f99459..5b5827fd67 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
@@ -188,8 +188,8 @@ void main()
vec3 radiance = vec3(0);
sampleReflectionProbes(irradiance, radiance, vary_position.xy*0.5+0.5, pos.xyz, norm.xyz, gloss, true, amblit);
- vec3 diffuseColor;
- vec3 specularColor;
+ vec3 diffuseColor = vec3(0.0);
+ vec3 specularColor = vec3(0.0);
calcDiffuseSpecular(col.rgb, metallic, diffuseColor, specularColor);
vec3 v = -normalize(pos.xyz);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl
index 03dc3d7113..32b788d433 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl
@@ -78,9 +78,9 @@ void main()
float env_intensity = vertex_color.a;
- vec3 ambenv;
- vec3 glossenv;
- vec3 legacyenv;
+ vec3 ambenv = vec3(1.0);
+ vec3 glossenv = vec3(0.0);
+ vec3 legacyenv = vec3(0.0);
vec3 norm = normalize(vary_texcoord1.xyz);
vec4 spec = vec4(0,0,0,0);
sampleReflectionProbesLegacy(ambenv, glossenv, legacyenv, vec2(0), pos.xyz, norm.xyz, spec.a, env_intensity, false, amblit);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
index 65616e7835..1738cbf9a2 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
@@ -337,8 +337,8 @@ void main()
vec3 amblit_linear = amblit;
vec3 ambenv = amblit;
- vec3 glossenv;
- vec3 legacyenv;
+ vec3 glossenv = vec3(0.0);
+ vec3 legacyenv = vec3(0.0);
sampleReflectionProbesLegacy(ambenv, glossenv, legacyenv, pos.xy*0.5+0.5, pos.xyz, norm.xyz, glossiness, env, true, amblit_linear);
color = ambenv;
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index 948387a6ed..b3b8d295b9 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -180,8 +180,8 @@ void main()
adjustIrradiance(irradiance, ambocc);
- vec3 diffuseColor;
- vec3 specularColor;
+ vec3 diffuseColor = vec3(0.0);
+ vec3 specularColor = vec3(0.0);
calcDiffuseSpecular(baseColor.rgb, metallic, diffuseColor, specularColor);
vec3 v = -normalize(pos.xyz);
diff --git a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
index 349f3b9a67..d5e00f3a3f 100644
--- a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
@@ -122,9 +122,7 @@ vec3 atmosLighting(vec3 light);
vec3 scaleSoftClip(vec3 light);
vec3 toneMapNoExposure(vec3 color);
-vec3 vN, vT, vB;
-
-vec3 transform_normal(vec3 vNt)
+vec3 transform_normal(vec3 vN, vec3 vT, vec3 vB, vec3 vNt)
{
return normalize(vNt.x * vT + vNt.y * vB + vNt.z * vN);
}
@@ -184,9 +182,9 @@ void main()
{
mirrorClip(vary_position);
- vN = vary_normal;
- vT = vary_tangent;
- vB = cross(vN, vT);
+ vec3 vN = vary_normal;
+ vec3 vT = vary_tangent;
+ vec3 vB = cross(vN, vT);
vec3 pos = vary_position.xyz;
float linear_depth = 1 / -pos.z;
@@ -222,14 +220,14 @@ void main()
vec3 waver = wavef*3;
- vec3 up = transform_normal(vec3(0,0,1));
+ vec3 up = transform_normal(vN, vT, vB, vec3(0,0,1));
float vdu = -dot(viewVec, up)*2;
vec3 wave_ibl = wavef * normScale;
wave_ibl.z *= 2.0;
- wave_ibl = transform_normal(normalize(wave_ibl));
+ wave_ibl = transform_normal(vN, vT, vB, normalize(wave_ibl));
- vec3 norm = transform_normal(normalize(wavef));
+ vec3 norm = transform_normal(vN, vT, vB, normalize(wavef));
vdu = clamp(vdu, 0, 1);
//wavef.z *= max(vdu*vdu*vdu, 0.1);
@@ -237,7 +235,7 @@ void main()
wavef = normalize(wavef);
//wavef = vec3(0, 0, 1);
- wavef = transform_normal(wavef);
+ wavef = transform_normal(vN, vT, vB, wavef);
float dist2 = dist;
dist = max(dist, 5.0);
@@ -312,7 +310,7 @@ void main()
vec3 colorEmissive = vec3(0);
float ao = 1.0;
- vec3 light_dir = transform_normal(lightDir);
+ vec3 light_dir = transform_normal(vN, vT, vB, lightDir);
float NdotV = clamp(abs(dot(norm, v)), 0.001, 1.0);
diff --git a/indra/newview/build_win32_appConfig.py b/indra/newview/build_win32_appConfig.py
deleted file mode 100755
index 1bfcc7a9bc..0000000000
--- a/indra/newview/build_win32_appConfig.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# @file build_win32_appConfig.py
-# @brief Create the windows app.config file to redirect crt linkage.
-#
-# $LicenseInfo:firstyear=2009&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$
-
-import sys, os, re
-from xml.dom.minidom import parse
-
-def munge_binding_redirect_version(src_manifest_name, src_config_name, dst_config_name):
- manifest_dom = parse(src_manifest_name)
- node = manifest_dom.getElementsByTagName('assemblyIdentity')[0]
- manifest_assm_ver = node.getAttribute('version')
-
- config_dom = parse(src_config_name)
- node = config_dom.getElementsByTagName('bindingRedirect')[0]
- node.setAttribute('newVersion', manifest_assm_ver)
- src_old_ver = re.match('([^-]*-).*', node.getAttribute('oldVersion')).group(1)
- node.setAttribute('oldVersion', src_old_ver + manifest_assm_ver)
- comment = config_dom.createComment("This file is automatically generated by the build. see indra/newview/build_win32_appConfig.py")
- config_dom.insertBefore(comment, config_dom.childNodes[0])
-
- print("Writing: " + dst_config_name)
- f = open(dst_config_name, 'w')
- config_dom.writexml(f)
- f.close()
-
-
-
-def main():
- config = sys.argv[1]
- src_dir = sys.argv[2]
- dst_dir = sys.argv[3]
- dst_name = sys.argv[4]
-
- if config.lower() == 'debug':
- src_manifest_name = dst_dir + '/Microsoft.VC80.DebugCRT.manifest'
- src_config_name = src_dir + '/SecondLifeDebug.exe.config'
- else:
- src_manifest_name = dst_dir + '/Microsoft.VC80.CRT.manifest'
- src_config_name = src_dir + '/SecondLife.exe.config'
-
- dst_config_name = dst_dir + '/' + dst_name
-
- munge_binding_redirect_version(src_manifest_name, src_config_name, dst_config_name)
-
- return 0
-
-if __name__ == "__main__":
- main()
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 1090dd8ffb..21cbf259df 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,4 @@
-version 74
+version 76
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@@ -27,7 +27,7 @@ version 74
// NOTE: All settings are set to the MIN of applied values, including 'all'!
//
list all
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 16
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@@ -56,7 +56,6 @@ RenderVolumeLODFactor 1 2.0
UseStartScreen 1 1
UseOcclusion 1 1
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
Disregard128DefaultDrawDistance 1 1
Disregard96DefaultDrawDistance 1 1
RenderCompressTextures 1 1
@@ -87,12 +86,13 @@ RenderTonemapMix 1 1
RenderDisableVintageMode 1 1
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Low Graphics Settings
//
list Low
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@@ -113,7 +113,6 @@ RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.125
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 0
RenderFSAASamples 1 0
RenderScreenSpaceReflections 1 0
@@ -130,12 +129,13 @@ RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
RenderMaxTextureResolution 1 512
RenderReflectionProbeCount 1 1
+RenderHighPrecisionPostProcess 1 0
//
// Medium Low Graphics Settings
//
list LowMid
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
@@ -156,7 +156,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 0
RenderFSAASamples 1 0
RenderScreenSpaceReflections 1 0
@@ -173,12 +172,13 @@ RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
RenderMaxTextureResolution 1 1024
RenderReflectionProbeCount 1 32
+RenderHighPrecisionPostProcess 1 0
//
// Medium Graphics Settings (standard)
//
list Mid
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -197,7 +197,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.25
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 1
RenderFSAASamples 1 1
RenderReflectionsEnabled 1 1
@@ -215,12 +214,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
// Medium High Graphics Settings
//
list MidHigh
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -239,7 +239,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.375
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 1
RenderFSAASamples 1 1
RenderReflectionsEnabled 1 1
@@ -257,12 +256,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
// High Graphics Settings (SSAO + sun shadows)
//
list High
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -281,7 +281,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.5
RenderDeferredSSAO 1 1
RenderShadowDetail 1 1
-WLSkyDetail 1 96
RenderFSAAType 1 2
RenderFSAASamples 1 2
RenderReflectionsEnabled 1 1
@@ -299,12 +298,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 128
+RenderHighPrecisionPostProcess 1 0
//
-// High Ultra Graphics Settings (deferred + SSAO + all shadows)
+// High Ultra Graphics Settings (SSAO + all shadows)
//
list HighUltra
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 350000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -323,7 +323,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.75
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
-WLSkyDetail 1 96
RenderFSAAType 1 2
RenderFSAASamples 1 2
RenderReflectionsEnabled 1 1
@@ -341,12 +340,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Ultra graphics (REALLY PURTY!)
//
list Ultra
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 8
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarPhysicsLODFactor 1 1.0
@@ -363,7 +363,6 @@ RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
RenderFSAAType 1 2
@@ -383,6 +382,7 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Class Unknown Hardware (unknown)
@@ -400,10 +400,16 @@ list VRAMGT512
RenderCompressTextures 1 0
//
+// AF Missing or AF < 2
+//
+list AnisotropicMissing
+RenderAnisotropicLevel 0 0
+
+//
// "Default" setups for safe, low, medium, high
//
list safe
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderLocalLightCount 1 0
@@ -419,7 +425,7 @@ RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 0 0
list Intel
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderFSAAType 1 0
RenderFSAASamples 1 0
RenderGLContextCoreProfile 1 0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index d8d4f08429..5d2819169e 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,10 +1,10 @@
-version 30
+version 35
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
// defaults. This should be as rare an event as we can manage.
-// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
+// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
//
@@ -27,28 +27,28 @@ version 30
// NOTE: All settings are set to the MIN of applied values, including 'all'!
//
list all
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 1
+RenderAnisotropicLevel 1 16
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 350000
RenderAutoMuteSurfaceAreaLimit 1 1000.0
RenderCubeMap 1 1
-RenderDelayVBUpdate 1 0
RenderFarClip 1 256
RenderFlexTimeFactor 1 1.0
RenderFogRatio 1 4.0
RenderGamma 1 0
RenderGlowResolutionPow 1 9
-RenderGround 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 4
+RenderLocalLightCount 1 4096
+RenderTransparentWater 1 1
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 2
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
-RenderTransparentWater 1 1
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 3
RenderTreeLODFactor 1 1.0
RenderVBOEnable 1 1
RenderVBOMappingDisable 1 1
@@ -56,63 +56,43 @@ RenderVolumeLODFactor 1 2.0
UseStartScreen 1 1
UseOcclusion 1 1
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
Disregard128DefaultDrawDistance 1 1
Disregard96DefaultDrawDistance 1 1
RenderCompressTextures 1 1
RenderShaderLightingMaxLevel 1 3
+RenderReflectionProbeLevel 1 3
RenderDeferred 1 1
RenderDeferredSSAO 1 1
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 16
+RenderUseStreamVBO 1 1
+RenderFSAAType 1 2
+RenderFSAASamples 1 3
RenderMaxTextureIndex 1 16
+RenderGLContextCoreProfile 1 1
+RenderGLMultiThreadedTextures 1 0
+RenderGLMultiThreadedMedia 1 0
+RenderReflectionProbeResolution 1 128
+RenderScreenSpaceReflections 1 1
RenderMirrors 1 1
-
-//
-// Low Graphics Settings (fixed function)
-//
-list LowFixedFunction
-RenderAnisotropic 1 0
-RenderAvatarCloth 1 0
-RenderAvatarLODFactor 1 0
-RenderAvatarPhysicsLODFactor 1 0
-RenderAvatarMaxNonImpostors 1 3
-RenderAvatarMaxComplexity 1 25000
-RenderFarClip 1 64
-RenderFlexTimeFactor 1 0
-RenderGlowResolutionPow 1 8
-RenderLocalLights 1 0
-RenderMaxPartCount 1 0
-RenderObjectBump 1 0
-RenderReflectionDetail 1 0
-RenderTerrainDetail 1 0
-RenderTerrainLODFactor 1 1
-RenderTransparentWater 1 0
-RenderTreeLODFactor 1 0
-RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 0
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderUseAdvancedAtmospherics 1 0
-RenderShadowDetail 1 0
-WLSkyDetail 1 48
-RenderFSAASamples 1 0
-RenderMirrors 1 0
-RenderHeroProbeResolution 1 256
-RenderHeroProbeDistance 1 4
-RenderHeroProbeUpdateRate 1 6
+RenderHeroProbeResolution 1 2048
+RenderHeroProbeDistance 1 16
+RenderHeroProbeUpdateRate 1 6
RenderHeroProbeConservativeUpdateMultiplier 1 16
+RenderDownScaleMethod 1 0
+RenderCASSharpness 1 1
RenderExposure 1 4
RenderTonemapType 1 1
RenderTonemapMix 1 1
+RenderDisableVintageMode 1 1
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Low Graphics Settings
//
list Low
-RenderAnisotropic 1 0
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@@ -120,297 +100,298 @@ RenderAvatarMaxComplexity 1 35000
RenderFarClip 1 64
RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
-RenderLocalLights 1 0
+RenderLocalLightCount 1 8
RenderMaxPartCount 1 0
-RenderObjectBump 1 0
-RenderReflectionDetail 1 0
+RenderTransparentWater 1 0
+RenderReflectionsEnabled 1 0
+RenderReflectionProbeDetail 1 0
RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
-RenderTransparentWater 1 0
+RenderTerrainPBRDetail 1 -4
+RenderTerrainPBRPlanarSampleCount 1 1
RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 0
-RenderDeferred 1 0
RenderDeferredSSAO 1 0
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 48
+RenderFSAAType 1 0
RenderFSAASamples 1 0
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 0
RenderMirrors 1 0
RenderHeroProbeResolution 1 256
RenderHeroProbeDistance 1 4
-RenderHeroProbeUpdateRate 1 6
+RenderHeroProbeUpdateRate 1 6
RenderHeroProbeConservativeUpdateMultiplier 1 16
+RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderDisableVintageMode 1 0
+RenderMaxTextureResolution 1 512
+RenderReflectionProbeCount 1 1
+RenderHighPrecisionPostProcess 1 0
//
// Medium Low Graphics Settings
//
list LowMid
-RenderAnisotropic 1 0
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
+RenderAvatarMaxNonImpostors 1 5
RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
RenderMaxPartCount 1 2048
-RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 0
+RenderLocalLightCount 1 256
+RenderTransparentWater 1 0
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 1.0
-RenderTransparentWater 1 1
+RenderTerrainPBRDetail 1 -1
+RenderTerrainPBRPlanarSampleCount 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 0
-RenderDeferred 1 0
RenderDeferredSSAO 1 0
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 48
+RenderFSAAType 1 0
RenderFSAASamples 1 0
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 0
RenderMirrors 1 0
RenderHeroProbeResolution 1 256
RenderHeroProbeDistance 1 6
RenderHeroProbeUpdateRate 1 3
RenderHeroProbeConservativeUpdateMultiplier 1 16
+RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderDisableVintageMode 1 0
+RenderMaxTextureResolution 1 1024
+RenderReflectionProbeCount 1 32
+RenderHighPrecisionPostProcess 1 0
//
// Medium Graphics Settings (standard)
//
list Mid
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
+RenderAvatarMaxNonImpostors 1 7
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
-RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 0
+RenderLocalLightCount 1 512
+RenderTransparentWater 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
-RenderTransparentWater 1 1
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 1
RenderTreeLODFactor 1 0.5
-RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 1
-RenderDeferred 1 0
+RenderVolumeLODFactor 1 1.25
RenderDeferredSSAO 1 0
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 48
-RenderFSAASamples 1 2
+RenderFSAAType 1 1
+RenderFSAASamples 1 1
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 0
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 6
RenderHeroProbeUpdateRate 1 3
RenderHeroProbeConservativeUpdateMultiplier 1 16
+RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
-// Medium High Graphics Settings (deferred enabled)
+// Medium High Graphics Settings
//
list MidHigh
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
+RenderAvatarMaxNonImpostors 1 9
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
-RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 0
+RenderLocalLightCount 1 1024
+RenderTransparentWater 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
-RenderTransparentWater 1 1
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 1
RenderTreeLODFactor 1 0.5
-RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 1
-RenderDeferred 1 1
-RenderUseAdvancedAtmospherics 1 0
+RenderVolumeLODFactor 1 1.375
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 48
-RenderFSAASamples 1 2
+RenderFSAAType 1 1
+RenderFSAASamples 1 1
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 1
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 6
RenderHeroProbeUpdateRate 1 2
RenderHeroProbeConservativeUpdateMultiplier 1 8
+RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
-// High Graphics Settings (deferred + SSAO)
+// High Graphics Settings (SSAO + sun shadows)
//
list High
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
+RenderAvatarMaxNonImpostors 1 11
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
-RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 0
+RenderLocalLightCount 1 2048
+RenderTransparentWater 1 1
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
-RenderTransparentWater 1 1
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 3
RenderTreeLODFactor 1 0.5
-RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 1
-RenderDeferred 1 1
+RenderVolumeLODFactor 1 1.5
RenderDeferredSSAO 1 1
-RenderUseAdvancedAtmospherics 1 0
-RenderShadowDetail 1 0
-WLSkyDetail 1 48
+RenderShadowDetail 1 1
+RenderFSAAType 1 2
RenderFSAASamples 1 2
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 1
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 2
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 8
RenderHeroProbeUpdateRate 1 2
RenderHeroProbeConservativeUpdateMultiplier 1 8
+RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 128
+RenderHighPrecisionPostProcess 1 0
//
-// High Ultra Graphics Settings (deferred + SSAO + shadows)
+// High Ultra Graphics Settings (SSAO + all shadows)
//
list HighUltra
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 0
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 350000
RenderAvatarPhysicsLODFactor 1 1.0
+RenderAvatarMaxNonImpostors 1 16
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
-RenderObjectBump 1 1
-RenderLocalLights 1 1
-RenderReflectionDetail 1 0
+RenderLocalLightCount 1 4096
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 3
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
-RenderVolumeLODFactor 1 1.125
-WindLightUseAtmosShaders 1 1
-RenderDeferred 1 1
+RenderVolumeLODFactor 1 1.75
RenderDeferredSSAO 1 1
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
-WLSkyDetail 1 48
+RenderFSAAType 1 2
RenderFSAASamples 1 2
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 1
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 3
RenderMirrors 1 0
-RenderHeroProbeResolution 1 512
+RenderHeroProbeResolution 1 1024
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1
RenderHeroProbeConservativeUpdateMultiplier 1 4
+RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Ultra graphics (REALLY PURTY!)
//
list Ultra
-RenderAnisotropic 1 1
-RenderAvatarCloth 1 1
+RenderAnisotropicLevel 1 8
RenderAvatarLODFactor 1 1.0
+RenderAvatarMaxNonImpostors 1 16
RenderAvatarPhysicsLODFactor 1 1.0
RenderFarClip 1 256
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
-RenderLocalLights 1 1
+RenderLocalLightCount 1 8192
RenderMaxPartCount 1 8192
-RenderObjectBump 1 1
-RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
+RenderTerrainPBRPlanarSampleCount 1 3
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
-RenderDeferred 1 1
RenderDeferredSSAO 1 1
-RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 2
+RenderFSAAType 1 2
+RenderFSAASamples 1 3
+RenderReflectionsEnabled 1 1
+RenderReflectionProbeDetail 1 1
+RenderScreenSpaceReflections 1 0
+RenderReflectionProbeLevel 1 3
RenderMirrors 1 0
-RenderHeroProbeResolution 1 1024
+RenderHeroProbeResolution 1 2048
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1
RenderHeroProbeConservativeUpdateMultiplier 1 4
+RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Class Unknown Hardware (unknown)
//
list Unknown
-RenderVBOEnable 1 0
RenderShadowDetail 1 0
-RenderDeferred 1 0
RenderDeferredSSAO 1 0
-RenderUseAdvancedAtmospherics 1 0
-
-//
-// Class 0 Hardware (just old)
-//
-list Class0
-RenderVBOEnable 1 1
-
-//
-// Class 1 Hardware
-//
-list Class1
-RenderVBOEnable 1 1
-
-//
-// Class 2 Hardware
-//
-list Class2
-RenderVBOEnable 1 1
-
-//
-// Class 3 Hardware
-//
-list Class3
-RenderVBOEnable 1 1
-
-//
-// Class 4 Hardware
-//
-list Class4
-RenderVBOEnable 1 1
-
-//
-// Class 5 Hardware
-//
-list Class5
-RenderVBOEnable 1 1
+RenderMirrors 1 0
+RenderDisableVintageMode 1 0
//
// VRAM > 512MB
@@ -419,339 +400,58 @@ list VRAMGT512
RenderCompressTextures 1 0
//
-// No Pixel Shaders available
-//
-list NoPixelShaders
-RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
-WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderUseAdvancedAtmospherics 0 0
-RenderShadowDetail 0 0
-
-//
-// No Vertex Shaders available
+// AF Missing or AF < 2
//
-list NoVertexShaders
-RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
-WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderUseAdvancedAtmospherics 0 0
-RenderShadowDetail 0 0
-
-//
-// GL_ARB_map_buffer_range exists
-//
-list MapBufferRange
-RenderVBOMappingDisable 1 1
-
+list AnisotropicMissing
+RenderAnisotropicLevel 0 0
//
// "Default" setups for safe, low, medium, high
//
list safe
-RenderAnisotropic 1 0
-RenderAvatarCloth 0 0
+RenderAnisotropicLevel 1 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
-RenderObjectBump 0 0
-RenderLocalLights 1 0
+RenderLocalLightCount 1 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-RenderReflectionDetail 0 0
-WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
+RenderTransparentWater 1 0
RenderDeferredSSAO 0 0
-RenderUseAdvancedAtmospherics 0 0
RenderShadowDetail 0 0
-
-//
-// CPU based feature masks
-//
-
-// 1Ghz or less (equiv)
-list CPUSlow
-RenderMaxPartCount 1 1024
-
-//
-// RAM based feature masks
-//
-list RAM256MB
-RenderObjectBump 0 0
-
-//
-// Graphics card based feature masks
-//
-list OpenGLPre15
-RenderVBOEnable 1 0
-
-list OpenGLPre30
-RenderDeferred 0 0
-RenderMaxTextureIndex 1 1
+RenderReflectionProbeDetail 0 -1
+RenderMirrors 0 0
+RenderDisableVintageMode 1 0
+RenderMaxTextureResolution 1 2048
+RenderReflectionProbeCount 0 0
list Intel
-RenderAnisotropic 1 0
-// Avoid some Intel crashes on Linux
-RenderCubeMap 0 0
+RenderAnisotropicLevel 1 0
+RenderFSAAType 1 0
RenderFSAASamples 1 0
+RenderGLContextCoreProfile 1 0
+RenderGLMultiThreadedMedia 1 0
+RenderDownScaleMethod 1 0
-list GeForce2
-RenderAnisotropic 1 0
-RenderMaxPartCount 1 2048
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 1
-
-list SiS
-UseOcclusion 0 0
-
-
-list Intel_830M
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_845G
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_855GM
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_865G
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_900
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_915GM
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_915G
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_945GM
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_945G
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_950
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_965
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-UseOcclusion 0 0
-
-list Intel_G33
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_Bear_Lake
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_Broadwater
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_Brookdale
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_Montara
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-list Intel_Springdale
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
-
-
-list ATI_FireGL_5200
-RenderVBOEnable 1 0
-WindLightUseAtmosShaders 0 0
-
-
-list ATI_Mobility_Radeon_7xxx
-RenderVBOEnable 0 0
-
-list ATI_Radeon_7xxx
-RenderVBOEnable 0 0
-
-list ATI_All-in-Wonder_Radeon
-RenderVBOEnable 0 0
-
-list ATI_All-in-Wonder_7500
-RenderVBOEnable 0 0
-
-list ATI_Mobility_Radeon_9600
-Disregard96DefaultDrawDistance 1 0
-
-
-/// tweaked ATI to 96 Draw distance
-
-list ATI_Radeon_9000
-Disregard96DefaultDrawDistance 1 0
-list ATI_Radeon_9200
-Disregard96DefaultDrawDistance 1 0
-list ATI_Radeon_9500
-Disregard96DefaultDrawDistance 1 0
-list ATI_Radeon_9600
-Disregard96DefaultDrawDistance 1 0
-
-/// tweaked ATI to 128 draw distance
-
-list ATI_Radeon_X300
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X400
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X500
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X600
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X700
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X1300
-Disregard128DefaultDrawDistance 1 0
-UseStartScreen 0 0
-list ATI_Radeon_X1400
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X1500
-Disregard128DefaultDrawDistance 1 0
-UseStartScreen 0 0
-list ATI_Radeon_X1600
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_X1700
-Disregard128DefaultDrawDistance 1 0
-list ATI_Mobility_Radeon_X1xxx
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_HD_2300
-Disregard128DefaultDrawDistance 1 0
-list ATI_Radeon_HD_2400
-Disregard128DefaultDrawDistance 1 0
-list ATI_ASUS_AH24xx
-Disregard128DefaultDrawDistance 1 0
-
-
-// Avatar hardware skinning causes invisible avatars
-// on various ATI chipsets on drivers before 8.2
-
-list ATIOldDriver
-RenderAvatarCloth 0 0
-// Avoid driver crashes with some features on Linux with old ATI drivers
-UseOcclusion 0 0
-WindLightUseAtmosShaders 0 0
-
-
-/// Tweaked NVIDIA
-
-list NVIDIA_GeForce_FX_5100
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_5200
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_5500
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_5600
-Disregard96DefaultDrawDistance 1 0
-
-list NVIDIA_GeForce_FX_Go5100
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_Go5200
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_Go5300
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_Go5500
-Disregard96DefaultDrawDistance 1 0
-list NVIDIA_GeForce_FX_Go5600
-Disregard96DefaultDrawDistance 1 0
-
-list NVIDIA_GeForce_6100
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_6200
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_6500
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_6600
-Disregard128DefaultDrawDistance 1 0
+list AMD
+RenderGLMultiThreadedTextures 1 0
-list NVIDIA_G73
-Disregard128DefaultDrawDistance 1 0
+list NVIDIA
+RenderGLMultiThreadedMedia 1 1
-list NVIDIA_GeForce_Go_6100
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6200
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6500
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6600
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6700
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6800
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_Go_6
-RenderVBOEnable 1 0
-Disregard128DefaultDrawDistance 1 0
+list GL3
+RenderFSAAType 0 0
+RenderFSAASamples 0 0
+RenderReflectionsEnabled 0 0
+RenderReflectionProbeDetail 0 0
+RenderMirrors 0 0
+RenderGLMultiThreadedTextures 0 0
+RenderGLMultiThreadedMedia 0 0
+RenderDisableVintageMode 1 0
+RenderReflectionProbeCount 0 0
-list NVIDIA_GeForce_7000
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7100
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7200
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7300
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7400
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7500
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7600
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7700
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7800
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7900
-RenderShaderLightingMaxLevel 1 2
+list TexUnit16orLess
+RenderTerrainPBRDetail 1 -1
-list NVIDIA_GeForce_Go_7200
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7300
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7300_LE
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7400
-Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7600
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7700
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7800
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7900
-RenderShaderLightingMaxLevel 1 2
+list VaryingVectors16orLess
+RenderTerrainPBRPlanarSampleCount 1 1
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index c3e2dd0c41..7bb4fb6dd0 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 73
+version 75
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@@ -27,7 +27,7 @@ version 73
// NOTE: All settings are set to the MIN of applied values, including 'all'!
//
list all
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 16
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@@ -54,7 +54,6 @@ RenderVolumeLODFactor 1 2.0
UseStartScreen 1 1
UseOcclusion 1 1
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
Disregard128DefaultDrawDistance 1 1
Disregard96DefaultDrawDistance 1 1
RenderCompressTextures 1 1
@@ -87,12 +86,13 @@ RenderDisableVintageMode 1 1
RenderDownScaleMethod 1 0
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Low Graphics Settings
//
list Low
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@@ -111,7 +111,6 @@ RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.125
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 0
RenderFSAASamples 1 0
RenderReflectionsEnabled 1 0
@@ -130,12 +129,13 @@ RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
RenderMaxTextureResolution 1 512
RenderReflectionProbeCount 1 1
+RenderHighPrecisionPostProcess 1 0
//
// Medium Low Graphics Settings
//
list LowMid
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
@@ -154,7 +154,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 0
RenderFSAASamples 1 0
RenderReflectionsEnabled 1 1
@@ -173,12 +172,13 @@ RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
RenderMaxTextureResolution 1 1024
RenderReflectionProbeCount 1 32
+RenderHighPrecisionPostProcess 1 0
//
// Medium Graphics Settings (standard)
//
list Mid
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -197,7 +197,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.25
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 1
RenderFSAASamples 1 0
RenderReflectionsEnabled 1 1
@@ -215,12 +214,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
// Medium High Graphics Settings
//
list MidHigh
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -239,7 +239,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.375
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-WLSkyDetail 1 96
RenderFSAAType 1 1
RenderFSAASamples 1 1
RenderReflectionsEnabled 1 1
@@ -257,12 +256,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 64
+RenderHighPrecisionPostProcess 1 0
//
// High Graphics Settings (SSAO + sun shadows)
//
list High
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
@@ -281,7 +281,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.5
RenderDeferredSSAO 1 1
RenderShadowDetail 1 1
-WLSkyDetail 1 96
RenderFSAAType 1 1
RenderFSAASamples 1 2
RenderReflectionsEnabled 1 1
@@ -299,12 +298,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 128
+RenderHighPrecisionPostProcess 1 0
//
// High Ultra Graphics Settings (SSAO + all shadows)
//
list HighUltra
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 2
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 350000
@@ -323,7 +323,6 @@ RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.75
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
-WLSkyDetail 1 96
RenderFSAAType 1 2
RenderFSAASamples 1 2
RenderReflectionsEnabled 1 1
@@ -341,12 +340,13 @@ RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderMaxTextureResolution 1 2048
RenderReflectionProbeCount 1 256
+RenderHighPrecisionPostProcess 1 1
//
// Ultra graphics (REALLY PURTY!)
//
list Ultra
-RenderAnisotropic 1 1
+RenderAnisotropicLevel 1 4
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@@ -363,7 +363,6 @@ RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
-WLSkyDetail 1 128
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
RenderFSAAType 1 2
@@ -401,10 +400,17 @@ list VRAMGT512
RenderCompressTextures 1 0
//
+//
+// AF Missing or AF < 2
+//
+list AnisotropicMissing
+RenderAnisotropicLevel 0 0
+
+//
// "Default" setups for safe, low, medium, high
//
list safe
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderLocalLightCount 1 0
@@ -434,7 +440,7 @@ RenderGLMultiThreadedMedia 1 0
RenderAppleUseMultGL 1 0
list Intel
-RenderAnisotropic 1 0
+RenderAnisotropicLevel 1 0
RenderFSAASamples 1 0
RenderGLMultiThreadedTextures 1 0
RenderGLMultiThreadedMedia 1 0
diff --git a/indra/newview/gltf/accessor.cpp b/indra/newview/gltf/accessor.cpp
index f0ad3fa594..900c1da170 100644
--- a/indra/newview/gltf/accessor.cpp
+++ b/indra/newview/gltf/accessor.cpp
@@ -213,7 +213,7 @@ bool Buffer::save(Asset& asset, const std::string& folder)
bin_file += mUri;
- std::ofstream file(bin_file, std::ios::binary);
+ llofstream file(bin_file, std::ios::binary);
if (!file.is_open())
{
LL_WARNS("GLTF") << "Failed to open file: " << bin_file << LL_ENDL;
diff --git a/indra/newview/gltf/asset.cpp b/indra/newview/gltf/asset.cpp
index bb8adf236a..c170672859 100644
--- a/indra/newview/gltf/asset.cpp
+++ b/indra/newview/gltf/asset.cpp
@@ -929,7 +929,7 @@ bool Asset::save(const std::string& filename)
object obj;
serialize(obj);
std::string buffer = boost::json::serialize(obj, {});
- std::ofstream file(filename, std::ios::binary);
+ llofstream file(filename, std::ios::binary);
file.write(buffer.c_str(), buffer.size());
return true;
@@ -1129,7 +1129,7 @@ bool Image::save(Asset& asset, const std::string& folder)
// set URI to non-j2c file for now, but later we'll want to reference the j2c hash
mUri = name + extension;
- std::ofstream file(filename, std::ios::binary);
+ llofstream file(filename, std::ios::binary);
file.write((const char*)buffer.mData.data() + bufferView.mByteOffset, bufferView.mByteLength);
}
else if (mTexture.notNull())
diff --git a/indra/newview/gltf/llgltfloader.cpp b/indra/newview/gltf/llgltfloader.cpp
index 54ad8c894b..1bdc915bd5 100644
--- a/indra/newview/gltf/llgltfloader.cpp
+++ b/indra/newview/gltf/llgltfloader.cpp
@@ -507,7 +507,7 @@ void LLGLTFLoader::processNodeHierarchy(S32 node_idx, std::map<std::string, S32>
}
else
{
- setLoadState(ERROR_MODEL + pModel->getStatus());
+ setLoadState(static_cast<U32>(ERROR_MODEL) + static_cast<U32>(pModel->getStatus()));
delete pModel;
return;
}
@@ -1930,7 +1930,7 @@ std::string LLGLTFLoader::extractTextureToTempFile(S32 textureIndex, const std::
"gltf_embedded_" + texture_type + "_" + std::to_string(sourceIndex) + extension;
// Write the image data to the temporary file
- std::ofstream temp_file(temp_filename, std::ios::binary);
+ llofstream temp_file(temp_filename, std::ios::binary);
if (temp_file.is_open())
{
temp_file.write(reinterpret_cast<const char*>(data_ptr), data_size);
diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript
index 8a71b392f9..8a71b392f9 100755..100644
--- a/indra/newview/installers/darwin/dmg-cleanup.applescript
+++ b/indra/newview/installers/darwin/dmg-cleanup.applescript
diff --git a/indra/newview/installers/darwin/release-dmg/Applications-alias.r b/indra/newview/installers/darwin/release-dmg/Applications-alias.r
index f9be0536c6..f9be0536c6 100755..100644
--- a/indra/newview/installers/darwin/release-dmg/Applications-alias.r
+++ b/indra/newview/installers/darwin/release-dmg/Applications-alias.r
diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
index 747ca961d8..747ca961d8 100755..100644
--- a/indra/newview/installers/darwin/release-dmg/_DS_Store
+++ b/indra/newview/installers/darwin/release-dmg/_DS_Store
Binary files differ
diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi
index 7cc70e4c76..7cc70e4c76 100755..100644
--- a/indra/newview/installers/windows/lang_de.nsi
+++ b/indra/newview/installers/windows/lang_de.nsi
diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi
index 364cc9f67e..364cc9f67e 100755..100644
--- a/indra/newview/installers/windows/lang_es.nsi
+++ b/indra/newview/installers/windows/lang_es.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi
index 2f34c0c87a..2f34c0c87a 100755..100644
--- a/indra/newview/installers/windows/lang_fr.nsi
+++ b/indra/newview/installers/windows/lang_fr.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi
index 51214d3a9c..51214d3a9c 100755..100644
--- a/indra/newview/installers/windows/lang_it.nsi
+++ b/indra/newview/installers/windows/lang_it.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi
index 296703d1a3..296703d1a3 100755..100644
--- a/indra/newview/installers/windows/lang_ja.nsi
+++ b/indra/newview/installers/windows/lang_ja.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi
index 542c8654b5..542c8654b5 100755..100644
--- a/indra/newview/installers/windows/lang_pt-br.nsi
+++ b/indra/newview/installers/windows/lang_pt-br.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
index 4e53a4957d..4e53a4957d 100755..100644
--- a/indra/newview/installers/windows/lang_ru.nsi
+++ b/indra/newview/installers/windows/lang_ru.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
index bae5029ad1..bae5029ad1 100755..100644
--- a/indra/newview/installers/windows/lang_tr.nsi
+++ b/indra/newview/installers/windows/lang_tr.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
index 0985663041..0985663041 100755..100644
--- a/indra/newview/installers/windows/lang_zh.nsi
+++ b/indra/newview/installers/windows/lang_zh.nsi
Binary files differ
diff --git a/indra/newview/licenses-linux.txt b/indra/newview/licenses-linux.txt
index 8a410d22a3..167341fc19 100644
--- a/indra/newview/licenses-linux.txt
+++ b/indra/newview/licenses-linux.txt
@@ -632,183 +632,6 @@ supporting the PNG file format in commercial products. If you use this
source code in a product, acknowledgment is not required but would be
appreciated.
-=================
-Vivox SDK License
-=================
-
-RSA Data Security, Inc. MD5 Message-Digest Algorithm
-
-Audio coding: Polycom(R) Siren14TM (ITU-T Rec. G.722.1 Annex C)
-
-Open Source Software Licensing
-Each open source software component utilized by this product is subject to its own copyright and licensing terms, as listed below.
-
-*************************************************************
-*************************************************************
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-*************************************************************
-*************************************************************
-RTP code under Lesser General Public License
-
-/*
- The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
- Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org
-
- 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; either
- version 2.1 of the License, or (at your option) any later version.
-
- 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-************************************************************
-*************************************************************
-
-/*
- * The Vovida Software License, Version 1.0
- *
- * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The names "VOCAL", "Vovida Open Communication Application Library",
- * and "Vovida Open Communication Application Library (VOCAL)" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact vocal@vovida.org.
- *
- * 4. Products derived from this software may not be called "VOCAL", nor
- * may "VOCAL" appear in their name, without prior written
- * permission of Vovida Networks, Inc.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
- * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
- * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * This software consists of voluntary contributions made by Vovida
- * Networks, Inc. and many individuals on behalf of Vovida Networks,
- * Inc. For more information on Vovida Networks, Inc., please see
- *
- *
- */
-*************************************************************
-*************************************************************
-
-Internet Software Consortium code
-
-/* This is from the BIND 4.9.4 release, modified to compile by itself */
-/* Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-*************************************************************
-
-*************************************************************
-
-************************************************************
-
-http://tinyxpath.sourceforge.net/
-
-TinyXPath is covered by the zlib license :
-
- www.sourceforge.net/projects/tinyxpath
- Copyright (c) 2002-2006 Yves Berquin (yvesb@users.sourceforge.net)
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product documentation
- would be appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source distribution.
-
-
-************************************************************
-************************************************************
-
-THE FREE SOFTWARE FOUNDATION
-
-Any customer may request the source code for all open source portions of this product which are covered by the Free Software Foundation's General Public License (GPL), for a period of three years from purchase. Please contact the vendor from whom you obtained this product for instructions. A fee equivalent to the cost of making the code available may be charged. Alternatively, customers may choose to download desired GPL components directly from their original vendors. Specifically, this product contains the following GPL-licensed components:
-
-
-From Vivox:
- - Assorted software components. To request source, contact Vivox at:
- Vivox, Inc.
- Attn: customer support
- 40 Speen Street Suite 402
- Framingham, MA 01701
-
DejaVu Fonts
MIT License
diff --git a/indra/newview/linux_tools/client-readme-joystick.txt b/indra/newview/linux_tools/client-readme-joystick.txt
deleted file mode 100644
index 4f89a73ccb..0000000000
--- a/indra/newview/linux_tools/client-readme-joystick.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-Second Life - Joystick & SpaceNavigator Support README
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-WHAT IS IT?
--=-=-=-=-=-
-
-This feature allows the use of a joystick or other supported multi-axis
-device for controlling your avatar and camera.
-
-REQUIREMENTS
--=-=-=-=-=-=
-
-* A joystick or other generic multi-axis input device supported by your chosen
- version of Linux
-
-- OR -
-
-* A SpaceNavigator device (additional configuration may be required, see below)
-
-Success has been reported on the following systems so far:
-* Ubuntu 7.04 (Feisty) with a generic USB joystick
-* Ubuntu 7.04 (Feisty) with a USB 3DConnexion SpaceNavigator
-* Ubuntu 6.06 (Dapper) with a generic USB joystick
-* Ubuntu 6.06 (Dapper) with a USB 3DConnexion SpaceNavigator
-
-CONFIGURATION
--=-=-=-=-=-=-
-
-SPACE NAVIGATOR: *Important* - do not install the Linux SpaceNavigator
-drivers from the disk included with the device - these are problematic.
-Some distributions of Linux (such as Ubuntu, Gentoo and Mandriva) will
-need some system configuration to make the SpaceNavigator usable by
-applications such as the Second Life Viewer, as follows:
-
-* Mandriva Linux Configuration:
- You need to add two new files to your system. This only needs to be
- done once. These files are available at the 'SpaceNavigator support with
- udev and Linux input framework' section of
- <http://www.aaue.dk/~janoc/index.php?n=Personal.Downloads>
-
-* Ubuntu or Gentoo Linux Configuration:
- For a quick start, you can simply paste the following line into a terminal
- before plugging in your SpaceNavigator - this only needs to be done once:
- sudo bash -c 'echo KERNEL==\"event[0-9]*\", SYSFS{idVendor}==\"046d\", SYSFS{idProduct}==\"c626\", SYMLINK+=\"input/spacenavigator\", GROUP=\"plugdev\", MODE=\"664\" > /etc/udev/rules.d/91-spacenavigator-LL.rules ; echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><deviceinfo version=\"0.2\"><device><match key=\"info.product\" contains=\"3Dconnexion SpaceNavigator\"><merge key=\"input.x11_driver\" type=\"string\"></merge></match></device></deviceinfo>" > /etc/hal/fdi/policy/3Dconnexion_SpaceNavigator_LL.fdi'
-
-For more comprehensive Linux SpaceNavigator configuration information please
-see the section 'Installing SpaceNavigator without the official driver' here:
-<http://www.aaue.dk/~janoc/index.php?n=Personal.3DConnexionSpaceNavigatorSupport>
-
-JOYSTICKS: These should be automatically detected and configured on all
-modern distributions of Linux.
-
-ALL: Your joystick or SpaceNavigator should be plugged-in before you start the
-Second Life Viewer, so that it may be detected. If you have multiple input
-devices attached, only the first detected SpaceNavigator or joystick device
-will be available.
-
-Once your system recognises your joystick or SpaceNavigator correctly, you
-can go into the Second Life Viewer's Preferences dialog, click the 'Input &
-Camera' tab, and click the 'Joystick Setup' button. From here you may enable
-and disable joystick support and change some configuration settings such as
-sensitivity. SpaceNavigator users are recommended to click the
-'SpaceNavigator Defaults' button.
-
-KNOWN PROBLEMS
--=-=-=-=-=-=-=
-
-* If your chosen version of Linux treats your joystick/SpaceNavigator as
-if it were a mouse when you plug it in (i.e. it is automatically used to control
-your desktop cursor), then the SL Viewer may detect this device *but* will be
-unable to use it properly.
-
-FURTHER PROBLEMS?
--=-=-=-=-=-=-=-=-
-
-Please report further issues to the public Second Life issue-tracker
-at <http://jira.secondlife.com/> (please note, however, that this is not
-a support forum).
diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt
deleted file mode 100644
index bfefdf3471..0000000000
--- a/indra/newview/linux_tools/client-readme-voice.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-Second Life - Linux Voice Support README
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-WHAT IS IT?
--=-=-=-=-=-
-
-Linux Voice Support is a feature in testing which allows users of the Linux
-Second Life client to participate in voice-chat with other residents and
-groups inside Second Life, with an appropriate headset/microphone.
-
-REQUIREMENTS
--=-=-=-=-=-=
-
-* A headset/microphone supported by your chosen version of Linux
-* At this time, the PulseAudio audio system is recommended; this software
- is already part of most modern (2009+) Linux desktop systems. Alternatively,
- the ALSA audio system may be used on systems installed from around
- 2007 onwards (again this is likely already installed on your system).
-
-TESTING YOUR SETTINGS
--=-=-=-=-=-=-=-=-=-=-
-
-* The Second Life region 'Voice Echo Canyon' is a great place for testing
-your hardware settings and quality - it will 'echo' your voice back to you
-when you speak.
-
-KNOWN PROBLEMS
--=-=-=-=-=-=-=
-
-* Compatibility with old ALSA-based audio systems (such as Ubuntu Dapper
- from 2006) is poor.
-
-TROUBLESHOOTING
--=-=-=-=-=-=-=-
-
-PROBLEM 1: I don't see a white dot over the head of my avatar or other
- Voice-using avatars.
-SOLUTION:
-a. Ensure that 'Enable voice' is enabled in the 'Sound' section of the
- Preferences window, and that you are in a voice-enabled area.
-b. If the above does not help, exit Second Life and ensure that any
- remaining 'SLVoice' processes (as reported by 'ps', 'top' or similar)
- are killed before restarting.
-
-PROBLEM 2: I have a white dot over my head but I never see (or hear!) anyone
- except myself listed in the Active Speakers dialog when I'm sure that other
- residents nearby are active Voice users.
-SOLUTION: This is an incompatibility between the Voice support and your
- system's audio (ALSA) driver version/configuration.
-a. Back-up and remove your ~/.asoundrc file, re-test.
-b. Check for updates to your kernel, kernel modules and ALSA-related
- packages using your Linux distribution's package-manager - install these,
- reboot and re-test.
-c. Update to the latest version of ALSA manually. For a guide, see the
- 'Update to the Latest Version of ALSA' section of this page:
- <https://help.ubuntu.com/community/HdaIntelSoundHowto> or the official
- documentation on the ALSA site: <http://www.alsa-project.org/> - reboot
- and re-test.
-
-PROBLEM 3: I can hear other people, but they cannot hear me.
-SOLUTION:
-a. Ensure that you have the 'Speak' button (at the bottom of the Second Life
- window) activated while you are trying to speak.
-b. Ensure that your microphone jack is inserted into the correct socket of your
- sound card, where appropriate.
-c. Use your system mixer-setting program (such as the PulseAudio 'volume
- control' applet or the ALSA 'alsamixer' program) to ensure that microphone
- input is set as the active input source and is not muted.
-d. Verify that audio input works in other applications, i.e. Audacity
-
-PROBLEM 4: Other people just hear bursts of loud noise when I speak.
-SOLUTION:
-a. Use your system mixer-setting program or the 'alsamixer' program to ensure
- that microphone Gain/Boost is not set too high.
-
-FURTHER PROBLEMS?
--=-=-=-=-=-=-=-=-
-
-Please report further issues to the public Second Life issue-tracker
-at <http://jira.secondlife.com/> (please note, however, that this is not
-a support forum).
diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
deleted file mode 100644
index cb8d1af535..0000000000
--- a/indra/newview/linux_tools/client-readme.txt
+++ /dev/null
@@ -1,244 +0,0 @@
-Second Life - Linux Beta README
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-This document contains information about the Second Life Linux
-client, and isn't meant to serve as an introduction to Second
-Life itself - please see <http://www.secondlife.com/whatis/>.
-
-1. Introduction
-2. System Requirements
-3. Installing & Running
-4. Known Issues
-5. Troubleshooting
- 5.1. 'Error creating window.'
- 5.2. System hangs
- 5.3. Blank window after minimizing it
- 5.4. Audio
- 5.5. 'Alt' key for camera controls doesn't work
- 5.6. In-world streaming movie, music and Flash playback
-6. Advanced Troubleshooting
- 6.1. Audio
- 6.2. OpenGL
-7. Obtaining and working with the client source code
-8. Getting more help, and reporting problems
-
-
-1. INTRODUCTION
--=-=-=-=-=-=-=-
-
-Hi! This is a BETA release of the Second Life client for Linux.
-The 'beta' status means that although we're still smoothing-out a few rough
-edges, this version of the client is functionally complete and should
-work quite well 'out of the box' for accessing Second Life.
-
-We encourage you to try it out and let us know of its compatibility
-with your system. Be aware that although this is a 'beta' client, it connects
-to the main Second Life world and changes you make there are permanent.
-
-You will have either obtained this client from secondlife.com (the official
-site) or from a third-party packager; if you encounter any problems then
-we recommend trying the latest official builds from secondlife.com which are
-updated often.
-
-Please enjoy!
-
-
-2. SYSTEM REQUIREMENTS
--=-=-=-=-=-=-=-=-=-=-=
-
-Minimum requirements:
- * Internet Connection: Cable or DSL
- * Computer Processor: 800MHz Pentium III or Athlon or better
- (recommended: 1.5GHz or more)
- * Computer Memory: 512MB (recommended: 768MB or more)
- * Linux Operating System: A reasonably modern 32-bit Linux environment
- is required. If you are running a 64-bit Linux distribution then
- you will need its 32-bit compatibility environment installed, but
- this configuration is not currently supported.
- * PulseAudio or ALSA Linux system sound software. A recent PulseAudio
- is the recommended configuration; see README-linux-voice.txt for more
- information.
- * Video/Graphics Card:
- o nVidia GeForce 2, GeForce 4mx, or better (recommend one of the
- following: 6700, 6800, 7600, 7800, 7900, 8400, 8500, 8600,
- 8800, Go 7400, Go 7600, Go 7800, Go 7900, +)
- o OR ATI Radeon 8500, 9250, or better
- (nVidia cards are recommended for the Linux client)
-
- **NOTE**: Second Life absolutely requires you to have recent, correctly-
- configured OpenGL 3D drivers for your hardware - the graphics drivers
- that came with your operating system may not be good enough! See the
- TROUBLESHOOTING section if you encounter problems starting Second Life.
-
-For a more comfortable experience, the RECOMMENDED hardware for the Second
-Life Linux client is very similar to that for Windows, as detailed at:
-<https://secondlife.com/corporate/sysreqs.php>
-
-
-3. INSTALLING & RUNNING
--=-=-=-=-=-=-=-=-=-=-=-
-
-The Second Life Linux client can entirely run from the directory you have
-unpacked it into - no installation step is required. If you wish to
-perform a separate installation step anyway, you may run './install.sh'
-
-Run ./secondlife from the installation directory to start Second Life.
-
-For in-world MOVIE and MUSIC PLAYBACK, you will need (32-bit) GStreamer 0.10
-installed on your system. This is optional - it is not required for general
-client functionality. If you have GStreamer 0.10 installed, the selection of
-in-world movies you can successfully play will depend on the GStreamer
-plugins you have; if you cannot play a certain in-world movie then you are
-probably missing the appropriate GStreamer plugin on your system - you may
-be able to install it (see TROUBLESHOOTING).
-
-User data is stored in the hidden directory ~/.secondlife by default; you may
-override this location with the SECONDLIFE_USER_DIR environment variable if
-you wish.
-
-
-4. KNOWN ISSUES
--=-=-=-=-=-=-=-
-
-* No significant known issues at this time.
-
-
-5. TROUBLESHOOTING
--=-=-=-=-=-=-=-=-=
-
-The client prints a lot of diagnostic information to the console it was
-run from. Most of this is also replicated in ~/.secondlife/logs/SecondLife.log
-- this is helpful to read when troubleshooting, especially 'WARNING' and
-'ERROR' lines.
-
-VOICE PROBLEMS? See the separate README-linux-voice.txt file for Voice
- troubleshooting information.
-
-SPACENAVIGATOR OR JOYSTICK PROBLEMS? See the separate
- README-linux-joystick.txt file for configuration information.
-
-PROBLEM 1:- Second Life fails to start up, with a warning on the console like:
- 'Error creating window.' or
- 'Unable to create window, be sure screen is set at 32-bit color' or
- 'SDL: Couldn't find matching GLX visual.'
-SOLUTION:- Usually this indicates that your graphics card does not meet
- the minimum requirements, or that your system's OpenGL 3D graphics driver is
- not updated and configured correctly. If you believe that your graphics
- card DOES meet the minimum requirements then you likely need to install the
- official so-called 'non-free' nVidia or ATI (fglrx) graphics drivers; we
- suggest one of the following options:
- * Consult your Linux distribution's documentation for installing these
- official drivers. For example, Ubuntu provides documentation here:
- <https://help.ubuntu.com/community/BinaryDriverHowto>
- * If your distribution does not make it easy, then you can download the
- required Linux drivers straight from your graphics card manufacturer:
- - nVidia cards: <http://www.nvidia.com/object/unix.html>
- - ATI cards: <http://ati.amd.com/support/driver.html>
-
-PROBLEM 2:- My whole system seems to hang when running Second Life.
-SOLUTION:- This is typically a hardware/driver issue. The first thing to
- do is to check that you have the most recent official drivers for your
- graphics card (see PROBLEM 1).
-SOLUTION:- Some residents with ATI cards have reported that running
- 'sudo aticonfig --locked-userpages=off' before running Second Life solves
- their stability issues.
-SOLUTION:- As a last resort, you can disable most of Second Life's advanced
- graphics features by editing the 'secondlife' script and removing the '#'
- from the line which reads '#export LL_GL_NOEXT=x'
-
-PROBLEM 3:- After I minimize the Second Life window, it's just blank when
- it comes back.
-SOLUTION:- Some Linux desktop 'Visual Effects' features are incompatible
- with Second Life. One reported solution is to use your desktop
- configuration program to disable such effects. For example, on Ubuntu 7.10,
- use the desktop toolbar menu to select System -> Preferences -> Appearance,
- then change 'Visual Effects' to 'None'.
-
-PROBLEM 4:- Music and sound effects are silent or very stuttery.
-SOLUTION:- The most common solution is to ensure that you have the 'esd'
- program (part of the 'esound' package) installed and running before you
- start Second Life. Users of Ubuntu (and some other) Linux systems can
- simply run the following to install and configure 'esound':
- sudo apt-get install esound
- For others, simply running 'esd&' from a command-line should get it running.
-
-PROBLEM 5:- Using the 'Alt' key to control the camera doesn't work or just
- moves the Second Life window.
-SOLUTION:- Some window managers eat the Alt key for their own purposes; you
- can configure your window manager to use a different key instead (for
- example, the 'Windows' key!) which will allow the Alt key to function
- properly with mouse actions in Second Life and other applications.
-
-PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me.
-SOLUTION:- You need to have a working installation of GStreamer 0.10; this
- is usually an optional package for most versions of Linux. If you have
- installed GStreamer 0.10 and you can play some music/movies but not others
- then you need to install a wider selection of GStreamer plugins, either
- from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party.
- For Flash playback, you need to have Flash 10 installed for your normal
- web browser (for example, Firefox). PulseAudio is required for Flash
- volume control / muting to fully function inside Second Life.
-
-
-6. ADVANCED TROUBLESHOOTING
--=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-The 'secondlife' script which launches Second Life contains some
-configuration options for advanced troubleshooters.
-
-* AUDIO - Edit the 'secondlife' script and you will see these audio
- options: LL_BAD_OPENAL_DRIVER, LL_BAD_FMODSTUDIO_DRIVER.
- Second Life tries to use OpenAL, FMODSTUDIO (PULSEAUDIO, ALSA)
- audio drivers in this order; you may uncomment the corresponding LL_BAD_*
- option to skip an audio driver which you believe may be causing you trouble.
-
-* OPENGL - For advanced troubleshooters, the LL_GL_BLACKLIST option lets
- you disable specific GL extensions, each of which is represented by a
- letter ("a"-"o"). If you can narrow down a stability problem on your system
- to just one or two GL extensions then please post details of your hardware
- (and drivers) to the Linux Client Testers forum (see link below) along
- with the minimal LL_GL_BLACKLIST which solves your problems. This will help
- us to improve stability for your hardware while minimally impacting
- performance.
- LL_GL_BASICEXT and LL_GL_NOEXT should be commented-out for this to be useful.
-
-
-7. OBTAINING AND WORKING WITH THE CLIENT SOURCE CODE
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-We're pleased to have released the Second Life client's source code under
-an Open Source license compatible with the 'GPL'. To get involved with client
-development, please see:
-<http://wiki.secondlife.com/wiki/Open_Source_Portal>
-
-
-8. GETTING MORE HELP AND REPORTING PROBLEMS
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-For general help and support with Second Life:
-<http://secondlife.com/community/support.php>
-
-For problems and discussion concerning unofficial (not secondlife.com)
-releases, please contact your packager or the SLDev mailing list:
-<https://lists.secondlife.com/cgi-bin/mailman/listinfo/sldev>
-
-In-world help: Please use the 'Help' menu in the client for various
-non-Linux-specific Second Life help options.
-
-In-world discussion: There is a 'Linux Client Users' group
-inside Second Life which is free to join. You can find it by pressing
-the 'Search' button at the bottom of the window and then selecting the
-'Groups' tab and searching for 'Linux'. This group is useful for discussing
-Linux issues with fellow Linux client users who are online.
-
-The Second Life Issue Tracker:
-<http://jira.secondlife.com/>
-This is the right place for finding known issues and reporting new
-bugs in all Second Life releases if you find that the Troubleshooting
-section in this file hasn't helped (please note, however, that this is
-not a support forum).
-
-Linux Client Testers forum:
-<http://forums.secondlife.com/forumdisplay.php?forumid=263>
-This is a forum where Linux Client users can help each other out and
-discuss the latest updates.
diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh
deleted file mode 100755
index 404ea36f26..0000000000
--- a/indra/newview/linux_tools/launch_url.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-
-# This script loads a web page in the 'default' graphical web browser.
-# It MUST return immediately (or soon), so the browser should be
-# launched in the background (thus no text-only browsers).
-# This script does not trust the URL to be well-escaped or shell-safe.
-#
-# On Unixoids we try, in order of decreasing priority:
-# - $BROWSER if set (preferred)
-# - Default GNOME browser
-# - Default KDE browser
-# - x-www-browser
-# - The first browser in $BROWSER_COMMANDS that is found.
-
-URL="$1"
-
-if [ -z "$URL" ]; then
- echo "Usage: $(basename "$0") URL"
- exit
-fi
-
-# restore LD_LIBRARY_PATH from SAVED_LD_LIBRARY_PATH if it exists
-if [ "${SAVED_LD_LIBRARY_PATH+isset}" = "isset" ]; then
- export LD_LIBRARY_PATH="${SAVED_LD_LIBRARY_PATH}"
- echo "$0: Restored library path to '${SAVED_LD_LIBRARY_PATH}'"
-fi
-
-# if $BROWSER is defined, use it.
-XBROWSER=`echo "$BROWSER" |cut -f1 -d:`
-if [ ! -z "$XBROWSER" ]; then
- XBROWSER_CMD=`echo "$XBROWSER" |cut -f1 -d' '`
- # look for $XBROWSER_CMD either literally or in PATH
- if [ -x "$XBROWSER_CMD" ] || which $XBROWSER_CMD >/dev/null; then
- # check for %s string, avoiding bash2-ism of [[ ]]
- if echo "$XBROWSER" | grep %s >/dev/null; then
- # $XBROWSER has %s which needs substituting
- echo "$URL" | xargs -r -i%s $XBROWSER &
- exit
- fi
- # $XBROWSER has no %s, tack URL on the end instead
- $XBROWSER "$URL" &
- exit
- fi
- echo "$0: Couldn't find the browser specified by \$BROWSER ($BROWSER)"
- echo "$0: Trying some others..."
-fi
-
-# Launcher the default GNOME browser.
-if [ ! -z "$GNOME_DESKTOP_SESSION_ID" ] && which gnome-open >/dev/null; then
- gnome-open "$URL" &
- exit
-fi
-
-# Launch the default KDE browser.
-if [ ! -z "$KDE_FULL_SESSION" ] && which kfmclient >/dev/null; then
- kfmclient openURL "$URL" &
- exit
-fi
-
-# List of browser commands that will be tried in the order listed. x-www-browser
-# will be tried first, which is a debian alternative.
-BROWSER_COMMANDS=" \
- x-www-browser \
- firefox \
- mozilla-firefox \
- iceweasel \
- iceape \
- opera \
- epiphany-browser \
- epiphany-gecko \
- epiphany-webkit \
- epiphany \
- mozilla \
- seamonkey \
- galeon \
- dillo \
- netscape"
-for browser_cmd in $BROWSER_COMMANDS; do
- if which $browser_cmd >/dev/null; then
- $browser_cmd "$URL" &
- exit
- fi
-done
-
-echo '$0: Failed to find a known browser. Please consider setting the $BROWSER environment variable.'
-exit 1
diff --git a/indra/newview/linux_tools/refresh_desktop_app_entry.sh b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
index d2b2a732d5..84af7505ea 100755
--- a/indra/newview/linux_tools/refresh_desktop_app_entry.sh
+++ b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
@@ -3,7 +3,7 @@
SCRIPTSRC=`readlink -f "$0" || echo "$0"`
RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
-install_prefix=${RUN_PATH}/..
+install_prefix="$(realpath -- "${RUN_PATH}/..")"
function install_desktop_entry()
{
@@ -13,18 +13,25 @@ function install_desktop_entry()
local desktop_entry="\
[Desktop Entry]\n\
Name=Second Life\n\
+GenericName=Second Life Viewer\n\
Comment=Client for the On-line Virtual World, Second Life\n\
+Path=${installation_prefix}\n\
Exec=${installation_prefix}/secondlife\n\
Icon=${installation_prefix}/secondlife_icon.png\n\
Terminal=false\n\
Type=Application\n\
-Categories=Application;Network;\n\
+Categories=Game;Simulation;\n\
StartupNotify=true\n\
+StartupWMClass="com.secondlife.indra.viewer"\n\
X-Desktop-File-Install-Version=3.0"
echo " - Installing menu entries in ${desktop_entries_dir}"
- mkdir -vp "${desktop_entries_dir}"
- echo -e $desktop_entry > "${desktop_entries_dir}/secondlife-viewer.desktop" || "Failed to install application menu!"
+ WORK_DIR=`mktemp -d`
+ echo -e $desktop_entry > "${WORK_DIR}/secondlife-viewer.desktop" || "Failed to install application menu!"
+ desktop-file-install --dir="${desktop_entries_dir}" ${WORK_DIR}/secondlife-viewer.desktop
+ rm -r $WORK_DIR
+
+ update-desktop-database "${desktop_entries_dir}"
}
if [ "$UID" == "0" ]; then
diff --git a/indra/newview/linux_tools/register_secondlifeprotocol.sh b/indra/newview/linux_tools/register_secondlifeprotocol.sh
index 33c34d7a76..d41e6dd6cb 100755
--- a/indra/newview/linux_tools/register_secondlifeprotocol.sh
+++ b/indra/newview/linux_tools/register_secondlifeprotocol.sh
@@ -6,43 +6,52 @@
HANDLER="$1"
-RUN_PATH=`dirname "$0" || echo .`
+SCRIPTSRC=`readlink -f "$0" || echo "$0"`
+RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
+
+install_prefix="$(realpath -- "${RUN_PATH}/..")"
+
cd "${RUN_PATH}/.."
if [ -z "$HANDLER" ]; then
- HANDLER=`pwd`/etc/handle_secondlifeprotocol.sh
+ HANDLER=$install_prefix/etc/handle_secondlifeprotocol.sh
fi
-# Register handler for GNOME-aware apps
-LLGCONFTOOL2=gconftool-2
-if which ${LLGCONFTOOL2} >/dev/null; then
- (${LLGCONFTOOL2} -s -t string /desktop/gnome/url-handlers/secondlife/command "${HANDLER} \"%s\"" && ${LLGCONFTOOL2} -s -t bool /desktop/gnome/url-handlers/secondlife/enabled true) || echo Warning: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} failed.
-else
- echo Warning: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} not found.
-fi
+function install_desktop_entry()
+{
+ local installation_prefix="$1"
+ local desktop_entries_dir="$2"
+
+ local desktop_entry="\
+[Desktop Entry]\n\
+Name=Second Life SLURL handler\n\
+Path=${installation_prefix}\n\
+Exec=${HANDLER} %u\n\
+Icon=${installation_prefix}/secondlife_icon.png\n\
+Terminal=false\n\
+Type=Application\n\
+StartupNotify=true\n\
+StartupWMClass="com.secondlife.indra.viewer"\n\
+NoDisplay=true\n\
+MimeType=x-scheme-handler/secondlife\n\
+X-Desktop-File-Install-Version=3.0"
-# Register handler for KDE-aware apps
-for LLKDECONFIG in kde-config kde4-config; do
- if [ `which $LLKDECONFIG` ]; then
- LLKDEPROTODIR=`$LLKDECONFIG --path services | cut -d ':' -f 1`
- if [ -d "$LLKDEPROTODIR" ]; then
- LLKDEPROTOFILE=${LLKDEPROTODIR}/secondlife.protocol
- cat > ${LLKDEPROTOFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTOFILE}
-[Protocol]
-exec=${HANDLER} '%u'
-protocol=secondlife
-input=none
-output=none
-helper=true
-listing=
-reading=false
-writing=false
-makedir=false
-deleting=false
-EOF
- else
- echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTODIR does not exist.
- fi
- fi
-done
+ echo " - Installing protocol entries in ${desktop_entries_dir}"
+ WORK_DIR=`mktemp -d`
+ PROTOCOL_HANDLER="secondlife-protocol.desktop"
+ echo -e $desktop_entry > "${WORK_DIR}/${PROTOCOL_HANDLER}" || "Failed to create desktop file!"
+ desktop-file-install --dir="${desktop_entries_dir}" "${WORK_DIR}/${PROTOCOL_HANDLER}" || "Failed to install desktop file!"
+ rm -r $WORK_DIR
+ xdg-mime default "${desktop_entries_dir}/${PROTOCOL_HANDLER}" x-scheme-handler/secondlife
+
+ update-desktop-database "${desktop_entries_dir}"
+}
+
+if [ "$UID" == "0" ]; then
+ # system-wide
+ install_desktop_entry "$install_prefix" /usr/local/share/applications
+else
+ # user-specific
+ install_desktop_entry "$install_prefix" "$HOME/.local/share/applications"
+fi
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index eb3ead433b..7e7a9a5e49 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -1,48 +1,12 @@
#!/bin/bash
-## Here are some configuration options for Linux Client Testers.
-## These options are for self-assisted troubleshooting during this beta
-## testing phase; you should not usually need to touch them.
+## Here are some configuration options for Linux Client Users.
-## - Avoids using any FMOD STUDIO audio driver.
-#export LL_BAD_FMODSTUDIO_DRIVER=x
## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x
-## - Avoids using the FMOD Studio or FMOD Ex PulseAudio audio driver.
-#export LL_BAD_FMOD_PULSEAUDIO=x
-## - Avoids using the FMOD Studio or FMOD Ex ALSA audio driver.
-#export LL_BAD_FMOD_ALSA=x
-
-## - Avoids the optional OpenGL extensions which have proven most problematic
-## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
-## may also cause CRASHES and hangs on some unstable combinations of drivers
-## and hardware.
-## NOTE: This is now disabled by default.
-#export LL_GL_BASICEXT=x
-
-## - Avoids *all* optional OpenGL extensions. This is the safest and least-
-## exciting option. Enable this if you experience stability issues, and
-## report whether it helps in the Linux Client Testers forum.
-#export LL_GL_NOEXT=x
-
-## - For advanced troubleshooters, this lets you disable specific GL
-## extensions, each of which is represented by a letter a-o. If you can
-## narrow down a stability problem on your system to just one or two
-## extensions then please post details of your hardware (and drivers) to
-## the Linux Client Testers forum along with the minimal
-## LL_GL_BLACKLIST which solves your problems.
-#export LL_GL_BLACKLIST=abcdefghijklmno
-
-## - Some ATI/Radeon users report random X server crashes when the mouse
-## cursor changes shape. If you suspect that you are a victim of this
-## driver bug, try enabling this option and report whether it helps:
-#export LL_ATI_MOUSE_CURSOR_BUG=x
-
-if [ "`uname -m`" = "x86_64" ]; then
- echo '64-bit Linux detected.'
-fi
-
+## GL Driver Options
+export mesa_glthread=true
## Everything below this line is just for advanced troubleshooters.
##-------------------------------------------------------------------
@@ -54,32 +18,8 @@ fi
## an unstripped binary before you run.
#export LL_WRAPPER='gdb --args'
#export LL_WRAPPER='valgrind --smc-check=all --error-limit=no --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
-
-## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
-export SDL_VIDEO_X11_DGAMOUSE=0
-
-## - Works around a problem with misconfigured 64-bit systems not finding GL
-I386_MULTIARCH="$(dpkg-architecture -ai386 -qDEB_HOST_MULTIARCH 2>/dev/null)"
-MULTIARCH_ERR=$?
-if [ $MULTIARCH_ERR -eq 0 ]; then
- echo 'Multi-arch support detected.'
- MULTIARCH_GL_DRIVERS="/usr/lib/${I386_MULTIARCH}/dri"
- export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}:${MULTIARCH_GL_DRIVERS}:/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri"
-else
- export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}:/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri"
-fi
-
-## - The 'scim' GTK IM module widely crashes the viewer. Avoid it.
-if [ "$GTK_IM_MODULE" = "scim" ]; then
- export GTK_IM_MODULE=xim
-fi
-
-## - Automatically work around the ATI mouse cursor crash bug:
-## (this workaround is disabled as most fglrx users do not see the bug)
-#if lsmod | grep fglrx &>/dev/null ; then
-# export LL_ATI_MOUSE_CURSOR_BUG=x
-#fi
-
+#export ASAN_OPTIONS="halt_on_error=0 detect_leaks=1 symbolize=1"
+#export UBSAN_OPTIONS="print_stacktrace=1 print_summary=1 halt_on_error=0"
## Nothing worth editing below this line.
##-------------------------------------------------------------------
@@ -99,24 +39,7 @@ cd "${RUN_PATH}"
## subprocesses that care.
export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
-# if [ -n "$LL_TCMALLOC" ]; then
-# tcmalloc_libs='/usr/lib/libtcmalloc.so.0 /usr/lib/libstacktrace.so.0 /lib/libpthread.so.0'
-# all=1
-# for f in $tcmalloc_libs; do
-# if [ ! -f $f ]; then
-# all=0
-# fi
-# done
-# if [ $all != 1 ]; then
-# echo 'Cannot use tcmalloc libraries: components missing' 1>&2
-# else
-# export LD_PRELOAD=$(echo $tcmalloc_libs | tr ' ' :)
-# if [ -z "$HEAPCHECK" -a -z "$HEAPPROFILE" ]; then
-# export HEAPCHECK=${HEAPCHECK:-normal}
-# fi
-# fi
-#fi
-
+# Add our library directory
export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}"
# Copy "$@" to ARGS array specifically to delete the --skip-gridargs switch.
@@ -140,23 +63,4 @@ LL_RUN_ERR=$?
if [ $LL_RUN_ERR -ne 0 ]; then
# generic error running the binary
echo '*** Bad shutdown ($LL_RUN_ERR). ***'
- if [ "$(uname -m)" = "x86_64" ]; then
- echo
- cat << EOFMARKER
-You are running the Second Life Viewer on a x86_64 platform. The
-most common problems when launching the Viewer (particularly
-'bin/do-not-directly-run-secondlife-bin: not found' and 'error while
-loading shared libraries') may be solved by installing your Linux
-distribution's 32-bit compatibility packages.
-For example, on Ubuntu and other Debian-based Linuxes you might run:
-$ sudo apt-get install ia32-libs ia32-libs-gtk ia32-libs-kde ia32-libs-sdl
-EOFMARKER
- fi
fi
-
-echo
-echo '*******************************************************'
-echo 'This is a BETA release of the Second Life linux client.'
-echo 'Thank you for testing!'
-echo 'Please see README-linux.txt before reporting problems.'
-echo
diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm
index d3aac5a43e..017d5c80f3 100644
--- a/indra/newview/llappdelegate-objc.mm
+++ b/indra/newview/llappdelegate-objc.mm
@@ -26,7 +26,7 @@
#import "llappdelegate-objc.h"
#if defined(LL_BUGSPLAT)
-#include <boost/filesystem.hpp>
+#include <filesystem>
#include <vector>
@import CrashReporter;
@import HockeySDK;
@@ -39,6 +39,8 @@
#include "llappviewermacosx-for-objc.h"
#include <Carbon/Carbon.h> // Used for Text Input Services ("Safe" API - it's supported)
+#include "llversioninfovars.h"
+
@implementation LLAppDelegate
@synthesize window;
@@ -250,7 +252,7 @@
if(!secondLogPath.empty())
{
- boost::filesystem::remove(secondLogPath);
+ std::filesystem::remove(secondLogPath);
}
clearDumpLogsDir();
}
@@ -324,7 +326,7 @@ struct AttachmentInfo
{
AttachmentInfo(const std::string& path, const std::string& type):
pathname(path),
- basename(boost::filesystem::path(path).filename().string()),
+ basename(std::filesystem::path(path).filename().string()),
mimetype(type)
{}
@@ -359,7 +361,7 @@ struct AttachmentInfo
// the log data to a browser, so take this opportunity to rename the file
// from <base>.crash to <base>_log.txt
info[0].basename =
- boost::filesystem::path(info[0].pathname).stem().string() + "_log.txt";
+ std::filesystem::path(info[0].pathname).stem().string() + "_log.txt";
infos("attachmentsForBugsplatStartupManager attaching log " + info[0].basename);
NSMutableArray *attachments = [[NSMutableArray alloc] init];
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2d8e94fdda..46e21ce16d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -137,15 +137,17 @@
#include "stringize.h"
#include "llcoros.h"
#include "llexception.h"
-#if !LL_LINUX
#include "cef/dullahan_version.h"
#include "vlc/libvlc_version.h"
-#endif // LL_LINUX
#if LL_DARWIN
#include "llwindowmacosx.h"
#endif
+#if LL_SDL_WINDOW
+#include "llwindowsdl.h"
+#endif
+
// Third party library includes
#include <boost/bind.hpp>
#include <boost/algorithm/string.hpp>
@@ -186,7 +188,6 @@
#include "lltracker.h"
#include "llviewerparcelmgr.h"
#include "llworldmapview.h"
-#include "llpostprocess.h"
#include "lldebugview.h"
#include "llconsole.h"
@@ -269,10 +270,6 @@ using namespace LL;
// define a self-registering event API object
#include "llappviewerlistener.h"
-#if LL_LINUX && LL_GTK
-#include "glib.h"
-#endif // (LL_LINUX) && LL_GTK
-
#ifdef LL_DISCORD
#define DISCORDPP_IMPLEMENTATION
#include <discordpp.h>
@@ -298,7 +295,7 @@ extern bool gRandomizeFramerate;
extern bool gPeriodicSlowFrame;
extern bool gDebugGL;
-#if LL_DARWIN
+#if LL_DARWIN || LL_SDL_WINDOW
extern bool gHiDPISupport;
#endif
@@ -552,7 +549,7 @@ static void settings_to_globals()
LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLContextCoreProfile");
#endif
LLRender::sNsightDebugSupport = gSavedSettings.getBOOL("RenderNsightDebugSupport");
- LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic");
+ LLRender::sAnisotropicFilteringLevel = static_cast<F32>(gSavedSettings.getU32("RenderAnisotropicLevel"));
LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures");
LLVOVolume::sLODFactor = llclamp(gSavedSettings.getF32("RenderVolumeLODFactor"), 0.01f, MAX_LOD_FACTOR);
LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f;
@@ -578,6 +575,9 @@ static void settings_to_globals()
#if LL_DARWIN
LLWindowMacOSX::sUseMultGL = gSavedSettings.getBOOL("RenderAppleUseMultGL");
+#endif
+
+#if LL_DARWIN || LL_SDL_WINDOW
gHiDPISupport = gSavedSettings.getBOOL("RenderHiDPI");
#endif
}
@@ -1145,17 +1145,17 @@ bool LLAppViewer::init()
gGLActive = false;
-//#if LL_RELEASE_FOR_DOWNLOAD
- // Launch VVM update check
+#if !LL_LINUX
+ // Launch VVM update check (Linux updater is future work: Velopack port)
if (!gSavedSettings.getBOOL("CmdLineSkipUpdater") && !gNonInteractive)
{
initVVMUpdateCheck();
}
else
+#endif
{
LL_WARNS("InitInfo") << "Skipping updater check." << LL_ENDL;
}
-//#endif //LL_RELEASE_FOR_DOWNLOAD
{
// Iterate over --leap command-line options. But this is a bit tricky: if
@@ -1888,8 +1888,6 @@ bool LLAppViewer::cleanup()
SUBSYSTEM_CLEANUP(LLAvatarAppearance);
- SUBSYSTEM_CLEANUP(LLPostProcess);
-
LLTracker::cleanupInstance();
// *FIX: This is handled in LLAppViewerWin32::cleanup().
@@ -2292,7 +2290,7 @@ void errorCallback(LLError::ELevel level, const std::string &error_string)
LLAppViewer::instance()->writeDebugInfo();
std::string error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME);
- if (!LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB))
+ if (!LLFile::isfile(error_marker_file))
{
// If marker doesn't exist, create a marker with llerror code for next launch
// otherwise don't override existing file
@@ -3222,13 +3220,11 @@ void LLAppViewer::initStrings()
}
else
{
- llstat st;
- int rc = LLFile::stat(strings_path_full, &st);
- if (rc != 0)
+ if (!LLFile::exists(strings_path_full))
{
- crash_reason = "The file '" + strings_path_full + "' failed to get status. Error code: " + std::to_string(rc);
+ crash_reason = "The file '" + strings_path_full + "' doesn't seem to exist";
}
- else if (S_ISDIR(st.st_mode))
+ else if (LLFile::isdir(strings_path_full))
{
crash_reason = "The filename '" + strings_path_full + "' is a directory name";
}
@@ -3617,7 +3613,7 @@ LLSD LLAppViewer::getViewerInfo() const
info["RENDER_QUALITY"] = (F32)gSavedSettings.getU32("RenderQualityPerformance");
info["TEXTURE_MEMORY"] = LLSD::Integer(gGLManager.mVRAM);
-#if LL_DARWIN
+#if LL_DARWIN || LL_SDL_WINDOW
info["HIDPI"] = gHiDPISupport;
#endif
@@ -3647,7 +3643,6 @@ LLSD LLAppViewer::getViewerInfo() const
info["VOICE_VERSION"] = LLTrans::getString("NotConnected");
}
-#if !LL_LINUX
std::ostringstream cef_ver_codec;
cef_ver_codec << "Dullahan: ";
cef_ver_codec << DULLAHAN_VERSION_MAJOR;
@@ -3673,11 +3668,7 @@ LLSD LLAppViewer::getViewerInfo() const
cef_ver_codec << CHROME_VERSION_PATCH;
info["LIBCEF_VERSION"] = cef_ver_codec.str();
-#else
- info["LIBCEF_VERSION"] = "Undefined";
-#endif
-#if !LL_LINUX
std::ostringstream vlc_ver_codec;
vlc_ver_codec << LIBVLC_VERSION_MAJOR;
vlc_ver_codec << ".";
@@ -3685,9 +3676,6 @@ LLSD LLAppViewer::getViewerInfo() const
vlc_ver_codec << ".";
vlc_ver_codec << LIBVLC_VERSION_REVISION;
info["LIBVLC_VERSION"] = vlc_ver_codec.str();
-#else
- info["LIBVLC_VERSION"] = "Undefined";
-#endif
LLTrace::Recording& recording = LLViewerStats::instance().getRecording();
S32 packets_in = (S32)recording.getSum(LLStatViewer::PACKETS_IN);
@@ -4146,7 +4134,7 @@ void LLAppViewer::processMarkerFiles()
bool marker_is_same_version = true;
// first, look for the marker created at startup and deleted on a clean exit
mMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,MARKER_FILE_NAME);
- if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB))
+ if (LLFile::isfile(mMarkerFileName))
{
// File exists...
// first, read it to see if it was created by the same version (we need this later)
@@ -4233,7 +4221,7 @@ void LLAppViewer::processMarkerFiles()
// check for any last exec event report based on whether or not it happened during logout
// (the logout marker is created when logout begins)
std::string logout_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LOGOUT_MARKER_FILE_NAME);
- if(LLAPRFile::isExist(logout_marker_file, NULL, LL_APR_RB))
+ if(LLFile::isfile(logout_marker_file))
{
if (markerIsSameVersion(logout_marker_file))
{
@@ -4245,7 +4233,7 @@ void LLAppViewer::processMarkerFiles()
{
LL_INFOS("MarkerFile") << "Logout crash marker '"<< logout_marker_file << "' found, but versions did not match" << LL_ENDL;
}
- LLAPRFile::remove(logout_marker_file);
+ LLFile::remove(logout_marker_file);
}
// Refine based on whether or not a marker created during
// a crash is found or if wathdog caught a freeze.
@@ -4254,7 +4242,7 @@ void LLAppViewer::processMarkerFiles()
std::string watchdog_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, WATCHDOG_MARKER_FILE_NAME);
std::string inited_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, INITED_MARKER_FILE_NAME);
std::string close_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, CLOSE_EVENT_MARKER_FILE_NAME);
- if(LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB))
+ if(LLFile::isfile(error_marker_file))
{
S32 marker_code = getMarkerErrorCode(error_marker_file);
if (marker_code >= 0)
@@ -4282,8 +4270,8 @@ void LLAppViewer::processMarkerFiles()
{
LL_INFOS("MarkerFile") << "Error marker '"<< error_marker_file << "' marker found, but versions did not match" << LL_ENDL;
}
- LLAPRFile::remove(error_marker_file);
- if (LLAPRFile::isExist(watchdog_marker_file, NULL, LL_APR_RB))
+ LLFile::remove(error_marker_file);
+ if (LLFile::isfile(watchdog_marker_file))
{
// If viewer crashed after a freeze was detected,
// crash still takes precendence. Just clear watchdog.
@@ -4298,7 +4286,7 @@ void LLAppViewer::processMarkerFiles()
// If viewer crashed after a freeze was detected,
// crash still takes precendence.
// So only check watchdog marker if there is no error marker.
- if (LLAPRFile::isExist(watchdog_marker_file, NULL, LL_APR_RB))
+ if (LLFile::isfile(watchdog_marker_file))
{
// watchdog marker gets created if we detect a freeze,
// so if viwer did not stop gracefully, and we know it wasn't a crash,
@@ -4315,7 +4303,7 @@ void LLAppViewer::processMarkerFiles()
// killed by task manager.
// Marker does not indicate that viewer was closed or is closing,
// just that 'close' was requested before viewer died.
- else if (LLAPRFile::isExist(close_marker_file, NULL, LL_APR_RB))
+ else if (LLFile::isfile(close_marker_file))
{
// Unfortunately we can't reliably distinguish
// task manager's case from genuine shutdown, so we
@@ -4330,7 +4318,7 @@ void LLAppViewer::processMarkerFiles()
}
}
else if ((LAST_EXEC_UNKNOWN == gLastExecEvent)
- && !LLAPRFile::isExist(inited_marker_file, NULL, LL_APR_RB))
+ && !LLFile::isfile(inited_marker_file))
{
// Viewer didn't get to a login screen.
gLastExecEvent = LAST_EXEC_INIT;
@@ -4341,15 +4329,15 @@ void LLAppViewer::processMarkerFiles()
}
}
}
- if (LLAPRFile::isExist(watchdog_marker_file, NULL, LL_APR_RB))
+ if (LLFile::isfile(watchdog_marker_file))
{
removeWatchdogMarker();
}
- if (LLAPRFile::isExist(inited_marker_file, NULL, LL_APR_RB))
+ if (LLFile::isfile(inited_marker_file))
{
removeInitedMarker();
}
- if (LLAPRFile::isExist(close_marker_file, NULL, LL_APR_RB))
+ if (LLFile::isfile(close_marker_file))
{
removeCloseRequestMarker();
}
@@ -4378,7 +4366,7 @@ void LLAppViewer::removeMarkerFiles()
if (mMarkerFile.getFileHandle())
{
mMarkerFile.close() ;
- LLAPRFile::remove( mMarkerFileName );
+ LLFile::remove( mMarkerFileName );
LL_DEBUGS("MarkerFile") << "removed exec marker '"<<mMarkerFileName<<"'"<< LL_ENDL;
}
else
@@ -4389,7 +4377,7 @@ void LLAppViewer::removeMarkerFiles()
if (mLogoutMarkerFile.getFileHandle())
{
mLogoutMarkerFile.close();
- LLAPRFile::remove( mLogoutMarkerFileName );
+ LLFile::remove( mLogoutMarkerFileName );
LL_DEBUGS("MarkerFile") << "removed logout marker '"<<mLogoutMarkerFileName<<"'"<< LL_ENDL;
}
else
@@ -4632,7 +4620,7 @@ void LLAppViewer::migrateCacheDirectory()
LLFile::remove(ds_store);
}
#endif
- if (LLFile::rmdir(old_cache_dir) != 0)
+ if (LLFile::remove(old_cache_dir) != 0)
{
LL_WARNS() << "could not delete old cache directory " << old_cache_dir << LL_ENDL;
}
@@ -4918,7 +4906,7 @@ void LLAppViewer::purgeCacheImmediate()
std::string cache_dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "objectcache");
LL_INFOS() << "Removing cache at " << cache_dir << LL_ENDL;
gDirUtilp->deleteFilesInDir(cache_dir, mask); //delete all files
- LLFile::rmdir(cache_dir);
+ LLFile::remove(cache_dir);
}
}
@@ -5851,7 +5839,7 @@ void LLAppViewer::createErrorMarker(eLastExecEvent error_code) const
bool LLAppViewer::errorMarkerExists() const
{
std::string error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME);
- return LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB);
+ return LLFile::isfile(error_marker_file);
}
void LLAppViewer::createCloseRequestMarker() const
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index fe0d6f6e7d..2fd0eebd44 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -34,27 +34,48 @@
#include "llurldispatcher.h" // SLURL from other app instance
#include "llviewernetwork.h"
#include "llviewercontrol.h"
-#include "llwindowsdl.h"
#include "llmd5.h"
#include "llfindlocale.h"
+#include "llversioninfo.h"
#include <exception>
-#if LL_DBUS_ENABLED
-# include "llappviewerlinux_api_dbus.h"
+#define SDL_MAIN_USE_CALLBACKS
+#include <SDL3/SDL_main.h>
+
+#include "SDL3/SDL.h"
+
+#include "llsdl.h"
+#include "llwindowsdl.h"
-// regrettable hacks to give us better runtime compatibility with older systems inside llappviewerlinux_api.h:
-#define llg_return_if_fail(COND) do{if (!(COND)) return;}while(0)
-#undef g_return_if_fail
-#define g_return_if_fail(COND) llg_return_if_fail(COND)
-// The generated API
-# include "llappviewerlinux_api.h"
+#ifdef LL_GLIB
+#include <gio/gio.h>
#endif
+#define VIEWERAPI_SERVICE "com.secondlife.ViewerAppAPIService"
+#define VIEWERAPI_PATH "/com/secondlife/ViewerAppAPI"
+#define VIEWERAPI_INTERFACE "com.secondlife.ViewerAppAPI"
+
+static const char * DBUS_SERVER = "<node name=\"/com/secondlife/ViewerAppAPI\">\n"
+ " <interface name=\"com.secondlife.ViewerAppAPI\">\n"
+ " <annotation name=\"org.freedesktop.DBus.GLib.CSymbol\" value=\"viewer_app_api\"/>\n"
+ " <method name=\"GoSLURL\">\n"
+ " <annotation name=\"org.freedesktop.DBus.GLib.CSymbol\" value=\"dispatchSLURL\"/>\n"
+ " <arg type=\"s\" name=\"slurl\" direction=\"in\" />\n"
+ " </method>\n"
+ " </interface>\n"
+ "</node>";
+
+typedef struct
+{
+ GObject parent;
+} ViewerAppAPI;
+
namespace
{
int gArgC = 0;
char **gArgV = NULL;
+ LLAppViewerLinux* gViewerAppPtr = NULL;
void (*gOldTerminateHandler)() = NULL;
}
@@ -62,6 +83,97 @@ namespace
guint32 LLAppViewerLinux::sPowerInhibitCookie = 0;
bool LLAppViewerLinux::sPowerInhibitActive = false;
+void check_vm_bloat()
+{
+#if LL_LINUX
+ // watch our own VM and RSS sizes, warn if we bloated rapidly
+ static const std::string STATS_FILE = "/proc/self/stat";
+ FILE *fp = fopen(STATS_FILE.c_str(), "r");
+ if (fp)
+ {
+ static long long last_vm_size = 0;
+ static long long last_rss_size = 0;
+ const long long significant_vm_difference = 250 * 1024*1024;
+ const long long significant_rss_difference = 50 * 1024*1024;
+ long long this_vm_size = 0;
+ long long this_rss_size = 0;
+
+ ssize_t res;
+ size_t dummy;
+ char *ptr = nullptr;
+ for (int i=0; i<22; ++i) // parse past the values we don't want
+ {
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ if (-1 == res)
+ {
+ LL_WARNS() << "Unable to parse " << STATS_FILE << LL_ENDL;
+ goto finally;
+ }
+ free(ptr);
+ ptr = nullptr;
+ }
+ // 23rd space-delimited entry is vsize
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ llassert(ptr);
+ if (-1 == res)
+ {
+ LL_WARNS() << "Unable to parse " << STATS_FILE << LL_ENDL;
+ goto finally;
+ }
+ this_vm_size = atoll(ptr);
+ free(ptr);
+ ptr = nullptr;
+ // 24th space-delimited entry is RSS
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ llassert(ptr);
+ if (-1 == res)
+ {
+ LL_WARNS() << "Unable to parse " << STATS_FILE << LL_ENDL;
+ goto finally;
+ }
+ this_rss_size = getpagesize() * atoll(ptr);
+ free(ptr);
+ ptr = nullptr;
+
+ LL_INFOS() << "VM SIZE IS NOW " << (this_vm_size/(1024*1024)) << " MB, RSS SIZE IS NOW " << (this_rss_size/(1024*1024)) << " MB" << LL_ENDL;
+
+ if (llabs(last_vm_size - this_vm_size) > significant_vm_difference)
+ {
+ if (this_vm_size > last_vm_size)
+ {
+ LL_WARNS() << "VM size grew by " << (this_vm_size - last_vm_size)/(1024*1024) << " MB in last frame" << LL_ENDL;
+ }
+ else
+ {
+ LL_INFOS() << "VM size shrank by " << (last_vm_size - this_vm_size)/(1024*1024) << " MB in last frame" << LL_ENDL;
+ }
+ }
+
+ if (llabs(last_rss_size - this_rss_size) > significant_rss_difference)
+ {
+ if (this_rss_size > last_rss_size)
+ {
+ LL_WARNS() << "RSS size grew by " << (this_rss_size - last_rss_size)/(1024*1024) << " MB in last frame" << LL_ENDL;
+ }
+ else
+ {
+ LL_INFOS() << "RSS size shrank by " << (last_rss_size - this_rss_size)/(1024*1024) << " MB in last frame" << LL_ENDL;
+ }
+ }
+
+ last_rss_size = this_rss_size;
+ last_vm_size = this_vm_size;
+
+finally:
+ if (ptr)
+ {
+ free(ptr);
+ ptr = nullptr;
+ }
+ fclose(fp);
+ }
+#endif // LL_LINUX
+}
static void exceptionTerminateHandler()
{
@@ -75,32 +187,85 @@ static void exceptionTerminateHandler()
gOldTerminateHandler(); // call old terminate() handler
}
-int main( int argc, char **argv )
+SDL_AppResult SDL_AppInit(void **appstate, int argc, char **argv)
{
// Call Tracy first thing to have it allocate memory
// https://github.com/wolfpld/tracy/issues/196
LL_PROFILER_FRAME_END;
LL_PROFILER_SET_THREAD_NAME("App");
+ gSDLMainHandled = true;
+
gArgC = argc;
gArgV = argv;
- LLAppViewer* viewer_app_ptr = new LLAppViewerLinux();
+ gViewerAppPtr = new LLAppViewerLinux();
// install unexpected exception handler
gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler);
- bool ok = viewer_app_ptr->init();
+ unsetenv( "LD_PRELOAD" ); // <FS:ND/> Get rid of any preloading, we do not want this to happen during startup of plugins.
+
+ // This needs to be set as early as possible
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, LLVersionInfo::getInstance()->getChannel().c_str());
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, LLVersionInfo::getInstance()->getVersion().c_str());
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, "com.secondlife.indra.viewer");
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, "Linden Research Inc");
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, "Copyright (c) Linden Research, Inc. 2025");
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, "https://www.secondlife.com");
+ SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, "game");
+
+ bool ok = gViewerAppPtr->init();
if(!ok)
{
LL_WARNS() << "Application init failed." << LL_ENDL;
- return -1;
+ return SDL_APP_FAILURE;
}
- // Run the application main loop
- while (! viewer_app_ptr->frame())
- {}
+ return SDL_APP_CONTINUE;
+}
+
+SDL_AppResult SDL_AppIterate(void *appstate)
+{
+ // Run the application main loop
+ if (!gViewerAppPtr->frame())
+ {
+#if LL_GLIB
+ // Pump until we've nothing left to do or passed 1/15th of a
+ // second pumping for this frame.
+ static LLTimer pump_timer;
+ pump_timer.reset();
+ pump_timer.setTimerExpirySec(1.0f / 15.0f);
+ do
+ {
+ g_main_context_iteration(g_main_context_default(), false);
+ } while( g_main_context_pending(g_main_context_default()) && !pump_timer.hasExpired());
+#endif
+ // hack - doesn't belong here - but this is just for debugging
+ if (getenv("LL_DEBUG_BLOAT"))
+ {
+ check_vm_bloat();
+ }
+
+ return SDL_APP_CONTINUE;
+ }
+
+ if(LLApp::isError())
+ {
+ return SDL_APP_FAILURE;
+ }
+
+ return SDL_APP_SUCCESS;
+}
+
+SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
+{
+ return LLWindowSDL::handleEvents(*event);
+}
+
+void SDL_AppQuit(void *appstate, SDL_AppResult result)
+{
if (!LLApp::isError())
{
//
@@ -108,11 +273,11 @@ int main( int argc, char **argv )
// the assumption is that the error handler is responsible for doing
// app cleanup if there was a problem.
//
- viewer_app_ptr->cleanup();
+ gViewerAppPtr->cleanup();
}
- delete viewer_app_ptr;
- viewer_app_ptr = NULL;
- return 0;
+
+ delete gViewerAppPtr;
+ gViewerAppPtr = nullptr;
}
LLAppViewerLinux::LLAppViewerLinux()
@@ -130,12 +295,6 @@ LLAppViewerLinux::~LLAppViewerLinux()
bool LLAppViewerLinux::init()
{
- // g_thread_init() must be called before *any* use of glib, *and*
- // before any mutexes are held, *and* some of our third-party
- // libraries likes to use glib functions; in short, do this here
- // really early in app startup!
- if (!g_thread_supported ()) g_thread_init (NULL);
-
bool success = LLAppViewer::init();
#if LL_SEND_CRASH_REPORTS
@@ -157,7 +316,7 @@ bool LLAppViewerLinux::restoreErrorTrap()
}
/////////////////////////////////////////
-#if LL_DBUS_ENABLED
+#if LL_GLIB
typedef struct
{
@@ -167,101 +326,77 @@ typedef struct
static void viewerappapi_init(ViewerAppAPI *server);
static void viewerappapi_class_init(ViewerAppAPIClass *klass);
-///
-
-// regrettable hacks to give us better runtime compatibility with older systems in general
-static GType llg_type_register_static_simple_ONCE(GType parent_type,
- const gchar *type_name,
- guint class_size,
- GClassInitFunc class_init,
- guint instance_size,
- GInstanceInitFunc instance_init,
- GTypeFlags flags)
-{
- static GTypeInfo type_info;
- memset(&type_info, 0, sizeof(type_info));
-
- type_info.class_size = class_size;
- type_info.class_init = class_init;
- type_info.instance_size = instance_size;
- type_info.instance_init = instance_init;
-
- return g_type_register_static(parent_type, type_name, &type_info, flags);
-}
-#define llg_intern_static_string(S) (S)
-#define g_intern_static_string(S) llg_intern_static_string(S)
-#define g_type_register_static_simple(parent_type, type_name, class_size, class_init, instance_size, instance_init, flags) llg_type_register_static_simple_ONCE(parent_type, type_name, class_size, class_init, instance_size, instance_init, flags)
-
G_DEFINE_TYPE(ViewerAppAPI, viewerappapi, G_TYPE_OBJECT);
void viewerappapi_class_init(ViewerAppAPIClass *klass)
{
}
-static bool dbus_server_init = false;
-
-void viewerappapi_init(ViewerAppAPI *server)
+static void dispatchSLURL(gchar const *slurl)
{
- // Connect to the default DBUS, register our service/API.
-
- if (!dbus_server_init)
- {
- GError *error = NULL;
-
- server->connection = lldbus_g_bus_get(DBUS_BUS_SESSION, &error);
- if (server->connection)
- {
- lldbus_g_object_type_install_info(viewerappapi_get_type(), &dbus_glib_viewerapp_object_info);
+ LL_INFOS() << "Was asked to go to slurl: " << slurl << LL_ENDL;
- lldbus_g_connection_register_g_object(server->connection, VIEWERAPI_PATH, G_OBJECT(server));
+ std::string url = slurl;
+ LLMediaCtrl* web = NULL;
+ const bool trusted_browser = false;
+ LLURLDispatcher::dispatch(url, "", web, trusted_browser);
+}
- DBusGProxy *serverproxy = lldbus_g_proxy_new_for_name(server->connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+static void DoMethodeCall (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ LL_INFOS() << "DBUS message " << method_name << " from: " << sender << " interface: " << interface_name << LL_ENDL;
+ const gchar *slurl;
- guint request_name_ret_unused;
- // akin to org_freedesktop_DBus_request_name
- if (lldbus_g_proxy_call(serverproxy, "RequestName", &error, G_TYPE_STRING, VIEWERAPI_SERVICE, G_TYPE_UINT, 0, G_TYPE_INVALID, G_TYPE_UINT, &request_name_ret_unused, G_TYPE_INVALID))
- {
- // total success.
- dbus_server_init = true;
- }
- else
- {
- LL_WARNS() << "Unable to register service name: " << error->message << LL_ENDL;
- }
+ g_variant_get (parameters, "(&s)", &slurl);
+ dispatchSLURL(slurl);
+}
- g_object_unref(serverproxy);
- }
- else
+GDBusNodeInfo *gBusNodeInfo = nullptr;
+static const GDBusInterfaceVTable interface_vtable =
{
- g_warning("Unable to connect to dbus: %s", error->message);
- }
-
- if (error)
- g_error_free(error);
- }
+ DoMethodeCall
+ };
+static void busAcquired(GDBusConnection *connection, const gchar *name, gpointer user_data)
+{
+ auto id = g_dbus_connection_register_object(connection,
+ VIEWERAPI_PATH,
+ gBusNodeInfo->interfaces[0],
+ &interface_vtable,
+ NULL, /* user_data */
+ NULL, /* user_data_free_func */
+ NULL); /* GError** */
+ g_assert (id > 0);
}
-gboolean viewer_app_api_GoSLURL(ViewerAppAPI *obj, gchar *slurl, gboolean **success_rtn, GError **error)
+static void nameAcquired(GDBusConnection *connection, const gchar *name, gpointer user_data)
{
- bool success = false;
+}
- LL_INFOS() << "Was asked to go to slurl: " << slurl << LL_ENDL;
+static void nameLost(GDBusConnection *connection, const gchar *name, gpointer user_data)
+{
- std::string url = slurl;
- LLMediaCtrl* web = NULL;
- const bool trusted_browser = false;
- if (LLURLDispatcher::dispatch(url, "", web, trusted_browser))
- {
- // bring window to foreground, as it has just been "launched" from a URL
- // todo: hmm, how to get there from here?
- //xxx->mWindow->bringToFront();
- success = true;
- }
+}
+void viewerappapi_init(ViewerAppAPI *server)
+{
+ gBusNodeInfo = g_dbus_node_info_new_for_xml (DBUS_SERVER, NULL);
+ g_assert (gBusNodeInfo != NULL);
- *success_rtn = g_new (gboolean, 1);
- (*success_rtn)[0] = (gboolean)success;
+ g_bus_own_name(G_BUS_TYPE_SESSION,
+ VIEWERAPI_SERVICE,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ busAcquired,
+ nameAcquired,
+ nameLost,
+ NULL,
+ NULL);
- return TRUE; // the invokation succeeded, even if the actual dispatch didn't.
}
///
@@ -269,13 +404,6 @@ gboolean viewer_app_api_GoSLURL(ViewerAppAPI *obj, gchar *slurl, gboolean **succ
//virtual
bool LLAppViewerLinux::initSLURLHandler()
{
- if (!grab_dbus_syms(DBUSGLIB_DYLIB_DEFAULT_NAME))
- {
- return false; // failed
- }
-
- g_type_init();
-
//ViewerAppAPI *api_server = (ViewerAppAPI*)
g_object_new(viewerappapi_get_type(), NULL);
@@ -285,49 +413,49 @@ bool LLAppViewerLinux::initSLURLHandler()
//virtual
bool LLAppViewerLinux::sendURLToOtherInstance(const std::string& url)
{
- if (!grab_dbus_syms(DBUSGLIB_DYLIB_DEFAULT_NAME))
+ auto *pBus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, nullptr);
+
+ if( !pBus )
{
- return false; // failed
+ LL_WARNS() << "Getting dbus failed." << LL_ENDL;
+ return false;
}
- bool success = false;
- DBusGConnection *bus;
- GError *error = NULL;
-
- g_type_init();
+ auto pProxy = g_dbus_proxy_new_sync(pBus, G_DBUS_PROXY_FLAGS_NONE, nullptr,
+ VIEWERAPI_SERVICE, VIEWERAPI_PATH,
+ VIEWERAPI_INTERFACE, nullptr, nullptr);
- bus = lldbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (bus)
+ if( !pProxy )
{
- gboolean rtn = FALSE;
- DBusGProxy *remote_object =
- lldbus_g_proxy_new_for_name(bus, VIEWERAPI_SERVICE, VIEWERAPI_PATH, VIEWERAPI_INTERFACE);
-
- if (lldbus_g_proxy_call(remote_object, "GoSLURL", &error,
- G_TYPE_STRING, url.c_str(), G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &rtn, G_TYPE_INVALID))
- {
- success = rtn;
- }
- else
- {
- LL_INFOS() << "Call-out to other instance failed (perhaps not running): " << error->message << LL_ENDL;
- }
-
- g_object_unref(G_OBJECT(remote_object));
+ LL_WARNS() << "Cannot create new dbus proxy." << LL_ENDL;
+ g_object_unref( pBus );
+ return false;
}
- else
+
+ auto *pArgs = g_variant_new( "(s)", url.c_str() );
+ if( !pArgs )
{
- LL_WARNS() << "Couldn't connect to session bus: " << error->message << LL_ENDL;
+ LL_WARNS() << "Cannot create new variant." << LL_ENDL;
+ g_object_unref( pBus );
+ return false;
}
- if (error)
- g_error_free(error);
+ auto pRes = g_dbus_proxy_call_sync(pProxy,
+ "GoSLURL",
+ pArgs,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, nullptr, nullptr);
- return success;
+
+
+ if( pRes )
+ g_variant_unref( pRes );
+ g_object_unref( pProxy );
+ g_object_unref( pBus );
+ return true;
}
-#else // LL_DBUS_ENABLED
+#else // LL_GLIB
bool LLAppViewerLinux::initSLURLHandler()
{
return false; // not implemented without dbus
@@ -336,8 +464,68 @@ bool LLAppViewerLinux::sendURLToOtherInstance(const std::string& url)
{
return false; // not implemented without dbus
}
-#endif // LL_DBUS_ENABLED
+#endif // LL_GLIB
+
+#if LL_GLIB
+
+namespace
+{
+ // Session-bus sleep inhibitors, tried in order; both hand back a uint cookie.
+ struct PowerInhibitor
+ {
+ const char* service;
+ const char* path;
+ const char* iface;
+ const char* uninhibit;
+ bool gnome_args;
+ };
+
+ const PowerInhibitor POWER_INHIBITORS[] =
+ {
+ { "org.freedesktop.PowerManagement", "/org/freedesktop/PowerManagement/Inhibit",
+ "org.freedesktop.PowerManagement.Inhibit", "UnInhibit", false },
+ { "org.gnome.SessionManager", "/org/gnome/SessionManager",
+ "org.gnome.SessionManager", "Uninhibit", true }
+ };
+
+ const PowerInhibitor* sActiveInhibitor = nullptr;
+
+ // Returns the reply, or null on failure. Takes ownership of args.
+ GVariant* call_power_manager(const PowerInhibitor& inhibitor, const char* method, GVariant* args,
+ const GVariantType* reply_type)
+ {
+ g_variant_ref_sink(args);
+
+ GDBusConnection* bus = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, nullptr);
+ if (!bus)
+ {
+ LL_WARNS("OS") << "Getting dbus failed." << LL_ENDL;
+ g_variant_unref(args);
+ return nullptr;
+ }
+
+ GError* error = nullptr;
+ GVariant* result = g_dbus_connection_call_sync(bus, inhibitor.service, inhibitor.path,
+ inhibitor.iface, method, args, reply_type,
+ G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error);
+ if (!result)
+ {
+ LL_DEBUGS("OS") << inhibitor.service << "." << method << " failed: "
+ << (error ? error->message : "unknown error") << LL_ENDL;
+ }
+ if (error)
+ {
+ g_error_free(error);
+ }
+
+ g_variant_unref(args);
+ g_object_unref(bus);
+ return result;
+ }
+}
+
+#endif // LL_GLIB
void LLAppViewerLinux::setOSHibernationMode(eHibernationMode mode)
{
@@ -391,302 +579,67 @@ void LLAppViewerLinux::setOSHibernationMode(eHibernationMode mode)
// TODO: This is AI Generated!!!, needs review and testing.
bool LLAppViewerLinux::inhibitPowerManagement(bool inhibit_display)
{
-#if LL_DBUS_ENABLED
- // Try to use D-Bus to inhibit power management via various desktop environment APIs
- // This works with GNOME, KDE, XFCE, and most modern Linux desktop environments
-
- if (!grab_dbus_syms(DBUSGLIB_DYLIB_DEFAULT_NAME))
- {
- LL_WARNS("OS") << "Failed to load D-Bus symbols for power management" << LL_ENDL;
- return false;
- }
-
- GError* error = nullptr;
- DBusGConnection* bus = lldbus_g_bus_get(DBUS_BUS_SESSION, &error);
-
- if (!bus)
- {
- LL_WARNS("OS") << "Failed to connect to D-Bus session bus: "
- << (error ? error->message : "unknown error") << LL_ENDL;
- if (error)
- g_error_free(error);
- return false;
- }
-
- // Try multiple power management services in order of preference
- // 1. org.freedesktop.PowerManagement (older standard)
- // 2. org.gnome.SessionManager (GNOME)
- // 3. org.kde.Solid.PowerManagement (KDE)
-
- const char* services[] = {
- "org.freedesktop.PowerManagement",
- "org.gnome.SessionManager",
- "org.kde.Solid.PowerManagement"
- };
-
- const char* paths[] = {
- "/org/freedesktop/PowerManagement/Inhibit",
- "/org/gnome/SessionManager",
- "/org/kde/Solid/PowerManagement"
- };
+#if LL_GLIB
+ const char* reason = inhibit_display ?
+ "Viewer active - preventing system and display sleep" :
+ "Viewer active - preventing system sleep";
- const char* interfaces[] = {
- "org.freedesktop.PowerManagement.Inhibit",
- "org.gnome.SessionManager",
- "org.kde.Solid.PowerManagement"
- };
-
- const char* methods[] = {
- "Inhibit",
- "Inhibit",
- "inhibit"
- };
-
- bool success = false;
-
- for (int i = 0; i < 3 && !success; ++i)
+ for (const PowerInhibitor& inhibitor : POWER_INHIBITORS)
{
- DBusGProxy* proxy = lldbus_g_proxy_new_for_name(
- bus,
- services[i],
- paths[i],
- interfaces[i]
- );
-
- if (!proxy)
- continue;
-
- error = nullptr;
- guint32 cookie = 0;
+ // Inhibit(app: s, reason: s) -> u, or GNOME's Inhibit(app: s, xid: u, reason: s, flags: u) -> u
+ // GNOME flags: 4 = suspend, 8 = idle (display), 12 = both
+ GVariant* args = inhibitor.gnome_args ?
+ g_variant_new("(susu)", "SecondLifeViewer", (guint32)0, reason,
+ (guint32)(inhibit_display ? 12 : 4)) :
+ g_variant_new("(ss)", "Second Life Viewer", reason);
- if (i == 0) // freedesktop.PowerManagement
- {
- // Inhibit(application_name: s, reason: s) -> cookie: u
- success = lldbus_g_proxy_call(
- proxy,
- methods[i],
- &error,
- G_TYPE_STRING, "Second Life Viewer",
- G_TYPE_STRING, inhibit_display ?
- "Viewer active - preventing system and display sleep" :
- "Viewer active - preventing system sleep",
- G_TYPE_INVALID,
- G_TYPE_UINT, &cookie,
- G_TYPE_INVALID
- );
- }
- else if (i == 1) // GNOME SessionManager
- {
- // Inhibit(app_id: s, toplevel_xid: u, reason: s, flags: u) -> cookie: u
- // flags: 4 = suspend, 8 = idle (display), 12 = both
- guint32 flags = inhibit_display ? 12 : 4;
- success = lldbus_g_proxy_call(
- proxy,
- methods[i],
- &error,
- G_TYPE_STRING, "SecondLifeViewer",
- G_TYPE_UINT, 0, // toplevel_xid (0 = none)
- G_TYPE_STRING, inhibit_display ?
- "Viewer active - preventing system and display sleep" :
- "Viewer active - preventing system sleep",
- G_TYPE_UINT, flags,
- G_TYPE_INVALID,
- G_TYPE_UINT, &cookie,
- G_TYPE_INVALID
- );
- }
- else if (i == 2) // KDE Solid
+ GVariant* result = call_power_manager(inhibitor, "Inhibit", args, G_VARIANT_TYPE("(u)"));
+ if (!result)
{
- // Different method signature for KDE
- success = lldbus_g_proxy_call(
- proxy,
- methods[i],
- &error,
- G_TYPE_INVALID,
- G_TYPE_INT, &cookie,
- G_TYPE_INVALID
- );
+ continue;
}
- if (success)
- {
- sPowerInhibitCookie = cookie;
- sPowerInhibitActive = true;
- LL_INFOS("OS") << "Successfully inhibited power management using "
- << services[i] << LL_ENDL;
- }
- else if (error)
- {
- LL_DEBUGS("OS") << "Failed to inhibit via " << services[i]
- << ": " << error->message << LL_ENDL;
- g_error_free(error);
- error = nullptr;
- }
+ guint32 cookie = 0;
+ g_variant_get(result, "(u)", &cookie);
+ g_variant_unref(result);
- g_object_unref(proxy);
+ sPowerInhibitCookie = cookie;
+ sPowerInhibitActive = true;
+ sActiveInhibitor = &inhibitor;
+ LL_INFOS("OS") << "Successfully inhibited power management using "
+ << inhibitor.service << LL_ENDL;
+ return true;
}
+#endif // LL_GLIB
- return success;
-
-#else // !LL_DBUS_ENABLED
- LL_WARNS("OS") << "Power management control not available - D-Bus support not enabled" << LL_ENDL;
return false;
-#endif
}
void LLAppViewerLinux::uninhibitPowerManagement()
{
-#if LL_DBUS_ENABLED
- if (!sPowerInhibitActive || sPowerInhibitCookie == 0)
+#if LL_GLIB
+ if (sPowerInhibitActive && sActiveInhibitor)
{
- return;
- }
-
- if (!grab_dbus_syms(DBUSGLIB_DYLIB_DEFAULT_NAME))
- {
- LL_WARNS("OS") << "Failed to load D-Bus symbols for power management uninhibit" << LL_ENDL;
- return;
- }
-
- GError* error = nullptr;
- DBusGConnection* bus = lldbus_g_bus_get(DBUS_BUS_SESSION, &error);
-
- if (!bus)
- {
- if (error)
- g_error_free(error);
- return;
- }
-
- // Try to uninhibit using all services that might have been used
- const char* services[] = {
- "org.freedesktop.PowerManagement",
- "org.gnome.SessionManager",
- "org.kde.Solid.PowerManagement"
- };
-
- const char* paths[] = {
- "/org/freedesktop/PowerManagement/Inhibit",
- "/org/gnome/SessionManager",
- "/org/kde/Solid/PowerManagement"
- };
-
- const char* interfaces[] = {
- "org.freedesktop.PowerManagement.Inhibit",
- "org.gnome.SessionManager",
- "org.kde.Solid.PowerManagement"
- };
-
- const char* methods[] = {
- "UnInhibit",
- "Uninhibit",
- "uninhibit"
- };
-
- bool success = false;
-
- for (int i = 0; i < 3; ++i)
- {
- DBusGProxy* proxy = lldbus_g_proxy_new_for_name(
- bus,
- services[i],
- paths[i],
- interfaces[i]
- );
-
- if (!proxy)
- continue;
-
- error = nullptr;
-
- if (lldbus_g_proxy_call(
- proxy,
- methods[i],
- &error,
- G_TYPE_UINT, sPowerInhibitCookie,
- G_TYPE_INVALID,
- G_TYPE_INVALID))
+ GVariant* result = call_power_manager(*sActiveInhibitor, sActiveInhibitor->uninhibit,
+ g_variant_new("(u)", (guint32)sPowerInhibitCookie),
+ nullptr);
+ if (result)
{
- success = true;
+ g_variant_unref(result);
LL_INFOS("OS") << "Successfully uninhibited power management using "
- << services[i] << LL_ENDL;
- }
- else if (error)
- {
- LL_DEBUGS("OS") << "Failed to uninhibit via " << services[i]
- << ": " << error->message << LL_ENDL;
- g_error_free(error);
- error = nullptr;
+ << sActiveInhibitor->service << LL_ENDL;
}
- g_object_unref(proxy);
-
- if (success)
- break;
+ sActiveInhibitor = nullptr;
}
+#endif // LL_GLIB
sPowerInhibitCookie = 0;
sPowerInhibitActive = false;
-
-#endif // LL_DBUS_ENABLED
}
void LLAppViewerLinux::initCrashReporting(bool reportFreeze)
{
- std::string cmd =gDirUtilp->getExecutableDir();
- cmd += gDirUtilp->getDirDelimiter();
-#if LL_LINUX
- cmd += "linux-crash-logger.bin";
-#else
-# error Unknown platform
-#endif
-
- std::stringstream pid_str;
- pid_str << LLApp::getPid();
- std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
- std::string appname = gDirUtilp->getExecutableFilename();
- // launch the actual crash logger
- const char * cmdargv[] =
- {cmd.c_str(),
- "-user",
- (char*)LLGridManager::getInstance()->getGridId().c_str(),
- "-name",
- LLAppViewer::instance()->getSecondLifeTitle().c_str(),
- "-pid",
- pid_str.str().c_str(),
- "-dumpdir",
- logdir.c_str(),
- "-procname",
- appname.c_str(),
- NULL};
- fflush(NULL);
-
- pid_t pid = fork();
- if (pid == 0)
- { // child
- execv(cmd.c_str(), (char* const*) cmdargv); /* Flawfinder: ignore */
- LL_WARNS() << "execv failure when trying to start " << cmd << LL_ENDL;
- _exit(1); // avoid atexit()
- }
- else
- {
- if (pid > 0)
- {
- // DO NOT wait for child proc to die; we want
- // the logger to outlive us while we quit to
- // free up the screen/keyboard/etc.
- ////int childExitStatus;
- ////waitpid(pid, &childExitStatus, 0);
- }
- else
- {
- LL_WARNS() << "fork failure." << LL_ENDL;
- }
- }
- // Sometimes signals don't seem to quit the viewer. Also, we may
- // have been called explicitly instead of from a signal handler.
- // Make sure we exit so as to not totally confuse the user.
- //_exit(1); // avoid atexit(), else we may re-crash in dtors.
}
bool LLAppViewerLinux::beingDebugged()
@@ -717,7 +670,7 @@ bool LLAppViewerLinux::beingDebugged()
base += 1;
}
- if (strcmp(base, "gdb") == 0)
+ if (strcmp(base, "gdb") == 0 || strcmp(base, "lldb") == 0)
{
debugged = yes;
}
@@ -729,18 +682,6 @@ bool LLAppViewerLinux::beingDebugged()
return debugged == yes;
}
-void LLAppViewerLinux::initLoggingAndGetLastDuration()
-{
- // Remove the last stack trace, if any
- // This file is no longer created, since the move to Google Breakpad
- // The code is left here to clean out any old state in the log dir
- std::string old_stack_file =
- gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
- LLFile::remove(old_stack_file);
-
- LLAppViewer::initLoggingAndGetLastDuration();
-}
-
bool LLAppViewerLinux::initParseCommandLine(LLCommandLineParser& clp)
{
if (!clp.parseCommandLine(gArgC, gArgV))
diff --git a/indra/newview/llappviewerlinux.h b/indra/newview/llappviewerlinux.h
index 6ab3682515..faac3c0a05 100644
--- a/indra/newview/llappviewerlinux.h
+++ b/indra/newview/llappviewerlinux.h
@@ -31,44 +31,36 @@ extern "C" {
# include <glib.h>
}
-#if LL_DBUS_ENABLED
-extern "C" {
-# include <glib-object.h>
-# include <dbus/dbus-glib.h>
-}
-#endif
-
#ifndef LL_LLAPPVIEWER_H
#include "llappviewer.h"
#endif
class LLCommandLineParser;
-class LLAppViewerLinux : public LLAppViewer
+class LLAppViewerLinux final : public LLAppViewer
{
public:
LLAppViewerLinux();
- virtual ~LLAppViewerLinux();
+ ~LLAppViewerLinux() override;
//
// Main application logic
//
- virtual bool init(); // Override to do application initialization
- std::string generateSerialNumber();
+ bool init() override; // Override to do application initialization
+ std::string generateSerialNumber() override;
bool setupSLURLHandler();
protected:
- virtual bool beingDebugged();
+ bool beingDebugged() override;
- virtual bool restoreErrorTrap();
- virtual void initCrashReporting(bool reportFreeze);
+ bool restoreErrorTrap() override;
+ void initCrashReporting(bool reportFreeze);
- virtual void initLoggingAndGetLastDuration();
- virtual bool initParseCommandLine(LLCommandLineParser& clp);
+ bool initParseCommandLine(LLCommandLineParser& clp) override;
- virtual bool initSLURLHandler();
- virtual bool sendURLToOtherInstance(const std::string& url);
- virtual void setOSHibernationMode(eHibernationMode mode);
+ bool initSLURLHandler() override;
+ bool sendURLToOtherInstance(const std::string& url) override;
+ void setOSHibernationMode(eHibernationMode mode) override;
private:
// Power management state tracking
@@ -80,21 +72,4 @@ private:
void uninhibitPowerManagement();
};
-#if LL_DBUS_ENABLED
-typedef struct
-{
- GObject parent;
- DBusGConnection *connection;
-} ViewerAppAPI;
-
-extern "C" {
- gboolean viewer_app_api_GoSLURL(ViewerAppAPI *obj, gchar *slurl, gboolean **success_rtn, GError **error);
-}
-
-#define VIEWERAPI_SERVICE "com.secondlife.ViewerAppAPIService"
-#define VIEWERAPI_PATH "/com/secondlife/ViewerAppAPI"
-#define VIEWERAPI_INTERFACE "com.secondlife.ViewerAppAPI"
-
-#endif // LL_DBUS_ENABLED
-
#endif // LL_LLAPPVIEWERLINUX_H
diff --git a/indra/newview/llappviewerlinux_api.h b/indra/newview/llappviewerlinux_api.h
deleted file mode 100644
index 3d1324dd19..0000000000
--- a/indra/newview/llappviewerlinux_api.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Generated by dbus-binding-tool; do not edit! */
-/**
- * $LicenseInfo:firstyear=2008&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$
- */
-
-#ifndef __dbus_glib_marshal_viewerapp_MARSHAL_H__
-#define __dbus_glib_marshal_viewerapp_MARSHAL_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v) g_value_get_char (v)
-#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v) g_value_get_int (v)
-#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
-#define g_marshal_value_peek_long(v) g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
-#define g_marshal_value_peek_float(v) g_value_get_float (v)
-#define g_marshal_value_peek_double(v) g_value_get_double (v)
-#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v) g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v) g_value_get_object (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- * Do not access GValues directly in your code. Instead, use the
- * g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
-#define g_marshal_value_peek_char(v) (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v) (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v) (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v) (v)->data[0].v_float
-#define g_marshal_value_peek_double(v) (v)->data[0].v_double
-#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* BOOLEAN:STRING,POINTER,POINTER (/tmp/dbus-binding-tool-c-marshallers.5XXD8T:1) */
-extern void dbus_glib_marshal_viewerapp_BOOLEAN__STRING_POINTER_POINTER (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-void
-dbus_glib_marshal_viewerapp_BOOLEAN__STRING_POINTER_POINTER (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER) (gpointer data1,
- gpointer arg_1,
- gpointer arg_2,
- gpointer arg_3,
- gpointer data2);
- register GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
- gboolean v_return;
-
- g_return_if_fail (return_value != NULL);
- g_return_if_fail (n_param_values == 4);
-
- if (G_CCLOSURE_SWAP_DATA (closure))
- {
- data1 = closure->data;
- data2 = g_value_peek_pointer (param_values + 0);
- }
- else
- {
- data1 = g_value_peek_pointer (param_values + 0);
- data2 = closure->data;
- }
- callback = (GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
-
- v_return = callback (data1,
- g_marshal_value_peek_string (param_values + 1),
- g_marshal_value_peek_pointer (param_values + 2),
- g_marshal_value_peek_pointer (param_values + 3),
- data2);
-
- g_value_set_boolean (return_value, v_return);
-}
-
-G_END_DECLS
-
-#endif /* __dbus_glib_marshal_viewerapp_MARSHAL_H__ */
-
-#include <dbus/dbus-glib.h>
-static const DBusGMethodInfo dbus_glib_viewerapp_methods[] = {
- { (GCallback) viewer_app_api_GoSLURL, dbus_glib_marshal_viewerapp_BOOLEAN__STRING_POINTER_POINTER, 0 },
-};
-
-const DBusGObjectInfo dbus_glib_viewerapp_object_info = {
- 0,
- dbus_glib_viewerapp_methods,
- 1,
-"com.secondlife.ViewerAppAPI\0GoSLURL\0S\0slurl\0I\0s\0success_ret\0O\0F\0N\0b\0\0\0",
-"\0",
-"\0"
-};
-
diff --git a/indra/newview/llappviewerlinux_api.xml b/indra/newview/llappviewerlinux_api.xml
deleted file mode 100644
index fac35b7adc..0000000000
--- a/indra/newview/llappviewerlinux_api.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- dbus-binding-tool -mode=glib-server llappviewerlinux_api.xml -prefix=viewerapp -output=llappviewerlinux_api.h -->
-
-<node name="/com/secondlife/ViewerAppAPI">
- <interface name="com.secondlife.ViewerAppAPI">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="viewer_app_api"/>
- <method name="GoSLURL">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="viewer_app_api_GoSLURL"/>
- <arg type="s" name="slurl" direction="in" />
- <arg type="b" name="success_ret" direction="out" />
- </method>
- </interface>
-</node>
diff --git a/indra/newview/llappviewerlinux_api_dbus.cpp b/indra/newview/llappviewerlinux_api_dbus.cpp
deleted file mode 100644
index 9aed8a98d4..0000000000
--- a/indra/newview/llappviewerlinux_api_dbus.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * @file llappviewerlinux_api_dbus.cpp
- * @brief dynamic DBus symbol-grabbing code
- *
- * $LicenseInfo:firstyear=2008&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$
- */
-
-#if LL_DBUS_ENABLED
-
-#include "linden_common.h"
-
-extern "C" {
-#include <dbus/dbus-glib.h>
-
-#include "apr_pools.h"
-#include "apr_dso.h"
-}
-
-#define DEBUGMSG(...) do { LL_DEBUGS() << llformat(__VA_ARGS__) << LL_ENDL; } while(0)
-#define INFOMSG(...) do { LL_INFOS() << llformat(__VA_ARGS__) << LL_ENDL; } while(0)
-#define WARNMSG(...) do { LL_WARNS() << llformat(__VA_ARGS__) << LL_ENDL; } while(0)
-
-#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) RTN (*ll##DBUSSYM)(__VA_ARGS__) = NULL
-#include "llappviewerlinux_api_dbus_syms_raw.inc"
-#undef LL_DBUS_SYM
-
-static bool sSymsGrabbed = false;
-static apr_pool_t *sSymDBUSDSOMemoryPool = NULL;
-static apr_dso_handle_t *sSymDBUSDSOHandleG = NULL;
-
-bool grab_dbus_syms(std::string dbus_dso_name)
-{
- if (sSymsGrabbed)
- {
- // already have grabbed good syms
- return true;
- }
-
- bool sym_error = false;
- bool rtn = false;
- apr_status_t rv;
- apr_dso_handle_t *sSymDBUSDSOHandle = NULL;
-
-#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##DBUSSYM, sSymDBUSDSOHandle, #DBUSSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #DBUSSYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #DBUSSYM, (void*)ll##DBUSSYM);}while(0)
-
- //attempt to load the shared library
- apr_pool_create(&sSymDBUSDSOMemoryPool, NULL);
-
- if ( APR_SUCCESS == (rv = apr_dso_load(&sSymDBUSDSOHandle,
- dbus_dso_name.c_str(),
- sSymDBUSDSOMemoryPool) ))
- {
- INFOMSG("Found DSO: %s", dbus_dso_name.c_str());
-
-#include "llappviewerlinux_api_dbus_syms_raw.inc"
-
- if ( sSymDBUSDSOHandle )
- {
- sSymDBUSDSOHandleG = sSymDBUSDSOHandle;
- sSymDBUSDSOHandle = NULL;
- }
-
- rtn = !sym_error;
- }
- else
- {
- INFOMSG("Couldn't load DSO: %s", dbus_dso_name.c_str());
- rtn = false; // failure
- }
-
- if (sym_error)
- {
- WARNMSG("Failed to find necessary symbols in DBUS-GLIB libraries.");
- }
-#undef LL_DBUS_SYM
-
- sSymsGrabbed = rtn;
- return rtn;
-}
-
-
-void ungrab_dbus_syms()
-{
- // should be safe to call regardless of whether we've
- // actually grabbed syms.
-
- if ( sSymDBUSDSOHandleG )
- {
- apr_dso_unload(sSymDBUSDSOHandleG);
- sSymDBUSDSOHandleG = NULL;
- }
-
- if ( sSymDBUSDSOMemoryPool )
- {
- apr_pool_destroy(sSymDBUSDSOMemoryPool);
- sSymDBUSDSOMemoryPool = NULL;
- }
-
- // NULL-out all of the symbols we'd grabbed
-#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{ll##DBUSSYM = NULL;}while(0)
-#include "llappviewerlinux_api_dbus_syms_raw.inc"
-#undef LL_DBUS_SYM
-
- sSymsGrabbed = false;
-}
-
-#endif // LL_DBUS_ENABLED
diff --git a/indra/newview/llappviewerlinux_api_dbus.h b/indra/newview/llappviewerlinux_api_dbus.h
deleted file mode 100644
index 2f4492bd7a..0000000000
--- a/indra/newview/llappviewerlinux_api_dbus.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file llappviewerlinux_api_dbus.h
- * @brief DBus-glib symbol handling
- *
- * $LicenseInfo:firstyear=2008&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"
-
-#if LL_DBUS_ENABLED
-
-extern "C" {
-#include <dbus/dbus-glib.h>
-}
-
-#define DBUSGLIB_DYLIB_DEFAULT_NAME "libdbus-glib-1.so.2"
-
-bool grab_dbus_syms(std::string dbus_dso_name);
-void ungrab_dbus_syms();
-
-#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) extern RTN (*ll##DBUSSYM)(__VA_ARGS__)
-#include "llappviewerlinux_api_dbus_syms_raw.inc"
-#undef LL_DBUS_SYM
-
-#endif // LL_DBUS_ENABLED
diff --git a/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc b/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc
deleted file mode 100644
index c0548e2fba..0000000000
--- a/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-
-// required symbols to grab
-LL_DBUS_SYM(true, dbus_g_bus_get, DBusGConnection*, DBusBusType, GError**);
-LL_DBUS_SYM(true, dbus_g_proxy_new_for_name, DBusGProxy*, DBusGConnection*, const char *, const char*, const char*);
-LL_DBUS_SYM(true, dbus_g_proxy_call, gboolean, DBusGProxy*, const char*, GError**, GType, ...);
-LL_DBUS_SYM(true, dbus_g_object_type_install_info, void, GType, const DBusGObjectInfo*);
-LL_DBUS_SYM(true, dbus_g_connection_register_g_object, void, DBusGConnection*, const char*, GObject*);
-
-// optional symbols to grab
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 416efa9354..430445631f 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -76,6 +76,7 @@
#if LL_VELOPACK
#include "llvelopack.h"
#endif
+#include "llversioninfovars.h"
// Bugsplat (http://bugsplat.com) crash reporting tool
#ifdef LL_BUGSPLAT
diff --git a/indra/newview/llcallbacklist.cpp b/indra/newview/llcallbacklist.cpp
index c474f2885b..1e596624b9 100644
--- a/indra/newview/llcallbacklist.cpp
+++ b/indra/newview/llcallbacklist.cpp
@@ -70,33 +70,33 @@ void LLCallbackList::addFunction( callback_t func, void *data)
}
-BOOL LLCallbackList::containsFunction( callback_t func, void *data)
+bool LLCallbackList::containsFunction( callback_t func, void *data)
{
callback_pair_t t(func, data);
callback_list_t::iterator iter = std::find(mCallbackList.begin(), mCallbackList.end(), t);
if (iter != mCallbackList.end())
{
- return TRUE;
+ return true;
}
else
{
- return FALSE;
+ return false;
}
}
-BOOL LLCallbackList::deleteFunction( callback_t func, void *data)
+bool LLCallbackList::deleteFunction( callback_t func, void *data)
{
callback_pair_t t(func, data);
callback_list_t::iterator iter = std::find(mCallbackList.begin(), mCallbackList.end(), t);
if (iter != mCallbackList.end())
{
mCallbackList.erase(iter);
- return TRUE;
+ return true;
}
else
{
- return FALSE;
+ return false;
}
}
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp
index 4a4985d8ac..bfcc2e4182 100644
--- a/indra/newview/llconversationlog.cpp
+++ b/indra/newview/llconversationlog.cpp
@@ -512,7 +512,7 @@ bool LLConversationLog::saveToFile(const std::string& filename)
return false;
}
- LLFILE* fp = LLFile::fopen(filename, "wb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("wb"));
if (!fp)
{
LL_WARNS() << "Couldn't open call log list" << filename << LL_ENDL;
@@ -556,7 +556,7 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
return false;
}
- LLFILE* fp = LLFile::fopen(filename, "rb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("rb"));
if (!fp)
{
LL_WARNS() << "Couldn't open call log list" << filename << LL_ENDL;
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index e967ff3df2..2dba778e24 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -37,6 +37,10 @@
#include "llviewercontrol.h"
#include "llwin32headers.h"
+#if LL_SDL_WINDOW
+#include "SDL3/SDL.h"
+#endif
+
#if LL_LINUX || LL_DARWIN
# include "llfilepicker.h"
#endif
@@ -65,7 +69,103 @@ bool LLDirPicker::check_local_file_access_enabled()
return true;
}
-#if LL_WINDOWS
+#if LL_SDL_WINDOW
+
+LLDirPicker::LLDirPicker() :
+ mFileName(NULL),
+ mLocked(false)
+{
+ reset();
+}
+
+LLDirPicker::~LLDirPicker()
+{
+}
+
+void LLDirPicker::reset()
+{
+}
+
+bool LLDirPicker::getDir(std::string* filename, bool blocking)
+{
+ return false;
+}
+
+std::string LLDirPicker::getDirName()
+{
+ return {};
+}
+
+bool LLDirPicker::getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
+ if (mLocked)
+ {
+ return false;
+ }
+
+ // if local file browsing is turned off, return without opening dialog
+ if (!check_local_file_access_enabled())
+ {
+ return false;
+ }
+
+ {
+ struct LLSDLFileUserdata
+ {
+ LLSDLFileUserdata(void (*callback_func)(bool, std::string&, void*), void* callback_userdata)
+ : mCallback(callback_func), mUserdata(callback_userdata)
+ {
+ }
+ void (*mCallback)(bool, std::string&, void*);
+ void* mUserdata;
+ };
+
+ auto sdl_callback = [](void* userdata, const char* const* filelist, int filter)
+ {
+ LLSDLFileUserdata* callback_struct = (LLSDLFileUserdata*)userdata;
+
+ auto* callback_func = callback_struct->mCallback;
+ auto* callback_data = callback_struct->mUserdata;
+ delete callback_struct; // delete callback container
+
+ std::string rtn;
+ if (!filelist)
+ {
+ LL_WARNS() << "Error during SDL folder picking: " << SDL_GetError() << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+ else if (!*filelist)
+ {
+ LL_INFOS() << "User did not select any folders. Dialog likely cancelled." << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+
+ while (*filelist) {
+ rtn = std::string(*filelist);
+ break;
+ }
+ callback_func(true, rtn, callback_data);
+
+ };
+
+ LLSDLFileUserdata* llfilecallback = new LLSDLFileUserdata(callback, userdata);
+
+ SDL_PropertiesID props = SDL_CreateProperties();
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_WINDOW_POINTER, SDL_GL_GetCurrentWindow());
+ SDL_ShowFileDialogWithProperties(SDL_FILEDIALOG_OPENFOLDER, sdl_callback, llfilecallback, props);
+
+ SDL_DestroyProperties(props);
+ }
+
+ return true;
+}
+
+
+#elif LL_WINDOWS
LLDirPicker::LLDirPicker() :
mFileName(NULL),
@@ -167,6 +267,13 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)
return success;
}
+bool LLDirPicker::getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
+ return false;
+}
+
std::string LLDirPicker::getDirName()
{
return mDir;
@@ -195,7 +302,6 @@ void LLDirPicker::reset()
}
-//static
bool LLDirPicker::getDir(std::string* filename, bool blocking)
{
LLFilePicker::ELoadFilter filter=LLFilePicker::FFLOAD_DIRECTORY;
@@ -203,6 +309,13 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)
return mFilePicker->getOpenFile(filter, true);
}
+bool LLDirPicker::getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
+ return false;
+}
+
std::string LLDirPicker::getDirName()
{
return mFilePicker->getFirstFile();
@@ -240,23 +353,13 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)
return false;
}
-#if !LL_MESA_HEADLESS
-
- if (mFilePicker)
- {
- GtkWindow* picker = mFilePicker->buildFilePicker(false, true,
- "dirpicker");
-
- if (picker)
- {
- gtk_window_set_title(GTK_WINDOW(picker), LLTrans::getString("choose_the_directory").c_str());
- gtk_widget_show_all(GTK_WIDGET(picker));
- gtk_main();
- return (!mFilePicker->getFirstFile().empty());
- }
- }
-#endif // !LL_MESA_HEADLESS
+ return false;
+}
+bool LLDirPicker::getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
return false;
}
@@ -290,6 +393,13 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)
return false;
}
+bool LLDirPicker::getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
+ return false;
+}
+
std::string LLDirPicker::getDirName()
{
return "";
@@ -303,7 +413,9 @@ std::queue<LLDirPickerThread*> LLDirPickerThread::sDeadQ;
void LLDirPickerThread::getFile()
{
-#if LL_WINDOWS
+#if LL_SDL_WINDOW
+ runModeless();
+#elif LL_WINDOWS
start();
#else
run();
@@ -333,6 +445,32 @@ void LLDirPickerThread::run()
}
+void LLDirPickerThread::runModeless()
+{
+ LLDirPicker picker;
+ bool result = picker.getDirModeless(&mProposedName, modelessStringCallback, this);
+ if (!result)
+ {
+ LLMutexLock lock(sMutex);
+ sDeadQ.push(this);
+ }
+}
+
+void LLDirPickerThread::modelessStringCallback(bool success,
+ std::string& response,
+ void* user_data)
+{
+ LLDirPickerThread* picker = (LLDirPickerThread*)user_data;
+ {
+ LLMutexLock lock(sMutex);
+ if (success)
+ {
+ picker->mResponses.push_back(response);
+ }
+ sDeadQ.push(picker);
+ }
+}
+
//static
void LLDirPickerThread::initClass()
{
diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h
index dc740caab2..c3619f91f5 100644
--- a/indra/newview/lldirpicker.h
+++ b/indra/newview/lldirpicker.h
@@ -58,6 +58,9 @@ class LLDirPicker
{
public:
bool getDir(std::string* filename, bool blocking = true);
+ bool getDirModeless(std::string* filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata);
std::string getDirName();
// clear any lists of buffers or whatever, and make sure the dir
@@ -116,6 +119,11 @@ public:
virtual void run();
+ void runModeless();
+ static void modelessStringCallback(bool success,
+ std::string& response,
+ void* user_data);
+
virtual void notify(const std::vector<std::string>& filenames);
private:
diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
index 6f6faf9909..8af044990f 100644
--- a/indra/newview/lldrawable.h
+++ b/indra/newview/lldrawable.h
@@ -59,8 +59,7 @@ class LLViewerTexture;
const U32 SILHOUETTE_HIGHLIGHT = 0;
// All data for new renderer goes into this class.
-LL_ALIGN_PREFIX(16)
-class LLDrawable
+class alignas(16) LLDrawable
: public LLViewerOctreeEntryData
{
LL_ALIGN_NEW;
@@ -304,7 +303,7 @@ private:
static U32 sNumZombieDrawables;
static std::vector<LLPointer<LLDrawable> > sDeadList;
-} LL_ALIGN_POSTFIX(16);
+};
inline LLFace* LLDrawable::getFace(const S32 i) const
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index cc702e8f56..f5a93a4804 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -369,7 +369,7 @@ void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4& color)
void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
{
- glColor4ubv(color.mV);
+ gGL.diffuseColor4ubv(color.mV);
}
void LLFacePool::LLOverrideFaceColor::setColor(F32 r, F32 g, F32 b, F32 a)
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 6c151351ff..a42972205a 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -114,7 +114,7 @@ void LLStandardBumpmap::addstandard()
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount++] = LLStandardBumpmap("Darkness"); // BE_DARKNESS
std::string file_name = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "std_bump.ini" );
- LLFILE* file = LLFile::fopen( file_name, "rt" ); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen( file_name, LLFILE_MODE("rt") ); /*Flawfinder: ignore*/
if( !file )
{
LL_WARNS() << "Could not open std_bump <" << file_name << ">" << LL_ENDL;
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 5e676bc5b3..d75b8d0ac6 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -636,379 +636,6 @@ void LLDrawPoolTerrain::hilightParcelOwners()
}
-void LLDrawPoolTerrain::renderFull4TU()
-{
- // Hack! Get the region that this draw pool is rendering from!
- LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion();
- LLVLComposition *compp = regionp->getComposition();
- LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
- LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
- LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
- LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
-
- LLVector3d region_origin_global = gAgent.getRegion()->getOriginGlobal();
- F32 offset_x = (F32)fmod(region_origin_global.mdV[VX], 1.0/(F64)sDetailScale)*sDetailScale;
- F32 offset_y = (F32)fmod(region_origin_global.mdV[VY], 1.0/(F64)sDetailScale)*sDetailScale;
-
- LLVector4 tp0, tp1;
-
- tp0.setVec(sDetailScale, 0.0f, 0.0f, offset_x);
- tp1.setVec(0.0f, sDetailScale, 0.0f, offset_y);
-
- gGL.blendFunc(LLRender::BF_ONE_MINUS_SOURCE_ALPHA, LLRender::BF_SOURCE_ALPHA);
-
- //----------------------------------------------------------------------------
- // Pass 1/1
-
- //
- // Stage 0: detail texture 0
- //
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->bind(detail_texture0p);
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- //
- // Stage 1: Generate alpha ramp for detail0/detail1 transition
- //
-
- gGL.getTexUnit(1)->bind(m2DAlphaRampImagep.get());
- gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->activate();
-
- //
- // Stage 2: Interpolate detail1 with existing based on ramp
- //
- gGL.getTexUnit(2)->bind(detail_texture1p);
- gGL.getTexUnit(2)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(2)->activate();
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- //
- // Stage 3: Modulate with primary (vertex) color for lighting
- //
- gGL.getTexUnit(3)->bind(detail_texture1p);
- gGL.getTexUnit(3)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(3)->activate();
-
- gGL.getTexUnit(0)->activate();
-
- // GL_BLEND disabled by default
- drawLoop();
-
- //----------------------------------------------------------------------------
- // Second pass
-
- // Stage 0: Write detail3 into base
- //
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->bind(detail_texture3p);
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- //
- // Stage 1: Generate alpha ramp for detail2/detail3 transition
- //
- gGL.getTexUnit(1)->bind(m2DAlphaRampImagep);
- gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->activate();
-
- // Set the texture matrix
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.translatef(-2.f, 0.f, 0.f);
-
- //
- // Stage 2: Interpolate detail2 with existing based on ramp
- //
- gGL.getTexUnit(2)->bind(detail_texture2p);
- gGL.getTexUnit(2)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(2)->activate();
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- //
- // Stage 3: Generate alpha ramp for detail1/detail2 transition
- //
- gGL.getTexUnit(3)->bind(m2DAlphaRampImagep);
- gGL.getTexUnit(3)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(3)->activate();
-
- // Set the texture matrix
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.translatef(-1.f, 0.f, 0.f);
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- gGL.getTexUnit(0)->activate();
- {
- LLGLEnable blend(GL_BLEND);
- drawLoop();
- }
-
- LLVertexBuffer::unbind();
- // Disable multitexture
- gGL.getTexUnit(3)->unbind(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(3)->disable();
- gGL.getTexUnit(3)->activate();
-
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- gGL.getTexUnit(2)->unbind(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(2)->disable();
- gGL.getTexUnit(2)->activate();
-
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->disable();
- gGL.getTexUnit(1)->activate();
-
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- // Restore blend state
- gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
- //----------------------------------------------------------------------------
- // Restore Texture Unit 0 defaults
-
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-}
-
-void LLDrawPoolTerrain::renderFull2TU()
-{
- // Hack! Get the region that this draw pool is rendering from!
- LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion();
- LLVLComposition *compp = regionp->getComposition();
- LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
- LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
- LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
- LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
-
- LLVector3d region_origin_global = gAgent.getRegion()->getOriginGlobal();
- F32 offset_x = (F32)fmod(region_origin_global.mdV[VX], 1.0/(F64)sDetailScale)*sDetailScale;
- F32 offset_y = (F32)fmod(region_origin_global.mdV[VY], 1.0/(F64)sDetailScale)*sDetailScale;
-
- LLVector4 tp0, tp1;
-
- tp0.setVec(sDetailScale, 0.0f, 0.0f, offset_x);
- tp1.setVec(0.0f, sDetailScale, 0.0f, offset_y);
-
- gGL.blendFunc(LLRender::BF_ONE_MINUS_SOURCE_ALPHA, LLRender::BF_SOURCE_ALPHA);
-
- //----------------------------------------------------------------------------
- // Pass 1/4
-
- //
- // Stage 0: Render detail 0 into base
- //
- gGL.getTexUnit(0)->bind(detail_texture0p);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- drawLoop();
-
- //----------------------------------------------------------------------------
- // Pass 2/4
-
- //
- // Stage 0: Generate alpha ramp for detail0/detail1 transition
- //
- gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
-
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
-
- //
- // Stage 1: Write detail1
- //
- gGL.getTexUnit(1)->bind(detail_texture1p);
- gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->activate();
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- gGL.getTexUnit(0)->activate();
- {
- LLGLEnable blend(GL_BLEND);
- drawLoop();
- }
- //----------------------------------------------------------------------------
- // Pass 3/4
-
- //
- // Stage 0: Generate alpha ramp for detail1/detail2 transition
- //
- gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
-
- // Set the texture matrix
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.translatef(-1.f, 0.f, 0.f);
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- //
- // Stage 1: Write detail2
- //
- gGL.getTexUnit(1)->bind(detail_texture2p);
- gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->activate();
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- {
- LLGLEnable blend(GL_BLEND);
- drawLoop();
- }
-
- //----------------------------------------------------------------------------
- // Pass 4/4
-
- //
- // Stage 0: Generate alpha ramp for detail2/detail3 transition
- //
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
- // Set the texture matrix
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.translatef(-2.f, 0.f, 0.f);
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- // Stage 1: Write detail3
- gGL.getTexUnit(1)->bind(detail_texture3p);
- gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->activate();
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
- gGL.getTexUnit(0)->activate();
- {
- LLGLEnable blend(GL_BLEND);
- drawLoop();
- }
-
- // Restore blend state
- gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
- // Disable multitexture
-
- gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(1)->disable();
- gGL.getTexUnit(1)->activate();
-
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-
- //----------------------------------------------------------------------------
- // Restore Texture Unit 0 defaults
-
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-}
-
-
-void LLDrawPoolTerrain::renderSimple()
-{
- LLVector4 tp0, tp1;
-
- //----------------------------------------------------------------------------
- // Pass 1/1
-
- // Stage 0: Base terrain texture pass
- mTexturep->addTextureStats(1024.f*1024.f);
-
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
- gGL.getTexUnit(0)->bind(mTexturep);
-
- LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent();
- F32 tscale = 1.f/256.f;
- tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f));
- tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f));
-
- sShader->uniform4fv(LLShaderMgr::OBJECT_PLANE_S, 1, tp0.mV);
- sShader->uniform4fv(LLShaderMgr::OBJECT_PLANE_T, 1, tp1.mV);
-
- drawLoop();
-
- //----------------------------------------------------------------------------
- // Restore Texture Unit 0 defaults
-
- gGL.getTexUnit(0)->activate();
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- gGL.matrixMode(LLRender::MM_TEXTURE);
- gGL.loadIdentity();
- gGL.matrixMode(LLRender::MM_MODELVIEW);
-}
-
//============================================================================
void LLDrawPoolTerrain::renderOwnership()
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
index 23cf253b6a..49fccc168f 100644
--- a/indra/newview/lldrawpoolterrain.h
+++ b/indra/newview/lldrawpoolterrain.h
@@ -73,11 +73,8 @@ public:
protected:
void boostTerrainDetailTextures();
- void renderSimple();
void renderOwnership();
- void renderFull2TU();
- void renderFull4TU();
void renderFullShader();
void renderFullShaderTextures();
void renderFullShaderPBR(bool use_local_materials = false);
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
index 375828fefa..cc5e39c5fb 100644
--- a/indra/newview/lldynamictexture.h
+++ b/indra/newview/lldynamictexture.h
@@ -33,7 +33,7 @@
#include "llviewertexture.h"
#include "llcamera.h"
-class LLViewerDynamicTexture : public LLViewerTexture
+class alignas(16) LLViewerDynamicTexture : public LLViewerTexture
{
LL_ALIGN_NEW
public:
@@ -90,7 +90,7 @@ protected:
protected:
bool mClamp;
LLCoordGL mOrigin;
- LL_ALIGN_16(LLCamera mCamera);
+ LLCamera mCamera;
LLRenderTarget* mBoundTarget;
diff --git a/indra/newview/lleventnotifier.h b/indra/newview/lleventnotifier.h
index 2a9295129d..be96b7680f 100644
--- a/indra/newview/lleventnotifier.h
+++ b/indra/newview/lleventnotifier.h
@@ -47,7 +47,7 @@ struct LLEventInfo
std::string mSimName;
LLVector3d mPosGlobal;
F64 mUnixTime; // seconds from 1970
- BOOL mHasCover;
+ bool mHasCover;
U32 mCover;
U32 mEventFlags;
};
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 018d4c4bba..ec7ea398f0 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -58,12 +58,6 @@
#include "llmeshrepository.h"
#include "llskinningutil.h"
-#if LL_LINUX
-// Work-around spurious used before init warning on Vector4a
-//
-#pragma GCC diagnostic ignored "-Wuninitialized"
-#endif
-
#define LL_MAX_INDICES_COUNT 1000000
static LLStaticHashedString sTextureIndexIn("texture_index_in");
@@ -646,7 +640,7 @@ void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wirefram
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(3.f, 3.f);
- glLineWidth(5.f);
+ gGL.setLineWidth(5.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderFace(mDrawablep, this);
}
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 8056983c7c..cce6eeb19d 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1057,8 +1057,7 @@ void LLFastTimerView::drawLineGraph()
//fatten highlighted timer
if (mHoverID == idp)
{
- gGL.flush();
- glLineWidth(3);
+ gGL.setLineWidth(3);
}
llassert(idp->getIndex() < sTimerColors.size());
@@ -1118,8 +1117,7 @@ void LLFastTimerView::drawLineGraph()
if (mHoverID == idp)
{
- gGL.flush();
- glLineWidth(1);
+ gGL.setLineWidth(1.f);
}
if (idp->getTreeNode().mCollapsed)
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index c8692224f1..8140aaab22 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -259,7 +259,6 @@ bool LLFeatureManager::loadFeatureTables()
// *TODO - if I or anyone else adds something else to the skipped list
// make this data driven. Put it in the feature table and parse it
// correctly
- mSkippedFeatures.insert("RenderAnisotropic");
mSkippedFeatures.insert("RenderGamma");
mSkippedFeatures.insert("RenderVBOEnable");
mSkippedFeatures.insert("RenderFogRatio");
@@ -510,10 +509,9 @@ bool LLFeatureManager::loadGPUClass()
mGPUClass = GPU_CLASS_5;
}
- #if LL_WINDOWS
- const F32Gigabytes MIN_PHYSICAL_MEMORY(8);
-
LLMemory::updateMemoryInfo();
+ #if LL_WINDOWS || LL_LINUX
+ const F32Gigabytes MIN_PHYSICAL_MEMORY(8);
F32Gigabytes physical_mem = LLMemory::getMaxMemKB();
if (MIN_PHYSICAL_MEMORY > physical_mem && mGPUClass > GPU_CLASS_1)
{
@@ -756,6 +754,10 @@ void LLFeatureManager::applyBaseMasks()
{
maskFeatures("VRAMLT2GB");
}
+ if (!gGLManager.mHasAnisotropic || 2.f > gGLManager.mMaxAnisotropy)
+ {
+ maskFeatures("AnisotropicMissing");
+ }
if (gGLManager.mGLVersion < 3.99f)
{
maskFeatures("GL3");
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 0e754c9561..f540ca549a 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -36,7 +36,7 @@
#include "llviewercontrol.h"
#include "llwindow.h" // beforeDialog()
-#if LL_SDL
+#if LL_SDL_WINDOW
#include "llwindowsdl.h" // for some X/GTK utils to help with filepickers
#endif // LL_SDL
@@ -50,7 +50,7 @@
LLFilePicker LLFilePicker::sInstance;
-#if LL_WINDOWS
+#if LL_WINDOWS && !LL_SDL_WINDOW
#define SOUND_FILTER L"Sounds (*.wav)\0*.wav\0"
#define IMAGE_FILTER L"Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)\0*.tga;*.bmp;*.jpg;*.jpeg;*.png\0"
#define ANIM_FILTER L"Animations (*.bvh; *.anim)\0*.bvh;*.anim\0"
@@ -82,7 +82,7 @@ LLFilePicker::LLFilePicker()
{
reset();
-#if LL_WINDOWS
+#if LL_WINDOWS && !LL_SDL_WINDOW
mOFN.lStructSize = sizeof(OPENFILENAMEW);
mOFN.hwndOwner = NULL; // Set later
mOFN.hInstance = NULL;
@@ -102,7 +102,7 @@ LLFilePicker::LLFilePicker()
mOFN.lpfnHook = NULL;
mOFN.lpTemplateName = NULL;
mFilesW[0] = '\0';
-#elif LL_DARWIN
+#elif LL_DARWIN && !LL_SDL_WINDOW
mPickOptions = 0;
#endif
@@ -167,7 +167,453 @@ void LLFilePicker::reset()
mCurrentFile = 0;
}
-#if LL_WINDOWS
+#if LL_SDL_WINDOW
+
+namespace
+{
+ std::vector<SDL_DialogFileFilter> setupLoadFilter(LLFilePicker::ELoadFilter filter)
+ {
+ std::vector<SDL_DialogFileFilter> filter_vec;
+
+ switch (filter)
+ {
+ case LLFilePicker::FFLOAD_ALL:
+ case LLFilePicker::FFLOAD_EXE:
+ filter_vec.push_back({ "All Files (*.*)", "*" });
+ filter_vec.push_back({ "Sounds (*.wav)", "wav" });
+ filter_vec.push_back({ "Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)", "tga;bmp;jpg;jpeg;png" });
+ filter_vec.push_back({ "Animations (*.bvh; *.anim)", "bvh;anim" });
+ filter_vec.push_back({ "GLTF Files (*.gltf; *.glb)", "gltf;glb" });
+ break;
+ case LLFilePicker::FFLOAD_WAV:
+ filter_vec.push_back({ "Sounds (*.wav)", "wav" });
+ break;
+ case LLFilePicker::FFLOAD_IMAGE:
+ filter_vec.push_back({ "Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)", "tga;bmp;jpg;jpeg;png" });
+ break;
+ case LLFilePicker::FFLOAD_ANIM:
+ filter_vec.push_back({ "Animations (*.bvh; *.anim)", "bvh;anim" });
+ break;
+ case LLFilePicker::FFLOAD_GLTF:
+ filter_vec.push_back({ "glTF (*.gltf; *.glb)", "gltf;glb" });
+ break;
+ case LLFilePicker::FFLOAD_COLLADA:
+ filter_vec.push_back({ "Scene (*.dae)", "dae" });
+ break;
+ case LLFilePicker::FFLOAD_XML:
+ filter_vec.push_back({ "XML files (*.xml)", "xml" });
+ break;
+ case LLFilePicker::FFLOAD_SLOBJECT:
+ filter_vec.push_back({ "Objects (*.slobject)", "slobject" });
+ break;
+ case LLFilePicker::FFLOAD_RAW:
+ filter_vec.push_back({ "RAW files (*.raw)", "raw" });
+ break;
+ case LLFilePicker::FFLOAD_MODEL:
+ filter_vec.push_back({ "Model files (*.dae; *.gltf; *.glb)", "dae;gltf;glb" });
+ filter_vec.push_back({ "Collada files (*.dae)", "dae" });
+ filter_vec.push_back({ "GLTF Files (*.gltf; *.glb)", "gltf;glb" });
+ break;
+ case LLFilePicker::FFLOAD_MATERIAL:
+ filter_vec.push_back({ "GLTF Files (*.gltf; *.glb)", "gltf;glb" });
+ break;
+ case LLFilePicker::FFLOAD_MATERIAL_TEXTURE:
+ filter_vec.push_back({ "GLTF Import (*.gltf; *.glb; *.tga; *.bmp; *.jpg; *.jpeg; *.png)", "gltf;glb;tga;bmp;jpg;jpeg;png" });
+ filter_vec.push_back({ "GLTF Files (*.gltf; *.glb)", "gltf;glb" });
+ filter_vec.push_back({ "Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)", "tga;bmp;jpg;jpeg;png" });
+ break;
+ case LLFilePicker::FFLOAD_HDRI:
+ filter_vec.push_back({ "HDRI Files (*.exr)", "exr" });
+ break;
+ case LLFilePicker::FFLOAD_SCRIPT:
+ filter_vec.push_back({ "Script files (*.lsl)", "lsl" });
+ break;
+ case LLFilePicker::FFLOAD_DICTIONARY:
+ filter_vec.push_back({ "Dictionary files (*.dic; *.xcu)", "dic;xcu" });
+ break;
+ default:
+ break;
+ }
+ return filter_vec;
+ }
+}
+
+bool LLFilePicker::getOpenFile(ELoadFilter filter, bool blocking)
+{
+ LL_ERRS() << "NOT IMPLEMENTED" << LL_ENDL;
+ return false;
+}
+
+bool LLFilePicker::getOpenFileModeless(ELoadFilter filter,
+ void (*callback)(bool, std::vector<std::string>&, void*),
+ void* userdata)
+{
+ if (mLocked)
+ {
+ return false;
+ }
+
+ // if local file browsing is turned off, return without opening dialog
+ if (!check_local_file_access_enabled())
+ {
+ return false;
+ }
+
+ auto file_filters = setupLoadFilter(filter);
+
+ reset();
+
+ {
+ struct LLSDLFileUserdata
+ {
+ LLSDLFileUserdata(void (*callback_func)(bool, std::vector<std::string>&, void*), void* callback_userdata)
+ : mCallback(callback_func), mUserdata(callback_userdata)
+ {
+ }
+ void (*mCallback)(bool, std::vector<std::string>&, void*);
+ void* mUserdata;
+ };
+
+ auto sdl_callback = [](void* userdata, const char* const* filelist, int filter)
+ {
+ LLSDLFileUserdata* callback_struct = (LLSDLFileUserdata*)userdata;
+
+ auto* callback_func = callback_struct->mCallback;
+ auto* callback_data = callback_struct->mUserdata;
+ delete callback_struct; // delete callback container
+
+ std::vector<std::string> rtn;
+
+ if (!filelist)
+ {
+ LL_WARNS() << "Error during SDL file picking: " << SDL_GetError() << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+ else if (!*filelist)
+ {
+ LL_INFOS() << "User did not select any file. Dialog likely cancelled." << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+
+ while (*filelist)
+ {
+ rtn.push_back(std::string(*filelist));
+ filelist++;
+ }
+
+ callback_func(true, rtn, callback_data);
+
+ };
+
+ LLSDLFileUserdata* llfilecallback = new LLSDLFileUserdata(callback, userdata);
+
+ SDL_PropertiesID props = SDL_CreateProperties();
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_FILTERS_POINTER, file_filters.data());
+ SDL_SetNumberProperty(props, SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER, file_filters.size());
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_WINDOW_POINTER, SDL_GL_GetCurrentWindow());
+ SDL_SetBooleanProperty(props, SDL_PROP_FILE_DIALOG_MANY_BOOLEAN, false);
+
+ SDL_ShowFileDialogWithProperties(SDL_FILEDIALOG_OPENFILE, sdl_callback, llfilecallback, props);
+
+ SDL_DestroyProperties(props);
+ }
+ return true;
+}
+
+bool LLFilePicker::getMultipleOpenFiles(ELoadFilter filter, bool blocking)
+{
+ LL_ERRS() << "NOT IMPLEMENTED" << LL_ENDL;
+ return false;
+}
+
+bool LLFilePicker::getMultipleOpenFilesModeless(ELoadFilter filter,
+ void (*callback)(bool, std::vector<std::string>&, void*),
+ void* userdata)
+{
+ if (mLocked)
+ {
+ return false;
+ }
+
+ // if local file browsing is turned off, return without opening dialog
+ if (!check_local_file_access_enabled())
+ {
+ return false;
+ }
+
+ auto file_filters = setupLoadFilter(filter);
+
+ reset();
+
+ {
+ struct LLSDLFileUserdata
+ {
+ LLSDLFileUserdata(void (*callback_func)(bool, std::vector<std::string>&, void*), void* callback_userdata)
+ : mCallback(callback_func), mUserdata(callback_userdata)
+ {
+ }
+ void (*mCallback)(bool, std::vector<std::string>&, void*);
+ void* mUserdata;
+ };
+
+ auto sdl_callback = [](void* userdata, const char* const* filelist, int filter)
+ {
+ LLSDLFileUserdata* callback_struct = (LLSDLFileUserdata*)userdata;
+
+ auto* callback_func = callback_struct->mCallback;
+ auto* callback_data = callback_struct->mUserdata;
+ delete callback_struct; // delete callback container
+
+ std::vector<std::string> rtn;
+
+ if (!filelist)
+ {
+ LL_WARNS() << "Error during SDL file picking: " << SDL_GetError() << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+ else if (!*filelist)
+ {
+ LL_INFOS() << "User did not select any file. Dialog likely cancelled." << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+
+ while (*filelist)
+ {
+ rtn.push_back(std::string(*filelist));
+ filelist++;
+ }
+
+ callback_func(true, rtn, callback_data);
+
+ };
+
+ LLSDLFileUserdata* llfilecallback = new LLSDLFileUserdata(callback, userdata);
+
+ SDL_PropertiesID props = SDL_CreateProperties();
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_FILTERS_POINTER, file_filters.data());
+ SDL_SetNumberProperty(props, SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER, file_filters.size());
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_WINDOW_POINTER, SDL_GL_GetCurrentWindow());
+ SDL_SetBooleanProperty(props, SDL_PROP_FILE_DIALOG_MANY_BOOLEAN, true);
+
+ SDL_ShowFileDialogWithProperties(SDL_FILEDIALOG_OPENFILE, sdl_callback, llfilecallback, props);
+
+ SDL_DestroyProperties(props);
+ }
+
+ return true;
+}
+
+bool LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename, bool blocking)
+{
+ LL_ERRS() << "NOT IMPLEMENTED" << LL_ENDL;
+ return false;
+}
+
+bool LLFilePicker::getSaveFileModeless(ESaveFilter filter,
+ const std::string& filename,
+ void (*callback)(bool, std::string&, void*),
+ void* userdata)
+{
+ if (mLocked)
+ {
+ return false;
+ }
+
+ // if local file browsing is turned off, return without opening dialog
+ if (!check_local_file_access_enabled())
+ {
+ return false;
+ }
+
+ std::string default_filename;
+ if (!filename.empty())
+ {
+ default_filename = filename;
+ }
+
+ std::vector<SDL_DialogFileFilter> file_filters;
+
+ switch (filter)
+ {
+ case FFSAVE_ALL:
+ file_filters.push_back({ "All Files (*.*)", "*" });
+ file_filters.push_back({ "WAV Sounds (*.wav)", "wav" });
+ file_filters.push_back({ "Targa, Bitmap Images (*.tga; *.bmp)", "tga;bmp" });
+ break;
+ case FFSAVE_WAV:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.wav";
+ }
+ file_filters.push_back({ "WAV Sounds (*.wav)", "wav" });
+ break;
+ case FFSAVE_TGA:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.tga";
+ }
+ file_filters.push_back({ "Targa Images (*.tga)", "tga" });
+ break;
+ case FFSAVE_BMP:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.bmp";
+ }
+ file_filters.push_back({ "Bitmap Images (*.bmp)", "bmp" });
+ break;
+ case FFSAVE_PNG:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.png";
+ }
+ file_filters.push_back({ "PNG Images (*.png)", "png" });
+ break;
+ case FFSAVE_TGAPNG:
+ if (default_filename.empty())
+ {
+ //PNG by default
+ default_filename = "untitled.png";
+ }
+ file_filters.push_back({ "PNG Images (*.png)", "png" });
+ file_filters.push_back({ "Targa Images (*.tga)", "tga" });
+ break;
+
+ case FFSAVE_JPEG:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.jpeg";
+ }
+ file_filters.push_back({ "JPEG Images (*.jpg *.jpeg)", "jpg;jpeg" });
+ break;
+ case FFSAVE_AVI:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.avi";
+ }
+ file_filters.push_back({ "AVI Movie File (*.avi)", "avi" });
+ break;
+ case FFSAVE_ANIM:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.xaf";
+ }
+ file_filters.push_back({ "XAF Anim File (*.xaf)", "xaf" });
+ break;
+ case FFSAVE_GLTF:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.gltf";
+ }
+ file_filters.push_back({ "glTF Asset File (*.gltf)", "gltf" });
+ break;
+ case FFSAVE_XML:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.xml";
+ }
+ file_filters.push_back({ "XML File (*.xml)", "xml" });
+ break;
+ case FFSAVE_COLLADA:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.collada";
+ }
+ file_filters.push_back({ "COLLADA File (*.collada)", "collada" });
+ break;
+ case FFSAVE_RAW:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.raw";
+ }
+ file_filters.push_back({ "RAW files (*.raw)", "raw" });
+ break;
+ case FFSAVE_J2C:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.j2c";
+ }
+ file_filters.push_back({ "Compressed Images (*.j2c)", "j2c" });
+ break;
+ case FFSAVE_SCRIPT:
+ if (default_filename.empty())
+ {
+ default_filename = "untitled.lsl";
+ }
+ file_filters.push_back({ "LSL Files (*.lsl)", "lsl" });
+ break;
+ default:
+ return false;
+ }
+
+ reset();
+
+ {
+ struct LLSDLFileUserdata
+ {
+ LLSDLFileUserdata(void (*callback_func)(bool, std::string&, void*), void* callback_userdata)
+ : mCallback(callback_func), mUserdata(callback_userdata)
+ {
+ }
+ void (*mCallback)(bool, std::string&, void*);
+ void* mUserdata;
+ };
+
+ auto sdl_callback = [](void* userdata, const char* const* filelist, int filter)
+ {
+ LLSDLFileUserdata* callback_struct = (LLSDLFileUserdata*)userdata;
+
+ auto* callback_func = callback_struct->mCallback;
+ auto* callback_data = callback_struct->mUserdata;
+ delete callback_struct; // delete callback container
+
+ std::string rtn;
+ if (!filelist)
+ {
+ LL_WARNS() << "Error during SDL file picking: " << SDL_GetError() << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+ else if (!*filelist)
+ {
+ LL_INFOS() << "User did not select any file. Dialog likely cancelled." << LL_ENDL;
+ callback_func(false, rtn, callback_data);
+ return;
+ }
+
+ while (*filelist) {
+ rtn = std::string(*filelist);
+ break;
+ }
+ callback_func(true, rtn, callback_data);
+
+ };
+
+ LLSDLFileUserdata* llfilecallback = new LLSDLFileUserdata(callback, userdata);
+
+ SDL_PropertiesID props = SDL_CreateProperties();
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_FILTERS_POINTER, file_filters.data());
+ SDL_SetNumberProperty(props, SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER, file_filters.size());
+ SDL_SetPointerProperty(props, SDL_PROP_FILE_DIALOG_WINDOW_POINTER, SDL_GL_GetCurrentWindow());
+
+ // Disabled default file name functionality currently due to inconsistency between various SDL3 backends
+ // if(!default_filename.empty())
+ // {
+ // SDL_SetStringProperty(props, SDL_PROP_FILE_DIALOG_LOCATION_STRING, default_filename.c_str());
+ // }
+ SDL_SetBooleanProperty(props, SDL_PROP_FILE_DIALOG_MANY_BOOLEAN, false);
+
+ SDL_ShowFileDialogWithProperties(SDL_FILEDIALOG_SAVEFILE, sdl_callback, llfilecallback, props);
+
+ SDL_DestroyProperties(props);
+ }
+
+ return true;
+}
+#elif LL_WINDOWS
bool LLFilePicker::setupFilter(ELoadFilter filter)
{
@@ -1107,488 +1553,6 @@ bool LLFilePicker::getSaveFileModeless(ESaveFilter filter,
#elif LL_LINUX
-# if LL_GTK
-
-// static
-void LLFilePicker::add_to_selectedfiles(gpointer data, gpointer user_data)
-{
- // We need to run g_filename_to_utf8 in the user's locale
- std::string saved_locale(setlocale(LC_ALL, NULL));
- setlocale(LC_ALL, "");
-
- LLFilePicker* picker = (LLFilePicker*) user_data;
- GError *error = NULL;
- gchar* filename_utf8 = g_filename_to_utf8((gchar*)data,
- -1, NULL, NULL, &error);
- if (error)
- {
- // *FIXME.
- // This condition should really be notified to the user, e.g.
- // through a message box. Just logging it is inappropriate.
-
- // g_filename_display_name is ideal, but >= glib 2.6, so:
- // a hand-rolled hacky makeASCII which disallows control chars
- std::string display_name;
- for (const gchar *str = (const gchar *)data; *str; str++)
- {
- display_name += (char)((*str >= 0x20 && *str <= 0x7E) ? *str : '?');
- }
- LL_WARNS() << "g_filename_to_utf8 failed on \"" << display_name << "\": " << error->message << LL_ENDL;
- }
-
- if (filename_utf8)
- {
- picker->mFiles.push_back(std::string(filename_utf8));
- LL_DEBUGS() << "ADDED FILE " << filename_utf8 << LL_ENDL;
- g_free(filename_utf8);
- }
-
- setlocale(LC_ALL, saved_locale.c_str());
-}
-
-// static
-void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer user_data)
-{
- LLFilePicker* picker = (LLFilePicker*)user_data;
-
- LL_DEBUGS() << "GTK DIALOG RESPONSE " << response << LL_ENDL;
-
- if (response == GTK_RESPONSE_ACCEPT)
- {
- GSList *file_list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(widget));
- g_slist_foreach(file_list, (GFunc)add_to_selectedfiles, user_data);
- g_slist_foreach(file_list, (GFunc)g_free, NULL);
- g_slist_free (file_list);
- }
-
- // let's save the extension of the last added file(considering current filter)
- GtkFileFilter *gfilter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(widget));
- if(gfilter)
- {
- std::string filter = gtk_file_filter_get_name(gfilter);
-
- if(filter == LLTrans::getString("png_image_files"))
- {
- picker->mCurrentExtension = ".png";
- }
- else if(filter == LLTrans::getString("targa_image_files"))
- {
- picker->mCurrentExtension = ".tga";
- }
- }
-
- // set the default path for this usage context.
- const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
- if (cur_folder != NULL)
- {
- picker->mContextToPathMap[picker->mCurContextName] = cur_folder;
- }
-
- gtk_widget_destroy(widget);
- gtk_main_quit();
-}
-
-
-GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::string context)
-{
-#ifndef LL_MESA_HEADLESS
- if (LLWindowSDL::ll_try_gtk_init())
- {
- GtkWidget *win = NULL;
- GtkFileChooserAction pickertype =
- is_save?
- (is_folder?
- GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER :
- GTK_FILE_CHOOSER_ACTION_SAVE) :
- (is_folder?
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER :
- GTK_FILE_CHOOSER_ACTION_OPEN);
-
- win = gtk_file_chooser_dialog_new(NULL, NULL,
- pickertype,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- is_folder ?
- GTK_STOCK_APPLY :
- (is_save ?
- GTK_STOCK_SAVE :
- GTK_STOCK_OPEN),
- GTK_RESPONSE_ACCEPT,
- (gchar *)NULL);
- mCurContextName = context;
-
- // get the default path for this usage context if it's been
- // seen before.
- std::map<std::string,std::string>::iterator
- this_path = mContextToPathMap.find(context);
- if (this_path != mContextToPathMap.end())
- {
- gtk_file_chooser_set_current_folder
- (GTK_FILE_CHOOSER(win),
- this_path->second.c_str());
- }
-
-# if LL_X11
- // Make GTK tell the window manager to associate this
- // dialog with our non-GTK raw X11 window, which should try
- // to keep it on top etc.
- Window XWindowID = LLWindowSDL::get_SDL_XWindowID();
- if (None != XWindowID)
- {
- gtk_widget_realize(GTK_WIDGET(win)); // so we can get its gdkwin
- GdkWindow *gdkwin = gdk_window_foreign_new(XWindowID);
- gdk_window_set_transient_for(GTK_WIDGET(win)->window,
- gdkwin);
- }
- else
- {
- LL_WARNS() << "Hmm, couldn't get xwid to use for transient." << LL_ENDL;
- }
-# endif //LL_X11
-
- g_signal_connect (GTK_FILE_CHOOSER(win),
- "response",
- G_CALLBACK(LLFilePicker::chooser_responder),
- this);
-
- gtk_window_set_modal(GTK_WINDOW(win), TRUE);
-
- /* GTK 2.6: if (is_folder)
- gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(win),
- TRUE); */
-
- return GTK_WINDOW(win);
- }
- else
- {
- return NULL;
- }
-#else
- return NULL;
-#endif //LL_MESA_HEADLESS
-}
-
-static void add_common_filters_to_gtkchooser(GtkFileFilter *gfilter,
- GtkWindow *picker,
- std::string filtername)
-{
- gtk_file_filter_set_name(gfilter, filtername.c_str());
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
- gfilter);
- GtkFileFilter *allfilter = gtk_file_filter_new();
- gtk_file_filter_add_pattern(allfilter, "*");
- gtk_file_filter_set_name(allfilter, LLTrans::getString("all_files").c_str());
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker), allfilter);
- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(picker), gfilter);
-}
-
-static std::string add_simple_pattern_filter_to_gtkchooser(GtkWindow *picker,
- std::string pattern,
- std::string filtername)
-{
- GtkFileFilter *gfilter = gtk_file_filter_new();
- gtk_file_filter_add_pattern(gfilter, pattern.c_str());
- add_common_filters_to_gtkchooser(gfilter, picker, filtername);
- return filtername;
-}
-
-static std::string add_simple_mime_filter_to_gtkchooser(GtkWindow *picker,
- std::string mime,
- std::string filtername)
-{
- GtkFileFilter *gfilter = gtk_file_filter_new();
- gtk_file_filter_add_mime_type(gfilter, mime.c_str());
- add_common_filters_to_gtkchooser(gfilter, picker, filtername);
- return filtername;
-}
-
-static std::string add_wav_filter_to_gtkchooser(GtkWindow *picker)
-{
- return add_simple_mime_filter_to_gtkchooser(picker, "audio/x-wav",
- LLTrans::getString("sound_files") + " (*.wav)");
-}
-
-static std::string add_anim_filter_to_gtkchooser(GtkWindow *picker)
-{
- GtkFileFilter *gfilter = gtk_file_filter_new();
- gtk_file_filter_add_pattern(gfilter, "*.bvh");
- gtk_file_filter_add_pattern(gfilter, "*.anim");
- std::string filtername = LLTrans::getString("animation_files") + " (*.bvh; *.anim)";
- add_common_filters_to_gtkchooser(gfilter, picker, filtername);
- return filtername;
-}
-
-static std::string add_xml_filter_to_gtkchooser(GtkWindow *picker)
-{
- return add_simple_pattern_filter_to_gtkchooser(picker, "*.xml",
- LLTrans::getString("xml_files") + " (*.xml)");
-}
-
-static std::string add_collada_filter_to_gtkchooser(GtkWindow *picker)
-{
- return add_simple_pattern_filter_to_gtkchooser(picker, "*.dae",
- LLTrans::getString("scene_files") + " (*.dae)");
-}
-
-static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
-{
- GtkFileFilter *gfilter = gtk_file_filter_new();
- gtk_file_filter_add_pattern(gfilter, "*.tga");
- gtk_file_filter_add_mime_type(gfilter, HTTP_CONTENT_IMAGE_JPEG.c_str());
- gtk_file_filter_add_mime_type(gfilter, HTTP_CONTENT_IMAGE_PNG.c_str());
- gtk_file_filter_add_mime_type(gfilter, HTTP_CONTENT_IMAGE_BMP.c_str());
- std::string filtername = LLTrans::getString("image_files") + " (*.tga; *.bmp; *.jpg; *.png)";
- add_common_filters_to_gtkchooser(gfilter, picker, filtername);
- return filtername;
-}
-
-static std::string add_script_filter_to_gtkchooser(GtkWindow *picker)
-{
- return add_simple_mime_filter_to_gtkchooser(picker, HTTP_CONTENT_TEXT_PLAIN,
- LLTrans::getString("script_files") + " (*.lsl)");
-}
-
-static std::string add_dictionary_filter_to_gtkchooser(GtkWindow *picker)
-{
- return add_simple_mime_filter_to_gtkchooser(picker, HTTP_CONTENT_TEXT_PLAIN,
- LLTrans::getString("dictionary_files") + " (*.dic; *.xcu)");
-}
-
-static std::string add_save_texture_filter_to_gtkchooser(GtkWindow *picker)
-{
- GtkFileFilter *gfilter_tga = gtk_file_filter_new();
- GtkFileFilter *gfilter_png = gtk_file_filter_new();
-
- gtk_file_filter_add_pattern(gfilter_tga, "*.tga");
- gtk_file_filter_add_mime_type(gfilter_png, "image/png");
- std::string caption = LLTrans::getString("save_texture_image_files") + " (*.tga; *.png)";
- gtk_file_filter_set_name(gfilter_tga, LLTrans::getString("targa_image_files").c_str());
- gtk_file_filter_set_name(gfilter_png, LLTrans::getString("png_image_files").c_str());
-
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
- gfilter_png);
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
- gfilter_tga);
- return caption;
-}
-
-bool LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename, bool blocking )
-{
- bool rtn = false;
-
- // if local file browsing is turned off, return without opening dialog
- if (!check_local_file_access_enabled())
- {
- return false;
- }
-
- gViewerWindow->getWindow()->beforeDialog();
-
- reset();
-
- GtkWindow* picker = buildFilePicker(true, false, "savefile");
-
- if (picker)
- {
- std::string suggest_name = "untitled";
- std::string suggest_ext = "";
- std::string caption = LLTrans::getString("save_file_verb") + " ";
- switch (filter)
- {
- case FFSAVE_WAV:
- caption += add_wav_filter_to_gtkchooser(picker);
- suggest_ext = ".wav";
- break;
- case FFSAVE_TGA:
- caption += add_simple_pattern_filter_to_gtkchooser
- (picker, "*.tga", LLTrans::getString("targa_image_files") + " (*.tga)");
- suggest_ext = ".tga";
- break;
- case FFSAVE_BMP:
- caption += add_simple_mime_filter_to_gtkchooser
- (picker, HTTP_CONTENT_IMAGE_BMP, LLTrans::getString("bitmap_image_files") + " (*.bmp)");
- suggest_ext = ".bmp";
- break;
- case FFSAVE_PNG:
- caption += add_simple_mime_filter_to_gtkchooser
- (picker, "image/png", LLTrans::getString("png_image_files") + " (*.png)");
- suggest_ext = ".png";
- break;
- case FFSAVE_TGAPNG:
- caption += add_save_texture_filter_to_gtkchooser(picker);
- suggest_ext = ".png";
- break;
- case FFSAVE_AVI:
- caption += add_simple_mime_filter_to_gtkchooser
- (picker, "video/x-msvideo",
- LLTrans::getString("avi_movie_file") + " (*.avi)");
- suggest_ext = ".avi";
- break;
- case FFSAVE_ANIM:
- caption += add_simple_pattern_filter_to_gtkchooser
- (picker, "*.xaf", LLTrans::getString("xaf_animation_file") + " (*.xaf)");
- suggest_ext = ".xaf";
- break;
- case FFSAVE_XML:
- caption += add_simple_pattern_filter_to_gtkchooser
- (picker, "*.xml", LLTrans::getString("xml_file") + " (*.xml)");
- suggest_ext = ".xml";
- break;
- case FFSAVE_RAW:
- caption += add_simple_pattern_filter_to_gtkchooser
- (picker, "*.raw", LLTrans::getString("raw_file") + " (*.raw)");
- suggest_ext = ".raw";
- break;
- case FFSAVE_J2C:
- // *TODO: Should this be 'image/j2c' ?
- caption += add_simple_mime_filter_to_gtkchooser
- (picker, "images/jp2",
- LLTrans::getString("compressed_image_files") + " (*.j2c)");
- suggest_ext = ".j2c";
- break;
- case FFSAVE_SCRIPT:
- caption += add_script_filter_to_gtkchooser(picker);
- suggest_ext = ".lsl";
- break;
- default:;
- break;
- }
-
- gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());
-
- if (filename.empty())
- {
- suggest_name += suggest_ext;
-
- gtk_file_chooser_set_current_name
- (GTK_FILE_CHOOSER(picker),
- suggest_name.c_str());
- }
- else
- {
- gtk_file_chooser_set_current_name
- (GTK_FILE_CHOOSER(picker), filename.c_str());
- }
-
- gtk_widget_show_all(GTK_WIDGET(picker));
-
- gtk_main();
-
- rtn = (getFileCount() == 1);
-
- if(rtn && filter == FFSAVE_TGAPNG)
- {
- std::string selected_file = mFiles.back();
- mFiles.pop_back();
- mFiles.push_back(selected_file + mCurrentExtension);
- }
- }
-
- gViewerWindow->getWindow()->afterDialog();
-
- return rtn;
-}
-
-bool LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
-{
- bool rtn = false;
-
- // if local file browsing is turned off, return without opening dialog
- if (!check_local_file_access_enabled())
- {
- return false;
- }
-
- gViewerWindow->getWindow()->beforeDialog();
-
- reset();
-
- GtkWindow* picker = buildFilePicker(false, false, "openfile");
-
- if (picker)
- {
- std::string caption = LLTrans::getString("load_file_verb") + " ";
- std::string filtername = "";
- switch (filter)
- {
- case FFLOAD_WAV:
- filtername = add_wav_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_ANIM:
- filtername = add_anim_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_XML:
- filtername = add_xml_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_GLTF:
- filtername = dead_code_should_blow_up_here(picker);
- break;
- case FFLOAD_COLLADA:
- filtername = add_collada_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_IMAGE:
- filtername = add_imageload_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_SCRIPT:
- filtername = add_script_filter_to_gtkchooser(picker);
- break;
- case FFLOAD_DICTIONARY:
- filtername = add_dictionary_filter_to_gtkchooser(picker);
- break;
- default:;
- break;
- }
-
- caption += filtername;
-
- gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());
-
- gtk_widget_show_all(GTK_WIDGET(picker));
- gtk_main();
-
- rtn = (getFileCount() == 1);
- }
-
- gViewerWindow->getWindow()->afterDialog();
-
- return rtn;
-}
-
-bool LLFilePicker::getMultipleOpenFiles( ELoadFilter filter, bool blocking)
-{
- bool rtn = false;
-
- // if local file browsing is turned off, return without opening dialog
- if (!check_local_file_access_enabled())
- {
- return false;
- }
-
- gViewerWindow->getWindow()->beforeDialog();
-
- reset();
-
- GtkWindow* picker = buildFilePicker(false, false, "openfile");
-
- if (picker)
- {
- gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(picker),
- TRUE);
-
- gtk_window_set_title(GTK_WINDOW(picker), LLTrans::getString("load_files").c_str());
-
- gtk_widget_show_all(GTK_WIDGET(picker));
- gtk_main();
- rtn = !mFiles.empty();
- }
-
- gViewerWindow->getWindow()->afterDialog();
-
- return rtn;
-}
-
-# else // LL_GTK
-
// Hacky stubs designed to facilitate fake getSaveFile and getOpenFile with
// static results, when we don't have a real filepicker.
@@ -1676,8 +1640,6 @@ bool LLFilePicker::getMultipleOpenFilesModeless(ELoadFilter filter,
return false;
}
-#endif // LL_GTK
-
#else // not implemented
bool LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
index 75ff14f4cf..5a4da61cca 100644
--- a/indra/newview/llfilepicker.h
+++ b/indra/newview/llfilepicker.h
@@ -35,6 +35,8 @@
#include "stdtypes.h"
+#include <vector>
+
#if LL_DARWIN
#include <Carbon/Carbon.h>
@@ -43,7 +45,6 @@
#undef check
#undef require
-#include <vector>
#include "llstring.h"
#endif
@@ -54,19 +55,8 @@
#include <commdlg.h>
#endif
-extern "C" {
-// mostly for Linux, possible on others
-#if LL_GTK
-# include "gtk/gtk.h"
-#endif // LL_GTK
-}
-
class LLFilePicker
{
-#ifdef LL_GTK
- friend class LLDirPicker;
- friend void chooser_responder(GtkWidget *, gint, gpointer);
-#endif // LL_GTK
public:
// calling this before main() is undefined
static LLFilePicker& instance( void ) { return sInstance; }
@@ -161,14 +151,14 @@ private:
// is enabled and if not, tidy up and indicate we're not allowed to do this.
bool check_local_file_access_enabled();
-#if LL_WINDOWS
+#if LL_WINDOWS && !LL_SDL_WINDOW
OPENFILENAMEW mOFN; // for open and save dialogs
WCHAR mFilesW[FILENAME_BUFFER_SIZE];
bool setupFilter(ELoadFilter filter);
#endif
-#if LL_DARWIN
+#if LL_DARWIN && !LL_SDL_WINDOW
S32 mPickOptions;
std::vector<std::string> mFileVector;
@@ -184,28 +174,12 @@ private:
void *userdata);
#endif
-#if LL_GTK
- static void add_to_selectedfiles(gpointer data, gpointer user_data);
- static void chooser_responder(GtkWidget *widget, gint response, gpointer user_data);
- // we remember the last path that was accessed for a particular usage
- std::map <std::string, std::string> mContextToPathMap;
- std::string mCurContextName;
- // we also remember the extension of the last added file.
- std::string mCurrentExtension;
-#endif
-
std::vector<std::string> mFiles;
S32 mCurrentFile;
bool mLocked;
static LLFilePicker sInstance;
-protected:
-#if LL_GTK
- GtkWindow* buildFilePicker(bool is_save, bool is_folder,
- std::string context = "generic");
-#endif
-
public:
// don't call these directly please.
LLFilePicker();
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index 7d098b2676..8897ad55e0 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -151,7 +151,6 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so
{
S32 num_output_sections = 1<<dest_sections;
LLVector3 scale = mVO->mDrawable->getScale();
- F32 source_section_length = scale.mV[VZ] / (F32)(1<<source_sections);
F32 section_length = scale.mV[VZ] / (F32)num_output_sections;
if (source_sections == -1)
{
@@ -183,6 +182,7 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so
// Iterate from right to left since it may be an in-place computation
S32 step_shift = dest_sections-source_sections;
S32 num_steps = 1<<step_shift;
+ F32 source_section_length = scale.mV[VZ] / (F32)(1<<source_sections);
for (S32 section=num_output_sections-num_steps; section>=0; section -= num_steps)
{
LLFlexibleObjectSection *last_source_section = &source[section>>step_shift];
diff --git a/indra/newview/llfloaterdirectory.h b/indra/newview/llfloaterdirectory.h
index de788443be..fb3b9975ed 100644
--- a/indra/newview/llfloaterdirectory.h
+++ b/indra/newview/llfloaterdirectory.h
@@ -76,6 +76,6 @@ private:
static LLFloaterDirectory *sInstance;
};
-//extern BOOL gDisplayEventHack;
+//extern bool gDisplayEventHack;
#endif // LL_LLDIRECTORYFLOATER_H
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index a442099ad1..aa03fc4e62 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -39,7 +39,6 @@ class LLAvatarName;
class LLButton;
class LLChatEntry;
class LLTextEditor;
-class LLPanelChatControlPanel;
class LLChatHistory;
class LLInventoryItem;
class LLInventoryCategory;
diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h
index 3ca1187ec9..d97b0eaa33 100644
--- a/indra/newview/llfloaterimsessiontab.h
+++ b/indra/newview/llfloaterimsessiontab.h
@@ -38,7 +38,6 @@
#include "llconversationview.h"
#include "lltexteditor.h"
-class LLPanelChatControlPanel;
class LLChatEntry;
class LLChatHistory;
class LLPanelEmojiComplete;
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 750d218f52..3dc4e53250 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -108,18 +108,6 @@ public:
virtual void changed() { LLFloaterLand::refreshAll(); }
};
-// class needed to get full access to textbox inside checkbox, because LLCheckBoxCtrl::setLabel() has string as its argument.
-// It was introduced while implementing EXT-4706
-class LLCheckBoxWithTBAcess : public LLCheckBoxCtrl
-{
-public:
- LLTextBox* getTextBox()
- {
- return mLabel;
- }
-};
-
-
class LLPanelLandExperiences
: public LLPanel
{
@@ -2146,12 +2134,11 @@ void LLPanelLandOptions::refresh()
mMatureCtrl->setVisible(true);
LLStyle::Params style;
style.image(LLUI::getUIImage(gFloaterView->getParentFloater(this)->getString("maturity_icon_moderate")));
- LLCheckBoxWithTBAcess* fullaccess_mature_ctrl = (LLCheckBoxWithTBAcess*)mMatureCtrl;
- fullaccess_mature_ctrl->getTextBox()->setText(LLStringExplicit(""));
- fullaccess_mature_ctrl->getTextBox()->appendImageSegment(style);
- fullaccess_mature_ctrl->getTextBox()->appendText(getString("mature_check_mature"), false);
- fullaccess_mature_ctrl->setToolTip(getString("mature_check_mature_tooltip"));
- fullaccess_mature_ctrl->reshape(fullaccess_mature_ctrl->getRect().getWidth(), fullaccess_mature_ctrl->getRect().getHeight(), false);
+ mMatureCtrl->getTextBox()->setText(LLStringExplicit(""));
+ mMatureCtrl->getTextBox()->appendImageSegment(style);
+ mMatureCtrl->getTextBox()->appendText(getString("mature_check_mature"), false);
+ mMatureCtrl->setToolTip(getString("mature_check_mature_tooltip"));
+ mMatureCtrl->reshape(mMatureCtrl->getRect().getWidth(), mMatureCtrl->getRect().getHeight(), false);
// they can see the checkbox, but its disposition depends on the
// state of the region
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 83abbb0357..83abbb0357 100755..100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
diff --git a/indra/newview/llfloaternotificationstabbed.cpp b/indra/newview/llfloaternotificationstabbed.cpp
index e571011acf..8eeba095b2 100644
--- a/indra/newview/llfloaternotificationstabbed.cpp
+++ b/indra/newview/llfloaternotificationstabbed.cpp
@@ -45,7 +45,6 @@ LLFloaterNotificationsTabbed::LLFloaterNotificationsTabbed(const LLSD& key) : LL
mGroupNoticeMessageList(NULL),
mTransactionMessageList(NULL),
mSystemMessageList(NULL),
- mNotificationsSeparator(NULL),
mNotificationsTabContainer(NULL),
NOTIFICATION_TABBED_ANCHOR_NAME("notification_well_panel"),
IM_WELL_ANCHOR_NAME("im_well_panel"),
@@ -54,7 +53,7 @@ LLFloaterNotificationsTabbed::LLFloaterNotificationsTabbed(const LLSD& key) : LL
{
setOverlapsScreenChannel(true);
mNotificationUpdates.reset(new NotificationTabbedChannel(this));
- mNotificationsSeparator = new LLNotificationSeparator();
+ mNotificationsSeparator = std::make_unique<LLNotificationSeparator>();
}
//---------------------------------------------------------------------------------
@@ -117,6 +116,7 @@ void LLFloaterNotificationsTabbed::setSysWellChiclet(LLSysWellChiclet* chiclet)
//---------------------------------------------------------------------------------
LLFloaterNotificationsTabbed::~LLFloaterNotificationsTabbed()
{
+ mNotificationsSeparator.reset();
}
//---------------------------------------------------------------------------------
diff --git a/indra/newview/llfloaternotificationstabbed.h b/indra/newview/llfloaternotificationstabbed.h
index 87e880c8d2..49dfe6033f 100644
--- a/indra/newview/llfloaternotificationstabbed.h
+++ b/indra/newview/llfloaternotificationstabbed.h
@@ -162,7 +162,7 @@ private:
LLNotificationListView* mGroupNoticeMessageList;
LLNotificationListView* mTransactionMessageList;
LLNotificationListView* mSystemMessageList;
- LLNotificationSeparator* mNotificationsSeparator;
+ std::unique_ptr<LLNotificationSeparator> mNotificationsSeparator;
LLTabContainer* mNotificationsTabContainer;
LLButton* mDeleteAllBtn;
LLButton* mCollapseAllBtn;
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 537dca99da..d58a5a76ca 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1359,7 +1359,7 @@ void LLFloaterPreference::onChangeQuality(const LLSD& data)
if (level >= LVL_HIGH && mLastQualityLevel < level)
{
constexpr U32 LOW_MEM_THRESHOLD = 4097;
- U32 total_mem = (U32Megabytes)LLMemory::getMaxMemKB();
+ U32 total_mem = U32Megabytes(LLMemory::getMaxMemKB());
if (total_mem < LOW_MEM_THRESHOLD)
{
LLSD args;
@@ -1505,7 +1505,7 @@ bool LLFloaterPreference::moveTranscriptsAndLog()
//Couldn't move the log and created a new directory so remove the new directory
if(madeDirectory)
{
- LLFile::rmdir(chatLogPath);
+ LLFile::remove(chatLogPath);
}
return false;
}
@@ -1531,7 +1531,7 @@ bool LLFloaterPreference::moveTranscriptsAndLog()
if(madeDirectory)
{
- LLFile::rmdir(chatLogPath);
+ LLFile::remove(chatLogPath);
}
return false;
@@ -2052,17 +2052,19 @@ void LLFloaterPreference::changed()
{
if (LLConversationLog::instance().getIsLoggingEnabled())
{
- getChild<LLButton>("clear_log")->setEnabled(LLConversationLog::instance().getConversations().size() > 0);
+ getChild<LLButton>("clear_log")->setEnabled(LLConversationLog::instance().getConversations().size() > 0);
}
else
{
// onClearLog clears list, then notifies changed() and only then clears file,
// so check presence of conversations before checking file, file will cleared later.
- llstat st;
- bool has_logs = LLConversationLog::instance().getConversations().size() > 0
- && LLFile::stat(LLConversationLog::instance().getFileName(), &st) == 0
- && S_ISREG(st.st_mode)
- && st.st_size > 0;
+ bool has_logs = false;
+ if (LLConversationLog::instance().getConversations().size() > 0)
+ {
+ std::filesystem::path file_path = fsyspath(LLConversationLog::instance().getFileName());
+ has_logs = LLFile::isfile(file_path)
+ && LLFile::size(file_path) > 0;
+ }
getChild<LLButton>("clear_log")->setEnabled(has_logs);
}
diff --git a/indra/newview/llfloaterpreferencesgraphicsadvanced.cpp b/indra/newview/llfloaterpreferencesgraphicsadvanced.cpp
index a8a1e507a8..8999a84c7e 100644
--- a/indra/newview/llfloaterpreferencesgraphicsadvanced.cpp
+++ b/indra/newview/llfloaterpreferencesgraphicsadvanced.cpp
@@ -81,7 +81,7 @@ bool LLFloaterPreferenceGraphicsAdvanced::postBuild()
}
}
-#if !LL_DARWIN
+#if !LL_DARWIN && !LL_SDL_WINDOW
LLCheckBoxCtrl *use_HiDPI = getChild<LLCheckBoxCtrl>("use HiDPI");
use_HiDPI->setVisible(false);
#endif
@@ -158,7 +158,7 @@ void LLFloaterPreferenceGraphicsAdvanced::refresh()
updateSliderText(getChild<LLSliderCtrl>("AvatarPhysicsDetail", true), getChild<LLTextBox>("AvatarPhysicsDetailText", true));
updateSliderText(getChild<LLSliderCtrl>("TerrainMeshDetail", true), getChild<LLTextBox>("TerrainMeshDetailText", true));
updateSliderText(getChild<LLSliderCtrl>("RenderPostProcess", true), getChild<LLTextBox>("PostProcessText", true));
- updateSliderText(getChild<LLSliderCtrl>("SkyMeshDetail", true), getChild<LLTextBox>("SkyMeshDetailText", true));
+ updateSliderText(getChild<LLSliderCtrl>("GlowResolution", true), getChild<LLTextBox>("GlowResolutionText", true));
LLAvatarComplexityControls::setIndirectControls();
setMaxNonImpostorsText(
gSavedSettings.getU32("RenderAvatarMaxNonImpostors"),
@@ -277,16 +277,11 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
LLTextBox* shadows_text = getChild<LLTextBox>("RenderShadowDetailText");
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
- LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
- LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
LLSliderCtrl* cas_slider = getChild<LLSliderCtrl>("RenderSharpness");
// disabled windlight
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
{
- sky->setEnabled(false);
- sky_text->setEnabled(false);
-
//deferred needs windlight, disable deferred
ctrl_shadows->setEnabled(false);
ctrl_shadows->setValue(0);
@@ -340,16 +335,16 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
tonemapMix->setEnabled(is_not_vintage);
exposureSlider->setEnabled(is_not_vintage);
cas_slider->setEnabled(is_not_vintage);
+
+ LLComboBox* ctrl_anisotropic = getChild<LLComboBox>("anisotropic_filter");
+ if (!LLFeatureManager::instance().isFeatureAvailable("RenderAnisotropicLevel"))
+ {
+ ctrl_anisotropic->setEnabled(false);
+ }
}
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
{
- // WindLight
- LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
- LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
- sky->setEnabled(true);
- sky_text->setEnabled(true);
-
bool enabled = true;
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
@@ -384,6 +379,20 @@ void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
getChildView("antialiasing restart")->setVisible(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred"));
+ LLComboBox* af_combo = getChild<LLComboBox>("anisotropic_filter");
+ if (2.f > gGLManager.mMaxAnisotropy) {
+ af_combo->remove("2x");
+ }
+ if (4.f > gGLManager.mMaxAnisotropy) {
+ af_combo->remove("4x");
+ }
+ if (8.f > gGLManager.mMaxAnisotropy) {
+ af_combo->remove("8x");
+ }
+ if (16.f > gGLManager.mMaxAnisotropy) {
+ af_combo->remove("16x");
+ }
+
// now turn off any features that are unavailable
disableUnavailableSettings();
}
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 0036df9c3d..e0f65315d5 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -515,8 +515,8 @@ private:
void searchAgent(LLNameListCtrl* listCtrl, const std::string& search_string);
void copyListToClipboard(std::string list_name);
- bool mPendingUpdate;
- bool mCtrlsEnabled;
+ bool mPendingUpdate = false;
+ bool mCtrlsEnabled = false;
};
#endif
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index c3bc24c6b9..637871da0d 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -484,47 +484,47 @@ bool LLFloaterUIPreview::postBuild()
bool found_en_us = false;
std::string language_directory;
std::string xui_dir = get_xui_dir(); // directory containing localizations -- don't forget trailing delim
- mLanguageSelection->removeall(); // clear out anything temporarily in list from XML
+ mLanguageSelection->removeall(); // clear out anything temporarily in list from XML
LLDirIterator iter(xui_dir, "*");
- while(found) // for every directory
+ while (found) // for every directory
{
- if((found = iter.next(language_directory))) // get next directory
+ if ((found = iter.next(language_directory))) // get next directory
{
std::string full_path = gDirUtilp->add(xui_dir, language_directory);
- if(LLFile::isfile(full_path.c_str())) // if it's not a directory, skip it
+ if (!LLFile::isdir(full_path.c_str())) // if it's not a directory, skip it
{
continue;
}
- if(strncmp("template",language_directory.c_str(),8) && -1 == language_directory.find(".")) // if it's not the template directory or a hidden directory
+ if (strncmp("template",language_directory.c_str(), 8) && -1 == language_directory.find(".")) // if it's not the template directory or a hidden directory
{
- if(!strncmp("en",language_directory.c_str(),5)) // remember if we've seen en, so we can make it default
+ if (!strncmp("en",language_directory.c_str(), 5)) // remember if we've seen en, so we can make it default
{
found_en_us = true;
}
else
{
- mLanguageSelection->add(std::string(language_directory)); // add it to the language selection dropdown menu
+ mLanguageSelection->add(std::string(language_directory)); // add it to the language selection dropdown menu
mLanguageSelection_2->add(std::string(language_directory));
}
}
}
}
- if(found_en_us)
+ if (found_en_us)
{
- mLanguageSelection->add(std::string("en"),ADD_TOP); // make en first item if we found it
- mLanguageSelection_2->add(std::string("en"),ADD_TOP);
+ mLanguageSelection->add(std::string("en"), ADD_TOP); // make en first item if we found it
+ mLanguageSelection_2->add(std::string("en"), ADD_TOP);
}
else
{
std::string warning = std::string("No EN localization found; check your XUI directories!");
popupAndPrintWarning(warning);
}
- mLanguageSelection->selectFirstItem(); // select the first item
+ mLanguageSelection->selectFirstItem(); // select the first item
mLanguageSelection_2->selectFirstItem();
- refreshList(); // refresh the list of available floaters
+ refreshList(); // refresh the list of available floaters
return true;
}
@@ -574,7 +574,7 @@ void LLFloaterUIPreview::onClickExportSchema()
// std::string file_name(template_path + gDirUtilp->getDirDelimiter() + widget_name + ".rng");
- // LLFILE* rng_file = LLFile::fopen(file_name.c_str(), "w");
+ // LLFILE* rng_file = LLFile::fopen(file_name.c_str(), LLFILE_MODE("w"));
// {
// LLXMLNode::writeHeaderToFile(rng_file);
// const bool use_type_decorations = false;
@@ -892,8 +892,7 @@ void LLFloaterUIPreview::displayFloater(bool click, S32 ID)
// Add localization to title so user knows whether it's localized or defaulted to en
std::string full_path = getLocalizedDirectory() + path;
std::string floater_lang = "EN";
- llstat dummy;
- if(!LLFile::stat(full_path.c_str(), &dummy)) // if the file does not exist
+ if (LLFile::isfile(full_path.c_str())) // use localized language if the file exists
{
floater_lang = getLocStr(ID);
}
@@ -966,9 +965,8 @@ void LLFloaterUIPreview::onClickEditFloater()
}
file_path = getLocalizedDirectory() + file_name;
- // stat file to see if it exists (some localized versions may not have it there are no diffs, and then we try to open an nonexistent file)
- llstat dummy;
- if(LLFile::stat(file_path.c_str(), &dummy)) // if the file does not exist
+ // Does it exist? (Some localized versions may not have it when there are no diffs, and then we try to open a nonexistent file)
+ if (!LLFile::isfile(file_path.c_str())) // if the file does not exist
{
popupAndPrintWarning("No file for this floater exists in the selected localization. Opening the EN version instead.");
file_path = get_xui_dir() + mDelim + "en" + mDelim + file_name; // open the en version instead, by default
@@ -1117,15 +1115,14 @@ void LLFloaterUIPreview::onClickToggleDiffHighlighting()
std::string path_in_textfield = mDiffPathTextBox->getText(); // get file path
bool error = false;
- if(std::string("") == path_in_textfield) // check for blank file
+ if(std::string("") == path_in_textfield) // check for blank file
{
std::string warning = "Unable to highlight differences because no file was provided; fill in the relevant text field";
popupAndPrintWarning(warning);
error = true;
}
- llstat dummy;
- if(LLFile::stat(path_in_textfield.c_str(), &dummy) && !error) // check if the file exists (empty check is reduntant but useful for the informative error message)
+ if (!LLFile::isfile(path_in_textfield.c_str()) && !error) // check if the file exists (empty check is redundant but useful for the informative error message)
{
std::string warning = std::string("Unable to highlight differences because an invalid path to a difference file was provided:\"") + path_in_textfield + "\"";
popupAndPrintWarning(warning);
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 87a9b91015..87a9b91015 100755..100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 5484ce6276..41d7d93528 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -728,8 +728,7 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
- gGL.flush();
- glLineWidth( (F32)line_width );
+ gGL.setLineWidth( (F32)line_width );
last_line_width = line_width;
}
@@ -758,8 +757,7 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
- gGL.flush();
- glLineWidth( (F32)line_width );
+ gGL.setLineWidth( (F32)line_width );
last_line_width = line_width;
}
@@ -773,7 +771,7 @@ void LLViewerObjectList::renderObjectBeacons()
}
gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
{
@@ -808,7 +806,7 @@ void LLSky::renderSunMoonBeacons(const LLVector3& pos_agent, const LLVector3& di
{
pos_end.mV[i] = pos_agent.mV[i] + (50 * direction.mV[i]);
}
- glLineWidth((GLfloat)LLPipeline::DebugBeaconLineWidth);
+ gGL.setLineWidth((GLfloat)LLPipeline::DebugBeaconLineWidth);
gGL.begin(LLRender::LINES);
color.mV[3] *= 0.5f;
gGL.color4fv(color.mV);
@@ -819,7 +817,7 @@ void LLSky::renderSunMoonBeacons(const LLVector3& pos_agent, const LLVector3& di
gGL.end();
gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
diff --git a/indra/newview/llgltfmaterialpreviewmgr.cpp b/indra/newview/llgltfmaterialpreviewmgr.cpp
index ebb9dc3e3c..446742f316 100644
--- a/indra/newview/llgltfmaterialpreviewmgr.cpp
+++ b/indra/newview/llgltfmaterialpreviewmgr.cpp
@@ -428,7 +428,7 @@ bool LLGLTFPreviewTexture::render()
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- LLGLDepthTest(GL_FALSE);
+ LLGLDepthTest depth(GL_FALSE);
LLGLDisable stencil(GL_STENCIL_TEST);
LLGLDisable scissor(GL_SCISSOR_TEST);
SetTemporarily<bool> no_dof(&LLPipeline::RenderDepthOfField, false);
@@ -520,21 +520,17 @@ bool LLGLTFPreviewTexture::render()
// *HACK: Hide mExposureMap from generateExposure
gPipeline.mExposureMap.swapFBORefs(gPipeline.mLastExposure);
- gPipeline.copyScreenSpaceReflections(&screen, &gPipeline.mSceneMap);
gPipeline.generateLuminance(&screen, &gPipeline.mLuminanceMap);
gPipeline.generateExposure(&gPipeline.mLuminanceMap, &gPipeline.mExposureMap, /*use_history = */ false);
gPipeline.gammaCorrect(&screen, &gPipeline.mPostPingMap);
LLVertexBuffer::unbind();
gPipeline.generateGlow(&gPipeline.mPostPingMap);
gPipeline.combineGlow(&gPipeline.mPostPingMap, &screen);
- gPipeline.renderDoF(&screen, &gPipeline.mPostPingMap);
- gPipeline.applyFXAA(&gPipeline.mPostPingMap, &screen);
// *HACK: Restore mExposureMap (it will be consumed by generateExposure next frame)
gPipeline.mExposureMap.swapFBORefs(gPipeline.mLastExposure);
// Final render
-
gDeferredPostNoDoFProgram.bind();
// From LLPipeline::renderFinalize: "Whatever is last in the above post processing chain should _always_ be rendered directly here. If not, expect problems."
diff --git a/indra/newview/llinventorygallerymenu.cpp b/indra/newview/llinventorygallerymenu.cpp
index 1fe2965784..6c72b0b7ee 100644
--- a/indra/newview/llinventorygallerymenu.cpp
+++ b/indra/newview/llinventorygallerymenu.cpp
@@ -334,13 +334,13 @@ void LLInventoryGalleryContextMenu::doToSelected(const LLSD& userdata)
}
else if ("copy_slurl" == action)
{
- boost::function<void(LLLandmark*)> copy_slurl_cb = [](LLLandmark* landmark)
+ std::function<void(LLLandmark*)> copy_slurl_cb = [](LLLandmark* landmark)
{
LLVector3d global_pos;
landmark->getGlobalPos(global_pos);
if (!global_pos.isExactlyZero())
{
- boost::function<void(std::string& slurl)> copy_slurl_to_clipboard_cb = [](const std::string& slurl)
+ std::function<void(std::string& slurl)> copy_slurl_to_clipboard_cb = [](const std::string& slurl)
{
gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl));
LLSD args;
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 7a80c46c73..5adde21e3e 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2865,7 +2865,7 @@ bool LLInventoryModel::loadSkeleton(
const S32 NO_VERSION = LLViewerInventoryCategory::VERSION_UNKNOWN;
std::string gzip_filename(inventory_filename);
gzip_filename.append(".gz");
- LLFILE* fp = LLFile::fopen(gzip_filename, "rb");
+ LLFILE* fp = LLFile::fopen(gzip_filename, LLFILE_MODE("rb"));
bool remove_inventory_file = false;
if (LLAppViewer::instance()->isSecondInstance())
{
@@ -5054,7 +5054,7 @@ bool decompress_file(const char* src_filename, const char* dst_filename)
// open the files
src = gzopen(src_filename, "rb");
if(!src) goto err_decompress;
- dst = LLFile::fopen(dst_filename, "wb");
+ dst = LLFile::fopen(dst_filename, LLFILE_MODE("wb"));
if(!dst) goto err_decompress;
// decompress.
diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp
index 666ab4f5d0..c082c632f1 100644
--- a/indra/newview/llkeyconflict.cpp
+++ b/indra/newview/llkeyconflict.cpp
@@ -575,7 +575,7 @@ void LLKeyConflictHandler::saveToSettings(bool temporary)
// Write the resulting XML to file
if (!output_node->isNull())
{
- LLFILE *fp = LLFile::fopen(filename, "w");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("w"));
if (fp != NULL)
{
LLXMLNode::writeHeaderToFile(fp);
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 1329b1308d..3567ca8e4a 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -31,10 +31,6 @@
/* own header */
#include "lllocalbitmaps.h"
-/* boost: will not compile unless equivalent is undef'd, beware. */
-#include "fix_macros.h"
-#include <boost/filesystem.hpp>
-
/* image compression headers. */
#include "llimagebmp.h"
#include "llimagetga.h"
@@ -42,11 +38,8 @@
#include "llimagejpeg.h"
#include "llimagepng.h"
-/* time headers */
-#include <time.h>
-#include <ctime>
-
/* misc headers */
+#include "fsyspath.h"
#include "llgltfmaterial.h"
#include "llscrolllistctrl.h"
#include "lllocaltextureobject.h"
@@ -192,15 +185,8 @@ bool LLLocalBitmap::updateSelf(EUpdateType optional_firstupdate)
if (gDirUtilp->fileExists(mFilename))
{
// verifying that the file has indeed been modified
-
-#ifndef LL_WINDOWS
- const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(mFilename));
-#else
- const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(ll_convert<std::wstring>(mFilename)));
-#endif
- LLSD new_last_modified = asctime(localtime(&temp_time));
-
- if (mLastModified.asString() != new_last_modified.asString())
+ const std::filesystem::file_time_type new_last_modified = std::filesystem::last_write_time(fsyspath(mFilename));
+ if (mLastModified != new_last_modified)
{
/* loading the image file and decoding it, here is a critical point which,
if fails, invalidates the whole update (or unit creation) process. */
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index 6c9d65e3b6..c4aaeae719 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -32,6 +32,7 @@
#include "lleventtimer.h"
#include "llpointer.h"
#include "llwearabletype.h"
+#include <filesystem>
class LLScrollListCtrl;
class LLImageRaw;
@@ -99,7 +100,7 @@ class LLLocalBitmap
LLUUID mTrackingID;
LLUUID mWorldID;
bool mValid;
- LLSD mLastModified;
+ std::filesystem::file_time_type mLastModified;
EExtension mExtension;
ELinkStatus mLinkStatus;
S32 mUpdateRetries;
diff --git a/indra/newview/lllocalgltfmaterials.cpp b/indra/newview/lllocalgltfmaterials.cpp
index d6facad23d..e9f2299be7 100644
--- a/indra/newview/lllocalgltfmaterials.cpp
+++ b/indra/newview/lllocalgltfmaterials.cpp
@@ -30,15 +30,8 @@
/* own header */
#include "lllocalgltfmaterials.h"
-/* boost: will not compile unless equivalent is undef'd, beware. */
-#include "fix_macros.h"
-#include <boost/filesystem.hpp>
-
-/* time headers */
-#include <time.h>
-#include <ctime>
-
/* misc headers */
+#include "fsyspath.h"
#include "llgltfmateriallist.h"
#include "llimage.h"
#include "llinventoryicon.h"
@@ -130,15 +123,8 @@ bool LLLocalGLTFMaterial::updateSelf()
if (gDirUtilp->fileExists(mFilename))
{
// verifying that the file has indeed been modified
-
-#ifndef LL_WINDOWS
- const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(mFilename));
-#else
- const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(ll_convert<std::wstring>(mFilename)));
-#endif
- LLSD new_last_modified = asctime(localtime(&temp_time));
-
- if (mLastModified.asString() != new_last_modified.asString())
+ const std::filesystem::file_time_type new_last_modified = std::filesystem::last_write_time(fsyspath(mFilename));
+ if (mLastModified != new_last_modified)
{
if (loadMaterial())
{
diff --git a/indra/newview/lllocalgltfmaterials.h b/indra/newview/lllocalgltfmaterials.h
index b806b54508..bf9a8c68ae 100644
--- a/indra/newview/lllocalgltfmaterials.h
+++ b/indra/newview/lllocalgltfmaterials.h
@@ -30,6 +30,7 @@
#include "lleventtimer.h"
#include "llpointer.h"
#include "llgltfmateriallist.h"
+#include <filesystem>
class LLScrollListCtrl;
class LLGLTFMaterial;
@@ -73,7 +74,7 @@ private: /* members */
std::string mShortName;
LLUUID mTrackingID;
LLUUID mWorldID;
- LLSD mLastModified;
+ std::filesystem::file_time_type mLastModified;
EExtension mExtension;
ELinkStatus mLinkStatus;
S32 mUpdateRetries;
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index 56e5555ba5..7a62f96064 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -194,7 +194,7 @@ private:
boost::signals2::connection mLocationHistoryConnection;
boost::signals2::connection mRegionCrossingSlot;
LLPathfindingNavMesh::navmesh_slot_t mNavMeshSlot;
- bool mIsNavMeshDirty;
+ bool mIsNavMeshDirty = false;
LLUIImage* mLandmarkImageOn;
LLUIImage* mLandmarkImageOff;
LLPointer<LLUIImage> mIconMaturityGeneral;
@@ -206,7 +206,7 @@ private:
std::string mEditLandmarkTooltip;
// this field holds a human-readable form of the location string, it is needed to be able to compare copy-pated value and real location
std::string mHumanReadableLocation;
- bool isHumanReadableLocationVisible;
+ bool isHumanReadableLocationVisible = false;
std::string mMaturityHelpTopic;
};
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index 30ea255e24..59f6993a0b 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -453,7 +453,7 @@ void LLLogChat::loadChatHistory(const std::string& file_name, std::list<LLSD>& m
// If we got here, we managed to stat the file.
// Open the file to read in binary mode to prevent interpreting other characters as EOF
- LLFILE* fptr = LLFile::fopen(log_file_name, "rb"); /*Flawfinder: ignore*/
+ LLFILE* fptr = LLFile::fopen(log_file_name, LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!fptr)
{ // Ok, this is strange but not really tragic in the big picture of things
LL_WARNS("ChatHistory") << "Unable to read file " << log_file_name << " after stat was successful" << LL_ENDL;
@@ -890,7 +890,7 @@ bool LLLogChat::isAdHocTranscriptExist(std::string file_name)
bool LLLogChat::isTranscriptFileFound(std::string fullname)
{
bool result = false;
- LLFILE * filep = LLFile::fopen(fullname, "rb");
+ LLFILE * filep = LLFile::fopen(fullname, LLFILE_MODE("rb"));
if (NULL != filep)
{
if (makeLogFileName("chat") == fullname)
@@ -1183,7 +1183,7 @@ void LLLoadHistoryThread::loadHistory(const std::string& file_name, std::list<LL
}
bool load_all_history = load_params.has("load_all_history") ? load_params["load_all_history"].asBoolean() : false;
- LLFILE* fptr = LLFile::fopen(LLLogChat::makeLogFileName(file_name), "rb");/*Flawfinder: ignore*/
+ LLFILE* fptr = LLFile::fopen(LLLogChat::makeLogFileName(file_name), LLFILE_MODE("rb"));/*Flawfinder: ignore*/
if (!fptr)
{
@@ -1192,17 +1192,17 @@ void LLLoadHistoryThread::loadHistory(const std::string& file_name, std::list<LL
{
std::string old_name(file_name);
old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
- fptr = LLFile::fopen(LLLogChat::makeLogFileName(old_name), "rb");
+ fptr = LLFile::fopen(LLLogChat::makeLogFileName(old_name), LLFILE_MODE("rb"));
if (fptr)
{
fclose(fptr);
LLFile::copy(LLLogChat::makeLogFileName(old_name), LLLogChat::makeLogFileName(file_name));
}
- fptr = LLFile::fopen(LLLogChat::makeLogFileName(file_name), "rb");
+ fptr = LLFile::fopen(LLLogChat::makeLogFileName(file_name), LLFILE_MODE("rb"));
}
if (!fptr)
{
- fptr = LLFile::fopen(LLLogChat::oldLogFileName(file_name), "rb");/*Flawfinder: ignore*/
+ fptr = LLFile::fopen(LLLogChat::oldLogFileName(file_name), LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!fptr)
{
mNewLoad = false;
diff --git a/indra/newview/lllookshistorypanel.h b/indra/newview/lllookshistorypanel.h
deleted file mode 100644
index 6293de7170..0000000000
--- a/indra/newview/lllookshistorypanel.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file llpanelteleporthistory.h
- * @brief Teleport history represented by a scrolling list
- * class definition
- *
- * $LicenseInfo:firstyear=2009&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$
- */
-
-#ifndef LL_LLPANELLOOKSHISTORY_H
-#define LL_LLPANELLOOKSHISTORY_H
-
-#include "lluictrlfactory.h"
-#include "llscrolllistctrl.h"
-
-#include "llpanelappearancetab.h"
-#include "lllookshistory.h"
-
-class LLLooksHistoryPanel : public LLPanelAppearanceTab
-{
-public:
- LLLooksHistoryPanel();
- virtual ~LLLooksHistoryPanel();
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onSearchEdit(const std::string& string);
- /*virtual*/ void onShowOnMap();
- /*virtual*/ void onLooks();
- ///*virtual*/ void onCopySLURL();
-
- void showLooksHistory();
- void handleItemSelect(const LLSD& data);
-
- static void onDoubleClickItem(void* user_data);
-
-private:
- enum LOOKS_HISTORY_COLUMN_ORDER
- {
- LIST_ICON,
- LIST_ITEM_TITLE,
- LIST_INDEX
- };
-
- LLLooksHistory* mLooksHistory;
- LLScrollListCtrl* mHistoryItems;
- std::string mFilterSubString;
-};
-
-#endif //LL_LLPANELLOOKSHISTORY_H
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 5bdf3f81b5..4bf1b134ef 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -274,7 +274,6 @@ void LLManipRotate::render()
}
LLGLEnable cull_face(GL_CULL_FACE);
- LLGLEnable clip_plane0(GL_CLIP_PLANE0);
LLGLDepthTest gls_depth(GL_FALSE);
//LLGLDisable gls_stencil(GL_STENCIL_TEST);
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
index 30f634f6d4..dad04f4eab 100644
--- a/indra/newview/llmarketplacefunctions.cpp
+++ b/indra/newview/llmarketplacefunctions.cpp
@@ -450,17 +450,14 @@ LLMarketplaceInventoryImporter::LLMarketplaceInventoryImporter()
, mImportInProgress(false)
, mInitialized(false)
, mMarketPlaceStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED)
- , mErrorInitSignal(NULL)
- , mStatusChangedSignal(NULL)
- , mStatusReportSignal(NULL)
{
}
boost::signals2::connection LLMarketplaceInventoryImporter::setInitializationErrorCallback(const status_report_signal_t::slot_type& cb)
{
- if (mErrorInitSignal == NULL)
+ if (mErrorInitSignal == nullptr)
{
- mErrorInitSignal = new status_report_signal_t();
+ mErrorInitSignal = std::make_unique<status_report_signal_t>();
}
return mErrorInitSignal->connect(cb);
@@ -468,9 +465,9 @@ boost::signals2::connection LLMarketplaceInventoryImporter::setInitializationErr
boost::signals2::connection LLMarketplaceInventoryImporter::setStatusChangedCallback(const status_changed_signal_t::slot_type& cb)
{
- if (mStatusChangedSignal == NULL)
+ if (mStatusChangedSignal == nullptr)
{
- mStatusChangedSignal = new status_changed_signal_t();
+ mStatusChangedSignal = std::make_unique<status_changed_signal_t>();
}
return mStatusChangedSignal->connect(cb);
@@ -478,9 +475,9 @@ boost::signals2::connection LLMarketplaceInventoryImporter::setStatusChangedCall
boost::signals2::connection LLMarketplaceInventoryImporter::setStatusReportCallback(const status_report_signal_t::slot_type& cb)
{
- if (mStatusReportSignal == NULL)
+ if (mStatusReportSignal == nullptr)
{
- mStatusReportSignal = new status_report_signal_t();
+ mStatusReportSignal = std::make_unique<status_report_signal_t>();
}
return mStatusReportSignal->connect(cb);
@@ -717,8 +714,6 @@ LLMarketplaceTuple::LLMarketplaceTuple(const LLUUID& folder_id, S32 listing_id,
LLMarketplaceData::LLMarketplaceData() :
mMarketPlaceStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED),
mMarketPlaceDataFetched(MarketplaceFetchCodes::MARKET_FETCH_NOT_DONE),
- mStatusUpdatedSignal(NULL),
- mDataFetchedSignal(NULL),
mDirtyCount(false)
{
mInventoryObserver = new LLMarketplaceInventoryObserver;
@@ -752,9 +747,9 @@ LLSD LLMarketplaceData::getMarketplaceStringSubstitutions()
void LLMarketplaceData::initializeSLM(const status_updated_signal_t::slot_type& cb)
{
- if (mStatusUpdatedSignal == NULL)
+ if (mStatusUpdatedSignal == nullptr)
{
- mStatusUpdatedSignal = new status_updated_signal_t();
+ mStatusUpdatedSignal = std::make_unique<status_updated_signal_t>();
}
mStatusUpdatedSignal->connect(cb);
@@ -842,7 +837,7 @@ void LLMarketplaceData::setDataFetchedSignal(const status_updated_signal_t::slot
{
if (mDataFetchedSignal == NULL)
{
- mDataFetchedSignal = new status_updated_signal_t();
+ mDataFetchedSignal = std::make_unique<status_updated_signal_t>();
}
mDataFetchedSignal->connect(cb);
}
diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h
index 07ed667b0a..59c7dddc33 100644
--- a/indra/newview/llmarketplacefunctions.h
+++ b/indra/newview/llmarketplacefunctions.h
@@ -109,9 +109,9 @@ private:
bool mInitialized;
U32 mMarketPlaceStatus;
- status_report_signal_t * mErrorInitSignal;
- status_changed_signal_t * mStatusChangedSignal;
- status_report_signal_t * mStatusReportSignal;
+ std::unique_ptr<status_report_signal_t> mErrorInitSignal;
+ std::unique_ptr<status_changed_signal_t> mStatusChangedSignal;
+ std::unique_ptr<status_report_signal_t> mStatusReportSignal;
};
@@ -272,13 +272,13 @@ private:
// Handling Marketplace connection and inventory connection
U32 mMarketPlaceStatus;
std::string mMarketPlaceFailureReason;
- status_updated_signal_t* mStatusUpdatedSignal;
+ std::unique_ptr<status_updated_signal_t> mStatusUpdatedSignal;
LLInventoryObserver* mInventoryObserver;
bool mDirtyCount; // If true, stock count value need to be updated at the next check
// Update data
U32 mMarketPlaceDataFetched;
- status_updated_signal_t* mDataFetchedSignal;
+ std::unique_ptr<status_updated_signal_t> mDataFetchedSignal;
std::set<LLUUID> mPendingUpdateSet;
// Listing folders waiting for validation
diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp
index 723f834d6f..4dc3f958aa 100644
--- a/indra/newview/llmaterialmgr.cpp
+++ b/indra/newview/llmaterialmgr.cpp
@@ -234,7 +234,7 @@ boost::signals2::connection LLMaterialMgr::get(const LLUUID& region_id, const LL
get_callback_map_t::iterator itCallback = mGetCallbacks.find(material_id);
if (itCallback == mGetCallbacks.end())
{
- std::pair<get_callback_map_t::iterator, bool> ret = mGetCallbacks.insert(std::pair<LLMaterialID, get_callback_t*>(material_id, new get_callback_t()));
+ std::pair<get_callback_map_t::iterator, bool> ret = mGetCallbacks.emplace(material_id, std::make_unique<get_callback_t>());
itCallback = ret.first;
}
connection = itCallback->second->connect(cb);;
@@ -279,7 +279,7 @@ boost::signals2::connection LLMaterialMgr::getTE(const LLUUID& region_id, const
get_callback_te_map_t::iterator itCallback = mGetTECallbacks.find(te_mat_pair);
if (itCallback == mGetTECallbacks.end())
{
- std::pair<get_callback_te_map_t::iterator, bool> ret = mGetTECallbacks.insert(std::pair<TEMaterialPair, get_callback_te_t*>(te_mat_pair, new get_callback_te_t()));
+ std::pair<get_callback_te_map_t::iterator, bool> ret = mGetTECallbacks.emplace(te_mat_pair, std::make_unique<get_callback_te_t>());
itCallback = ret.first;
}
connection = itCallback->second->connect(cb);
@@ -317,7 +317,7 @@ boost::signals2::connection LLMaterialMgr::getAll(const LLUUID& region_id, LLMat
getall_callback_map_t::iterator itCallback = mGetAllCallbacks.find(region_id);
if (mGetAllCallbacks.end() == itCallback)
{
- std::pair<getall_callback_map_t::iterator, bool> ret = mGetAllCallbacks.insert(std::pair<LLUUID, getall_callback_t*>(region_id, new getall_callback_t()));
+ std::pair<getall_callback_map_t::iterator, bool> ret = mGetAllCallbacks.emplace(region_id, std::make_unique<getall_callback_t>());
itCallback = ret.first;
}
return itCallback->second->connect(cb);;
@@ -329,8 +329,8 @@ void LLMaterialMgr::put(const LLUUID& object_id, const U8 te, const LLMaterial&
if (mPutQueue.end() == itQueue)
{
LL_DEBUGS("Materials") << "mPutQueue insert object " << object_id << LL_ENDL;
- mPutQueue.insert(std::pair<LLUUID, facematerial_map_t>(object_id, facematerial_map_t()));
- itQueue = mPutQueue.find(object_id);
+ auto ret = mPutQueue.emplace(object_id, facematerial_map_t());
+ itQueue = ret.first;
}
facematerial_map_t::iterator itFace = itQueue->second.find(te);
@@ -361,7 +361,7 @@ void LLMaterialMgr::setLocalMaterial(const LLUUID& region_id, LLMaterialPtr mate
}
LL_DEBUGS("Materials") << "region " << region_id << "new local material id " << material_id << LL_ENDL;
- mMaterials.insert(std::pair<LLMaterialID, LLMaterialPtr>(material_id, material_ptr));
+ mMaterials.emplace(material_id, material_ptr);
setMaterialCallbacks(material_id, material_ptr);
@@ -376,7 +376,7 @@ const LLMaterialPtr LLMaterialMgr::setMaterial(const LLUUID& region_id, const LL
{
LL_DEBUGS("Materials") << "new material" << LL_ENDL;
LLMaterialPtr newMaterial(new LLMaterial(material_data));
- std::pair<material_map_t::const_iterator, bool> ret = mMaterials.insert(std::pair<LLMaterialID, LLMaterialPtr>(material_id, newMaterial));
+ std::pair<material_map_t::const_iterator, bool> ret = mMaterials.emplace(material_id, newMaterial);
itMaterial = ret.first;
}
@@ -400,7 +400,6 @@ void LLMaterialMgr::setMaterialCallbacks(const LLMaterialID& material_id, const
if (itCallbackTE != mGetTECallbacks.end())
{
(*itCallbackTE->second)(material_id, material_ptr, te_mat_pair.te);
- delete itCallbackTE->second;
mGetTECallbacks.erase(itCallbackTE);
}
}
@@ -410,7 +409,6 @@ void LLMaterialMgr::setMaterialCallbacks(const LLMaterialID& material_id, const
{
(*itCallback->second)(material_id, material_ptr);
- delete itCallback->second;
mGetCallbacks.erase(itCallback);
}
}
@@ -509,7 +507,6 @@ void LLMaterialMgr::onGetAllResponse(bool success, const LLSD& content, const LL
{
(*itCallback->second)(region_id, materials);
- delete itCallback->second;
mGetAllCallbacks.erase(itCallback);
}
@@ -549,11 +546,11 @@ void LLMaterialMgr::onPutResponse(bool success, const LLSD& content)
{
llassert(response_data.isArray());
LL_DEBUGS("Materials") << "response has "<< response_data.size() << " materials" << LL_ENDL;
+#ifdef SHOW_ASSERT // same condition that controls llassert()
for (LLSD::array_const_iterator faceIter = response_data.beginArray(); faceIter != response_data.endArray(); ++faceIter)
{
-# ifdef SHOW_ASSERT // same condition that controls llassert()
const LLSD& face_data = *faceIter; // conditional to avoid unused variable warning
-# endif
+
llassert(face_data.isMap());
llassert(face_data.has(MATERIALS_CAP_OBJECT_ID_FIELD));
@@ -570,6 +567,7 @@ void LLMaterialMgr::onPutResponse(bool success, const LLSD& content)
// *TODO: do we really still need to process this?
}
+#endif
}
}
diff --git a/indra/newview/llmaterialmgr.h b/indra/newview/llmaterialmgr.h
index c04f874923..5fc0b1b290 100644
--- a/indra/newview/llmaterialmgr.h
+++ b/indra/newview/llmaterialmgr.h
@@ -120,13 +120,13 @@ private:
typedef std::map<LLUUID, material_queue_t> get_queue_t;
typedef std::pair<const LLUUID, LLMaterialID> pending_material_t;
typedef std::map<const pending_material_t, F64> get_pending_map_t;
- typedef std::map<LLMaterialID, get_callback_t*> get_callback_map_t;
+ typedef std::map<LLMaterialID, std::unique_ptr<get_callback_t>> get_callback_map_t;
- typedef std::unordered_map<TEMaterialPair, get_callback_te_t*> get_callback_te_map_t;
+ typedef std::unordered_map<TEMaterialPair, std::unique_ptr<get_callback_te_t>> get_callback_te_map_t;
typedef std::set<LLUUID> getall_queue_t;
typedef std::map<LLUUID, F64> getall_pending_map_t;
- typedef std::map<LLUUID, getall_callback_t*> getall_callback_map_t;
+ typedef std::map<LLUUID, std::unique_ptr<getall_callback_t>> getall_callback_map_t;
typedef std::map<U8, LLMaterial> facematerial_map_t;
typedef std::map<LLUUID, facematerial_map_t> put_queue_t;
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 26422d7d47..9b61529b5d 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -1038,10 +1038,6 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
case MEDIA_EVENT_NAVIGATE_COMPLETE:
{
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_COMPLETE, result string is: " << self->getNavigateResultString() << LL_ENDL;
- if(mHidingInitialLoad)
- {
- mHidingInitialLoad = false;
- }
mLoadingState = LOADING_STATE_LOADED;
};
break;
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index e407bfbbcb..0a092f21d2 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -215,7 +215,6 @@ public:
mStretchToFill,
mMaintainAspectRatio,
mHideLoading,
- mHidingInitialLoad,
mClearCache,
mHoverTextChanged,
mDecoupleTextureSize,
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index fb6ecedcbf..933a6d530f 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -4580,7 +4580,7 @@ void LLMeshRepository::notifyLoadedMeshes()
// erase from background thread
mThread->mWorkQueue.post([=, this]()
{
- LLMutexLock(mThread->mSkinMapMutex);
+ LLMutexLock skin_lock(mThread->mSkinMapMutex);
mThread->mSkinMap.erase(id);
});
}
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index b2e21bea1c..bc9ca46672 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -3597,11 +3597,11 @@ bool LLModelPreview::render()
gGL.diffuseColor4fv(PREVIEW_EDGE_COL.mV);
if (show_edges)
{
- glLineWidth(PREVIEW_EDGE_WIDTH);
+ gGL.setLineWidth(PREVIEW_EDGE_WIDTH);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
buffer->unmapBuffer();
}
@@ -3649,7 +3649,7 @@ bool LLModelPreview::render()
LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread;
if (decomp)
{
- LLMutexLock(decomp->mMutex);
+ LLMutexLock decomp_lock(decomp->mMutex);
LLModel::Decomposition& physics = model->mPhysics;
@@ -3724,12 +3724,12 @@ bool LLModelPreview::render()
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
gGL.diffuseColor4fv(PREVIEW_PSYH_EDGE_COL.mV);
- glLineWidth(PREVIEW_PSYH_EDGE_WIDTH);
+ gGL.setLineWidth(PREVIEW_PSYH_EDGE_WIDTH);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
buffer->unmapBuffer();
}
@@ -3741,7 +3741,7 @@ bool LLModelPreview::render()
// only do this if mDegenerate was set in the preceding mesh checks [Check this if the ordering ever breaks]
if (mHasDegenerate)
{
- glLineWidth(PREVIEW_DEG_EDGE_WIDTH);
+ gGL.setLineWidth(PREVIEW_DEG_EDGE_WIDTH);
glPointSize(PREVIEW_DEG_POINT_SIZE);
gPipeline.enableLightsFullbright();
//show degenerate triangles
@@ -3770,7 +3770,7 @@ bool LLModelPreview::render()
LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread;
if (decomp)
{
- LLMutexLock(decomp->mMutex);
+ LLMutexLock decomp_lock(decomp->mMutex);
LLModel::Decomposition& physics = model->mPhysics;
@@ -3811,7 +3811,7 @@ bool LLModelPreview::render()
gGL.popMatrix();
}
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
glPointSize(1.f);
gPipeline.enableLightsPreview();
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -3933,11 +3933,11 @@ bool LLModelPreview::render()
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.diffuseColor4fv(PREVIEW_EDGE_COL.mV);
- glLineWidth(PREVIEW_EDGE_WIDTH);
+ gGL.setLineWidth(PREVIEW_EDGE_WIDTH);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
}
}
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 36bcba2c5c..880e675c6b 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -684,7 +684,7 @@ bool LLMuteList::loadFromFile(const std::string& filename, EMuteListSource sourc
return false;
}
- LLFILE* fp = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!fp)
{
LL_WARNS() << "Couldn't open mute list " << filename << LL_ENDL;
@@ -751,7 +751,7 @@ bool LLMuteList::saveToFile(const std::string& filename)
return false;
}
- LLFILE* fp = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("wb")); /*Flawfinder: ignore*/
if (!fp)
{
LL_WARNS() << "Couldn't open mute list " << filename << LL_ENDL;
@@ -1084,7 +1084,7 @@ LLRenderMuteList::LLRenderMuteList()
bool LLRenderMuteList::saveToFile()
{
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "render_mute_settings.txt");
- LLFILE* fp = LLFile::fopen(filename, "wb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("wb"));
if (!fp)
{
LL_WARNS() << "Couldn't open render mute list file: " << filename << LL_ENDL;
@@ -1109,7 +1109,7 @@ bool LLRenderMuteList::loadFromFile()
LL_PROFILE_ZONE_SCOPED;
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "render_mute_settings.txt");
- LLFILE* fp = LLFile::fopen(filename, "rb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("rb"));
if (!fp)
{
LL_WARNS() << "Couldn't open render mute list file: " << filename << LL_ENDL;
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 2bb6af24bc..2bb6af24bc 100755..100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index 852f2dab21..9b21a217db 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -1005,6 +1005,8 @@ LLOutfitGalleryItem::LLOutfitGalleryItem(const Params& p)
mSelected(false),
mWorn(false),
mDefaultImage(true),
+ mHidden(false),
+ mFavorite(false),
mOutfitName(""),
mUUID(LLUUID())
{
diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h
index ebf0ba1a12..431f37f78c 100644
--- a/indra/newview/lloutfitobserver.h
+++ b/indra/newview/lloutfitobserver.h
@@ -75,7 +75,7 @@ protected:
S32 mBaseOutfitLastVersion;
std::string mLastBaseOutfitName;
- bool mLastOutfitDirtiness;
+ bool mLastOutfitDirtiness = false;
LLUUID mItemNameHash;
diff --git a/indra/newview/llpaneldirland.cpp b/indra/newview/llpaneldirland.cpp
index f85a8b948e..11ca7a0af0 100644
--- a/indra/newview/llpaneldirland.cpp
+++ b/indra/newview/llpaneldirland.cpp
@@ -183,7 +183,7 @@ void LLPanelDirLand::performQuery()
if (list)
{
std::string sort_name = list->getSortColumnName();
- BOOL sort_asc = list->getSortAscending();
+ bool sort_asc = list->getSortAscending();
if (sort_name == "name")
{
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
deleted file mode 100644
index 07a8641a92..0000000000
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file llpanelimcontrolpanel.cpp
- * @brief LLPanelIMControlPanel and related class implementations
- *
- * $LicenseInfo:firstyear=2004&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 "llviewerprecompiledheaders.h"
-#include "llfloaterreg.h"
-
-#include "llpanelimcontrolpanel.h"
-
-#include "llagent.h"
-#include "llappviewer.h" // for gDisconnected
-#include "llavataractions.h"
-#include "llavatariconctrl.h"
-#include "llbutton.h"
-#include "llgroupactions.h"
-#include "llavatarlist.h"
-#include "llparticipantlist.h"
-#include "llimview.h"
-#include "llspeakers.h"
-#include "lltrans.h"
-
-
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
deleted file mode 100644
index c7f5263bec..0000000000
--- a/indra/newview/llpanelimcontrolpanel.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * @file llpanelimcontrolpanel.h
- * @brief LLPanelIMControlPanel and related class definitions
- *
- * $LicenseInfo:firstyear=2004&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$
- */
-
-#ifndef LL_LLPANELIMCONTROLPANEL_H
-#define LL_LLPANELIMCONTROLPANEL_H
-
-#include "llpanel.h"
-#include "llcallingcard.h"
-
-class LLParticipantList;
-
-class LLPanelChatControlPanel
- : public LLPanel
-{
-public:
- LLPanelChatControlPanel() :
- mSessionId(LLUUID()) {};
- ~LLPanelChatControlPanel();
-
- virtual BOOL postBuild();
-
- virtual void setSessionId(const LLUUID& session_id);
- const LLUUID& getSessionId() { return mSessionId; }
-
-private:
- LLUUID mSessionId;
-
- // connection to voice channel state change signal
- boost::signals2::connection mVoiceChannelStateChangeConnection;
-};
-
-class LLPanelGroupControlPanel : public LLPanelChatControlPanel
-{
-public:
- LLPanelGroupControlPanel(const LLUUID& session_id);
- ~LLPanelGroupControlPanel();
-
- BOOL postBuild();
-
- void setSessionId(const LLUUID& session_id);
- /*virtual*/ void draw();
-
-protected:
- LLUUID mGroupID;
-
- LLParticipantList* mParticipantList;
-
-private:
- void onSortMenuItemClicked(const LLSD& userdata);
-};
-
-class LLPanelAdHocControlPanel : public LLPanelGroupControlPanel
-{
-public:
- LLPanelAdHocControlPanel(const LLUUID& session_id);
-
- BOOL postBuild();
-
-};
-
-#endif // LL_LLPANELIMCONTROLPANEL_H
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index a9e860d2ef..2ddc09736f 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -1309,7 +1309,7 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type
showWearablesListView();
//e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
- applyListViewFilter(static_cast<EListViewItemType>(LVIT_SHAPE + type));
+ applyListViewFilter(static_cast<EListViewItemType>(static_cast<U32>(LVIT_SHAPE) + static_cast<U32>(type)));
mWearableItemsList->setMenuWearableType(type);
}
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index c9fbeba2f3..5bb33a65f2 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -139,7 +139,8 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes
ENavMeshRequestStatus status;
if ( pContent.has(NAVMESH_DATA_FIELD) )
{
- const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary();
+ LLSD nav_data = pContent.get(NAVMESH_DATA_FIELD);
+ const LLSD::Binary& value = nav_data.asBinary();
auto binSize = value.size();
std::string newStr(reinterpret_cast<const char *>(&value[0]), binSize);
std::istringstream streamdecomp( newStr );
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index eefd19e153..85de487aae 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -576,8 +576,7 @@ void LLPreviewNotecard::syncExternal()
{
// Sync with external editor.
std::string tmp_file = getTmpFileName();
- llstat s;
- if (LLFile::stat(tmp_file, &s) == 0) // file exists
+ if (LLFile::isfile(tmp_file)) // file exists
{
if (mLiveFile) mLiveFile->ignoreNextUpdate();
writeToFile(tmp_file);
@@ -803,7 +802,7 @@ bool LLPreviewNotecard::loadNotecardText(const std::string& filename)
return false;
}
- LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!file)
{
LL_WARNS() << "Error opening " << filename << LL_ENDL;
@@ -834,7 +833,7 @@ bool LLPreviewNotecard::loadNotecardText(const std::string& filename)
bool LLPreviewNotecard::writeToFile(const std::string& filename)
{
- LLFILE* fp = LLFile::fopen(filename, "wb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("wb"));
if (!fp)
{
LL_WARNS() << "Unable to write to " << filename << LL_ENDL;
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index c2aa4925bd..53d0a712a8 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -632,7 +632,7 @@ bool LLScriptEdCore::loadScriptText(const std::string& filename)
return false;
}
- LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!file)
{
LL_WARNS() << "Error opening " << filename << LL_ENDL;
@@ -663,7 +663,7 @@ bool LLScriptEdCore::loadScriptText(const std::string& filename)
bool LLScriptEdCore::writeToFile(const std::string& filename)
{
- LLFILE* fp = LLFile::fopen(filename, "wb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("wb"));
if (!fp)
{
LL_WARNS() << "Unable to write to " << filename << LL_ENDL;
@@ -694,8 +694,7 @@ void LLScriptEdCore::sync()
if (mLiveFile)
{
std::string tmp_file = mLiveFile->filename();
- llstat s;
- if (LLFile::stat(tmp_file, &s) == 0) // file exists
+ if (LLFile::isfile(tmp_file)) // file exists
{
mLiveFile->ignoreNextUpdate();
writeToFile(tmp_file);
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 72f92785fc..aebc4d5ac0 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -6621,7 +6621,7 @@ void LLSelectMgr::renderSilhouettes(bool for_hud)
gGL.popMatrix();
gGL.popMatrix();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
if (shader)
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index 6023f6885d..8329ed86da 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -364,7 +364,7 @@ bool LLSettingsVOBase::exportFile(const LLSettingsBase::ptr_t &settings, const s
{
try
{
- std::ofstream file(filename, std::ios::out | std::ios::trunc);
+ llofstream file(filename, std::ios::out | std::ios::trunc);
file.exceptions(std::ios_base::failbit | std::ios_base::badbit);
if (!file)
@@ -390,7 +390,7 @@ LLSettingsBase::ptr_t LLSettingsVOBase::importFile(const std::string &filename)
try
{
- std::ifstream file(filename, std::ios::in);
+ llifstream file(filename, std::ios::in);
file.exceptions(std::ios_base::failbit | std::ios_base::badbit);
if (!file)
diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp
index e696c2dcb5..7d2828a872 100644
--- a/indra/newview/llsnapshotlivepreview.cpp
+++ b/indra/newview/llsnapshotlivepreview.cpp
@@ -54,7 +54,6 @@
#include "llviewertexturelist.h"
#include "llwindow.h"
#include "llworld.h"
-#include <boost/filesystem.hpp>
constexpr F32 AUTO_SNAPSHOT_TIME_DELAY = 1.f;
@@ -238,11 +237,11 @@ void LLSnapshotLivePreview::drawPreviewRect(S32 offset_x, S32 offset_y, LLColor4
{
F32 line_width ;
glGetFloatv(GL_LINE_WIDTH, &line_width) ;
- glLineWidth(2.0f * line_width) ;
+ gGL.setLineWidth(2.0f * line_width) ;
LLColor4 color(0.0f, 0.0f, 0.0f, 1.0f) ;
gl_rect_2d( mPreviewRect.mLeft + offset_x, mPreviewRect.mTop + offset_y,
mPreviewRect.mRight + offset_x, mPreviewRect.mBottom + offset_y, color, false ) ;
- glLineWidth(line_width) ;
+ gGL.setLineWidth(line_width) ;
//draw four alpha rectangles to cover areas outside of the snapshot image
if(!mKeepAspectRatio)
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 6e18bb979a..c2ac07af88 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1662,13 +1662,11 @@ void renderOctree(LLSpatialGroup* group)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
gGL.diffuseColor4f(1,0,0,group->mBuilt);
- gGL.flush();
- glLineWidth(5.f);
+ gGL.setLineWidth(5.f);
const LLVector4a* bounds = group->getObjectBounds();
drawBoxOutline(bounds[0], bounds[1]);
- gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
gGL.flush();
const LLVOAvatar* lastAvatar = nullptr;
@@ -1977,13 +1975,11 @@ void renderBoundingBox(LLDrawable* drawable, bool set_color = true)
LLViewerObject* vobj = drawable->getVObj();
if (vobj && vobj->onActiveList())
{
- gGL.flush();
- glLineWidth(llmax(4.f*sinf(gFrameTimeSeconds*2.f)+1.f, 1.f));
- //glLineWidth(4.f*(sinf(gFrameTimeSeconds*2.f)*0.25f+0.75f));
+ gGL.setLineWidth(llmax(4.f*sinf(gFrameTimeSeconds*2.f)+1.f, 1.f));
+ //gGL.setLineWidth(4.f*(sinf(gFrameTimeSeconds*2.f)*0.25f+0.75f));
stop_glerror();
drawBoxOutline(pos,size);
- gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
else
{
@@ -2495,12 +2491,11 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume, bool wireframe
llassert(LLGLSLShader::sCurBoundShader != 0);
LLVertexBuffer::unbind();
- glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
gGL.diffuseColor4fv(color.mV);
-
gGL.syncMatrices();
- glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
+
+ LLVertexBuffer::drawElements(LLRender::TRIANGLES, phys_volume->mHullPoints, nullptr, phys_volume->mNumHullIndices, phys_volume->mHullIndices);
}
else
{
@@ -2892,8 +2887,7 @@ public:
if (i == 1)
{
- gGL.flush();
- glLineWidth(3.f);
+ gGL.setLineWidth(3.f);
}
gGL.begin(LLRender::TRIANGLES);
@@ -2911,8 +2905,7 @@ public:
if (i == 1)
{
- gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
}
}
@@ -3629,12 +3622,11 @@ bool LLSpatialPartition::isVisible(const LLVector3& v)
return true;
}
-LL_ALIGN_PREFIX(16)
-class LLOctreeIntersect : public LLOctreeTraveler<LLViewerOctreeEntry, LLPointer<LLViewerOctreeEntry>>
+class alignas(16) LLOctreeIntersect : public LLOctreeTraveler<LLViewerOctreeEntry, LLPointer<LLViewerOctreeEntry>>
{
public:
- LL_ALIGN_16(LLVector4a mStart);
- LL_ALIGN_16(LLVector4a mEnd);
+ LLVector4a mStart;
+ LLVector4a mEnd;
S32 *mFaceHit;
LLVector4a *mIntersection;
@@ -3784,7 +3776,7 @@ public:
return false;
}
-} LL_ALIGN_POSTFIX(16);
+};
LLDrawable* LLSpatialPartition::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end,
bool pick_transparent,
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 4b312b1597..2e918df910 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -64,7 +64,7 @@ void pushVerts(LLFace* face);
Make every effort to keep size minimal.
Member ordering is important for cache coherency
*/
-class LLDrawInfo final : public LLRefCount
+class alignas(16) LLDrawInfo final : public LLRefCount
{
LL_ALIGN_NEW;
protected:
@@ -190,12 +190,13 @@ public:
};
};
-LL_ALIGN_PREFIX(16)
-class LLSpatialGroup : public LLOcclusionCullingGroup
+class alignas(16) LLSpatialGroup : public LLOcclusionCullingGroup
{
using super = LLOcclusionCullingGroup;
friend class LLSpatialPartition;
friend class LLOctreeStateCheck;
+
+ LL_ALIGN_NEW
public:
LLSpatialGroup(const LLSpatialGroup& rhs) = delete;
@@ -322,8 +323,8 @@ public:
virtual void rebound();
public:
- LL_ALIGN_16(LLVector4a mViewAngle);
- LL_ALIGN_16(LLVector4a mLastUpdateViewAngle);
+ LLVector4a mViewAngle;
+ LLVector4a mLastUpdateViewAngle;
protected:
virtual ~LLSpatialGroup();
@@ -353,7 +354,7 @@ public:
U32 mRenderOrder = 0;
// Reflection Probe associated with this node (if any)
LLPointer<LLReflectionMap> mReflectionProbe = nullptr;
-} LL_ALIGN_POSTFIX(16);
+};
class LLGeometryManager
{
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index cd4c9d40b1..6458811e2c 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -254,7 +254,6 @@
#include "llnamelistctrl.h"
#include "llnamebox.h"
#include "llnameeditor.h"
-#include "llpostprocess.h"
#include "llagentlanguage.h"
#include "llwearable.h"
#include "llinventorybridge.h"
@@ -659,7 +658,7 @@ bool idle_startup()
std::string message_template_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"message_template.msg");
LLFILE* found_template = NULL;
- found_template = LLFile::fopen(message_template_path, "r"); /* Flawfinder: ignore */
+ found_template = LLFile::fopen(message_template_path, LLFILE_MODE("r")); /* Flawfinder: ignore */
#if LL_WINDOWS
// On the windows dev builds, unpackaged, the message_template.msg
@@ -668,7 +667,7 @@ bool idle_startup()
if (!found_template)
{
message_template_path = gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "app_settings", "message_template.msg");
- found_template = LLFile::fopen(message_template_path.c_str(), "r"); /* Flawfinder: ignore */
+ found_template = LLFile::fopen(message_template_path.c_str(), LLFILE_MODE("r")); /* Flawfinder: ignore */
}
#elif LL_DARWIN
// On Mac dev builds, message_template.msg lives in:
@@ -678,7 +677,7 @@ bool idle_startup()
message_template_path =
gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
"message_template.msg");
- found_template = LLFile::fopen(message_template_path.c_str(), "r"); /* Flawfinder: ignore */
+ found_template = LLFile::fopen(message_template_path.c_str(), LLFILE_MODE("r")); /* Flawfinder: ignore */
}
#endif
@@ -1451,10 +1450,6 @@ bool idle_startup()
LLDrawable::initClass();
do_startup_frame();
- // init the shader managers
- LLPostProcess::initClass();
- do_startup_frame();
-
LLAvatarAppearance::initClass("avatar_lad.xml","avatar_skeleton.xml");
do_startup_frame();
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 8c8734b52f..f6ba52365b 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -157,7 +157,7 @@ protected:
LLAtomicS32 mBytesRead;
};
-class LLTextureCacheLocalFileWorker : public LLTextureCacheWorker
+class LLTextureCacheLocalFileWorker final : public LLTextureCacheWorker
{
public:
LLTextureCacheLocalFileWorker(LLTextureCache* cache, const std::string& filename, const LLUUID& id,
@@ -165,7 +165,7 @@ public:
S32 imagesize, // for writes
LLTextureCache::Responder* responder)
: LLTextureCacheWorker(cache, id, data, datasize, offset, imagesize, responder),
- mFileName(filename)
+ mFileName(fsyspath(filename))
{
}
@@ -174,19 +174,24 @@ public:
virtual bool doWrite();
private:
- std::string mFileName;
+ std::filesystem::path mFileName;
};
bool LLTextureCacheLocalFileWorker::doRead()
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
- S32 local_size = LLAPRFile::size(mFileName, mCache->getLocalAPRFilePool());
-
- if (local_size > 0 && mFileName.size() > 4)
+ S32 local_size = (S32)LLFile::size(mFileName);
+ if (local_size > 0 && mFileName.native().size() > 4)
{
mDataSize = local_size; // Only a complete file is valid
- std::string extension = mFileName.substr(mFileName.size() - 3, 3);
+#if LL_WINDOWS
+ std::wstring_view native_path = mFileName.native();
+ std::wstring_view extension = native_path.substr(native_path.size() - 3, 3);
+#else
+ std::string_view native_path = mFileName.native();
+ std::string_view extension = native_path.substr(native_path.size() - 3, 3);
+#endif
mImageFormat = LLImageBase::getCodecFromExtension(extension);
@@ -210,8 +215,7 @@ bool LLTextureCacheLocalFileWorker::doRead()
}
mReadData = (U8*)ll_aligned_malloc_16(mDataSize);
- S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
-
+ S32 bytes_read = (S32)LLFile::read(mFileName, mReadData, mOffset, mDataSize);
if (bytes_read != mDataSize)
{
// LL_WARNS() << "Error reading file from local cache: " << mFileName
@@ -235,7 +239,7 @@ bool LLTextureCacheLocalFileWorker::doWrite()
return false;
}
-class LLTextureCacheRemoteWorker : public LLTextureCacheWorker
+class LLTextureCacheRemoteWorker final : public LLTextureCacheWorker
{
public:
LLTextureCacheRemoteWorker(LLTextureCache* cache, const LLUUID& id,
@@ -296,7 +300,7 @@ bool LLTextureCacheRemoteWorker::doRead()
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
- local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
mImageFormat = IMG_CODEC_J2C;
@@ -306,7 +310,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".jpg";
- local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
mImageFormat = IMG_CODEC_JPEG;
@@ -317,7 +321,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".tga";
- local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
mImageFormat = IMG_CODEC_TGA;
@@ -337,7 +341,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (!done && (mState == LOCAL))
{
llassert(local_size != 0); // we're assuming there is a non empty local file here...
- if (!mDataSize || mDataSize > local_size)
+ if (mDataSize <= 0 || mDataSize > local_size)
{
mDataSize = local_size;
}
@@ -346,12 +350,10 @@ bool LLTextureCacheRemoteWorker::doRead()
if (mReadData)
{
- S32 bytes_read = LLAPRFile::readEx( local_filename,
- mReadData,
- mOffset,
- mDataSize,
- mCache->getLocalAPRFilePool());
-
+ S32 bytes_read = (S32)LLFile::read(local_filename,
+ mReadData,
+ mOffset,
+ mDataSize);
if (bytes_read != mDataSize)
{
LL_WARNS() << "Error reading file from local cache: " << local_filename
@@ -410,8 +412,7 @@ bool LLTextureCacheRemoteWorker::doRead()
mReadData = (U8*)ll_aligned_malloc_16(size);
if (mReadData)
{
- S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName,
- mReadData, offset, size, mCache->getLocalAPRFilePool());
+ S32 bytes_read = (S32)LLFile::read(mCache->mHeaderDataFilePath, mReadData, offset, size);
if (bytes_read != size)
{
LL_WARNS() << "LLTextureCacheWorker: " << mID
@@ -445,10 +446,10 @@ bool LLTextureCacheRemoteWorker::doRead()
// Fourth state / stage : read the rest of the data from the UUID based cached file
if (!done && (mState == BODY))
{
- std::string filename = mCache->getTextureFileName(mID);
- S32 filesize = LLAPRFile::size(filename, mCache->getLocalAPRFilePool());
+ std::filesystem::path file_path = fsyspath(mCache->getTextureFileName(mID));
+ S32 filesize = (S32)LLFile::size(file_path);
- if (filesize && (filesize + TEXTURE_CACHE_ENTRY_SIZE) > mOffset)
+ if (filesize > 0 && (filesize + TEXTURE_CACHE_ENTRY_SIZE) > mOffset)
{
S32 max_datasize = TEXTURE_CACHE_ENTRY_SIZE + filesize - mOffset;
mDataSize = llmin(max_datasize, mDataSize);
@@ -487,10 +488,9 @@ bool LLTextureCacheRemoteWorker::doRead()
mReadData = data;
// Read the data at last
- S32 bytes_read = LLAPRFile::readEx(filename,
- mReadData + data_offset,
- file_offset, file_size,
- mCache->getLocalAPRFilePool());
+ S32 bytes_read = (S32)LLFile::read(file_path,
+ mReadData + data_offset,
+ file_offset, file_size);
if (bytes_read != file_size)
{
LL_WARNS() << "LLTextureCacheWorker: " << mID
@@ -516,7 +516,7 @@ bool LLTextureCacheRemoteWorker::doRead()
{
// No body, we're done.
mDataSize = llmax(TEXTURE_CACHE_ENTRY_SIZE - mOffset, 0);
- LL_DEBUGS() << "No body file for: " << filename << LL_ENDL;
+ LL_DEBUGS() << "No body file for: " << file_path << LL_ENDL;
}
// Nothing else to do at that point...
done = true;
@@ -636,13 +636,13 @@ bool LLTextureCacheRemoteWorker::doWrite()
U8* padBuffer = (U8*)ll_aligned_malloc_16(TEXTURE_CACHE_ENTRY_SIZE);
memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE); // Init with zeros
memcpy(padBuffer, mWriteData, mDataSize); // Copy the write buffer
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool());
+ bytes_written = (S32)LLFile::write(mCache->mHeaderDataFilePath, padBuffer, offset, size);
ll_aligned_free_16(padBuffer);
}
else
{
// Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool());
+ bytes_written = (S32)LLFile::write(mCache->mHeaderDataFilePath, mWriteData, offset, size);
}
if (bytes_written <= 0)
@@ -678,15 +678,11 @@ bool LLTextureCacheRemoteWorker::doWrite()
else
{
S32 file_size = mDataSize - TEXTURE_CACHE_ENTRY_SIZE;
-
{
// build the cache file name from the UUID
std::string filename = mCache->getTextureFileName(mID);
// LL_INFOS() << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << LL_ENDL;
- S32 bytes_written = LLAPRFile::writeEx(filename,
- mWriteData + TEXTURE_CACHE_ENTRY_SIZE,
- 0, file_size,
- mCache->getLocalAPRFilePool());
+ S32 bytes_written = (S32)LLFile::write(filename, mWriteData + TEXTURE_CACHE_ENTRY_SIZE, 0, file_size);
if (bytes_written <= 0)
{
LL_WARNS() << "LLTextureCacheWorker: " << mID
@@ -866,9 +862,9 @@ std::string LLTextureCache::getLocalFileName(const LLUUID& id)
std::string LLTextureCache::getTextureFileName(const LLUUID& id)
{
- std::string idstr = id.asString();
- std::string delem = gDirUtilp->getDirDelimiter();
- std::string filename = mTexturesDirName + delem + idstr[0] + delem + idstr + ".texture";
+ char idstr[UUID_STR_LENGTH]{};
+ id.to_chars(idstr);
+ std::string filename = llformat("%s%s%c%s%s.texture", mTexturesDirName.c_str(), gDirUtilp->getDirDelimiter().c_str(), idstr[0], gDirUtilp->getDirDelimiter().c_str(), idstr);
return filename;
}
@@ -891,7 +887,7 @@ bool LLTextureCache::isInLocal(const LLUUID& id)
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
- local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
return true ;
@@ -901,7 +897,7 @@ bool LLTextureCache::isInLocal(const LLUUID& id)
// If not, is it a jpeg file?
{
local_filename = filename + ".jpg";
- local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
return true ;
@@ -911,7 +907,7 @@ bool LLTextureCache::isInLocal(const LLUUID& id)
// Hmm... What about a targa file? (used for UI texture mostly)
{
local_filename = filename + ".tga";
- local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
+ local_size = (S32)LLFile::size(local_filename);
if (local_size > 0)
{
return true ;
@@ -943,10 +939,10 @@ const char* fast_cache_filename = "FastCache.cache";
void LLTextureCache::setDirNames(ELLPath location)
{
- std::string delem = gDirUtilp->getDirDelimiter();
-
mHeaderEntriesFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, entries_filename);
- mHeaderDataFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, cache_filename);
+ mHeaderDataFilePath = fsyspath(gDirUtilp->getExpandedFilename(location, textures_dirname, cache_filename));
+ mHeaderEntriesFilePath = fsyspath(mHeaderEntriesFileName);
+
mTexturesDirName = gDirUtilp->getExpandedFilename(location, textures_dirname);
mFastCacheFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, fast_cache_filename);
}
@@ -966,11 +962,10 @@ void LLTextureCache::purgeCache(ELLPath location, bool remove_dir)
if(LLFile::isdir(mTexturesDirName))
{
std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
- // mHeaderAPRFilePoolp because we are under header mutex, and can be in main thread
- LLAPRFile::remove(file_name, mHeaderAPRFilePoolp);
+ LLFile::remove(file_name);
file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
- LLAPRFile::remove(file_name, mHeaderAPRFilePoolp);
+ LLFile::remove(file_name);
purgeAllTextures(true);
}
@@ -1073,10 +1068,9 @@ void LLTextureCache::readEntriesHeader()
{
// mHeaderEntriesInfo initializes to default values so safe not to read it
llassert_always(mHeaderAPRFile == NULL);
- if (LLAPRFile::isExist(mHeaderEntriesFileName, mHeaderAPRFilePoolp))
+ if (LLFile::isfile(mHeaderEntriesFilePath))
{
- LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
- mHeaderAPRFilePoolp);
+ LLFile::read(mHeaderEntriesFilePath, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
}
else //create an empty entries header.
{
@@ -1092,7 +1086,7 @@ void LLTextureCache::setEntriesHeader()
// For simplicity we use predefined size of header, so if version string
// doesn't fit, either getEngineInfo() returned malformed string or
// sHeaderEncoderStringSize need to be increased.
- // Also take into accout that c_str() returns additional null character
+ // Also take into account that c_str() returns additional null character
LL_ERRS() << "Version string doesn't fit in header" << LL_ENDL;
}
@@ -1107,8 +1101,7 @@ void LLTextureCache::writeEntriesHeader()
llassert_always(mHeaderAPRFile == NULL);
if (!mReadOnly)
{
- LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
- mHeaderAPRFilePoolp);
+ LLFile::write(mHeaderEntriesFilePath, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
}
}
@@ -1224,8 +1217,7 @@ void LLTextureCache::writeEntryToHeaderImmediately(S32& idx, Entry& entry, bool
idx = -1 ;//mark the idx invalid.
return ;
}
-
- mHeaderAPRFile->seek(APR_SET, offset);
+ aprfile->seek(APR_SET, offset);
}
else
{
@@ -1362,21 +1354,26 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
}
aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo));
}
- for (U32 idx=0; idx<num_entries; idx++)
+
+ U32 idx = 0;
+ try
{
- try
+ entries.resize(num_entries);
+ S32 total_entries_size = sizeof(Entry) * num_entries;
+ S32 bytes_read = aprfile->read((void*)entries.data(), total_entries_size);
+ if (bytes_read != total_entries_size)
{
- Entry entry;
- S32 bytes_read = aprfile->read((void*)(&entry), (S32)sizeof(Entry));
- if (bytes_read < sizeof(Entry))
- {
- LL_WARNS() << "Corrupted header entries, failed at " << idx << " / " << num_entries << LL_ENDL;
- closeHeaderEntriesFile();
- return 0;
- }
- entries.push_back(entry);
- // LL_INFOS() << "ENTRY: " << entry.mTime << " TEX: " << entry.mID << " IDX: " << idx << " Size: " << entry.mImageSize << LL_ENDL;
- if (entry.mImageSize > entry.mBodySize)
+ LL_WARNS() << "Corrupted header entries, expected " << total_entries_size << " bytes but got " << bytes_read << " bytes" << LL_ENDL;
+ closeHeaderEntriesFile();
+ purgeAllTextures(false);
+ return 0;
+ }
+
+ for (; idx < num_entries; idx++)
+ {
+ const Entry& entry = entries[idx];
+// LL_INFOS() << "ENTRY: " << entry.mTime << " TEX: " << entry.mID << " IDX: " << idx << " Size: " << entry.mImageSize << LL_ENDL;
+ if(entry.mImageSize > entry.mBodySize)
{
mHeaderIDMap[entry.mID] = idx;
mTexturesSizeMap[entry.mID] = entry.mBodySize;
@@ -1387,17 +1384,17 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
mFreeList.insert(idx);
}
}
- catch (std::bad_alloc&)
- {
- // Too little ram yet very large cache?
- // Should this actually crash viewer?
- entries.clear();
- LL_WARNS() << "Bad alloc trying to read texture entries from cache, mFreeList: " << (S32)mFreeList.size()
- << ", added entries: " << idx << ", total entries: " << num_entries << LL_ENDL;
- closeHeaderEntriesFile();
- purgeAllTextures(false);
- return 0;
- }
+ }
+ catch (const std::bad_alloc&)
+ {
+ // Too little ram yet very large cache?
+ // Should this actually crash viewer?
+ entries.clear();
+ LL_WARNS() << "Bad alloc trying to read texture entries from cache, mFreeList: " << (S32)mFreeList.size()
+ << ", added entries: " << idx << ", total entries: " << num_entries << LL_ENDL;
+ closeHeaderEntriesFile();
+ purgeAllTextures(false);
+ return 0;
}
closeHeaderEntriesFile();
return num_entries;
@@ -1632,7 +1629,7 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
gDirUtilp->deleteFilesInDir(mTexturesDirName, mask); // headers, fast cache
if (purge_directories)
{
- LLFile::rmdir(mTexturesDirName);
+ LLFile::remove(mTexturesDirName);
}
}
{
@@ -1822,8 +1819,7 @@ void LLTextureCache::purgeTextures(bool validate)
{
std::string filename = getTextureFileName(entries[idx].mID);
LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mBodySize << LL_ENDL;
- // mHeaderAPRFilePoolp because this is under header mutex in main thread
- S32 bodysize = LLAPRFile::size(filename, mHeaderAPRFilePoolp);
+ S32 bodysize = (S32)LLFile::size(filename);
if (bodysize != entries[idx].mBodySize)
{
LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mBodySize << filename << LL_ENDL;
@@ -2177,7 +2173,7 @@ void LLTextureCache::openFastCache(bool first_time)
mFastCachePadBuffer = (U8*)ll_aligned_malloc_16(TEXTURE_FAST_CACHE_ENTRY_SIZE);
}
mFastCachePoolp = new LLVolatileAPRPool(); // is_local= true by default, so not thread safe by default
- if (LLAPRFile::isExist(mFastCacheFileName, mFastCachePoolp))
+ if (LLFile::isfile(mFastCacheFileName))
{
mFastCachep = new LLAPRFile(mFastCacheFileName, APR_READ|APR_WRITE|APR_BINARY, mFastCachePoolp) ;
}
@@ -2263,9 +2259,7 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id)
LLMutexLock lock(&mHeaderIDMapMutex);
mHeaderIDMap.erase(id);
}
- // We are inside header's mutex so mHeaderAPRFilePoolp is safe to use,
- // but getLocalAPRFilePool() is not safe, it might be in use by worker
- LLAPRFile::remove(getTextureFileName(id), mHeaderAPRFilePoolp);
+ LLFile::remove(getTextureFileName(id));
}
//called after mHeaderMutex is locked.
@@ -2278,9 +2272,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
if (entry.mBodySize == 0) // Always attempt to remove when mBodySize > 0.
{
// Sanity check. Shouldn't exist when body size is 0.
- // We are inside header's mutex so mHeaderAPRFilePoolp is safe to use,
- // but getLocalAPRFilePool() is not safe, it might be in use by worker
- if (LLAPRFile::isExist(filename, mHeaderAPRFilePoolp))
+ if (LLFile::isfile(filename))
{
LL_WARNS("TextureCache") << "Entry has body size of zero but file " << filename << " exists. Deleting this file, too." << LL_ENDL;
}
@@ -2303,7 +2295,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
if (file_maybe_exists)
{
- LLAPRFile::remove(filename, mHeaderAPRFilePoolp);
+ LLFile::remove(filename);
}
}
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index a09bcc1572..100527fbfc 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -219,7 +219,8 @@ private:
// HEADERS (Include first mip)
std::string mHeaderEntriesFileName;
- std::string mHeaderDataFileName;
+ std::filesystem::path mHeaderEntriesFilePath;
+ std::filesystem::path mHeaderDataFilePath;
std::string mFastCacheFileName;
EntriesInfo mHeaderEntriesInfo;
std::set<S32> mFreeList; // deleted entries
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
index c1ec5fa183..c401a00fd7 100644
--- a/indra/newview/lltoolbarview.cpp
+++ b/indra/newview/lltoolbarview.cpp
@@ -420,7 +420,7 @@ void LLToolBarView::saveToolbars() const
if(!output_node->isNull())
{
const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
- LLFILE *fp = LLFile::fopen(filename, "w");
+ LLFILE *fp = LLFile::fopen(filename, LLFILE_MODE("w"));
if (fp != NULL)
{
LLXMLNode::writeHeaderToFile(fp);
diff --git a/indra/newview/lltoolview.cpp b/indra/newview/lltoolview.cpp
deleted file mode 100644
index 179aae1e02..0000000000
--- a/indra/newview/lltoolview.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * @file lltoolview.cpp
- * @brief A UI contains for tool palette tools
- *
- * $LicenseInfo:firstyear=2001&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 "llviewerprecompiledheaders.h"
-
-#include "lltoolview.h"
-
-#include "llfontgl.h"
-#include "llrect.h"
-
-#include "llagent.h"
-#include "llbutton.h"
-#include "llpanel.h"
-#include "lltool.h"
-#include "lltoolmgr.h"
-#include "lltextbox.h"
-#include "llresmgr.h"
-
-
-LLToolContainer::LLToolContainer(LLToolView* parent)
-: mParent(parent),
- mButton(NULL),
- mPanel(NULL),
- mTool(NULL)
-{ }
-
-
-LLToolContainer::~LLToolContainer()
-{
- // mParent is a pointer to the tool view
- // mButton is owned by the tool view
- // mPanel is owned by the tool view
- delete mTool;
- mTool = NULL;
-}
-
-
-LLToolView::LLToolView(const std::string& name, const LLRect& rect)
-: mButtonCount(0)
-{
- LLView::init(LLView::Params().name(name).rect(rect).mouse_opaque(true));
-}
-
-
-LLToolView::~LLToolView()
-{
- for_each(mContainList.begin(), mContainList.end(), DeletePointer());
- mContainList.clear();
-}
-
-//*TODO:translate?
-// void LLToolView::addTool(const std::string& icon_off, const std::string& icon_on, LLPanel* panel, LLTool* tool, LLView* hoverView, const char* label)
-// {
-// llassert(tool);
-
-// LLToolContainer* contain = new LLToolContainer(this);
-
-// LLRect btn_rect = getButtonRect(mButtonCount);
-
-// contain->mButton = new LLButton("ToolBtn",
-// btn_rect,
-// icon_off,
-// icon_on,
-// "",
-// &LLToolView::onClickToolButton,
-// contain,
-// LLFontGL::getFontSansSerif());
-
-// contain->mPanel = panel;
-// contain->mTool = tool;
-
-// addChild(contain->mButton);
-// mButtonCount++;
-
-// const S32 LABEL_TOP_SPACING = 0;
-// const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL );
-// S32 label_width = font->getWidth( label );
-// LLRect label_rect;
-// label_rect.setLeftTopAndSize(
-// btn_rect.mLeft + btn_rect.getWidth() / 2 - label_width / 2,
-// btn_rect.mBottom - LABEL_TOP_SPACING,
-// label_width,
-// llfloor(font->getLineHeight()));
-// addChild( new LLTextBox( "tool label", label_rect, label, font ) );
-
-// // Can optionally ignore panel
-// if (contain->mPanel)
-// {
-// contain->mPanel->setBackgroundVisible( FALSE );
-// contain->mPanel->setBorderVisible( FALSE );
-// addChild(contain->mPanel);
-// }
-
-// mContainList.push_back(contain);
-// }
-
-
-LLRect LLToolView::getButtonRect(S32 button_index)
-{
- const S32 HPAD = 7;
- const S32 VPAD = 7;
- const S32 TOOL_SIZE = 32;
- const S32 HORIZ_SPACING = TOOL_SIZE + 5;
- const S32 VERT_SPACING = TOOL_SIZE + 14;
-
- S32 tools_per_row = getRect().getWidth() / HORIZ_SPACING;
-
- S32 row = button_index / tools_per_row;
- S32 column = button_index % tools_per_row;
-
- // Build the rectangle, recalling the origin is at lower left
- // and we want the icons to build down from the top.
- LLRect rect;
- rect.setLeftTopAndSize( HPAD + (column * HORIZ_SPACING),
- -VPAD + getRect().getHeight() - (row * VERT_SPACING),
- TOOL_SIZE,
- TOOL_SIZE
- );
-
- return rect;
-}
-
-
-void LLToolView::draw()
-{
- // turn off highlighting for all containers
- // and hide all option panels except for the selected one.
- LLTool* selected = LLToolMgr::getInstance()->getCurrentToolset()->getSelectedTool();
- for (contain_list_t::iterator iter = mContainList.begin();
- iter != mContainList.end(); ++iter)
- {
- LLToolContainer* contain = *iter;
- BOOL state = (contain->mTool == selected);
- contain->mButton->setToggleState( state );
- if (contain->mPanel)
- {
- contain->mPanel->setVisible( state );
- }
- }
-
- // Draw children normally
- LLView::draw();
-}
-
-// protected
-LLToolContainer* LLToolView::findToolContainer( LLTool *tool )
-{
- // Find the container for this tool
- llassert( tool );
- for (contain_list_t::iterator iter = mContainList.begin();
- iter != mContainList.end(); ++iter)
- {
- LLToolContainer* contain = *iter;
- if( contain->mTool == tool )
- {
- return contain;
- }
- }
- LL_ERRS() << "LLToolView::findToolContainer - tool not found" << LL_ENDL;
- return NULL;
-}
-
-// static
-void LLToolView::onClickToolButton(void* userdata)
-{
- LLToolContainer* clicked = (LLToolContainer*) userdata;
-
- // Switch to this one
- LLToolMgr::getInstance()->getCurrentToolset()->selectTool( clicked->mTool );
-}
-
-
-
diff --git a/indra/newview/lltoolview.h b/indra/newview/lltoolview.h
deleted file mode 100644
index 7b348e7088..0000000000
--- a/indra/newview/lltoolview.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * @file lltoolview.h
- * @brief UI container for tools.
- *
- * $LicenseInfo:firstyear=2001&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$
- */
-
-#ifndef LL_LLTOOLVIEW_H
-#define LL_LLTOOLVIEW_H
-
-// requires stdtypes.h
-#include "llpanel.h"
-
-// forward declares
-class LLTool;
-class LLButton;
-
-class LLToolView;
-
-
-// Utility class, container for the package of information we need about
-// each tool. The package can either point directly to a tool, or indirectly
-// to another view of tools.
-class LLToolContainer
-{
-public:
- LLToolContainer(LLToolView* parent);
- ~LLToolContainer();
-
-public:
- LLToolView* mParent; // toolview that owns this container
- LLButton* mButton;
- LLPanel* mPanel;
- LLTool* mTool; // if not NULL, this is a tool ref
-};
-
-
-// A view containing automatically arranged button icons representing
-// tools. The icons sit on top of panels containing options for each
-// tool.
-class LLToolView
-: public LLView
-{
-public:
- LLToolView(const std::string& name, const LLRect& rect);
- ~LLToolView();
-
- virtual void draw(); // handle juggling tool button highlights, panel visibility
-
- static void onClickToolButton(void* container);
-
- LLView* getCurrentHoverView();
-
-private:
- LLRect getButtonRect(S32 button_index); // return rect for button to add, zero-based index
- LLToolContainer *findToolContainer(LLTool *tool);
-
-
-private:
- typedef std::vector<LLToolContainer*> contain_list_t;
- contain_list_t mContainList;
- S32 mButtonCount; // used to compute rectangles
-};
-
-#endif
diff --git a/indra/newview/llvelopack.cpp b/indra/newview/llvelopack.cpp
index f76d68ed72..927a5bbc2c 100644
--- a/indra/newview/llvelopack.cpp
+++ b/indra/newview/llvelopack.cpp
@@ -31,6 +31,7 @@
#include "llstring.h"
#include "llcorehttputil.h"
#include "llversioninfo.h"
+#include "llversioninfovars.h" // LL_VIEWER_CHANNEL
#include <boost/json.hpp>
#include <fstream>
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
index 178f10257d..bac291cd19 100644
--- a/indra/newview/llversioninfo.cpp
+++ b/indra/newview/llversioninfo.cpp
@@ -32,6 +32,8 @@
#include "llversioninfo.h"
#include "stringize.h"
+#include "llversioninfovars.h"
+
#if ! defined(LL_VIEWER_CHANNEL) \
|| ! defined(LL_VIEWER_VERSION_MAJOR) \
|| ! defined(LL_VIEWER_VERSION_MINOR) \
@@ -52,7 +54,6 @@ LLVersionInfo::LLVersionInfo():
// macro expands to the string name of the channel, but without quotes. We
// need to turn it into a quoted string. LL_TO_STRING() does that.
mWorkingChannelName(LL_TO_STRING(LL_VIEWER_CHANNEL)),
- build_configuration(LLBUILD_CONFIG), // set in indra/cmake/BuildVersion.cmake
// instantiate an LLEventMailDrop with canonical name to listen for news
// from the Viewer Version Manager
mPump{new LLEventMailDrop("relnotes")},
@@ -168,7 +169,15 @@ LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity() const
std::string LLVersionInfo::getBuildConfig() const
{
- return build_configuration;
+#if LL_DEBUG
+ return "Debug";
+#elif LL_RELEASE_WITH_DEBUG_INFO
+ return "RelWithDebInfo";
+#elif LL_RELEASE_FOR_DOWNLOAD
+ return "Release";
+#else
+ return "Unknown";
+#endif
}
std::string LLVersionInfo::getReleaseNotes() const
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
index a2b93597e6..bffee086be 100644
--- a/indra/newview/llversioninfo.h
+++ b/indra/newview/llversioninfo.h
@@ -108,7 +108,6 @@ private:
// Storage for the "version and channel" string.
// This will get reset too.
mutable std::string mVersionChannel;
- std::string build_configuration;
std::string mReleaseNotes;
// Store unique_ptrs to the next couple things so we don't have to explain
// to every consumer of this header file all the details of each.
diff --git a/indra/newview/tests/llwlanimator_stub.cpp b/indra/newview/llversioninfovars.h.in
index 2b4510a6b7..2984f05bb3 100644
--- a/indra/newview/tests/llwlanimator_stub.cpp
+++ b/indra/newview/llversioninfovars.h.in
@@ -1,10 +1,9 @@
/**
- * @file llwlanimator_stub.cpp
- * @brief stub class to allow unit testing
+ * @file llversioninfovars.h.in
*
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2025&license=viewerlgpl$
* Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
+ * Copyright (C) 2025, 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
@@ -24,6 +23,8 @@
* $/LicenseInfo$
*/
-LLWLAnimator::LLWLAnimator(void) {}
-void LLWLAnimator::update(LLWLParamSet& set) {}
-void LLWLAnimator::setTrack(std::map<F32, LLWLParamKey>& track, F32 dayRate, F64 dayTime, bool run) {}
+#define LL_VIEWER_CHANNEL @VIEWER_CHANNEL@
+#define LL_VIEWER_VERSION_MAJOR @VIEWER_VERSION_MAJOR@
+#define LL_VIEWER_VERSION_MINOR @VIEWER_VERSION_MINOR@
+#define LL_VIEWER_VERSION_PATCH @VIEWER_VERSION_PATCH@
+#define LL_VIEWER_VERSION_BUILD @VIEWER_VERSION_REVISION@
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index 657fb0ffc1..296ba1d715 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -183,7 +183,7 @@ void LLViewerAssetStorage::storeAssetData(
else
{
// LLAssetStorage metric: Successful Request
- S32 size = LLFileSystem::getFileSize(asset_id, asset_type);
+ S32 size = vfile.getSize();
const char *message = "Added to upload queue";
reportMetric( asset_id, asset_type, LLStringUtil::null, LLUUID::null, size, MR_OKAY, __FILE__, __LINE__, message );
@@ -280,7 +280,7 @@ void LLViewerAssetStorage::storeAssetData(
LL_DEBUGS("AssetStorage") << "ASSET_ID: " << asset_id << LL_ENDL;
S32 size = 0;
- LLFILE* fp = LLFile::fopen(filename, "rb");
+ LLFILE* fp = LLFile::fopen(filename, LLFILE_MODE("rb"));
if (fp)
{
fseek(fp, 0, SEEK_END);
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 65a69acc88..d93e900519 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -45,11 +45,7 @@
#include "llappviewer.h"
#include "llviewerstats.h"
#include "llfilesystem.h"
-#include "llgesturemgr.h"
-#include "llpreviewnotecard.h"
-#include "llpreviewgesture.h"
#include "llcoproceduremanager.h"
-#include "llthread.h"
#include "llkeyframemotion.h"
#include "lldatapacker.h"
#include "llvoavatarself.h"
@@ -405,6 +401,7 @@ LLSD LLNewFileResourceUploadInfo::exportTempFile()
std::string errorMessage;
std::string errorLabel;
+ std::error_code ec;
bool error = false;
@@ -475,30 +472,38 @@ LLSD LLNewFileResourceUploadInfo::exportTempFile()
error = true;
// read from getFileName()
- LLAPRFile infile;
- infile.open(getFileName(),LL_APR_RB);
- if (!infile.getFileHandle())
+ LLFile infile(getFileName(), LLFile::in | LLFile::binary, ec);
+ if (ec || !infile)
{
LL_WARNS() << "Couldn't open file for reading: " << getFileName() << LL_ENDL;
errorMessage = llformat("Failed to open animation file %s\n", getFileName().c_str());
}
else
{
- S32 size = LLAPRFile::size(getFileName());
+ S64 size = infile.size(ec);
+ if (ec || size <= 0)
+ {
+ LLError::LLUserWarningMsg::showMissingFiles();
+ LL_ERRS() << "Invalid file" << LL_ENDL;
+ }
+ else if (size > INT_MAX)
+ {
+ LL_ERRS() << "File " << getFileName() << " is too big, size: " << size << LL_ENDL;
+ }
U8* buffer = new(std::nothrow) U8[size];
if (!buffer)
{
LLError::LLUserWarningMsg::showOutOfMemory();
LL_ERRS() << "Bad memory allocation for buffer, size: " << size << LL_ENDL;
}
- S32 size_read = infile.read(buffer,size);
- if (size_read != size)
+ S64 size_read = infile.read(buffer, size, ec);
+ if (ec || size_read != size)
{
errorMessage = llformat("Failed to read animation file %s: wanted %d bytes, got %d\n", getFileName().c_str(), size, size_read);
}
else
{
- LLDataPackerBinaryBuffer dp(buffer, size);
+ LLDataPackerBinaryBuffer dp(buffer, (S32)size);
LLKeyframeMotion *motionp = new LLKeyframeMotion(getAssetId());
motionp->setCharacter(gAgentAvatarp);
if (motionp->deserialize(dp, getAssetId(), false))
@@ -544,18 +549,17 @@ LLSD LLNewFileResourceUploadInfo::exportTempFile()
setAssetType(assetType);
// copy this file into the cache for upload
- S32 file_size;
- LLAPRFile infile;
- infile.open(filename, LL_APR_RB, NULL, &file_size);
- if (infile.getFileHandle())
+ LLFile infile(filename, LLFile::in | LLFile::binary, ec);
+ if (!ec && infile.size(ec) > 0)
{
LLFileSystem file(getAssetId(), assetType, LLFileSystem::APPEND);
+ S64 read_bytes;
const S32 buf_size = 65536;
U8 copy_buf[buf_size];
- while ((file_size = infile.read(copy_buf, buf_size)))
+ while (((read_bytes = infile.read(copy_buf, buf_size, ec))) > 0)
{
- file.write(copy_buf, file_size);
+ file.write(copy_buf, (S32)read_bytes);
}
}
else
@@ -569,7 +573,6 @@ LLSD LLNewFileResourceUploadInfo::exportTempFile()
}
return LLSD();
-
}
//=========================================================================
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 0c93b24751..6d825441ca 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -293,9 +293,14 @@ static bool handleLUTBufferChanged(const LLSD& newvalue)
return true;
}
-static bool handleAnisotropicChanged(const LLSD& newvalue)
+static bool handleAnisotropicFilteringChanged(const LLSD& newval)
{
- LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean();
+ F32 val = static_cast<F32>(newval.asReal());
+ if (val > gGLManager.mMaxAnisotropy)
+ {
+ val = llclamp(val, 0.f, gGLManager.mMaxAnisotropy);
+ }
+ LLRender::sAnisotropicFilteringLevel = val;
LLImageGL::dirtyTexOptions();
return true;
}
@@ -317,6 +322,12 @@ static bool handleVSyncChanged(const LLSD& newvalue)
return true;
}
+static bool validateAnisotropicFiltering(const LLSD& val)
+{
+ S32 filter_level = val.asInteger();
+ return filter_level == 0 || filter_level == 2 || filter_level == 4 || filter_level == 8 || filter_level == 16;
+}
+
static bool handleVolumeLODChanged(const LLSD& newvalue)
{
LLVOVolume::sLODFactor = llclamp((F32) newvalue.asReal(), 0.01f, MAX_LOD_FACTOR);
@@ -435,16 +446,6 @@ static bool handleUploadBakedTexOldChanged(const LLSD& newvalue)
return true;
}
-
-static bool handleWLSkyDetailChanged(const LLSD&)
-{
- if (gSky.mVOWLSkyp.notNull())
- {
- gSky.mVOWLSkyp->updateGeometry(gSky.mVOWLSkyp->mDrawable);
- }
- return true;
-}
-
static bool handleRepartition(const LLSD&)
{
if (gPipeline.isInit())
@@ -830,10 +831,12 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "RenderUIBuffer", handleWindowResized);
setting_setup_signal_listener(gSavedSettings, "RenderDepthOfField", handleReleaseGLBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderFSAAType", handleReleaseGLBufferChanged);
+ setting_setup_signal_listener(gSavedSettings, "RenderHighPrecisionPostProcess", handleReleaseGLBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderSpecularResX", handleLUTBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderSpecularResY", handleLUTBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderSpecularExponent", handleLUTBufferChanged);
- setting_setup_signal_listener(gSavedSettings, "RenderAnisotropic", handleAnisotropicChanged);
+ setting_setup_signal_listener(gSavedSettings, "RenderAnisotropicLevel", handleAnisotropicFilteringChanged);
+ gSavedSettings.getControl("RenderAnisotropicLevel")->getValidateSignal()->connect(boost::bind(&validateAnisotropicFiltering, _2));
setting_setup_signal_listener(gSavedSettings, "RenderShadowResolutionScale", handleShadowsResized);
setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleReleaseGLBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleSetShaderChanged);
@@ -890,7 +893,6 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "MuteVoice", handleAudioVolumeChanged);
setting_setup_signal_listener(gSavedSettings, "MuteAmbient", handleAudioVolumeChanged);
setting_setup_signal_listener(gSavedSettings, "MuteUI", handleAudioVolumeChanged);
- setting_setup_signal_listener(gSavedSettings, "WLSkyDetail", handleWLSkyDetailChanged);
setting_setup_signal_listener(gSavedSettings, "JoystickAxis0", handleJoystickChanged);
setting_setup_signal_listener(gSavedSettings, "JoystickAxis1", handleJoystickChanged);
setting_setup_signal_listener(gSavedSettings, "JoystickAxis2", handleJoystickChanged);
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 9dfa9a0efd..e85c7db48d 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -55,7 +55,6 @@
#include "llmemory.h"
#include "llparcel.h"
#include "llperfstats.h"
-#include "llpostprocess.h"
#include "llrender.h"
#include "llscenemonitor.h"
#include "llsdjson.h"
@@ -1074,7 +1073,7 @@ void display(bool rebuild, F32 zoom_factor, int subfield, bool for_snapshot)
LLGLSLShader::finishProfile(stats);
auto report_name = getProfileStatsFilename();
- std::ofstream outf(report_name);
+ llofstream outf(report_name);
if (! outf)
{
LL_WARNS() << "Couldn't write to " << std::quoted(report_name) << LL_ENDL;
@@ -1140,15 +1139,12 @@ std::string getProfileStatsFilename()
// same second), may produce (e.g.) sec==61, but avoids collisions and
// preserves chronological filename sort order.
std::string name;
- std::error_code ec;
do
{
// base + missing 2-digit seconds, append ".json"
// post-increment sec in case we have to try again
name = stringize(base, std::setw(2), std::setfill('0'), sec++, ".json");
- } while (std::filesystem::exists(fsyspath(name), ec));
- // Ignoring ec means we might potentially return a name that does already
- // exist -- but if we can't check its existence, what more can we do?
+ } while (LLFile::exists(name));
return name;
}
diff --git a/indra/newview/llviewerinput.cpp b/indra/newview/llviewerinput.cpp
index 3c79f0b21c..5741d7f5fb 100644
--- a/indra/newview/llviewerinput.cpp
+++ b/indra/newview/llviewerinput.cpp
@@ -1430,7 +1430,7 @@ S32 LLViewerInput::loadBindingsXML(const std::string& filename)
// file in app_settings is supposed to be up to date
// this is only for the file from user_settings
LL_INFOS("ViewerInput") << "Updating file " << filename << " to a newer version" << LL_ENDL;
- LLFILE *fp = LLFile::fopen(filename, "w");
+ LLFILE *fp = LLFile::fopen(filename, LLFILE_MODE("w"));
if (fp != NULL)
{
LLXMLNode::writeHeaderToFile(fp);
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 7f52ca9623..57959ec2fc 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -39,9 +39,10 @@ class LLViewerJointMesh;
//-----------------------------------------------------------------------------
// class LLViewerJoint
//-----------------------------------------------------------------------------
-class LLViewerJoint :
+class alignas(16) LLViewerJoint :
public virtual LLAvatarJoint
{
+ LL_ALIGN_NEW
public:
LLViewerJoint();
LLViewerJoint(S32 joint_num);
diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h
index fe66949f73..12075177b3 100644
--- a/indra/newview/llviewerjointattachment.h
+++ b/indra/newview/llviewerjointattachment.h
@@ -40,9 +40,10 @@ class LLViewerObject;
//-----------------------------------------------------------------------------
// class LLViewerJointAttachment
//-----------------------------------------------------------------------------
-class LLViewerJointAttachment :
+class alignas(16) LLViewerJointAttachment :
public LLViewerJoint
{
+ LL_ALIGN_NEW
public:
LLViewerJointAttachment();
virtual ~LLViewerJointAttachment();
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 42aed5906b..a910d8ec2a 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -56,12 +56,6 @@
#include "llmatrix4a.h"
#include "llperfstats.h"
-#if !LL_DARWIN && !LL_LINUX
-extern PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB;
-extern PFNGLWEIGHTFVARBPROC glWeightfvARB;
-extern PFNGLVERTEXBLENDARBPROC glVertexBlendARB;
-#endif
-
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// LLViewerJointMesh
@@ -235,8 +229,6 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, bool first_pass, bool is_dummy)
stop_glerror();
- LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), 0.f);
-
//----------------------------------------------------------------
// setup current texture
//----------------------------------------------------------------
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index 1365c1ee48..ec410a3138 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -41,8 +41,9 @@ class LLViewerTexLayerSet;
//-----------------------------------------------------------------------------
// class LLViewerJointMesh
//-----------------------------------------------------------------------------
-class LLViewerJointMesh : public LLAvatarJointMesh, public LLViewerJoint
+class alignas(16) LLViewerJointMesh : public LLAvatarJointMesh, public LLViewerJoint
{
+ LL_ALIGN_NEW
public:
// Constructor
LLViewerJointMesh();
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index be4961e3c4..0590abc42e 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1821,6 +1821,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
}
else
{
+#if LL_LINUX
+ if(plugin_basename == "media_plugin_gstreamer10" && gSavedSettings.getBOOL("MediaPluginForceVLC"))
+ {
+ plugin_basename = "media_plugin_libvlc";
+ }
+#endif
+
std::string launcher_name = gDirUtilp->getLLPluginLauncher();
std::string plugin_name = gDirUtilp->getLLPluginFilename(plugin_basename);
@@ -1828,16 +1835,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
user_data_path_cache += gDirUtilp->getDirDelimiter();
// See if the plugin executable exists
- llstat s;
- if(LLFile::stat(launcher_name, &s))
+ if (!LLFile::isfile(launcher_name))
{
LL_WARNS_ONCE("Media") << "Couldn't find launcher at " << launcher_name << LL_ENDL;
}
- else if(LLFile::stat(plugin_name, &s))
+ else if (!LLFile::isfile(plugin_name))
{
-#if !LL_LINUX
LL_WARNS_ONCE("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL;
-#endif
}
else
{
@@ -1869,6 +1873,11 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging");
media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled || clean_browser);
+#if LL_LINUX
+ bool media_plugin_pipewire_volume_catcher = gSavedSettings.getBOOL("MediaPluginPipeWireVolumeCatcher");
+ media_source->enablePipeWireVolumeCatcher( media_plugin_pipewire_volume_catcher );
+#endif
+
// need to set agent string here before instance created
media_source->setBrowserUserAgent(LLViewerMedia::getInstance()->getCurrentUserAgent());
@@ -1890,9 +1899,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
}
}
}
-#if !LL_LINUX
LL_WARNS_ONCE("Plugin") << "plugin initialization failed for mime type: " << media_type << LL_ENDL;
-#endif
if(gAgent.isInitialized())
{
@@ -3641,7 +3648,7 @@ LLViewerMediaImpl::canUndo() const
if (mMediaSource)
return mMediaSource->canUndo();
else
- return FALSE;
+ return false;
}
////////////////////////////////////////////////////////////////////////////////
@@ -3661,7 +3668,7 @@ LLViewerMediaImpl::canRedo() const
if (mMediaSource)
return mMediaSource->canRedo();
else
- return FALSE;
+ return false;
}
////////////////////////////////////////////////////////////////////////////////
@@ -3741,7 +3748,7 @@ LLViewerMediaImpl::canDoDelete() const
if (mMediaSource)
return mMediaSource->canDoDelete();
else
- return FALSE;
+ return false;
}
////////////////////////////////////////////////////////////////////////////////
@@ -3761,7 +3768,7 @@ LLViewerMediaImpl::canSelectAll() const
if (mMediaSource)
return mMediaSource->canSelectAll();
else
- return FALSE;
+ return false;
}
void LLViewerMediaImpl::setUpdated(bool updated)
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 79d7d41836..ce95d7363e 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -138,11 +138,11 @@ std::queue<LLFilePickerThread*> LLFilePickerThread::sDeadQ;
void LLFilePickerThread::getFile()
{
-#if LL_WINDOWS
+#if LL_DARWIN || LL_SDL_WINDOW
+ runModeless();
+#elif LL_WINDOWS
// Todo: get rid of LLFilePickerThread and make this modeless
start();
-#elif LL_DARWIN
- runModeless();
#else
run();
#endif
@@ -1163,7 +1163,7 @@ void handle_compress_image()
// so doing dirty, but OS independent fopen and fseek
size_t get_file_size(std::string &filename)
{
- LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, LLFILE_MODE("rb")); /*Flawfinder: ignore*/
if (!file)
{
LL_WARNS() << "Error opening " << filename << LL_ENDL;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index e435ce08e3..8df56f8ef1 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3756,9 +3756,7 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
{
if (!gAudiop)
{
-#if !LL_LINUX
LL_WARNS("AudioEngine") << "LLAudioEngine instance doesn't exist!" << LL_ENDL;
-#endif
return;
}
@@ -3830,9 +3828,7 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
{
if (!gAudiop)
{
-#if !LL_LINUX
LL_WARNS("AudioEngine") << "LLAudioEngine instance doesn't exist!" << LL_ENDL;
-#endif
return;
}
diff --git a/indra/newview/llvieweroctree.h b/indra/newview/llvieweroctree.h
index adfe709b04..fb6fa8bac4 100644
--- a/indra/newview/llvieweroctree.h
+++ b/indra/newview/llvieweroctree.h
@@ -70,8 +70,7 @@ S32 AABBSphereIntersect(const LLVector3& min, const LLVector3& max, const LLVect
S32 AABBSphereIntersectR2(const LLVector3& min, const LLVector3& max, const LLVector3 &origin, const F32 &radius_squared);
//defines data needed for octree of an entry
-//LL_ALIGN_PREFIX(16)
-class LLViewerOctreeEntry : public LLRefCount
+class alignas(16) LLViewerOctreeEntry : public LLRefCount
{
LL_ALIGN_NEW
friend class LLViewerOctreeEntryData;
@@ -115,16 +114,15 @@ private:
LLViewerOctreeGroup* mGroup;
//aligned members
- LL_ALIGN_16(LLVector4a mExtents[2]);
- LL_ALIGN_16(LLVector4a mPositionGroup);
+ LLVector4a mExtents[2];
+ LLVector4a mPositionGroup;
F32 mBinRadius;
mutable S32 mBinIndex;
mutable U32 mVisible;
-} ;//LL_ALIGN_POSTFIX(16);
+};
//defines an abstract class for entry data
-//LL_ALIGN_PREFIX(16)
class LLViewerOctreeEntryData : public LLRefCount
{
protected:
@@ -173,11 +171,10 @@ protected:
LLPointer<LLViewerOctreeEntry> mEntry;
LLViewerOctreeEntry::eEntryDataType_t mDataType;
static U32 sCurVisible; // Counter for what value of mVisible means currently visible
-};//LL_ALIGN_POSTFIX(16);
+};
//defines an octree group for an octree node, which contains multiple entries.
-//LL_ALIGN_PREFIX(16)
class LLViewerOctreeGroup
: public OctreeListener
{
@@ -259,18 +256,17 @@ protected:
U32 mState;
OctreeNode* mOctreeNode;
- LL_ALIGN_16(LLVector4a mBounds[2]); // bounding box (center, size) of this node and all its children (tight fit to objects)
- LL_ALIGN_16(LLVector4a mObjectBounds[2]); // bounding box (center, size) of objects in this node
- LL_ALIGN_16(LLVector4a mExtents[2]); // extents (min, max) of this node and all its children
- LL_ALIGN_16(LLVector4a mObjectExtents[2]); // extents (min, max) of objects in this node
+ LLVector4a mBounds[2]; // bounding box (center, size) of this node and all its children (tight fit to objects)
+ LLVector4a mObjectBounds[2]; // bounding box (center, size) of objects in this node
+ LLVector4a mExtents[2]; // extents (min, max) of this node and all its children
+ LLVector4a mObjectExtents[2]; // extents (min, max) of objects in this node
S32 mAnyVisible; //latest visible to any camera
S32 mVisible[LLViewerCamera::NUM_CAMERAS];
-};//LL_ALIGN_POSTFIX(16);
+};
//octree group which has capability to support occlusion culling
-//LL_ALIGN_PREFIX(16)
class LLOcclusionCullingGroup : public LLViewerOctreeGroup
{
public:
@@ -339,7 +335,7 @@ protected:
public:
static std::set<U32> sPendingQueries;
-};//LL_ALIGN_POSTFIX(16);
+};
class LLViewerOctreePartition
{
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp
index e36ad0e722..cf92850762 100755..100644
--- a/indra/newview/llviewerparceloverlay.cpp
+++ b/indra/newview/llviewerparceloverlay.cpp
@@ -809,7 +809,7 @@ void LLViewerParcelOverlay::renderPropertyLinesOnMinimap(F32 scale_pixels_per_me
const S32 GRIDS_PER_EDGE = mParcelGridsPerEdge;
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glLineWidth(1.0f);
+ gGL.setLineWidth(1.0f);
gGL.color4fv(parcel_outline_color);
for (S32 i = 0; i <= GRIDS_PER_EDGE; i++)
{
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 5f73d8e901..5f73d8e901 100755..100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 6bbea54e43..8c66046524 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -580,6 +580,7 @@ void LLViewerShaderMgr::setShaders()
LLPipeline::sRenderGlow = gSavedSettings.getBOOL("RenderGlow");
LLPipeline::RenderAvatarCloth = gSavedSettings.getBOOL("RenderAvatarCloth");
+ LLPipeline::sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater");
if (gViewerWindow)
{
@@ -1002,7 +1003,10 @@ bool LLViewerShaderMgr::loadShadersWater()
return loadShadersWater();
}
- LLWorld::getInstance()->updateWaterObjects();
+ if (LLWorld::instanceExists())
+ {
+ LLWorld::getInstance()->updateWaterObjects();
+ }
return true;
}
@@ -2656,10 +2660,10 @@ bool LLViewerShaderMgr::loadShadersDeferred()
gSMAAEdgeDetectProgram[i].addPermutations(defines);
gSMAAEdgeDetectProgram[i].mShaderFiles.clear();
- gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAAEdgeDetectF.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAAEdgeDetectV.glsl", GL_VERTEX_SHADER_ARB));
- gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER_ARB));
+ gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAAEdgeDetectF.glsl", GL_FRAGMENT_SHADER));
+ gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAAEdgeDetectV.glsl", GL_VERTEX_SHADER));
+ gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER));
+ gSMAAEdgeDetectProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER));
gSMAAEdgeDetectProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];
success = gSMAAEdgeDetectProgram[i].createShader();
// llassert(success);
@@ -2682,10 +2686,10 @@ bool LLViewerShaderMgr::loadShadersDeferred()
gSMAABlendWeightsProgram[i].addPermutations(defines);
gSMAABlendWeightsProgram[i].mShaderFiles.clear();
- gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAABlendWeightsF.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAABlendWeightsV.glsl", GL_VERTEX_SHADER_ARB));
- gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER_ARB));
+ gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAABlendWeightsF.glsl", GL_FRAGMENT_SHADER));
+ gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAABlendWeightsV.glsl", GL_VERTEX_SHADER));
+ gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER));
+ gSMAABlendWeightsProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER));
gSMAABlendWeightsProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];
success = gSMAABlendWeightsProgram[i].createShader();
// llassert(success);
@@ -2708,10 +2712,10 @@ bool LLViewerShaderMgr::loadShadersDeferred()
gSMAANeighborhoodBlendProgram[i].addPermutations(defines);
gSMAANeighborhoodBlendProgram[i].mShaderFiles.clear();
- gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAANeighborhoodBlendF.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAANeighborhoodBlendV.glsl", GL_VERTEX_SHADER_ARB));
- gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER_ARB));
- gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER_ARB));
+ gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAANeighborhoodBlendF.glsl", GL_FRAGMENT_SHADER));
+ gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAANeighborhoodBlendV.glsl", GL_VERTEX_SHADER));
+ gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_FRAGMENT_SHADER));
+ gSMAANeighborhoodBlendProgram[i].mShaderFiles.push_back(make_pair("deferred/SMAA.glsl", GL_VERTEX_SHADER));
gSMAANeighborhoodBlendProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];
success = gSMAANeighborhoodBlendProgram[i].createShader();
// llassert(success);
diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp
index 58065ecce5..a183d7c8de 100644
--- a/indra/newview/llviewerstatsrecorder.cpp
+++ b/indra/newview/llviewerstatsrecorder.cpp
@@ -194,7 +194,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval )
// Open the data file
makeStatsFileName();
- mStatsFile = LLFile::fopen(mStatsFileName, "wb");
+ mStatsFile = LLFile::fopen(mStatsFileName, LLFILE_MODE("wb"));
if (mStatsFile)
{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index ce8aed8d6f..98de2422d8 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -33,8 +33,6 @@
#include <iostream>
#include <fstream>
#include <algorithm>
-#include <boost/filesystem.hpp>
-#include <boost/regex.hpp>
#include "llagent.h"
#include "llagentcamera.h"
@@ -189,7 +187,6 @@
#include "llviewerjoystick.h"
#include "llviewermenufile.h" // LLFilePickerReplyThread
#include "llviewernetwork.h"
-#include "llpostprocess.h"
#include "llfloaterimnearbychat.h"
#include "llagentui.h"
#include "llwearablelist.h"
@@ -782,14 +779,14 @@ public:
addText(xpos, ypos, "Projection Matrix");
ypos += y_inc;
-#if LL_DARWIN
+#if LL_CLANG
// For sprintf deprecation
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
// View last column is always <0,0,0,1>
MATRIX_ROW_F32_TO_STR(gGLModelView, 12,camera_lines[3]); addText(xpos, ypos, std::string(camera_lines[3])); ypos += y_inc;
-#if LL_DARWIN
+#if LL_CLANG
#pragma clang diagnostic pop
#endif
MATRIX_ROW_N32_TO_STR(gGLModelView, 8,camera_lines[2]); addText(xpos, ypos, std::string(camera_lines[2])); ypos += y_inc;
@@ -1994,13 +1991,8 @@ LLViewerWindow::LLViewerWindow(const Params& p)
ms_sleep(5000) ; //wait for 5 seconds.
LLSplashScreen::update(LLTrans::getString("ShuttingDown"));
-#if LL_LINUX
- LL_WARNS() << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt for further information."
- << LL_ENDL;
-#else
LL_WARNS("Window") << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings"
<< LL_ENDL;
-#endif
LLAppViewer::instance()->fastQuit(1);
}
else if (!LLViewerShaderMgr::sInitialized)
@@ -3122,7 +3114,7 @@ bool LLViewerWindow::handleKey(KEY key, MASK mask)
{
if ((focusedFloaterName == "nearby_chat") || (focusedFloaterName == "im_container") || (focusedFloaterName == "impanel"))
{
- LLCachedControl<bool> key_move(gSavedSettings, "ArrowKeysAlwaysMove");
+ static LLCachedControl<bool> key_move(gSavedSettings, "ArrowKeysAlwaysMove");
if (key_move())
{
// let Control-Up and Control-Down through for chat line history,
@@ -4910,14 +4902,10 @@ void LLViewerWindow::saveImageLocal(LLImageFormatted *image, const snapshot_save
return;
}
-// Check if there is enough free space to save snapshot
-#ifdef LL_WINDOWS
- boost::filesystem::path b_path(ll_convert<std::wstring>(lastSnapshotDir));
-#else
- boost::filesystem::path b_path(lastSnapshotDir);
-#endif
- boost::system::error_code ec;
- if (!boost::filesystem::is_directory(b_path, ec) || ec.failed())
+ // Check if there is enough free space to save snapshot
+ std::filesystem::path b_path = fsyspath(lastSnapshotDir);
+ std::error_code ec;
+ if (!std::filesystem::is_directory(b_path, ec) || ec)
{
LLSD args;
args["PATH"] = lastSnapshotDir;
@@ -4926,8 +4914,8 @@ void LLViewerWindow::saveImageLocal(LLImageFormatted *image, const snapshot_save
failure_cb();
return;
}
- boost::filesystem::space_info b_space = boost::filesystem::space(b_path, ec);
- if (ec.failed())
+ std::filesystem::space_info b_space = std::filesystem::space(b_path, ec);
+ if (ec)
{
LLSD args;
args["PATH"] = lastSnapshotDir;
@@ -5728,11 +5716,6 @@ void* LLViewerWindow::getPlatformWindow() const
return mWindow->getPlatformWindow();
}
-void* LLViewerWindow::getMediaWindow() const
-{
- return mWindow->getMediaWindow();
-}
-
void LLViewerWindow::focusClient() const
{
return mWindow->focusClient();
@@ -5954,11 +5937,6 @@ void LLViewerWindow::stopGL()
gBox.cleanupGL();
- if(gPostProcess)
- {
- gPostProcess->invalidate();
- }
-
gTextureList.destroyGL();
stop_glerror();
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index b68956d853..936eb275cf 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -279,7 +279,6 @@ public:
LLWindow* getWindow() const { return mWindow; }
void* getPlatformWindow() const;
- void* getMediaWindow() const;
void focusClient() const;
LLCoordGL getLastMouse() const { return mLastMousePoint; }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 78d9c1fa4c..5befad314e 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -699,7 +699,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mVisualComplexity(VISUAL_COMPLEXITY_UNKNOWN),
mLoadedCallbacksPaused(false),
mLoadedCallbackTextures(0),
- mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar", false)),
mLastRezzedStatus(-1),
mIsEditingAppearance(false),
mUseLocalAppearance(false),
@@ -3125,7 +3124,7 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
if (isImpostor() && !mNeedsImpostorUpdate)
{
- LL_ALIGN_16(LLVector4a ext[2]);
+ LLVector4a ext[2];
F32 distance;
LLVector3 angle;
@@ -5489,7 +5488,7 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
gGL.begin(LLRender::LINES);
gGL.color4f(1.f,1.f,1.f,1.f);
F32 thickness = llmax(F32(5.0f-5.0f*(gFrameTimeSeconds-mLastImpostorUpdateFrameTime)),1.0f);
- glLineWidth(thickness);
+ gGL.setLineWidth(thickness);
gGL.vertex3fv((pos+left-up).mV);
gGL.vertex3fv((pos-left-up).mV);
gGL.vertex3fv((pos-left-up).mV);
@@ -8634,7 +8633,8 @@ bool LLVOAvatar::processFullyLoadedChange(bool loading)
bool LLVOAvatar::isFullyLoaded() const
{
- return (mRenderUnloadedAvatar && !isSelf()) || mFullyLoaded;
+ static LLCachedControl<bool> render_unloaded_avatar(gSavedSettings, "RenderUnloadedAvatar", false);
+ return (render_unloaded_avatar && !isSelf()) || mFullyLoaded;
}
bool LLVOAvatar::hasFirstFullAttachmentData() const
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 0ac4db8fcf..37a7be7efb 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -265,7 +265,7 @@ public:
private: //aligned members
- LL_ALIGN_16(LLVector4a mImpostorExtents[2]);
+ LLVector4a mImpostorExtents[2];
//--------------------------------------------------------------------
// Updates
@@ -745,8 +745,6 @@ private:
LLVector3 mLastAnimExtents[2];
LLVector3 mLastAnimBasePos;
- LLCachedControl<bool> mRenderUnloadedAvatar;
-
//--------------------------------------------------------------------
// Wind rippling in clothes
//--------------------------------------------------------------------
@@ -1113,7 +1111,7 @@ public:
void startTyping() { mTyping = true; mTypingTimer.reset(); }
void stopTyping() { mTyping = false; }
private:
- bool mVisibleChat;
+ bool mVisibleChat = false;
//--------------------------------------------------------------------
// Lip synch morphs
@@ -1295,7 +1293,7 @@ public:
static F32 sGreyUpdateTime; // Last time stats were updated (to prevent multiple updates per frame)
protected:
S32 getUnbakedPixelAreaRank();
- bool mHasGrey;
+ bool mHasGrey = false;
private:
F32 mMinPixelArea;
F32 mMaxPixelArea;
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 520bc588de..a26579f9ec 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -1250,7 +1250,7 @@ void LLVOCache::removeCache(ELLPath location, bool started)
std::string cache_dir = gDirUtilp->getExpandedFilename(location, object_cache_dirname);
LL_INFOS() << "Removing cache at " << cache_dir << LL_ENDL;
gDirUtilp->deleteFilesInDir(cache_dir, mask); //delete all files
- LLFile::rmdir(cache_dir);
+ LLFile::remove(cache_dir);
clearCacheInMemory();
mInitialized = false;
@@ -1370,7 +1370,7 @@ void LLVOCache::removeFromCache(HeaderEntryInfo* entry)
std::string filename;
getObjectCacheFilename(entry->mHandle, filename);
LL_WARNS("GLTF", "VOCache") << "Removing object cache for handle " << entry->mHandle << "Filename: " << filename << LL_ENDL;
- LLAPRFile::remove(filename, mLocalAPRFilePoolp);
+ LLFile::remove(filename);
// Note: `removeFromCache` should take responsibility for cleaning up all cache artefacts specfic to the handle/entry.
// as such this now includes the generic extras
@@ -1394,7 +1394,7 @@ void LLVOCache::readCacheHeader()
clearCacheInMemory();
bool success = true ;
- if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))
+ if (LLFile::isfile(mHeaderFileName))
{
LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 53d82ff989..b91b4b180b 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -25,7 +25,9 @@
*/
#include "llvoiceclient.h"
+#ifndef DISABLE_WEBRTC
#include "llvoicewebrtc.h"
+#endif
#include "llviewernetwork.h"
#include "llviewercontrol.h"
#include "llcommandhandler.h"
@@ -39,6 +41,7 @@
#include "lltrans.h"
#include "lluiusage.h"
#include "llnearbyvoicemoderation.h"
+#include "llmutelist.h"
const F32 LLVoiceClient::OVERDRIVEN_POWER_LEVEL = 0.7f;
@@ -116,11 +119,13 @@ std::string LLVoiceClientStatusObserver::status2string(LLVoiceClientStatusObserv
LLVoiceModuleInterface *getVoiceModule(const std::string &voice_server_type)
{
+#ifndef DISABLE_WEBRTC
if (voice_server_type == WEBRTC_VOICE_SERVER_TYPE)
{
return (LLVoiceModuleInterface *) LLWebRTCVoiceClient::getInstance();
}
else
+#endif
{
LLNotificationsUtil::add("VoiceVersionMismatch");
return nullptr;
@@ -161,7 +166,9 @@ void LLVoiceClient::init(LLPumpIO *pump)
{
// Initialize all of the voice modules
m_servicePump = pump;
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->init(pump);
+#endif
}
void LLVoiceClient::userAuthorized(const std::string& user_id, const LLUUID &agentID)
@@ -171,16 +178,20 @@ void LLVoiceClient::userAuthorized(const std::string& user_id, const LLUUID &age
mRegionChangedCallbackSlot.disconnect();
}
mRegionChangedCallbackSlot = gAgent.addRegionChangedCallback(boost::bind(&LLVoiceClient::onRegionChanged, this));
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->userAuthorized(user_id, agentID);
+#endif
}
void LLVoiceClient::handleSimulatorFeaturesReceived(const LLSD &simulatorFeatures)
{
std::string voiceServerType = simulatorFeatures["VoiceServerType"].asString();
+#ifndef DISABLE_WEBRTC
if (voiceServerType.empty())
{
voiceServerType = WEBRTC_VOICE_SERVER_TYPE;
}
+#endif
if (mSpatialVoiceModule && !mNonSpatialVoiceModule)
{
@@ -280,15 +291,19 @@ void LLVoiceClient::setNonSpatialVoiceModule(const std::string &voice_server_typ
void LLVoiceClient::setHidden(bool hidden)
{
LL_INFOS("Voice") << "( " << (hidden ? "true" : "false") << " )" << LL_ENDL;
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setHidden(hidden);
+#endif
}
void LLVoiceClient::terminate()
{
+#ifndef DISABLE_WEBRTC
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->terminate();
}
+#endif
mSpatialVoiceModule = NULL;
m_servicePump = NULL;
@@ -323,7 +338,9 @@ void LLVoiceClient::updateSettings()
updateMicMuteLogic();
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->updateSettings();
+#endif
}
//--------------------------------------------------
@@ -331,32 +348,48 @@ void LLVoiceClient::updateSettings()
void LLVoiceClient::tuningStart()
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->tuningStart();
+#endif
}
void LLVoiceClient::tuningStop()
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->tuningStop();
+#endif
}
bool LLVoiceClient::inTuningMode()
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->inTuningMode();
+#else
+ return false;
+#endif
}
void LLVoiceClient::tuningSetMicVolume(float volume)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->tuningSetMicVolume(volume);
+#endif
}
void LLVoiceClient::tuningSetSpeakerVolume(float volume)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->tuningSetSpeakerVolume(volume);
+#endif
}
float LLVoiceClient::tuningGetEnergy(void)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->tuningGetEnergy();
+#else
+ return 0.f;
+#endif
}
//------------------------------------------------
@@ -364,38 +397,62 @@ float LLVoiceClient::tuningGetEnergy(void)
bool LLVoiceClient::deviceSettingsAvailable()
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->deviceSettingsAvailable();
+#else
+ return false;
+#endif
}
bool LLVoiceClient::deviceSettingsUpdated()
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->deviceSettingsUpdated();
+#else
+ return false;
+#endif
}
void LLVoiceClient::refreshDeviceLists(bool clearCurrentList)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->refreshDeviceLists(clearCurrentList);
+#endif
}
void LLVoiceClient::setCaptureDevice(const std::string& name)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setCaptureDevice(name);
+#endif
}
void LLVoiceClient::setRenderDevice(const std::string& name)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setRenderDevice(name);
+#endif
}
const LLVoiceDeviceList& LLVoiceClient::getCaptureDevices()
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getCaptureDevices();
+#else
+ static LLVoiceDeviceList dummy_device_list;
+ return dummy_device_list;
+#endif
}
const LLVoiceDeviceList& LLVoiceClient::getRenderDevices()
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getRenderDevices();
+#else
+ static LLVoiceDeviceList dummy_device_list;
+ return dummy_device_list;
+#endif
}
@@ -404,12 +461,18 @@ const LLVoiceDeviceList& LLVoiceClient::getRenderDevices()
void LLVoiceClient::getParticipantList(std::set<LLUUID> &participants) const
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->getParticipantList(participants);
+#endif
}
bool LLVoiceClient::isParticipant(const LLUUID &speaker_id) const
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->isParticipant(speaker_id);
+#else
+ return false;
+#endif
}
@@ -501,12 +564,20 @@ void LLVoiceClient::activateSpatialChannel(bool activate)
bool LLVoiceClient::isCurrentChannel(const LLSD& channelInfo)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->isCurrentChannel(channelInfo);
+#else
+ return false;
+#endif
}
bool LLVoiceClient::compareChannels(const LLSD &channelInfo1, const LLSD &channelInfo2)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->compareChannels(channelInfo1, channelInfo2);
+#else
+ return false;
+#endif
}
LLVoiceP2PIncomingCallInterfacePtr LLVoiceClient::getIncomingCallInterface(const LLSD& voice_call_info)
@@ -531,12 +602,14 @@ LLVoiceP2POutgoingCallInterface *LLVoiceClient::getOutgoingCallInterface(const L
LLVoiceVersionInfo versionInfo = LLVoiceClient::getInstance()->getVersion();
voice_server_type = versionInfo.internalVoiceServerType;
}
+#ifndef DISABLE_WEBRTC
if (voiceChannelInfo.has("voice_server_type") && voiceChannelInfo["voice_server_type"] != voice_server_type)
{
// there's a mismatch between what the peer is offering and what our server
// can handle, so default to webrtc
voice_server_type = WEBRTC_VOICE_SERVER_TYPE;
}
+#endif
LLVoiceModuleInterface *module = getVoiceModule(voice_server_type);
return dynamic_cast<LLVoiceP2POutgoingCallInterface *>(module);
}
@@ -547,12 +620,16 @@ LLVoiceP2POutgoingCallInterface *LLVoiceClient::getOutgoingCallInterface(const L
void LLVoiceClient::setVoiceVolume(F32 volume)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setVoiceVolume(volume);
+#endif
}
void LLVoiceClient::setMicGain(F32 gain)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setMicGain(gain);
+#endif
}
@@ -598,10 +675,12 @@ bool LLVoiceClient::voiceEnabled()
void LLVoiceClient::setVoiceEnabled(bool enabled)
{
+#ifndef DISABLE_WEBRTC
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->setVoiceEnabled(enabled);
}
+#endif
}
void LLVoiceClient::updateMicMuteLogic()
@@ -620,7 +699,9 @@ void LLVoiceClient::updateMicMuteLogic()
// Either of these always overrides any other PTT setting.
new_mic_mute = true;
}
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setMuteMic(new_mic_mute);
+#endif
}
void LLVoiceClient::setMuteMic(bool muted)
@@ -717,13 +798,21 @@ bool LLVoiceClient::getVoiceEnabled(const LLUUID& id) const
std::string LLVoiceClient::getDisplayName(const LLUUID& id) const
{
+#ifndef DISABLE_WEBRTC
std::string result = LLWebRTCVoiceClient::getInstance()->getDisplayName(id);
+#else
+ std::string result;
+#endif
return result;
}
bool LLVoiceClient::isVoiceWorking() const
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->isVoiceWorking();
+#else
+ return false;
+#endif
}
bool LLVoiceClient::isParticipantAvatar(const LLUUID& id)
@@ -738,19 +827,31 @@ bool LLVoiceClient::isOnlineSIP(const LLUUID& id)
bool LLVoiceClient::getIsSpeaking(const LLUUID& id)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getIsSpeaking(id);
+#else
+ return false;
+#endif
}
bool LLVoiceClient::getIsModeratorMuted(const LLUUID& id)
{
// don't bother worrying about p2p calls, as
// p2p calls don't have mute.
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getIsModeratorMuted(id);
+#else
+ return false;
+#endif
}
F32 LLVoiceClient::getCurrentPower(const LLUUID& id)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getCurrentPower(id);
+#else
+ return 0.f;
+#endif
}
bool LLVoiceClient::getOnMuteList(const LLUUID& id)
@@ -762,12 +863,18 @@ bool LLVoiceClient::getOnMuteList(const LLUUID& id)
F32 LLVoiceClient::getUserVolume(const LLUUID& id)
{
+#ifndef DISABLE_WEBRTC
return LLWebRTCVoiceClient::getInstance()->getUserVolume(id);
+#else
+ return 0.f;
+#endif
}
void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->setUserVolume(id, volume);
+#endif
}
//--------------------------------------------------
@@ -775,41 +882,53 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
void LLVoiceClient::addObserver(LLVoiceClientStatusObserver* observer)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLVoiceClientStatusObserver* observer)
{
+#ifndef DISABLE_WEBRTC
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
void LLVoiceClient::addObserver(LLFriendObserver* observer)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLFriendObserver* observer)
{
+#ifndef DISABLE_WEBRTC
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
void LLVoiceClient::addObserver(LLVoiceClientParticipantObserver* observer)
{
+#ifndef DISABLE_WEBRTC
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLVoiceClientParticipantObserver* observer)
{
+#ifndef DISABLE_WEBRTC
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
LLSD LLVoiceClient::getP2PChannelInfoTemplate(const LLUUID& id) const
@@ -852,11 +971,13 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
LLVoiceModuleInterface *voiceModule = NULL;
+#ifndef DISABLE_WEBRTC
if (voice_server_type == "webrtc" || voice_server_type.empty())
{
voiceModule = (LLVoiceModuleInterface *) LLWebRTCVoiceClient::getInstance();
}
else
+#endif
{
LL_WARNS("Voice") << "Unknown voice server type " << voice_server_type << LL_ENDL;
if (!sAlertedUser)
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
index c5704982b8..e6dac0530d 100644
--- a/indra/newview/llvoicevisualizer.cpp
+++ b/indra/newview/llvoicevisualizer.cpp
@@ -32,7 +32,6 @@
#include "llviewerprecompiledheaders.h"
#include "llviewercontrol.h"
#include "llglheaders.h"
-#include "llsphere.h"
#include "llvoicevisualizer.h"
#include "llviewercamera.h"
#include "llviewerobject.h"
diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp
index b2bb5990b1..1ab3586e3a 100644
--- a/indra/newview/llvoicewebrtc.cpp
+++ b/indra/newview/llvoicewebrtc.cpp
@@ -2408,7 +2408,7 @@ LLVoiceWebRTCConnection::LLVoiceWebRTCConnection(const LLUUID &regionID, const s
// retries wait a short period...randomize it so
// all clients don't try to reconnect at once.
- mRetryWaitSecs = (F32)((F32) rand() / (RAND_MAX)) + 0.5f;
+ mRetryWaitSecs = (F32)((F32) rand() / F32(RAND_MAX)) + 0.5f;
mWebRTCPeerConnectionInterface = llwebrtc::newPeerConnection();
mWebRTCPeerConnectionInterface->setSignalingObserver(this);
@@ -3023,7 +3023,7 @@ bool LLVoiceWebRTCConnection::connectionStateMachine()
case VOICE_STATE_SESSION_UP:
{
mRetryWaitPeriod = 0;
- mRetryWaitSecs = (F32)((F32)rand() / (RAND_MAX)) + 0.5f;
+ mRetryWaitSecs = (F32)((F32)rand() / F32(RAND_MAX)) + 0.5f;
// we'll stay here as long as the session remains up.
if (mShutDown)
@@ -3068,7 +3068,7 @@ bool LLVoiceWebRTCConnection::connectionStateMachine()
{
// back off the retry period, and do it by a small random
// bit so all clients don't reconnect at once.
- mRetryWaitSecs += (F32)((F32) rand() / (RAND_MAX)) + 0.5f;
+ mRetryWaitSecs += (F32)((F32) rand() / F32(RAND_MAX)) + 0.5f;
mRetryWaitPeriod = 0;
}
}
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index b5ee42f36c..98d771f8da 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -36,17 +36,16 @@
#include "llenvironment.h"
#include "llsettingssky.h"
-constexpr U32 MIN_SKY_DETAIL = 8;
-constexpr U32 MAX_SKY_DETAIL = 180;
+constexpr U32 SKY_DETAIL = 18; // Any lower and there will be artifacts
inline U32 LLVOWLSky::getNumStacks(void)
{
- return llmin(MAX_SKY_DETAIL, llmax(MIN_SKY_DETAIL, gSavedSettings.getU32("WLSkyDetail")));
+ return SKY_DETAIL;
}
inline U32 LLVOWLSky::getNumSlices(void)
{
- return 2 * llmin(MAX_SKY_DETAIL, llmax(MIN_SKY_DETAIL, gSavedSettings.getU32("WLSkyDetail")));
+ return 2 * SKY_DETAIL;
}
inline U32 LLVOWLSky::getStripsNumVerts(void)
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 8e7b86eb00..8e7b86eb00 100755..100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index 7b0bf6f251..a9183109ef 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -211,7 +211,7 @@ LLXMLRPCTransaction::Impl::Impl
mCertStore = gSavedSettings.getString("CertStore");
httpOpts->setSSLVerifyPeer(vefifySSLCert);
- httpOpts->setSSLVerifyHost(vefifySSLCert ? 2 : 0);
+ httpOpts->setSSLVerifyHost(vefifySSLCert);
// LLRefCounted starts with a 1 ref, so don't add a ref in the smart pointer
httpHeaders = std::make_shared<LLCore::HttpHeaders>();
diff --git a/indra/newview/macutil_Prefix.h b/indra/newview/macutil_Prefix.h
deleted file mode 100644
index 4972ee4fa5..0000000000
--- a/indra/newview/macutil_Prefix.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @file macutil_Prefix.h
- * @brief Precompiled prefix file
- *
- * $LicenseInfo:firstyear=2005&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$
- */
-
-/*
- *
- * Precompiled prefix file used for
- * AutoUpdater
- * crashreporter
- *
- */
-
-#include "fix_macros.h"
-
-#undef verify
-#undef require
diff --git a/indra/newview/macview_Prefix.h b/indra/newview/macview_Prefix.h
deleted file mode 100644
index faad8fa704..0000000000
--- a/indra/newview/macview_Prefix.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/**
- * @file macview_Prefix.h
- * @brief Prefix header for all source files of the 'newview' target in the 'newview' project.
- *
- * $LicenseInfo:firstyear=2003&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$
- */
-
-// MBW -- This doesn't work. There are some conflicts between things in Carbon.h and some of the linden source.
-//#include <Carbon/Carbon.h>
-
-////////////////// From llagent.cpp
-#include "llpreprocessor.h"
-#include "stdtypes.h"
-#include "stdenums.h"
-
-#include "llagent.h"
-
-#include "llcoordframe.h"
-#include "indra_constants.h"
-#include "llmath.h"
-#include "llcriticaldamp.h"
-#include "llfocusmgr.h"
-#include "llparcel.h"
-#include "llpermissions.h"
-#include "llregionhandle.h"
-#include "m3math.h"
-#include "m4math.h"
-#include "message.h"
-#include "qmath.h"
-#include "v3math.h"
-#include "v4math.h"
-#include "vmath.h"
-//#include "llteleportflags.h"
-
-#include "llbox.h"
-#include "llbutton.h"
-#include "llconsole.h"
-#include "lldrawable.h"
-#include "llfirstuse.h"
-#include "llfloater.h"
-#include "llfloaterbuildoptions.h"
-#include "llfloaterchat.h"
-#include "llfloatergroups.h"
-#include "llfloaterworldmap.h"
-#include "llfloatermute.h"
-#include "llconversation.h"
-#include "llfloatertools.h"
-#include "llhudeffectlookat.h"
-#include "llhudmanager.h"
-#include "lljoystickbutton.h"
-#include "llmenugl.h"
-#include "llmorphview.h"
-#include "llmoveview.h"
-#include "llselectmgr.h"
-#include "llsky.h"
-#include "llrendersphere.h"
-#include "llstatusbar.h"
-#include "lltalkview.h"
-#include "lltool.h"
-#include "lltoolfocus.h"
-#include "lltoolcomp.h" // for gToolGun
-#include "lltoolgrab.h"
-#include "lltoolmgr.h"
-#include "lltoolpie.h"
-#include "llui.h" // for make_ui_sound
-#include "llviewercamera.h"
-#include "llviewermenu.h"
-#include "llviewerobjectlist.h"
-#include "llviewerparcelmgr.h"
-#include "llviewerparceloverlay.h"
-#include "llviewerregion.h"
-#include "llviewerstats.h"
-#include "llviewerwindow.h"
-#include "llvoavatar.h"
-#include "llvoground.h"
-#include "llvosky.h"
-#include "llworld.h"
-#include "pipeline.h"
-
-/////////////////// From llfloater.cpp
-#include "llbutton.h"
-#include "lldraghandle.h"
-#include "llfocusmgr.h"
-#include "llresizebar.h"
-#include "llresizehandle.h"
-#include "llresmgr.h"
-#include "llui.h"
-#include "llviewborder.h"
-#include "lluictrlfactory.h"
-
-
-/////////////////// From lldrawpool.cpp
-#include "llface.h"
-#include "llcontrol.h"
-#include "pipeline.h"
-
-#include "llviewerobjectlist.h" // For debug listing.
-
-//extern LLPipeline gPipeline;
-
-#include "lldrawpoolsimple.h"
-#include "lldrawpoolalpha.h"
-#include "lldrawpoolavatar.h"
-#include "lldrawpooltree.h"
-#include "lldrawpoolterrain.h"
-#include "lldrawpoolsky.h"
-#include "lldrawpoolwater.h"
-#include "lldrawpoolground.h"
-#include "lldrawpoolbump.h"
-
-/////////////////// From llface.cpp
-#include "llgl.h"
-#include "llviewerimage.h"
-#include "llsky.h"
-#include "llvosky.h"
-#include "llcontrol.h"
-#include "v3color.h"
-#include "pipeline.h"
-#include "llvolume.h"
-#include "llviewercamera.h"
-#include "lllightconstants.h"
-
-#include "llvovolume.h"
-#include "m3math.h"
-#include "lldrawpoolbump.h"
-
-
-
-/////////////////// From llpanel.cpp
-#include "llpanel.h"
-
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "lltimer.h"
-
-#include "llmenugl.h"
-#include "llstatusbar.h"
-#include "llui.h"
-#include "llkeyboard.h"
-#include "llviewerwindow.h"
-#include "llcontrol.h"
-#include "lluictrl.h"
-#include "lluictrlfactory.h"
-#include "llviewborder.h"
-#include "llviewerimagelist.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-
-
-
-/////////////////// From llvovolume.cpp
-#include "llvovolume.h"
-#include "llviewerimagelist.h"
-
-#include "llcontrol.h"
-
-#include "object_flags.h"
-
-#include "material_codes.h"
-#include "llagent.h"
-#include "llworld.h"
-#include "llviewerregion.h"
-#include "llprimitive.h"
-#include "llvolume.h"
-#include "lldrawable.h"
-#include "llface.h"
-#include "llvolumemgr.h"
-#include "llsky.h"
-
-#include "pipeline.h"
-#include "llmaterialtable.h"
-#include "message.h"
-#include "llviewertextureanim.h"
-#include "llviewercamera.h"
-#include "lldrawpoolbump.h"
-
-
-/////////////////// From llagentpilot.cpp
-#include "llagentpilot.h"
-#include "llagent.h"
-#include "llframestats.h"
-#include "viewer.h"
-#include "llcontrol.h"
-
-
-/////////////////// From llloginview.cpp
-#include "llloginview.h"
-
-#include "indra_constants.h" // for key and mask constants
-#include "llfontgl.h"
-#include "v4color.h"
-#include "llwindow_impl.h"
-
-#include "llbutton.h"
-#include "llcheckboxctrl.h"
-#include "llcombobox.h"
-#include "llcontrol.h"
-#include "lllineeditor.h"
-#include "lltextbox.h"
-#include "llui.h"
-//#include "lluiconstants.h"
-#include "llviewerimagelist.h"
-#include "llviewermenu.h" // for handle_preferences()
-#include "llviewerwindow.h" // to link into child list
-#include "llfocusmgr.h"
-#include "llmd5.h"
-#include "llversion.h"
-#include "viewer.h"
-
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 54fa7a2c09..ab7058b5df 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -122,16 +122,27 @@
#include "SMAAAreaTex.h"
#include "SMAASearchTex.h"
#include "llerror.h"
-#ifndef LL_WINDOWS
-#define A_GCC 1
+
+#if LL_CLANG
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#pragma clang diagnostic ignored "-Wunused-variable"
+#elif LL_GNUC
+#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#pragma GCC diagnostic ignored "-Wunused-variable"
-#if LL_LINUX
#pragma GCC diagnostic ignored "-Wrestrict"
#endif
+#ifndef LL_WINDOWS
+#define A_GCC 1
#endif
#define A_CPU 1
#include "app_settings/shaders/class1/deferred/CASF.glsl" // This is also C++
+#if LL_CLANG
+#pragma clang diagnostic pop
+#elif LL_GNUC
+#pragma GCC diagnostic pop
+#endif
extern bool gSnapshot;
bool gShiftFrame = false;
@@ -821,9 +832,8 @@ LLPipeline::eFBOStatus LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;
-
- static LLCachedControl<bool> has_hdr(gSavedSettings, "RenderHDREnabled", true);
- bool hdr = gGLManager.mGLVersion > 4.05f && has_hdr();
+ bool has_hdr = gSavedSettings.getBOOL("RenderHDREnabled");
+ bool hdr = gGLManager.mGLVersion > 4.05f && has_hdr;
if (mRT == &mMainRT)
{ // hacky -- allocate auxillary buffer
@@ -889,6 +899,8 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)
if (!gCubeSnapshot) // hack to not re-allocate various targets for cube snapshots
{
+ U32 post_color_fmt = gSavedSettings.getBOOL("RenderHighPrecisionPostProcess") ? GL_RGBA16F : GL_RGBA;
+
if (RenderUIBuffer)
{
if (!mUIScreen.allocate(resX, resY, GL_RGBA))
@@ -899,10 +911,10 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)
if (RenderFSAAType > 0)
{
- if (!mFXAAMap.allocate(resX, resY, GL_RGBA)) return false;
+ if (!mFXAAMap.allocate(resX, resY, post_color_fmt)) return false;
if (RenderFSAAType == 2)
{
- if (!mSMAABlendBuffer.allocate(resX, resY, GL_RGBA, false)) return false;
+ if (!mSMAABlendBuffer.allocate(resX, resY, post_color_fmt, false)) return false;
}
}
else
@@ -923,8 +935,8 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)
mSceneMap.release();
}
- mPostPingMap.allocate(resX, resY, GL_RGBA);
- mPostPongMap.allocate(resX, resY, GL_RGBA);
+ mPostPingMap.allocate(resX, resY, post_color_fmt);
+ mPostPongMap.allocate(resX, resY, post_color_fmt);
// The water exclusion mask needs its own depth buffer so we can take care of the problem of multiple water planes.
// Should we ever make water not just a plane, it also aids with that as well as the water planes will be rendered into the mask.
@@ -1020,7 +1032,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY)
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_ANISOTROPIC);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
}
}
@@ -1037,7 +1049,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY)
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_ANISOTROPIC);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
}
}
@@ -4365,7 +4377,7 @@ void LLPipeline::renderPhysicsDisplay()
LLGLEnable polygon_offset_line(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(3.f, 3.f);
- glLineWidth(3.f);
+ gGL.setLineWidth(3.f);
LLGLEnable blend(GL_BLEND);
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -4407,7 +4419,7 @@ void LLPipeline::renderPhysicsDisplay()
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
}
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
gDebugProgram.unbind();
}
@@ -4491,8 +4503,7 @@ void LLPipeline::renderDebug()
//NavMesh
if ( pathfindingConsole->isRenderNavMesh() )
{
- gGL.flush();
- glLineWidth(2.0f);
+ gGL.setLineWidth(2.0f);
LLGLEnable cull(GL_CULL_FACE);
LLGLDisable blend(GL_BLEND);
@@ -4516,7 +4527,7 @@ void LLPipeline::renderDebug()
gGL.flush();
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
- glLineWidth(1.0f);
+ gGL.setLineWidth(1.0f);
gGL.flush();
}
//User designated path
@@ -4631,11 +4642,11 @@ void LLPipeline::renderDebug()
gPathfindingProgram.uniform1f(sTint, 1.f);
gPathfindingProgram.uniform1f(sAlphaScale, 1.f);
- glLineWidth(gSavedSettings.getF32("PathfindingLineWidth"));
+ gGL.setLineWidth(gSavedSettings.getF32("PathfindingLineWidth"));
LLGLDisable blendOut(GL_BLEND);
llPathingLibInstance->renderNavMeshShapesVBO( render_order[i] );
gGL.flush();
- glLineWidth(1.f);
+ gGL.setLineWidth(1.f);
}
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
@@ -4658,7 +4669,7 @@ void LLPipeline::renderDebug()
LLGLEnable blend(GL_BLEND);
LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
gGL.flush();
- glLineWidth(2.0f);
+ gGL.setLineWidth(2.0f);
LLGLEnable cull(GL_CULL_FACE);
gPathfindingProgram.uniform1f(sTint, gSavedSettings.getF32("PathfindingXRayTint"));
@@ -4685,7 +4696,7 @@ void LLPipeline::renderDebug()
gPathfindingProgram.bind();
gGL.flush();
- glLineWidth(1.0f);
+ gGL.setLineWidth(1.0f);
}
glPolygonOffset(0.f, 0.f);
@@ -4978,7 +4989,7 @@ void LLPipeline::renderDebug()
}
/*gGL.flush();
- glLineWidth(16-i*2);
+ gGL.setLineWidth(16-i*2);
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
{
@@ -4996,7 +5007,7 @@ void LLPipeline::renderDebug()
}
}
gGL.flush();
- glLineWidth(1.f);*/
+ gGL.setLineWidth(1.f);*/
}
}
@@ -7012,7 +7023,7 @@ void apply_cube_face_rotation(U32 face)
void validate_framebuffer_object()
{
GLenum status;
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(status)
{
case GL_FRAMEBUFFER_COMPLETE:
@@ -9398,7 +9409,7 @@ void LLPipeline::bindReflectionProbes(LLGLSLShader& shader)
void LLPipeline::unbindReflectionProbes(LLGLSLShader& shader)
{
- S32 channel = shader.disableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP);
+ S32 channel = shader.disableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
if (channel > -1 && mReflectionMapManager.mTexture.notNull())
{
mReflectionMapManager.mTexture->unbind();
diff --git a/indra/newview/res/have_artwork_bundle.marker b/indra/newview/res/have_artwork_bundle.marker
index 1dbb238d53..1dbb238d53 100755..100644
--- a/indra/newview/res/have_artwork_bundle.marker
+++ b/indra/newview/res/have_artwork_bundle.marker
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index c9ca758555..c9ca758555 100755..100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
diff --git a/indra/newview/secondlife-i686.supp b/indra/newview/secondlife-i686.supp
index 863c8364ab..863c8364ab 100755..100644
--- a/indra/newview/secondlife-i686.supp
+++ b/indra/newview/secondlife-i686.supp
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
index 99dca7b395..83934f2132 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -76,19 +76,19 @@
height="16"
increment="1"
initial_value="8"
- label="Post process quality:"
+ label="Glow quality:"
label_width="185"
layout="topleft"
left="30"
min_val="8"
max_val="9"
- name="RenderPostProcess"
+ name="GlowResolution"
show_text="false"
top_delta="16"
width="300">
<slider.commit_callback
function="Pref.UpdateSliderText"
- parameter="PostProcessText" />
+ parameter="GlowResolutionText" />
</slider>
<text
type="string"
@@ -96,7 +96,7 @@
follows="left|top"
height="16"
layout="topleft"
- name="PostProcessText"
+ name="GlowResolutionText"
top_delta="0"
left_delta="304"
width="65">
@@ -360,17 +360,6 @@
Hardware
</text>
-
- <check_box
- control_name="RenderAnisotropic"
- height="16"
- label="Anisotropic Filtering (slower when enabled)"
- layout="topleft"
- left="30"
- name="ani"
- top_delta="16"
- width="256" />
-
<check_box
control_name="RenderCompressTextures"
height="16"
@@ -401,6 +390,49 @@
height="20"
layout="topleft"
left="30"
+ name="af strength label"
+ top_delta="20"
+ width="130">
+ Anisotropic Filtering:
+ </text>
+ <combo_box
+ control_name="RenderAnisotropicLevel"
+ height="20"
+ label="Anisotropic Filtering"
+ layout="topleft"
+ left_pad="40"
+ name="anisotropic_filter"
+ top_delta="0"
+ width="90">
+ <combo_box.item
+ label="Disabled"
+ name="disabled"
+ value="0" />
+ <combo_box.item
+ label="2x"
+ name="2x"
+ value="2" />
+ <combo_box.item
+ label="4x"
+ name="4x"
+ value="4" />
+ <combo_box.item
+ label="8x"
+ name="8x"
+ value="8" />
+ <combo_box.item
+ label="16x"
+ name="16x"
+ value="16" />
+ </combo_box>
+
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="20"
+ layout="topleft"
+ left="30"
name="antialiasing label"
top_delta="20"
width="130">
@@ -657,25 +689,25 @@
</check_box>
<slider
- control_name="WLSkyDetail"
+ control_name="RenderHighPrecisionPostProcess"
decimal_digits="0"
follows="left|top"
height="16"
- increment="8"
+ increment="1"
initial_value="160"
- label="Sky:"
+ label="Post Process Quality:"
label_width="164"
layout="topleft"
left="420"
- min_val="16"
- max_val="128"
- name="SkyMeshDetail"
+ min_val="0"
+ max_val="1"
+ name="RenderPostProcess"
show_text="false"
top_delta="22"
width="260">
<slider.commit_callback
function="Pref.UpdateSliderText"
- parameter="SkyMeshDetailText" />
+ parameter="PostProcessText" />
</slider>
<text
type="string"
@@ -684,7 +716,7 @@
height="16"
layout="topleft"
left_delta="264"
- name="SkyMeshDetailText"
+ name="PostProcessText"
text_readonly_color="LabelDisabledColor"
top_delta="0"
width="65">
diff --git a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
index fb68193006..fb68193006 100755..100644
--- a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml
index d0ecd0a11c..28e63c82f1 100644
--- a/indra/newview/skins/default/xui/en/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml
@@ -7,7 +7,7 @@
none
</defaultwidget>
<defaultimpl>
- media_plugin_webkit
+ media_plugin_cef
</defaultimpl>
<widgetset name="web">
<label name="web_label">
@@ -130,7 +130,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</scheme>
<mimetype name="blank">
@@ -141,7 +141,7 @@
none
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="none/none">
@@ -152,7 +152,7 @@
none
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="audio/*">
@@ -163,7 +163,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="video/*">
@@ -174,7 +174,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="image/*">
@@ -185,7 +185,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="video/vnd.secondlife.qt.legacy">
@@ -196,7 +196,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="application/javascript">
@@ -207,7 +207,7 @@
web
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/ogg">
@@ -218,7 +218,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="application/pdf">
@@ -229,7 +229,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/postscript">
@@ -240,7 +240,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/rtf">
@@ -251,7 +251,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/smil">
@@ -262,7 +262,7 @@
movie
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/xhtml+xml">
@@ -273,7 +273,7 @@
web
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="application/x-director">
@@ -284,7 +284,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="audio/mid">
@@ -295,7 +295,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="audio/mpeg">
@@ -306,7 +306,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="audio/x-aiff">
@@ -317,7 +317,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="audio/x-wav">
@@ -328,7 +328,7 @@
audio
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype menu="1" name="image/bmp">
@@ -339,7 +339,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="image/gif">
@@ -350,7 +350,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="image/jpeg">
@@ -361,7 +361,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="image/png">
@@ -372,7 +372,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="image/svg+xml">
@@ -383,7 +383,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="image/tiff">
@@ -394,7 +394,7 @@
image
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="text/html">
@@ -405,7 +405,7 @@
web
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="text/plain">
@@ -416,7 +416,7 @@
text
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype name="text/xml">
@@ -427,7 +427,7 @@
text
</widgettype>
<impl>
- media_plugin_webkit
+ media_plugin_cef
</impl>
</mimetype>
<mimetype menu="1" name="video/mpeg">
@@ -438,7 +438,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="video/mp4">
@@ -449,7 +449,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype menu="1" name="video/quicktime">
@@ -460,7 +460,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="video/x-ms-asf">
@@ -471,7 +471,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype name="video/x-ms-wmv">
@@ -482,7 +482,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
<mimetype menu="1" name="video/x-msvideo">
@@ -493,7 +493,7 @@
movie
</widgettype>
<impl>
- media_plugin_libvlc
+ media_plugin_gstreamer10
</impl>
</mimetype>
</mimetypes>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
index 90bdea93fa..018306826e 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
@@ -60,10 +60,22 @@
name="Large(512x512)"
value="[i512,i512]" />
<combo_box.item
+ label="Wide (1024x512)"
+ name="Wide(1024x512)"
+ value="[i1024,i512]" />
+ <combo_box.item
label="Huge (1024x1024)"
name="Huge(1024x1024)"
value="[i1024,i1024]" />
<combo_box.item
+ label="Full Wide (2048x1024)"
+ name="Full(2048x1024)"
+ value="[i2048,i1024]" />
+ <combo_box.item
+ label="Full (2048x2048)"
+ name="Full(2048x2048)"
+ value="[i2048,i2048]" />
+ <combo_box.item
label="Current Window"
name="CurrentWindow"
value="[i0,i0]" />
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
index 52f9068264..0a56a7b638 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
@@ -75,6 +75,26 @@
name="1600x1200"
value="[i1600,i1200]" />
<combo_box.item
+ label="1920x1080"
+ name="1920x1080"
+ value="[i1920,i1080]" />
+ <combo_box.item
+ label="2560x1440"
+ name="2560x1440"
+ value="[i2560,i1440]" />
+ <combo_box.item
+ label="3840x2160"
+ name="3840x2160"
+ value="[i3840,i2160]" />
+ <combo_box.item
+ label="5120x2880"
+ name="5120x2880"
+ value="[i5120,i2880]" />
+ <combo_box.item
+ label="7680x4320"
+ name="7680x4320"
+ value="[i7680,i4320]" />
+ <combo_box.item
label="Custom"
name="Custom"
value="[i-1,i-1]" />
diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt
deleted file mode 100644
index 3b3fb1aeb6..0000000000
--- a/indra/newview/tests/gpus_results.txt
+++ /dev/null
@@ -1,3111 +0,0 @@
-GPU String Supported? Class Stats OpenGL Recognizer
------------------------------------------------------------------------------------------------------- ----------- ----- ----- ------ ------------------------------------
-AMD BARTS (HD 6800) supported 3 1 2.1 AMD BARTS (HD 6800)
-AMD CAICOS (HD 6400) supported 3 0 0 AMD CAICOS (HD 6400)
-AMD CAYMAN (HD 6900) supported 3 0 0 AMD CAYMAN (HD 6900)
-AMD CEDAR (HD 5450) supported 2 0 2.1 AMD CEDAR (HD 5450)
-AMD JUNIPER (HD 5700) supported 3 0 0 AMD JUNIPER (HD 5700)
-AMD PARK supported 3 0 0 AMD PARK
-AMD REDWOOD (HD 5500/5600) supported 3 0 1.4 AMD REDWOOD (HD 5500/5600)
-AMD RS780 (HD 3200) supported 0 1 2.1 AMD RS780 (HD 3200)
-AMD RS880 (HD 4200) supported 0 1 3.2 AMD RS880 (HD 4200)
-AMD RV610 (HD 2400) supported 1 0 0 AMD RV610 (HD 2400)
-AMD RV620 (HD 3400) supported 1 0 0 AMD RV620 (HD 3400)
-AMD RV630 (HD 2600) supported 2 0 0 AMD RV630 (HD 2600)
-AMD RV635 (HD 3600) supported 3 0 1.4 AMD RV635 (HD 3600)
-AMD RV670 (HD 3800) supported 3 0 0 AMD RV670 (HD 3800)
-AMD RV710 (HD 4300) supported 0 1 1.4 AMD RV710 (HD 4300)
-AMD RV730 (HD 4600) supported 3 0 1.4 AMD RV730 (HD 4600)
-AMD RV770 (HD 4800) supported 3 0 0 AMD RV770 (HD 4800)
-AMD RV790 (HD 4800) supported 3 0 0 AMD RV790 (HD 4800)
-AMD TURKS (HD 6500/6600) supported 3 0 2.1 AMD TURKS (HD 6500/6600)
-ATI NO MATCH
-ATI 760G/Radeon 3000 supported 1 1 4 ATI Radeon 3000
-ATI ASUS AH24xx supported 1 1 4 ATI Radeon HD 2400
-ATI ASUS AH34xx supported 1 1 4 ATI Radeon HD 3400
-ATI ASUS AH36xx supported 3 1 4 ATI Radeon HD 3600
-ATI ASUS AH46xx supported 3 1 4 ATI Radeon HD 4600
-ATI ASUS AX3xx supported 2 1 4 ATI Radeon HD 4300
-ATI ASUS AX5xx supported 1 1 4 ATI Radeon HD 5xx
-ATI ASUS EAH38xx supported 3 1 4 ATI Radeon HD 3800
-ATI ASUS EAH43xx supported 2 1 4 ATI Radeon HD 4300
-ATI ASUS EAH45xx supported 2 1 3.3 ATI Radeon HD 4500
-ATI ASUS EAH48xx supported 3 1 4 ATI Radeon HD 4800
-ATI ASUS EAH54xx supported 3 1 4.2 ATI Radeon HD 5400
-ATI ASUS EAH57xx supported 3 1 4.2 ATI Radeon HD 5700
-ATI ASUS EAH58xx supported 4 1 4.2 ATI Radeon HD 5800
-ATI ASUS EAH64xx supported 3 1 4.2 ATI Radeon HD 6400
-ATI ASUS EAH65xx supported 3 1 4.2 ATI Radeon HD 6500
-ATI ASUS EAH66xx supported 3 1 4.2 ATI Radeon HD 6600
-ATI ASUS EAH67xx supported 3 1 4.2 ATI Radeon HD 6700
-ATI ASUS EAH68xx supported 4 1 4.2 ATI Radeon HD 6800
-ATI ASUS EAH69xx supported 5 1 4.2 ATI Radeon HD 6900
-ATI ASUS EAH6xxx supported 5 1 4.2 ATI Radeon HD 6x00
-ATI ASUS EAH77xx supported 4 1 4.2 ATI Radeon HD 7700
-ATI ASUS HD7700 supported 4 1 4.2 ATI Radeon HD 7700
-ATI ASUS Radeon X1xxx supported 2 0 2.1 ATI Radeon X1xxx
-ATI All-in-Wonder HD supported 1 1 3.3 ATI All-in-Wonder HD
-ATI All-in-Wonder PCI-E supported 1 0 0 ATI All-in-Wonder PCI-E
-ATI Display Adapter supported 1 1 4.1 ATI Display Adapter
-ATI FireGL supported 4 1 4.2 ATI FireGL
-ATI FireGL 5200 supported 4 1 4.2 ATI FireGL
-ATI FireGL 5xxx supported 4 1 4.2 ATI FireGL
-ATI FireMV supported 0 1 3.2 ATI FireMV
-ATI FirePro 2000 supported 2 1 4.2 ATI FirePro 2000
-ATI FirePro 4000 supported 2 0 4.1 ATI FirePro 4000
-ATI FirePro M supported 3 1 4.2 ATI FirePro M
-ATI FirePro M3900 supported 2 0 4.1 ATI FirePro M3900
-ATI FirePro M5800 supported 3 0 0 ATI FirePro M5800
-ATI FirePro M7740 supported 3 0 0 ATI FirePro M7740
-ATI FirePro M7820 supported 5 1 4.2 ATI FirePro M7820
-ATI Geforce 9500 GT unsupported 0 0 0 ATI GeForce Lulz
-ATI Geforce 9600 GT unsupported 0 0 0 ATI GeForce Lulz
-ATI Geforce 9800 GT unsupported 0 0 0 ATI GeForce Lulz
-ATI IGP 340M unsupported 0 0 1.3 ATI IGP 340M
-ATI Mobility Radeon supported 3 0 0 ATI Radeon
-ATI Mobility Radeon 4100 supported 1 1 3.3 ATI Mobility Radeon 4100
-ATI Mobility Radeon 7xxx supported 0 1 1.3 ATI Mobility Radeon 7xxx
-ATI Mobility Radeon 9600 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Mobility Radeon 9700 supported 0 1 2.1 ATI Mobility Radeon 9700
-ATI Mobility Radeon 9800 supported 1 0 0 ATI Mobility Radeon 9800
-ATI Mobility Radeon HD 2300 supported 0 1 2.1 ATI Mobility Radeon HD 2300
-ATI Mobility Radeon HD 2400 supported 1 1 3.3 ATI Mobility Radeon HD 2400
-ATI Mobility Radeon HD 2600 supported 1 1 3.3 ATI Mobility Radeon HD 2600
-ATI Mobility Radeon HD 2700 supported 3 0 0 ATI Mobility Radeon HD 2700
-ATI Mobility Radeon HD 3400 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Mobility Radeon HD 3600 supported 1 1 4 ATI Mobility Radeon HD 3600
-ATI Mobility Radeon HD 3800 supported 3 1 3.3 ATI Mobility Radeon HD 3800
-ATI Mobility Radeon HD 4200 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Mobility Radeon HD 4300 supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Mobility Radeon HD 4500 supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Mobility Radeon HD 4600 supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Mobility Radeon HD 4800 supported 3 1 3.3 ATI Mobility Radeon HD 4800
-ATI Mobility Radeon HD 5100 supported 3 1 3.2 ATI Mobility Radeon HD 5100
-ATI Mobility Radeon HD 5300 supported 3 0 0 ATI Mobility Radeon HD 5300
-ATI Mobility Radeon HD 530v supported 1 1 3.3 ATI Mobility Radeon HD 530v
-ATI Mobility Radeon HD 5400 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Mobility Radeon HD 540v supported 1 1 3.3 ATI Mobility Radeon HD 540v
-ATI Mobility Radeon HD 545v supported 2 1 4 ATI Mobility Radeon HD 545v
-ATI Mobility Radeon HD 5500 supported 3 0 4.2 ATI Mobility Radeon HD 5500
-ATI Mobility Radeon HD 550v supported 3 1 4 ATI Mobility Radeon HD 550v
-ATI Mobility Radeon HD 5600 supported 3 1 4.2 ATI Mobility Radeon HD 5600
-ATI Mobility Radeon HD 560v supported 3 1 3.2 ATI Mobility Radeon HD 560v
-ATI Mobility Radeon HD 565v supported 3 1 3.3 ATI Mobility Radeon HD 565v
-ATI Mobility Radeon HD 5700 supported 3 1 4.1 ATI Mobility Radeon HD 5700
-ATI Mobility Radeon HD 6300 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Mobility Radeon HD 6500 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Mobility Radeon HD 6500M supported 3 1 4.2 ATI Radeon HD 6500
-ATI Mobility Radeon X1xxx supported 2 0 2.1 ATI Mobility Radeon X1000
-ATI Mobility Radeon X2xxx supported 2 0 2.1 ATI Radeon X2xxx
-ATI Mobility Radeon X3xx supported 1 1 2.1 ATI Radeon X300
-ATI Mobility Radeon X6xx supported 1 1 2.1 ATI Radeon X600
-ATI Mobility Radeon X7xx supported 2 1 2.1 ATI Radeon X700
-ATI Mobility Radeon Xxxx supported 2 0 2.1 ATI Mobility Radeon XX000
-ATI R300 (9700) supported 0 1 2.1 ATI R300 (9700)
-ATI RV410 (X700) supported 1 0 0 ATI RV410 (X700)
-ATI RV530 supported 1 0 0 ATI RV530
-ATI Radeon supported 3 0 0 ATI Radeon
-ATI Radeon 2100 supported 0 1 2.1 ATI Radeon 2100
-ATI Radeon 3000 supported 1 1 4 ATI Radeon 3000
-ATI Radeon 3100 supported 0 1 3.3 ATI Radeon 3100
-ATI Radeon 5xxx supported 3 0 0 ATI Radeon 5xxx
-ATI Radeon 7000 supported 0 1 2 ATI Radeon 7xxx
-ATI Radeon 7xxx supported 0 1 2 ATI Radeon 7xxx
-ATI Radeon 8xxx supported 0 0 0 ATI Radeon 8xxx
-ATI Radeon 9000 supported 0 1 1.3 ATI Radeon 9000
-ATI Radeon 9100 supported 0 0 0 ATI Radeon 9100
-ATI Radeon 9200 supported 0 1 1.3 ATI Radeon 9200
-ATI Radeon 9500 supported 0 1 2.1 ATI Radeon 9500
-ATI Radeon 9600 supported 0 1 2.1 ATI Radeon 9600
-ATI Radeon 9700 supported 1 0 0 ATI Radeon 9700
-ATI Radeon 9800 supported 1 1 2.1 ATI Radeon 9800
-ATI Radeon HD 2300 supported 0 1 3.3 ATI Radeon HD 2300
-ATI Radeon HD 2400 supported 1 1 4 ATI Radeon HD 2400
-ATI Radeon HD 2600 supported 2 1 4 ATI Radeon HD 2600
-ATI Radeon HD 2900 supported 3 1 3.3 ATI Radeon HD 2900
-ATI Radeon HD 3000 supported 0 0 0 ATI Radeon HD 3000
-ATI Radeon HD 3100 supported 1 0 0 ATI Radeon HD 3100
-ATI Radeon HD 3200 supported 1 1 4 ATI Radeon HD 3200
-ATI Radeon HD 3300 supported 1 1 3.3 ATI Radeon HD 3300
-ATI Radeon HD 3400 supported 1 1 4 ATI Radeon HD 3400
-ATI Radeon HD 3500 supported 2 0 0 ATI Radeon HD 3500
-ATI Radeon HD 3600 supported 3 1 4 ATI Radeon HD 3600
-ATI Radeon HD 3700 supported 3 0 3.3 ATI Radeon HD 3700
-ATI Radeon HD 3800 supported 3 1 4 ATI Radeon HD 3800
-ATI Radeon HD 4200 supported 1 1 4 ATI Radeon HD 4200
-ATI Radeon HD 4300 supported 2 1 4 ATI Radeon HD 4300
-ATI Radeon HD 4400 supported 2 0 0 ATI Radeon HD 4400
-ATI Radeon HD 4500 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Radeon HD 4600 supported 3 1 4 ATI Radeon HD 4600
-ATI Radeon HD 4700 supported 3 1 3.3 ATI Radeon HD 4700
-ATI Radeon HD 4800 supported 3 1 4 ATI Radeon HD 4800
-ATI Radeon HD 5400 supported 3 1 4.2 ATI Radeon HD 5400
-ATI Radeon HD 5500 supported 3 1 4.2 ATI Radeon HD 5500
-ATI Radeon HD 5600 supported 3 1 4.2 ATI Radeon HD 5600
-ATI Radeon HD 5700 supported 3 1 4.2 ATI Radeon HD 5700
-ATI Radeon HD 5800 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Radeon HD 5900 supported 4 1 4.2 ATI Radeon HD 5900
-ATI Radeon HD 6200 supported 0 1 4.2 ATI Radeon HD 6200
-ATI Radeon HD 6300 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Radeon HD 6300M supported 1 1 4.2 ATI Radeon HD 6300
-ATI Radeon HD 6400 supported 3 1 4.2 ATI Radeon HD 6400
-ATI Radeon HD 64xx supported 3 1 4.2 ATI Radeon HD 6400
-ATI Radeon HD 6500 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Radeon HD 65xx supported 3 1 4.2 ATI Radeon HD 6500
-ATI Radeon HD 6600 supported 3 1 4.2 ATI Radeon HD 6600
-ATI Radeon HD 66xx supported 3 1 4.2 ATI Radeon HD 6600
-ATI Radeon HD 6700 supported 3 1 4.2 ATI Radeon HD 6700
-ATI Radeon HD 6700M supported 3 1 4.2 ATI Radeon HD 6700
-ATI Radeon HD 6800 supported 4 1 4.2 ATI Radeon HD 6800
-ATI Radeon HD 6900 supported 5 1 4.2 ATI Radeon HD 6900
-ATI Radeon HD 7200 supported 2 0 4.2 ATI Radeon HD 7200
-ATI Radeon HD 7300 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Radeon HD 7400 supported 2 0 4.2 ATI Radeon HD 7400
-ATI Radeon HD 7500 supported 3 1 4.2 ATI Radeon HD 7500
-ATI Radeon HD 7600 supported 3 0 4.2 ATI Radeon HD 7600
-ATI Radeon HD 7700 supported 4 1 4.2 ATI Radeon HD 7700
-ATI Radeon HD 7800 supported 5 1 4.2 ATI Radeon HD 7800
-ATI Radeon HD 7900 supported 5 1 4.2 ATI Radeon HD 7900
-ATI Radeon X1000 supported 2 0 2.1 ATI Radeon X1000
-ATI Radeon X1200 supported 2 0 2.1 ATI Radeon X1200
-ATI Radeon X1300 supported 2 1 2.1 ATI Radeon X1300
-ATI Radeon X13xx supported 2 1 2.1 ATI Radeon X1300
-ATI Radeon X1400 supported 2 1 2.1 ATI Radeon X1400
-ATI Radeon X1500 supported 2 1 2.1 ATI Radeon X1500
-ATI Radeon X15xx supported 2 1 2.1 ATI Radeon X1500
-ATI Radeon X1600 supported 2 1 2.1 ATI Radeon X1600
-ATI Radeon X16xx supported 2 1 2.1 ATI Radeon X1600
-ATI Radeon X17xx supported 2 1 2.1 ATI Radeon X1700
-ATI Radeon X1800 supported 3 1 2.1 ATI Radeon X1800
-ATI Radeon X18xx supported 3 1 2.1 ATI Radeon X1800
-ATI Radeon X1900 supported 2 1 2.1 ATI Radeon X1900
-ATI Radeon X19xx supported 2 1 2.1 ATI Radeon X1900
-ATI Radeon X1xxx supported 2 0 2.1 ATI Radeon X1xxx
-ATI Radeon X2xxx supported 2 0 2.1 ATI Radeon X2xxx
-ATI Radeon X300 supported 1 1 2.1 ATI Radeon X300
-ATI Radeon X500 supported 1 1 2.1 ATI Radeon X500
-ATI Radeon X600 supported 1 1 2.1 ATI Radeon X600
-ATI Radeon X700 supported 2 1 2.1 ATI Radeon X700
-ATI Radeon X800 supported 1 1 2.1 ATI Radeon X800
-ATI Radeon Xpress supported 0 1 2.1 ATI Radeon Xpress
-ATI Rage 128 supported 0 0 0 ATI Rage 128
-ATI Technologies NO MATCH
-ATI Technologies Inc. NO MATCH
-ATI Technologies Inc. (DNA-AMD GFX) AMD Radeon HD 6290 Graphics supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. (DNA-ATi 5.1.7.5x32) ATI Mobility Radeon HD 2 NO MATCH
-ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730 supported 3 1 4.1 ATI Mobility Radeon HD 5700
-ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5870 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. 128MB ATI RADEON X600 SE supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. 128MB ATI RADEON X600 SE x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. 128MB ATI Radeon X1300 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 128MB ATI Radeon X1300 x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 256MB ATI RADEON X600 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. 3DP (ATI RADEON XPRESS 200M) supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. 3DP Edition v10.04 (Mobility Radeon X1600) x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. 7900 MOD - AMD Radeon HD 7400M Series supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. 7900 MOD - AMD Radeon HD 7640G supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. ALL-IN-WONDER 9600 SERIES supported 1 0 2.1 ATI All-in-Wonder 9xxx
-ATI Technologies Inc. AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD (ATI) FirePro M4000 (FireGL V) Mobility Pro Graphics supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD (ATI) FirePro M6000 (FireGL V) Mobility Pro Graphics supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD (ATI) FirePro M8900 (FireGL) Mobility Pro supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD (ATI) FirePro M8900 (FireGL) Mobility Pro Graphics supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD 760G supported 1 1 3.3 ATI 760G/Radeon 3000
-ATI Technologies Inc. AMD 760G (Microsoft Corporation WDDM 1.1) supported 1 1 3.3 ATI 760G/Radeon 3000
-ATI Technologies Inc. AMD FirePro 2270 supported 2 1 4.2 ATI FirePro 2000
-ATI Technologies Inc. AMD FirePro 2460 supported 2 1 4.2 ATI FirePro 2000
-ATI Technologies Inc. AMD FirePro M2000 supported 3 1 4.2 ATI FirePro M
-ATI Technologies Inc. AMD FirePro M3900 supported 2 0 4.1 ATI FirePro M3900
-ATI Technologies Inc. AMD FirePro M4000 supported 3 1 4.2 ATI FirePro M
-ATI Technologies Inc. AMD FirePro M5950 supported 3 1 4.2 ATI FirePro M
-ATI Technologies Inc. AMD FirePro M5950 Mobility Professional Graphics supported 3 1 4.2 ATI FirePro M
-ATI Technologies Inc. AMD FirePro V3900 supported 2 0 0 ATI FirePro 3000
-ATI Technologies Inc. AMD FirePro V3900 (ATI FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V4900 supported 2 0 4.1 ATI FirePro 4000
-ATI Technologies Inc. AMD FirePro V4900 (ATI FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V4900 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V4900 (FireGL V) Graphics Adapter supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V5900 supported 3 0 0 ATI FirePro 5000
-ATI Technologies Inc. AMD FirePro V5900 (ATI FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V5900 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V5900 (FireGL V) Graphics Adapter supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V7900 supported 3 0 0 ATI FirePro 7000
-ATI Technologies Inc. AMD FirePro V7900 (ATI FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V7900 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro V7900 (FireGL V) Graphics Adapter supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro W5000 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD FirePro W9000 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100 supported 1 1 3.3 ATI Mobility Radeon 4100
-ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4225 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. AMD RADEON HD 6350 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD RADEON HD 6450 supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD RADEON HD 6450A supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD RADEON HD 6670 supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD RADEON HD 7450 supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD RADEON HD6370D Graphics supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD RADEON HD6410D Graphics supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD RADEON HD6530D Graphics supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD RADEON HD6550D Graphics supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon supported 3 0 0 ATI Radeon
-ATI Technologies Inc. AMD Radeon (TM) HD 8500M/8700M supported 4 0 4.2 ATI Radeon HD 8500D/G/M
-ATI Technologies Inc. AMD Radeon 6600M and 6700M Series supported 0 0 0 ATI Radeon 6xxx
-ATI Technologies Inc. AMD Radeon 6600M and 6700M Series (Microsoft Corporation - WDDM v1.20) supported 0 0 0 ATI Radeon 6xxx
-ATI Technologies Inc. AMD Radeon HD 5450 supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. AMD Radeon HD 5500 Series supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. AMD Radeon HD 5500 Series (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. AMD Radeon HD 6200 series Graphics supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6250 supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6250 Graphics supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6250M supported 3 0 4.2 ATI Radeon HD 6200D/G/M
-ATI Technologies Inc. AMD Radeon HD 6290 supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6290 Graphics supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6290M supported 3 0 4.2 ATI Radeon HD 6200D/G/M
-ATI Technologies Inc. AMD Radeon HD 6300 series Graphics supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6300M Series supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6310 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Engineering Sample - WDDM v1.20) supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Microsoft Corporation - WDDM v1.3) supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Microsoft Corporation- WDDM v1.20) supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310M supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6320 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320 Graphic supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics (Microsoft Corporation - WDDM v1.20) supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320 series Graphics supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6320M supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6330M supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6350 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6370D supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6370M supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6380G supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD 6400 Series supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6400M Series supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6410D supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6410D Graphics supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6450 supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6450 (Microsoft Corporation - WDDM v1.2) supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6450 Graphics supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6450A supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6450A Graphics supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6450M supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6470M supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6470M/7400M Series supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6480G supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6480M supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6490M supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon HD 6500 Series supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6500 series graphics supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6500M Series supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6510 Series supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6520G supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6530D supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6530D Graphics supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6530M supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6550A supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6550D supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6550D Graphics supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6550M supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6570 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6570 (Microsoft Corporation - WDDM v1.2) supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6570 (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6570M supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6570M/5730 supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon HD 6600 Series supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD Radeon HD 6600M Series supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6610M Graphics supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6620G supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6625M Graphics supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6630M supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6650A Graphics supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD Radeon HD 6650M supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon HD 6670 supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD Radeon HD 6670 (Microsoft Corporation - WDDM v1.2) supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD Radeon HD 6670 (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. AMD Radeon HD 6700 Series supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. AMD Radeon HD 6700 series supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. AMD Radeon HD 6700M Series supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6700M Series (Microsoft Corporation - WDDM v1.20) supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6700M/7700M/7900M Series supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6730M supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6750 supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. AMD Radeon HD 6750M supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6770 supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. AMD Radeon HD 6770M supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6770M OpenGL Engine supported 4 0 4.2 ATI Radeon HD 6700D/G/M
-ATI Technologies Inc. AMD Radeon HD 6800 Series supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Engineering Sample - WDDM v1.20) supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Microsoft Corporation - WDDM v1.2) supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Microsoft Corporation - WDDM v1.20) supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6800M Series supported 4 0 4.2 ATI Radeon HD 6800D/G/M
-ATI Technologies Inc. AMD Radeon HD 6850 supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6850 X2 supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6850M supported 4 0 4.2 ATI Radeon HD 6800D/G/M
-ATI Technologies Inc. AMD Radeon HD 6870 supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. AMD Radeon HD 6870M supported 4 0 4.2 ATI Radeon HD 6800D/G/M
-ATI Technologies Inc. AMD Radeon HD 6900 Series supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. AMD Radeon HD 6900 Series (Microsoft Corporation - WDDM v1.2) supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. AMD Radeon HD 6900M Series supported 4 0 4.2 ATI Radeon HD 6900D/G/M
-ATI Technologies Inc. AMD Radeon HD 6970 supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. AMD Radeon HD 6970M supported 4 0 4.2 ATI Radeon HD 6900D/G/M
-ATI Technologies Inc. AMD Radeon HD 6990 supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. AMD Radeon HD 6990M supported 4 0 4.2 ATI Radeon HD 6900D/G/M
-ATI Technologies Inc. AMD Radeon HD 7000 series supported 3 1 4.2 ATI Radeon HD 7000 Series
-ATI Technologies Inc. AMD Radeon HD 7290 Graphics supported 2 0 4.2 ATI Radeon HD 7200
-ATI Technologies Inc. AMD Radeon HD 7300 Series (Microsoft Corporation - WDDM v1.2) supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7300 Series Graphics supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7310 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics (Microsoft Corporation - WDDM v1.2) supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7310G supported 3 0 4.2 ATI Radeon HD 7300D/G/M
-ATI Technologies Inc. AMD Radeon HD 7310M supported 3 0 4.2 ATI Radeon HD 7300D/G/M
-ATI Technologies Inc. AMD Radeon HD 7340 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7340 Graphics supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7340G supported 3 0 4.2 ATI Radeon HD 7300D/G/M
-ATI Technologies Inc. AMD Radeon HD 7340M supported 3 0 4.2 ATI Radeon HD 7300D/G/M
-ATI Technologies Inc. AMD Radeon HD 7350 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7350 Graphics supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon HD 7370M supported 3 0 4.2 ATI Radeon HD 7300D/G/M
-ATI Technologies Inc. AMD Radeon HD 7400 Series supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7400 Series (Microsoft Corporation - WDDM v1.2) supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7400G supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7400M Series supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7400M Series (Microsoft Corporation - WDDM v1.20) supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7410M supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7420G supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7450 supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7450 Graphics supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7450A Graphics supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7450M supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7470 supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7470 Series supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon HD 7470M supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7480D supported 3 0 4.2 ATI Radeon HD 7400D/G/M
-ATI Technologies Inc. AMD Radeon HD 7500 Series supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7500 Series (Microsoft Corporation - WDDM v1.2) supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7500 Series (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7500/7600 Series supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7500G supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7500G + 7500M/7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7500M/7600M Series supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7510 supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7520G supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 6400M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 7470M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 7500/7600 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 7610M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7520G + 7670M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7540D supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7540D + 7450 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7550M supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7550M/7650M Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D (Microsoft Corporation - WDDM v1.20) supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D + 6570 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D + 6670 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D + 7560D Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D + 7600 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7560D + 7670 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7570 supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7570 Graphics supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7570 Series supported 3 1 4.2 ATI Radeon HD 7500
-ATI Technologies Inc. AMD Radeon HD 7570M supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7570M/HD 7670M Graphics supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7580D supported 4 0 4.2 ATI Radeon HD 7500D/G/M
-ATI Technologies Inc. AMD Radeon HD 7600 Series (Microsoft Corporation - WDDM v1.20) supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon HD 7600G supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7600G + 7500M/7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7600G + 7550M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7600M + 7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7600M Series supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7610M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7620G supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 6400M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7450M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7470M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7500/7600 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7500M/7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7610M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7640G + 7670M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7650A supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon HD 7650A Graphics supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon HD 7650M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7650M Series supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660D supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660D + 6570 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660D + 6670 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660D + 7670 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660D + 7700 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 6400M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7400M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7470M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7500/7600 Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7600M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7610M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7670M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7660G + 7700M Dual Graphics supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7670 supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon HD 7670M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7690M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD 7700 Series supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD 7700 Series (Microsoft Corporation - WDDM v1.3) supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD 7700M Series supported 4 0 4.2 ATI Radeon HD 7700D/G/M
-ATI Technologies Inc. AMD Radeon HD 7730M supported 4 0 4.2 ATI Radeon HD 7700D/G/M
-ATI Technologies Inc. AMD Radeon HD 7770 supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD 7770 GHz Edition supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD 7800 Series supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Engineering Sample - WDDM v1.20) supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Microsoft Corporation - WDDM v1.20) supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Microsoft Corporation - WDDM v1.3) supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. AMD Radeon HD 7800M Series supported 4 0 4.2 ATI Radeon HD 7800D/G/M
-ATI Technologies Inc. AMD Radeon HD 7870 supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. AMD Radeon HD 7870M supported 4 0 4.2 ATI Radeon HD 7800D/G/M
-ATI Technologies Inc. AMD Radeon HD 7900 Series supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. AMD Radeon HD 7900 Series (Microsoft Corporation - WDDM v1.3) supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. AMD Radeon HD 7950 supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. AMD Radeon HD 7970 supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. AMD Radeon HD 7970M supported 4 0 4.2 ATI Radeon HD 7900D/G/M
-ATI Technologies Inc. AMD Radeon HD 8210 supported 2 0 4.2 ATI Radeon HD 8200
-ATI Technologies Inc. AMD Radeon HD 8240 supported 2 0 4.2 ATI Radeon HD 8200
-ATI Technologies Inc. AMD Radeon HD 8250 supported 2 0 4.2 ATI Radeon HD 8200
-ATI Technologies Inc. AMD Radeon HD 8280G supported 3 0 4.2 ATI Radeon HD 8200D/G/M
-ATI Technologies Inc. AMD Radeon HD 8330 supported 2 0 4.2 ATI Radeon HD 8300 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8350 supported 2 0 4.2 ATI Radeon HD 8300 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8350G supported 3 0 4.2 ATI Radeon HD 8300D/G/M
-ATI Technologies Inc. AMD Radeon HD 8400 supported 2 0 4.2 ATI Radeon HD 8400 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8450 supported 2 0 4.2 ATI Radeon HD 8400 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8450G supported 4 0 4.2 ATI Radeon HD 8400D/G/M
-ATI Technologies Inc. AMD Radeon HD 8470 supported 2 0 4.2 ATI Radeon HD 8400 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8470D supported 4 0 4.2 ATI Radeon HD 8400D/G/M
-ATI Technologies Inc. AMD Radeon HD 8550G supported 4 0 4.2 ATI Radeon HD 8500D/G/M
-ATI Technologies Inc. AMD Radeon HD 8570 supported 3 1 4.2 ATI Radeon HD 8500 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8570D supported 4 0 4.2 ATI Radeon HD 8500D/G/M
-ATI Technologies Inc. AMD Radeon HD 8610G supported 4 0 4.2 ATI Radeon HD 8600D/G/M
-ATI Technologies Inc. AMD Radeon HD 8650G supported 4 0 4.2 ATI Radeon HD 8600D/G/M
-ATI Technologies Inc. AMD Radeon HD 8670D supported 4 0 4.2 ATI Radeon HD 8600D/G/M
-ATI Technologies Inc. AMD Radeon HD 8670D + 6670 Dual Graphics supported 4 0 4.2 ATI Radeon HD 8600D/G/M
-ATI Technologies Inc. AMD Radeon HD 8700M Series supported 4 0 4.2 ATI Radeon HD 8700D/G/M
-ATI Technologies Inc. AMD Radeon HD 8730M supported 4 0 4.2 ATI Radeon HD 8700D/G/M
-ATI Technologies Inc. AMD Radeon HD 8750M supported 4 0 4.2 ATI Radeon HD 8700D/G/M
-ATI Technologies Inc. AMD Radeon HD 8760 supported 4 1 4.2 ATI Radeon HD 8700 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8800M Series supported 4 0 4.2 ATI Radeon HD 8800D/G/M
-ATI Technologies Inc. AMD Radeon HD 8900 Series (OEM) supported 5 1 4.2 ATI Radeon HD 8900 (OEM)
-ATI Technologies Inc. AMD Radeon HD 8950 supported 5 1 4.2 ATI Radeon HD 8900 (OEM)
-ATI Technologies Inc. AMD Radeon HD HD7850M supported 4 0 4.2 ATI Radeon HD 7800D/G/M
-ATI Technologies Inc. AMD Radeon HD6370D Graphics supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon HD7610M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon HD7700 Series supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD7770 supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD7770 GHz Edition supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. AMD Radeon HD8350 supported 2 0 4.2 ATI Radeon HD 8300 (OEM)
-ATI Technologies Inc. AMD Radeon(TM) HD 6380G supported 3 1 4.2 ATI Radeon HD 6300D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6470M supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6480G supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6480G (Microsoft Corporation - WDDM v1.20) supported 3 0 4.2 ATI Radeon HD 6400D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6520G supported 4 1 4.2 ATI Radeon HD 6500D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6620G supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6630M supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 6650M supported 4 0 4.2 ATI Radeon HD 6600D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 7450 supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon(TM) HD 7450A Graphics supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. AMD Radeon(TM) HD 7650A Graphics supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon(TM) HD 7670A Graphics supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. AMD Radeon(TM) HD 7670M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon(TM) HD 8350 supported 2 0 4.2 ATI Radeon HD 8300 (OEM)
-ATI Technologies Inc. AMD Radeon(TM) HD8490 supported 2 0 4.2 ATI Radeon HD 8400 (OEM)
-ATI Technologies Inc. AMD Radeon. HD 7350 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. AMD Radeon. HD 7670M supported 4 0 4.2 ATI Radeon HD 7600D/G/M
-ATI Technologies Inc. AMD Radeon. HD 7730M supported 4 0 4.2 ATI Radeon HD 7700D/G/M
-ATI Technologies Inc. ASUS AH3450 Series supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ASUS AH3650 Series supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ASUS AH4650 Series supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ASUS ARES unsupported 0 0 0 ATI ARES
-ATI Technologies Inc. ASUS ARES2 unsupported 0 0 0 ATI ARES
-ATI Technologies Inc. ASUS EAH2400 Series supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ASUS EAH2600 Series supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ASUS EAH3450 Series supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ASUS EAH3650 Series supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ASUS EAH3850 Series supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ASUS EAH3870 Series supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ASUS EAH4350 series supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ASUS EAH4550 series supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ASUS EAH4650 series supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ASUS EAH4670 series supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ASUS EAH4770 Series supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ASUS EAH4770 series supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ASUS EAH4850 series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ASUS EAH4870 series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ASUS EAH4870x2 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ASUS EAH4890 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ASUS EAH5450 Series supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. ASUS EAH5550 Series supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ASUS EAH5570 series supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ASUS EAH5670 Series supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ASUS EAH5750 Series supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ASUS EAH5770 Series supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ASUS EAH5830 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ASUS EAH5850 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ASUS EAH5870 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ASUS EAH6450 Series supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. ASUS EAH6570 Series supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. ASUS EAH6670 Series supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. ASUS EAH6750 Series supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. ASUS EAH6770 Series supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. ASUS EAH6850 Series supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. ASUS EAH6870 Series supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. ASUS EAH6950 Series supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. ASUS EAH6970 Series supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. ASUS Extreme AX300 Series supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ASUS Extreme AX300SE/T supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ASUS Extreme AX550 Series supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ASUS Extreme AX550 Series x86/SSE2 supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ASUS Extreme AX600 Series supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. ASUS HD 7350 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. ASUS HD7470 Series supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. ASUS HD7670 Series supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. ASUS HD7750 Series supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. ASUS HD7770 Series supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. ASUS HD7790 Series supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. ASUS HD7850 Series supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. ASUS HD7870 Series supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. ASUS HD7950 Series supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. ASUS HD7970 Series supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. ASUS X1300 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ASUS X1300 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ASUS X1300 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ASUS X1300 x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ASUS X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ASUS X1550 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ASUS X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ASUS X1600 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1600 Series x86 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1600 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1600 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1650 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1650 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1650 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ASUS X1950 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Radeon HD 5000 Series supported 3 1 4.2 ATI Radeon HD 5000
-ATI Technologies Inc. ATI Radeon HD 6350 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. ATI All-in-Wonder HD supported 1 1 3.3 ATI All-in-Wonder HD
-ATI Technologies Inc. ATI Display Adapter supported 1 1 4.1 ATI Display Adapter
-ATI Technologies Inc. ATI FireGL V3100 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3200 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3300 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3350 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3350 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3400 (Microsoft Corporation - WDDM) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3400 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V3600 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V5200 (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI FireGL 5200
-ATI Technologies Inc. ATI FireGL V5200 Pentium 4 (SSE2) supported 1 1 2.1 ATI FireGL 5200
-ATI Technologies Inc. ATI FireGL V5600 supported 2 1 3.3 ATI FireGL 5xxx
-ATI Technologies Inc. ATI FireGL V7200 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V7200 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V7600 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireGL V7700 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FireMV 2250 supported 0 1 3.2 ATI FireMV
-ATI Technologies Inc. ATI FireMV 2250 x86/SSE2 supported 0 1 3.2 ATI FireMV
-ATI Technologies Inc. ATI FirePro 2260 supported 2 1 4.2 ATI FirePro 2000
-ATI Technologies Inc. ATI FirePro 2450 supported 2 1 4.2 ATI FirePro 2000
-ATI Technologies Inc. ATI FirePro 3800 (FireGL) Graphics Adapter supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro M5800 supported 3 0 0 ATI FirePro M5800
-ATI Technologies Inc. ATI FirePro M7740 supported 3 0 0 ATI FirePro M7740
-ATI Technologies Inc. ATI FirePro M7820 supported 5 1 4.2 ATI FirePro M7820
-ATI Technologies Inc. ATI FirePro M7820 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V3700 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V3800 supported 2 0 0 ATI FirePro 3000
-ATI Technologies Inc. ATI FirePro V3800 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V3800 (FireGL V) Graphics Adapter supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V3800 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V4800 supported 2 0 4.1 ATI FirePro 4000
-ATI Technologies Inc. ATI FirePro V4800 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V4800 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V5700 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V5800 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V5800 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V7800 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V7800 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V8700 (FireGL) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI FirePro V9800 (FireGL V) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI MOBILITY FIRE GL T2/T2e supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI MOBILITY FireGL V3200 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. ATI MOBILITY FireGL V5000 Pentium 4 (SSE2) supported 2 1 3.3 ATI FireGL 5xxx
-ATI Technologies Inc. ATI MOBILITY FireGL V5200 supported 1 1 2.1 ATI FireGL 5200
-ATI Technologies Inc. ATI MOBILITY FireGL V5200 Pentium 4 (SSE2) supported 1 1 2.1 ATI FireGL 5200
-ATI Technologies Inc. ATI MOBILITY FireGL V5250 supported 1 1 2.1 ATI FireGL 5200
-ATI Technologies Inc. ATI MOBILITY RADEON 9600 Series supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series (Omega 3 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2300 supported 0 1 2.1 ATI Mobility Radeon HD 2300
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2400 supported 1 1 3.3 ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2600 supported 1 1 3.3 ATI Mobility Radeon HD 2600
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3430 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3450 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3650 supported 1 1 4 ATI Mobility Radeon HD 3600
-ATI Technologies Inc. ATI MOBILITY RADEON HD 4530 / 4570 supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI MOBILITY RADEON X1300 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI MOBILITY RADEON X1350 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI MOBILITY RADEON X1400 supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI MOBILITY RADEON X1600 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ATI MOBILITY RADEON X1700 supported 2 1 2.1 ATI Radeon X1700
-ATI Technologies Inc. ATI MOBILITY RADEON X1800 supported 3 1 2.1 ATI Radeon X1800
-ATI Technologies Inc. ATI MOBILITY RADEON X1900 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI MOBILITY RADEON X300 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. ATI MOBILITY RADEON X300 x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. ATI MOBILITY RADEON X600 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. ATI MOBILITY RADEON X600 SE supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. ATI MOBILITY RADEON X700 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI MOBILITY Radeon HD 4650 supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility FireGL V5700 supported 2 1 3.3 ATI FireGL 5xxx
-ATI Technologies Inc. ATI Mobility FireGL V5725 supported 2 1 3.3 ATI FireGL 5xxx
-ATI Technologies Inc. ATI Mobility Radeon 4100 supported 1 1 3.3 ATI Mobility Radeon 4100
-ATI Technologies Inc. ATI Mobility Radeon Graphics NO MATCH
-ATI Technologies Inc. ATI Mobility Radeon HD 2300 supported 0 1 2.1 ATI Mobility Radeon HD 2300
-ATI Technologies Inc. ATI Mobility Radeon HD 2300 x86/SSE2 supported 0 1 2.1 ATI Mobility Radeon HD 2300
-ATI Technologies Inc. ATI Mobility Radeon HD 2400 supported 1 1 3.3 ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI Mobility Radeon HD 2400 (Omega 3.8.442) supported 1 1 3.3 ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT supported 1 1 3.3 ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI Mobility Radeon HD 2600 supported 1 1 3.3 ATI Mobility Radeon HD 2600
-ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT supported 1 1 3.3 ATI Mobility Radeon HD 2600
-ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT (Microsoft Corporation WDDM 1.1) supported 1 1 3.3 ATI Mobility Radeon HD 2600
-ATI Technologies Inc. ATI Mobility Radeon HD 2700 supported 3 0 0 ATI Mobility Radeon HD 2700
-ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series (Microsoft Corporation WDDM 1.1) supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series (Microsoft Corporation- WDDM v1.1) supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3410 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3430 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3430 (Microsoft Corporation- WDDM v1.1) supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3450 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3470 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2 supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3470 Series supported 1 1 4 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI Mobility Radeon HD 3650 supported 1 1 4 ATI Mobility Radeon HD 3600
-ATI Technologies Inc. ATI Mobility Radeon HD 3670 supported 1 1 4 ATI Mobility Radeon HD 3600
-ATI Technologies Inc. ATI Mobility Radeon HD 3850 supported 3 1 3.3 ATI Mobility Radeon HD 3800
-ATI Technologies Inc. ATI Mobility Radeon HD 3870 supported 3 1 3.3 ATI Mobility Radeon HD 3800
-ATI Technologies Inc. ATI Mobility Radeon HD 3870 X2 supported 3 1 3.3 ATI Mobility Radeon HD 3800
-ATI Technologies Inc. ATI Mobility Radeon HD 4200 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series (Microsoft Corporation - WDDM v1.1) supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4225 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4250 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4270 supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4270 Series supported 1 1 4 ATI Mobility Radeon HD 4200
-ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4330 supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4330 Series supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4350 supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series supported 1 1 4 ATI Mobility Radeon HD 4300
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series (Microsoft Corporation - WDDM v1.1) supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series (Microsoft Corporation WDDM 1.1) supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4530 supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4550 supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4570 supported 1 1 4 ATI Mobility Radeon HD 4500
-ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 (Microsoft Corporation - WDDM v1.1) supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 (Microsoft Corporation- WDDM v1.1) supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4670 supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4670 (Microsoft Corporation - WDDM v1.1) supported 2 1 3.3 ATI Mobility Radeon HD 4600
-ATI Technologies Inc. ATI Mobility Radeon HD 4830 supported 3 1 3.3 ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series supported 3 1 3.3 ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 4850 supported 3 1 3.3 ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 4870 supported 3 1 3.3 ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 supported 1 1 4.2 ATI Mobility Radeon 5000
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series supported 1 1 4.2 ATI Mobility Radeon 5000
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Engineering Sample - WDDM v1.20) supported 1 1 4.2 ATI Mobility Radeon 5000
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.2) supported 1 1 4.2 ATI Mobility Radeon 5000
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.20) supported 1 1 4.2 ATI Mobility Radeon 5000
-ATI Technologies Inc. ATI Mobility Radeon HD 5100 supported 3 1 3.2 ATI Mobility Radeon HD 5100
-ATI Technologies Inc. ATI Mobility Radeon HD 5145 supported 3 1 3.2 ATI Mobility Radeon HD 5100
-ATI Technologies Inc. ATI Mobility Radeon HD 5165 supported 3 1 3.2 ATI Mobility Radeon HD 5100
-ATI Technologies Inc. ATI Mobility Radeon HD 530v supported 1 1 3.3 ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon HD 5400 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 540v supported 1 1 3.3 ATI Mobility Radeon HD 540v
-ATI Technologies Inc. ATI Mobility Radeon HD 5430 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 545v supported 2 1 4 ATI Mobility Radeon HD 545v
-ATI Technologies Inc. ATI Mobility Radeon HD 5470 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 550v supported 3 1 4 ATI Mobility Radeon HD 550v
-ATI Technologies Inc. ATI Mobility Radeon HD 5570 supported 3 0 4.2 ATI Mobility Radeon HD 5500
-ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series supported 3 1 4.2 ATI Mobility Radeon HD 5600
-ATI Technologies Inc. ATI Mobility Radeon HD 560v supported 3 1 3.2 ATI Mobility Radeon HD 560v
-ATI Technologies Inc. ATI Mobility Radeon HD 5650 supported 3 1 4.2 ATI Mobility Radeon HD 5600
-ATI Technologies Inc. ATI Mobility Radeon HD 565v supported 3 1 3.3 ATI Mobility Radeon HD 565v
-ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series supported 3 1 4.1 ATI Mobility Radeon HD 5700
-ATI Technologies Inc. ATI Mobility Radeon HD 5730 supported 3 1 4.1 ATI Mobility Radeon HD 5700
-ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series (Microsoft Corporation - WDDM v1.20) supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Mobility Radeon HD 5850 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Mobility Radeon HD 5870 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Mobility Radeon HD 6370 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. ATI Mobility Radeon HD 6550 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. ATI Mobility Radeon HD 6570 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. ATI Mobility Radeon X1300 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1300 (Omega 3.8.252) x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1350 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Mobility Radeon X1400 supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1400 (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86 supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2 supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1450 x86/SSE2 supported 2 1 2.1 ATI Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1600 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ATI Mobility Radeon X1700 supported 2 1 2.1 ATI Radeon X1700
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86 supported 2 1 2.1 ATI Radeon X1700
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2 supported 2 1 2.1 ATI Radeon X1700
-ATI Technologies Inc. ATI Mobility Radeon X1800 x86/SSE2 supported 3 1 2.1 ATI Radeon X1800
-ATI Technologies Inc. ATI Mobility Radeon X1900 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Mobility Radeon X2300 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow! supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2500 supported 2 0 2.1 ATI Mobility Radeon X2500
-ATI Technologies Inc. ATI Mobility Radeon. HD 530v supported 1 1 3.3 ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon. HD 5470 supported 2 1 4.2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI RADEON 9600 Series supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. ATI RADEON 9600/X1050 Series supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. ATI RADEON E4690 supported 3 1 4 ATI RADEON E4690
-ATI Technologies Inc. ATI RADEON HD 3200 Graphics supported 1 1 4 ATI Radeon HD 3200
-ATI Technologies Inc. ATI RADEON XPRESS 1100 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 1100 Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 1200 Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200 Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series (Microsoft Corporation) supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series (Omega 3.8.421) x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon 2100 supported 0 1 2.1 ATI Radeon 2100
-ATI Technologies Inc. ATI Radeon 2100 (Microsoft Corporation - WDDM) supported 0 1 2.1 ATI Radeon 2100
-ATI Technologies Inc. ATI Radeon 2100 Graphics supported 0 1 2.1 ATI Radeon 2100
-ATI Technologies Inc. ATI Radeon 3000 supported 1 1 4 ATI Radeon 3000
-ATI Technologies Inc. ATI Radeon 3000 Graphics supported 1 1 4 ATI Radeon 3000
-ATI Technologies Inc. ATI Radeon 3000 Graphics (Engineering Sample - WDDM v1.1) supported 1 1 4 ATI Radeon 3000
-ATI Technologies Inc. ATI Radeon 3000 Series Graphics supported 1 1 4 ATI Radeon 3000
-ATI Technologies Inc. ATI Radeon 3100 Graphics supported 0 1 3.3 ATI Radeon 3100
-ATI Technologies Inc. ATI Radeon 3100 Graphics (Microsoft Corporation WDDM 1.1) supported 0 1 3.3 ATI Radeon 3100
-ATI Technologies Inc. ATI Radeon 3100 Series Graphics supported 0 1 3.3 ATI Radeon 3100
-ATI Technologies Inc. ATI Radeon 9550 / X1050 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft Corporation - WDDM) supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series x86/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine supported 3 1 2.1 AMD BA (HD 6800)
-ATI Technologies Inc. ATI Radeon Barts PRO Prototype OpenGL Engine supported 3 1 2.1 AMD BARTS (HD 6800)
-ATI Technologies Inc. ATI Radeon Barts XT Prototype OpenGL Engine supported 3 1 2.1 AMD BARTS (HD 6800)
-ATI Technologies Inc. ATI Radeon Caicos PRO Prototype OpenGL Engine supported 3 0 0 AMD CAICOS (HD 6400)
-ATI Technologies Inc. ATI Radeon Caicos Unknown Prototype OpenGL Engine supported 3 0 0 AMD CAICOS (HD 6400)
-ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine supported 2 0 2.1 AMD CEDAR (HD 5450)
-ATI Technologies Inc. ATI Radeon Graphics Processor NO MATCH
-ATI Technologies Inc. ATI Radeon HD 2350 supported 0 1 3.3 ATI Radeon HD 2300
-ATI Technologies Inc. ATI Radeon HD 2400 supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 PCI supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 PRO supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 PRO AGP supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 Pro supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 Series supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 Series AGP supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 XT supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. ATI Radeon HD 2600 OpenGL Engine supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 PRO supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 Pro supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 Pro AGP supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 Series supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 Series AGP supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600 XT supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2600/3600 Series supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. ATI Radeon HD 2900 GT supported 3 1 3.3 ATI Radeon HD 2900
-ATI Technologies Inc. ATI Radeon HD 2900 PRO supported 3 1 3.3 ATI Radeon HD 2900
-ATI Technologies Inc. ATI Radeon HD 2900 XT supported 3 1 3.3 ATI Radeon HD 2900
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics supported 1 1 4 ATI Radeon HD 3200
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics (Microsoft Corporation - WDDM v1.1) supported 1 1 4 ATI Radeon HD 3200
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics (Microsoft Corporation WDDM 1.1) supported 1 1 4 ATI Radeon HD 3200
-ATI Technologies Inc. ATI Radeon HD 3300 Graphics supported 1 1 3.3 ATI Radeon HD 3300
-ATI Technologies Inc. ATI Radeon HD 3400 Series supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3450 supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3450 AGP supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3470 supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex supported 1 1 4 ATI Radeon HD 3400
-ATI Technologies Inc. ATI Radeon HD 3600 Series supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ATI Radeon HD 3600 Series (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ATI Radeon HD 3600 Series (Microsoft Corporation WDDM 1.1) supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ATI Radeon HD 3650 supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ATI Radeon HD 3650 AGP supported 3 1 4 ATI Radeon HD 3600
-ATI Technologies Inc. ATI Radeon HD 3800 Series supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3850 supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3850 (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3850 AGP supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3870 supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3870 (Engineering Sample - WDDM v1.1) supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3870 (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3870 OpenGL Engine supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 3870 X2 supported 3 1 4 ATI Radeon HD 3800
-ATI Technologies Inc. ATI Radeon HD 4200 supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4200 (Microsoft Corporation - WDDM v1.1) supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4250 supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4250 (Engineering Sample - WDDM v1.1) supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4250 (Microsoft Corporation - WDDM v1.1) supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4250 Graphics supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4270 supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4290 supported 1 1 4 ATI Radeon HD 4200
-ATI Technologies Inc. ATI Radeon HD 4300 Series supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4300/4500 Series supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4300/4500 Series (Microsoft Corporation - WDDM v1.1) supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4300/4500 Series (Microsoft Corporation- WDDM v1.1) supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4350 supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft Corporation WDDM 1.1) supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD 4450 supported 2 0 0 ATI Radeon HD 4400
-ATI Technologies Inc. ATI Radeon HD 4500 Series supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4520 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4550 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4550 (Microsoft Corporation - WDDM v1.1) supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4570 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4580 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4590 supported 2 1 3.3 ATI Radeon HD 4500
-ATI Technologies Inc. ATI Radeon HD 4600 Series supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4600 Series (Engineering Sample - WDDM v1.1) supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4600 Series (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4600-serie (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4650 supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4650 (Microsoft Corporation WDDM 1.1) supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4670 supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD 4700 supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4700 Series supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4720 supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4730 supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4730 Series supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4770 supported 3 1 3.3 ATI Radeon HD 4700
-ATI Technologies Inc. ATI Radeon HD 4800 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4800 Series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4800 Series (Microsoft Corporation - WDDM v1.1) supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4810 series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4830 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4850 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4850 PRO OpenGL Engine supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4850 Series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4850 X2 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4870 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4870 Series supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4870 X2 supported 3 1 4 ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 5400 Series supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. ATI Radeon HD 5450 supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. ATI Radeon HD 5450 (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. ATI Radeon HD 5470 supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. ATI Radeon HD 5500 supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ATI Radeon HD 5500 Series supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ATI Radeon HD 5530 supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ATI Radeon HD 5570 supported 3 1 4.2 ATI Radeon HD 5500
-ATI Technologies Inc. ATI Radeon HD 5600 Series supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ATI Radeon HD 5600/5700 supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ATI Radeon HD 5630 supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ATI Radeon HD 5670 supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5600
-ATI Technologies Inc. ATI Radeon HD 5700 Series supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5700 Series (Microsoft Corporation - WDDM v1.2) supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5700 Series (Microsoft Corporation - WDDM v1.20) supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5750 supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5750 Series supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5770 supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5700
-ATI Technologies Inc. ATI Radeon HD 5800 Series supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Radeon HD 5850 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Radeon HD 5870 supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine supported 4 1 4.2 ATI Radeon HD 5800
-ATI Technologies Inc. ATI Radeon HD 5900 Series supported 4 1 4.2 ATI Radeon HD 5900
-ATI Technologies Inc. ATI Radeon HD 5970 supported 4 1 4.2 ATI Radeon HD 5900
-ATI Technologies Inc. ATI Radeon HD 6230 supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6290 supported 0 1 4.2 ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6350 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. ATI Radeon HD 6390 supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. ATI Radeon HD 6490 supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. ATI Radeon HD 6510 supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. ATI Radeon HD 6570M supported 3 1 4.2 ATI Radeon HD 6500
-ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. ATI Radeon HD 6770 supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine supported 5 1 4.2 ATI Radeon HD 6900
-ATI Technologies Inc. ATI Radeon HD 7350 supported 2 0 4.2 ATI Radeon HD 7300
-ATI Technologies Inc. ATI Radeon HD 7950 OpenGL Engine supported 5 1 4.2 ATI Radeon HD 7900
-ATI Technologies Inc. ATI Radeon HD Pitcairn XT Prototype OpenGL Engine supported 3 0 2.1 AMD PITCAIRN (HD 7870)
-ATI Technologies Inc. ATI Radeon HD Tahiti XT Prototype OpenGL Engine supported 3 0 2.1 AMD TAHITI (HD 7000)
-ATI Technologies Inc. ATI Radeon HD Verde XT Prototype OpenGL Engine unsupported 0 0 0 ATI Radeon VE
-ATI Technologies Inc. ATI Radeon HD3750 supported 3 0 3.3 ATI Radeon HD 3700
-ATI Technologies Inc. ATI Radeon HD4300/HD4500 series supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. ATI Radeon HD4650 supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon HD4670 supported 3 1 4 ATI Radeon HD 4600
-ATI Technologies Inc. ATI Radeon RV730 Prototype OpenGL Engine supported 3 0 1.4 AMD RV730 (HD 4600)
-ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine supported 3 0 0 AMD RV790 (HD 4800)
-ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine supported 3 0 1.4 AMD REDWOOD (HD 5500/5600)
-ATI Technologies Inc. ATI Radeon Turks PRO Prototype OpenGL Engine supported 3 0 2.1 AMD TURKS (HD 6500/6600)
-ATI Technologies Inc. ATI Radeon Turks XT Prototype OpenGL Engine supported 3 0 2.1 AMD TURKS (HD 6500/6600)
-ATI Technologies Inc. ATI Radeon X1050 supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. ATI Radeon X1050 Series supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. ATI Radeon X1050 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. ATI Radeon X1050 x86/SSE2 supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. ATI Radeon X1200 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1200 Series supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1200 Series (Microsoft Corporation - WDDM) supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1200 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1250 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1270 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2 supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. ATI Radeon X1300 / X1550 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Radeon X1300/X1550 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. ATI Radeon X1550 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1550 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1550 x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1550 x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Radeon X1950 GT supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Radeon X1950 GT x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Radeon X1950 GT x86/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. ATI Radeon X600/X550/X1050 Series supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. ATI Radeon Xpress 1100 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1100 x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1150 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1150 Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1200 Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1200 Series (Microsoft Corporation - WDDM) supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1250 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress 1270 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress Series supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. All-in-Wonder 2006 PCI-E Edition supported 1 0 0 ATI All-in-Wonder PCI-E
-ATI Technologies Inc. All-in-Wonder 2006 PCI-E Edition x86/MMX/3DNow!/SSE2 supported 1 0 0 ATI All-in-Wonder PCI-E
-ATI Technologies Inc. Diamond Radeon X1550 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Diamond Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Diamond Radeon X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Diamond Radeon X1550 x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Diamond X1600 PRO 512MB PCI-E x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. FireGL V3200 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. FireGL X1-128 supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. FireMV 2400 PCI DDR x86 supported 0 1 3.2 ATI FireMV
-ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2 supported 0 1 3.2 ATI FireMV
-ATI Technologies Inc. FirePro M3900 Mobility Professional Graphics supported 2 0 4.1 ATI FirePro M3900
-ATI Technologies Inc. GIGABYTE RADEON 9600 PRO supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. GIGABYTE Radeon X1300 Pro supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. GIGABYTE Radeon X1300 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. GIGABYTE Radeon X1600 PRO supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. GeCube RADEON 9600XT supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. GeCube RADEON X550 x86/SSE2 supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. GeCube RADEON X700 Series supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. GeCube Radeon X1550 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. GeCube Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. GeForce 9600 GT x86/SSE2 unsupported 0 0 0 ATI GeForce Lulz
-ATI Technologies Inc. GigaByte Radeon X1050 supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. Gigabyte RADEON X300 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Gigabyte RADEON X300 SE supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Gigabyte RADEON X300 x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. HD3730 supported 3 0 3.3 ATI HD3700
-ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series x86/SSE2 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. HIGHTECH RADEON 9600XT supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. HIS Radeon X1550 x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. M52 x86 supported 1 0 0 ATI M52
-ATI Technologies Inc. M72-M supported 1 0 0 ATI M72
-ATI Technologies Inc. MEDION RADEON 9600 TX supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. MEDION RADEON X740XL x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. MOBILITY FIREGL T2 Pentium 4 (SSE2) supported 4 1 4.2 ATI FireGL
-ATI Technologies Inc. MOBILITY RADEON 7000 IGP DDR x86/SSE2 supported 0 1 1.3 ATI Mobility Radeon 7xxx
-ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2 supported 0 1 1.3 ATI Mobility Radeon 7xxx
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9000/9100 IGP Series DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9000/9100 PRO IGP Series DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY RADEON 9200 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. MOBILITY RADEON 9600 x86 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. MOBILITY RADEON 9600 x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2 supported 1 1 2.1 ATI Mobility Radeon 9600
-ATI Technologies Inc. MOBILITY RADEON 9700 x86 supported 0 1 2.1 ATI Mobility Radeon 9700
-ATI Technologies Inc. MOBILITY RADEON 9700 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Mobility Radeon 9700
-ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2 supported 0 1 2.1 ATI Mobility Radeon 9700
-ATI Technologies Inc. MOBILITY RADEON 9800 x86/SSE2 supported 1 0 0 ATI Mobility Radeon 9800
-ATI Technologies Inc. MOBILITY RADEON X300 x86 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. MOBILITY RADEON X600 SE x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. MOBILITY RADEON X600 x86 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. MOBILITY RADEON X700 SE x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. MOBILITY RADEON X700 x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. MOBILITY/RADEON 9000 DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY/RADEON 9000 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. MOBILITY/RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. MOBILITY/RADEON 9250/9200 Series DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. MSI RX9550SE x86/MMX/3DNow!/SSE supported 1 0 0 ATI Radeon RX9550
-ATI Technologies Inc. MSI Radeon X1550 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Mobility Radeon X2300 HD supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2 supported 2 0 2.1 ATI Mobility Radeon X2300
-ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7000 DDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7000 SDR x86 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7000 SW TCL x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7200 DDR x86/MMX/3DNow!/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7200 DDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7200 SDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 7500 DDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. RADEON 8500 DDR x86/MMX/3DNow!/SSE2 supported 0 0 0 ATI Radeon 8xxx
-ATI Technologies Inc. RADEON 8500 DDR x86/SSE2 supported 0 0 0 ATI Radeon 8xxx
-ATI Technologies Inc. RADEON 9000 DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. RADEON 9000 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. RADEON 9000 PRO DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. RADEON 9000 XT IGPRADEON 9100 XT IGP DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9000
-ATI Technologies Inc. RADEON 9100 DDR x86/MMX/3DNow!/SSE2 supported 0 0 0 ATI Radeon 9100
-ATI Technologies Inc. RADEON 9100 DDR x86/SSE2 supported 0 0 0 ATI Radeon 9100
-ATI Technologies Inc. RADEON 9100 IGP DDR x86 supported 0 0 0 ATI Radeon 9100
-ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2 supported 0 0 0 ATI Radeon 9100
-ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 LE DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 PRO DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 Series DDR x86 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow! supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200SE DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9200SE DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9250/9000 Series DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. RADEON 9500 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. RADEON 9500 PRO / 9700 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. RADEON 9550 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. RADEON 9550 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. RADEON 9550 x86/SSE2 supported 0 1 2.1 ATI Radeon 9500
-ATI Technologies Inc. RADEON 9600 SERIES supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 TX supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 TX x86/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 XT x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 XT x86/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600 x86/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600SE x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9600SE x86/SSE2 supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. RADEON 9700 PRO supported 1 0 0 ATI Radeon 9700
-ATI Technologies Inc. RADEON 9800 PRO supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 PRO (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 PRO - Secondary supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 Pro x86/SSE2 supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 SERIES supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 XT supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 XT x86/SSE2 supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON 9800 x86/SSE2 supported 1 1 2.1 ATI Radeon 9800
-ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2 unsupported 0 0 1.3 ATI IGP 340M
-ATI Technologies Inc. RADEON Radeon X300/X550/X1050 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X1600 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. RADEON X1600 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. RADEON X300 SE 128MB HyperMemory x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300 SE x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300 Series supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300 x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300 x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300/X550 Series x86 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300/X550 Series x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. RADEON X550 x86/MMX/3DNow! supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. RADEON X550 x86/SSE2 supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. RADEON X550XT supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. RADEON X600 256MB HyperMemory x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 PRO x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 PRO x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 SE x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 Series supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600 x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600/X550 Series supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600/X550 Series (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600/X550 Series Secondary supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X600/X550 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X600
-ATI Technologies Inc. RADEON X700 PRO x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 PRO x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 SE supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 SE x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 SE x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 Series supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700 x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X700/X550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X700
-ATI Technologies Inc. RADEON X800 GT x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 GTO supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 GTO x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 GTO x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 PRO/GTO supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 SE x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 Series supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 XL x86/MMX/3DNow!/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 XL x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 XT supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 XT (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800 XT x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800/X850 Series supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X800GT supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X850 Series supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X850 XT Platinum Edition (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X850 XT Platinum Edition x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON X850 XT x86/SSE2 supported 1 1 2.1 ATI Radeon X800
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow! supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200 Series x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series (Microsoft Corporation - WDDM) supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow! supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow! supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS 200M Series x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON XPRESS Series x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. RADEON Xpress 200G Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. ROBSON CE supported 3 0 4 ATI ROBSON
-ATI Technologies Inc. ROBSON LE supported 3 0 4 ATI ROBSON
-ATI Technologies Inc. RS780M supported 0 1 2.1 AMD RS780 (HD 3200)
-ATI Technologies Inc. RS880 supported 0 1 3.2 AMD RS880 (HD 4200)
-ATI Technologies Inc. RV250 DDR x86/SSE2 supported 0 0 0 ATI Radeon RV250
-ATI Technologies Inc. Radeon X1300XT/X1600 Pro Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300XT/X1600Pro/X1650 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon (TM) HD 7670M supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. Radeon (TM) HD 6370M supported 1 1 4.2 ATI Radeon HD 6300
-ATI Technologies Inc. Radeon (TM) HD 6470M supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. Radeon (TM) HD 6490M supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. Radeon (TM) HD 6630M supported 3 1 4.2 ATI Radeon HD 6600
-ATI Technologies Inc. Radeon (TM) HD 6750M supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. Radeon (TM) HD 6770M supported 3 1 4.2 ATI Radeon HD 6700
-ATI Technologies Inc. Radeon (TM) HD 6850M supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. Radeon (TM) HD 7450M supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. Radeon (TM) HD 7470M supported 2 0 4.2 ATI Radeon HD 7400
-ATI Technologies Inc. Radeon (TM) HD 7670M supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. Radeon (TM) HD 7690M XT supported 3 0 4.2 ATI Radeon HD 7600
-ATI Technologies Inc. Radeon (TM) HD 7750M supported 4 1 4.2 ATI Radeon HD 7700
-ATI Technologies Inc. Radeon (TM) HD 7850M supported 5 1 4.2 ATI Radeon HD 7800
-ATI Technologies Inc. Radeon (TM) HD 8750M supported 4 1 4.2 ATI Radeon HD 8700 (OEM)
-ATI Technologies Inc. Radeon 7000 DDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. Radeon 7500 DDR x86 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. Radeon 7500 DDR x86/SSE2 supported 0 1 2 ATI Radeon 7xxx
-ATI Technologies Inc. Radeon 9100 DDR x86/MMX/3DNow!/SSE2 supported 0 0 0 ATI Radeon 9100
-ATI Technologies Inc. Radeon 9200 DDR x86/SSE2 supported 0 1 1.3 ATI Radeon 9200
-ATI Technologies Inc. Radeon HD 2600 PRO (Omega 3.8.442) supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. Radeon HD 6470M supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. Radeon HD 6490M supported 3 1 4.2 ATI Radeon HD 6400
-ATI Technologies Inc. Radeon HD 6800 Series supported 4 1 4.2 ATI Radeon HD 6800
-ATI Technologies Inc. Radeon Radeon X300/X550/X1050 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X1050 supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. Radeon X1050 Series (Omega 3.8.442) supported 2 0 2.1 ATI Radeon X1000
-ATI Technologies Inc. Radeon X1200 Series (Omega 3.8.442) supported 2 0 2.1 ATI Radeon X1200
-ATI Technologies Inc. Radeon X1300 / X1550 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 / X1600 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Radeon X1550 64-bit (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1550 64-bit x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1550 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1550 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. Radeon X1600 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Series (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600 x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600/1650 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600/X1650 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1600/X1650 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 GTO supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 SE supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 SE x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1650/X1700 Series (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Radeon X1700 FSC supported 2 1 2.1 ATI Radeon X1700
-ATI Technologies Inc. Radeon X1800 CrossFire Edition supported 3 1 2.1 ATI Radeon X1800
-ATI Technologies Inc. Radeon X1800 Series supported 3 1 2.1 ATI Radeon X1800
-ATI Technologies Inc. Radeon X1800 Series x86/MMX/3DNow!/SSE2 supported 3 1 2.1 ATI Radeon X1800
-ATI Technologies Inc. Radeon X1900 CrossFire Edition supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 GT supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 GT x86/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 Series supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1900 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 CrossFire Edition supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Pro supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Pro (Omega 3.8.442) supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Pro x86/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Series supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Series (Microsoft Corporation - WDDM) supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Series x86/MMX/3DNow!/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X1950 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1900
-ATI Technologies Inc. Radeon X300/X550/X1050 Series supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM) supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Omega 3.8.442) supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X300/X550/X1050 Series x86/SSE2 supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. Radeon X550/X700 Series supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. Radeon X550XTX supported 1 1 2.1 ATI Radeon X500
-ATI Technologies Inc. Radeon Xpress 200 Series (Omega 3.8.442) x86/SSE2 supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. Radeon Xpress 200M Series (Omega 3.8.442) supported 0 1 2.1 ATI Radeon Xpress
-ATI Technologies Inc. SAPPHIRE RADEON 9600 ATLANTIS supported 0 1 2.1 ATI Radeon 9600
-ATI Technologies Inc. SAPPHIRE RADEON X300SE supported 1 1 2.1 ATI Radeon X300
-ATI Technologies Inc. SAPPHIRE Radeon X1550 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2 supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. SUMO 9640 supported 3 1 4.1 AMD SUMO
-ATI Technologies Inc. SUMO 964A supported 3 1 4.1 AMD SUMO
-ATI Technologies Inc. Sapphire RADEON X1600 PRO supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Sapphire RADEON X1600 PRO x86/SSE2 supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Sapphire RADEON X1600 XT supported 2 1 2.1 ATI Radeon X1600
-ATI Technologies Inc. Tul Corporation, RADEON X1300 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. Tul Corporation, RADEON X300SE supported 1 1 2.1 ATI RADEON X300SE
-ATI Technologies Inc. VisionTek Radeon 4350 supported 2 1 4 ATI Radeon HD 4300
-ATI Technologies Inc. VisionTek Radeon HD 2400 PCI supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. VisionTek Radeon HD 2600 XT AGP supported 2 1 4 ATI Radeon HD 2600
-ATI Technologies Inc. VisionTek Radeon HD 5450 supported 3 1 4.2 ATI Radeon HD 5400
-ATI Technologies Inc. VisionTek Radeon HD2400 Pro AGP supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. VisionTek Radeon HD2400 Pro PCI supported 1 1 4 ATI Radeon HD 2400
-ATI Technologies Inc. VisionTek Radeon X1300 supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. VisionTek Radeon X1300 Series supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. VisionTek Radeon X1300 XGE supported 2 1 2.1 ATI Radeon X1300
-ATI Technologies Inc. VisionTek Radeon X1550 Series supported 2 1 2.1 ATI Radeon X1500
-ATI Technologies Inc. WRESTLER 9802 supported 3 1 4 AMD WRESTLER
-ATI Technologies Inc. XFX Radeon HD 4570 supported 2 1 3.3 ATI Radeon HD 4500
-Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9712) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 0 1 3.2 AMD RS880 (HD 4200)
-Alex Mohr GL Hijacker! unsupported 0 0 0 Hijacker
-Brian Paul Mesa X11 unsupported 1 1 3 Mesa
-Gallium supported 1 1 2.1 Gallium
-Humper supported 0 1 2.1 Humper
-Humper Chromium supported 0 1 2.1 Humper
-Imagination Technologies 3D-Analyze v2.3 - http://www.tommti-systems.com unsupported 0 0 0 ATI 3D-Analyze
-Imagination Technologies PowerVR SGX545 supported 1 1 3 PowerVR SGX545
-Intel NO MATCH
-Intel 3D-Analyze v2.3 - http://www.tommti-systems.com supported 2 0 0 Intel 3D-Analyze
-Intel 4 Series Internal supported 1 1 2.1 Intel 4 Series Internal
-Intel 845G unsupported 0 1 1.4 Intel 845G
-Intel 855GM unsupported 0 1 1.4 Intel 855GM
-Intel 865G unsupported 0 1 1.4 Intel 865G
-Intel 915G unsupported 0 1 1.4 Intel 915G
-Intel 915GM unsupported 0 1 1.4 Intel 915GM
-Intel 945G supported 0 1 1.4 Intel 945G
-Intel 945GM supported 0 1 1.4 Intel 945GM
-Intel 950 supported 0 1 1.4 Intel 950
-Intel 965 supported 0 1 2.1 Intel 965
-Intel Bear Lake unsupported 1 1 1.4 Intel Bear Lake
-Intel Broadwater unsupported 0 1 1.4 Intel Broadwater
-Intel Brookdale unsupported 0 1 1.3 Intel Brookdale
-Intel Cantiga unsupported 0 1 2 Intel Cantiga
-Intel Corporation Intel(R) Graphics Media Accelerator 3600 Series supported 0 1 3 Intel GMA 3600
-Intel Eaglelake supported 1 1 2 Intel Eaglelake
-Intel G33 unsupported 1 1 1.4 Intel G33
-Intel G41 supported 1 1 2.1 Intel G41
-Intel G45 supported 1 1 2.1 Intel G45
-Intel Graphics Media HD supported 1 1 2.1 Intel Graphics Media HD
-Intel HD Graphics supported 2 1 4 Intel HD Graphics
-Intel HD Graphics 2000 supported 2 0 3.1 Intel HD Graphics 2000
-Intel HD Graphics 3000 supported 3 1 3.1 Intel HD Graphics 3000
-Intel HD Graphics 4000 supported 3 1 4.2 Intel HD Graphics 4000
-Intel Inc. Intel GMA 950 OpenGL Engine supported 0 1 1.4 Intel 950
-Intel Inc. Intel GMA X3100 OpenGL Engine supported 1 1 2.1 Intel X3100
-Intel Inc. Intel HD Graphics 3000 OpenGL Engine supported 3 1 3.1 Intel HD Graphics 3000
-Intel Inc. Intel HD Graphics 4000 OpenGL Engine supported 3 1 4.2 Intel HD Graphics 4000
-Intel Inc. Intel HD Graphics 5000 OpenGL Engine supported 4 0 4 Intel HD Graphics 5000
-Intel Inc. Intel HD Graphics OpenGL Engine supported 2 1 4 Intel HD Graphics
-Intel Intel 845G unsupported 0 1 1.4 Intel 845G
-Intel Intel 855GM unsupported 0 1 1.4 Intel 855GM
-Intel Intel 865G unsupported 0 1 1.4 Intel 865G
-Intel Intel 915G unsupported 0 1 1.4 Intel 915G
-Intel Intel 915GM unsupported 0 1 1.4 Intel 915GM
-Intel Intel 945G supported 0 1 1.4 Intel 945G
-Intel Intel 945GM supported 0 1 1.4 Intel 945GM
-Intel Intel 965/963 Graphics Media Accelerator supported 0 1 2.1 Intel 965
-Intel Intel Bear Lake B unsupported 1 1 1.4 Intel Bear Lake
-Intel Intel Broadwater G unsupported 0 1 1.4 Intel Broadwater
-Intel Intel Brookdale-G unsupported 0 1 1.3 Intel Brookdale
-Intel Intel Cantiga unsupported 0 1 2 Intel Cantiga
-Intel Intel Eaglelake supported 1 1 2 Intel Eaglelake
-Intel Intel Grantsdale-G supported 1 0 0 Intel Grantsdale
-Intel Intel Iris Pro Graphics 5200 supported 4 0 4 Intel Intel Iris Pro Graphics 5200
-Intel Intel Montara-GM unsupported 0 1 1.3 Intel Montara
-Intel Intel Pineview Platform supported 0 1 1.4 Intel Pineview
-Intel Intel Springdale-G unsupported 0 1 1.3 Intel Springdale
-Intel Intel(R) HD Graphics Family supported 2 1 4 Intel HD Graphics
-Intel Intel(R) 4 Series Internal Chipset supported 1 1 2.1 Intel 4 Series Internal
-Intel Intel(R) B43 Express Chipset supported 1 1 2.1 Intel B45/B43
-Intel Intel(R) G41 Express Chipset supported 1 1 2.1 Intel G41
-Intel Intel(R) G41 Express Chipset (Microsoft Corporation - WDDM 1.1) supported 1 1 2.1 Intel G41
-Intel Intel(R) G41 Express Chipset v2 supported 1 1 2.1 Intel G41
-Intel Intel(R) G45/G43 Express Chipset supported 1 1 2.1 Intel G45
-Intel Intel(R) G45/G43/G41 Express Chipset supported 1 1 2.1 Intel G41
-Intel Intel(R) Graphics Media Accelerator HD supported 1 1 2.1 Intel Graphics Media HD
-Intel Intel(R) HD Graphics supported 2 1 4 Intel HD Graphics
-Intel Intel(R) HD Graphics 100 supported 2 1 4 Intel HD Graphics
-Intel Intel(R) HD Graphics 2000 supported 2 0 3.1 Intel HD Graphics 2000
-Intel Intel(R) HD Graphics 2500 supported 2 0 4.2 Intel HD Graphics 2500
-Intel Intel(R) HD Graphics 3000 supported 3 1 3.1 Intel HD Graphics 3000
-Intel Intel(R) HD Graphics 4000 supported 3 1 4.2 Intel HD Graphics 4000
-Intel Intel(R) HD Graphics 4400 supported 3 0 4.2 Intel HD Graphics 4400
-Intel Intel(R) HD Graphics 4600 supported 3 0 4.2 Intel HD Graphics 4600
-Intel Intel(R) HD Graphics 5000 supported 4 0 4 Intel HD Graphics 5000
-Intel Intel(R) HD Graphics BR-1004-01Y1 supported 2 1 4 Intel HD Graphics
-Intel Intel(R) HD Graphics Family supported 2 1 4 Intel HD Graphics
-Intel Intel(R) HD Graphics P3000 supported 2 1 4 Intel HD Graphics
-Intel Intel(R) HD Graphics P4000 supported 2 1 4 Intel HD Graphics
-Intel Intel(R) Q45/Q43 Express Chipset supported 1 1 2.1 Intel Q45/Q43
-Intel Iris OpenGL Graphics Engine supported 4 0 4 Intel Intel Iris OpenGL Engine
-Intel Mobile 4 Series supported 0 1 2.1 Intel Mobile 4 Series
-Intel Mobile Intel(R) 4 Series Express Chipset Family supported 0 1 2.1 Intel Mobile 4 Series
-Intel Mobile Intel(R) 4 Series Express Chipset Family v2 supported 0 1 2.1 Intel Mobile 4 Series
-Intel Mobile Intel(R) 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1) supported 0 0 2.1 Intel Mobile 45 Express
-Intel Mobile Intel(R) HD Graphics supported 2 1 4 Intel HD Graphics
-Intel Montara unsupported 0 1 1.3 Intel Montara
-Intel Open Source Technology Center Mesa DRI Intel(R) 852GM/855GM x86/MMX/SSE2 unsupported 0 1 1.4 Intel 855GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 915G unsupported 0 1 1.4 Intel 915G
-Intel Open Source Technology Center Mesa DRI Intel(R) 915G x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915G
-Intel Open Source Technology Center Mesa DRI Intel(R) 915GM x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 945G supported 0 1 1.4 Intel 945G
-Intel Open Source Technology Center Mesa DRI Intel(R) 945G x86/MMX/SSE2 supported 0 1 1.4 Intel 945G
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GM supported 0 1 1.4 Intel 945GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GM x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GME x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 965G x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GM supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GM x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GME/GLE supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) 965Q supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) 965Q x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Intel Open Source Technology Center Mesa DRI Intel(R) G33 x86/MMX/SSE2 unsupported 1 1 1.4 Intel G33
-Intel Open Source Technology Center Mesa DRI Intel(R) G41 x86/MMX/SSE2 supported 1 1 2.1 Intel G41
-Intel Open Source Technology Center Mesa DRI Intel(R) G45/G43 supported 1 1 2.1 Intel G45
-Intel Open Source Technology Center Mesa DRI Intel(R) G45/G43 x86/MMX/SSE2 supported 1 1 2.1 Intel G45
-Intel Open Source Technology Center Mesa DRI Intel(R) IGD unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) IGD x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Mobile unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Desktop unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Mobile unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Q35 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Q35 x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Q45/Q43 supported 1 1 2.1 Intel Q45/Q43
-Intel Open Source Technology Center Mesa DRI Intel(R) Q45/Q43 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Desktop unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Mobile unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Mobile Intel(R) GM45 Express Chipset unsupported 1 1 3 Mesa
-Intel Open Source Technology Center Mesa DRI Mobile Intel(R) GM45 Express Chipset x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Intel Pineview supported 0 1 1.4 Intel Pineview
-Intel Q45/Q43 supported 1 1 2.1 Intel Q45/Q43
-Intel Royal BNA Driver unsupported 0 0 0 Intel Royal BNA
-Intel Springdale unsupported 0 1 1.3 Intel Springdale
-Intel X3100 supported 1 1 2.1 Intel X3100
-Matrox Graphics Inc. Matrox ICD for M-Series unsupported 0 0 0 Matrox
-Matrox Graphics Inc. Matrox G400 unsupported 0 0 0 Matrox
-Matrox Graphics Inc. Matrox ICD for Parhelia unsupported 0 0 0 Matrox
-Mesa unsupported 1 1 3 Mesa
-Mesa Project Software Rasterizer unsupported 1 1 3 Mesa
-Mesa project: www.mesa3d.org Mesa GLX Indirect unsupported 1 1 3 Mesa
-NVIDIA 205 supported 3 1 3.3 NVIDIA 205
-NVIDIA 210 supported 3 1 3.3 NVIDIA 210
-NVIDIA 310 supported 3 1 3.3 NVIDIA 310
-NVIDIA 310M supported 2 0 3.3 NVIDIA 310M
-NVIDIA 315 supported 3 1 3.3 NVIDIA 315
-NVIDIA 315M supported 2 0 3.3 NVIDIA 310M
-NVIDIA 320M supported 2 0 3.3 NVIDIA 320M
-NVIDIA 405 supported 3 0 3.3 NVIDIA 405
-NVIDIA 410 supported 3 0 3.3 NVIDIA 410
-NVIDIA 510 supported 3 0 0 NVIDIA 510
-NVIDIA 610M supported 3 1 4.3 NVIDIA 610M
-NVIDIA Corporation /PCI/SSE2 NO MATCH
-NVIDIA Corporation 3D-Analyze v2.3 - http://www.tommti-systems.com unsupported 0 0 0 ATI 3D-Analyze
-NVIDIA Corporation C51/PCI/SSE2/3DNOW! supported 0 1 2 NVIDIA C51
-NVIDIA Corporation C51G/PCI/SSE2/3DNOW! supported 0 1 2 NVIDIA C51
-NVIDIA Corporation D10P1-25/PCI/SSE2/3DNOW! unsupported 0 0 0 NVIDIA D1xP1
-NVIDIA Corporation D14P1-30/PCIe/SSE2 unsupported 0 0 0 NVIDIA D1xP1
-NVIDIA Corporation D9M-20/PCI/SSE2 supported 1 0 0 NVIDIA D9M
-NVIDIA Corporation D9M-20/PCI/SSE2/3DNOW! supported 1 0 0 NVIDIA D9M
-NVIDIA Corporation G72/PCI/SSE2/3DNOW! supported 1 0 0 NVIDIA G72
-NVIDIA Corporation G73/AGP/SSE2/3DNOW! supported 1 0 0 NVIDIA G73
-NVIDIA Corporation G73/PCI/SSE2/3DNOW! supported 1 0 0 NVIDIA G73
-NVIDIA Corporation G84-50/PCI/SSE2 supported 2 0 0 NVIDIA G84
-NVIDIA Corporation G92-100/PCI/SSE2/3DNOW! supported 3 0 0 NVIDIA G92
-NVIDIA Corporation GK106/PCIe/SSE2 supported 5 0 4.3 NVIDIA GK106
-NVIDIA Corporation GRID K2/PCIe/SSE2 unsupported 0 0 1.5 NVIDIA GRID
-NVIDIA Corporation GeForce GTX 555/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce GTX 555/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce 205/PCI/SSE2 supported 3 1 3.3 NVIDIA 205
-NVIDIA Corporation GeForce 210/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 210
-NVIDIA Corporation GeForce 210/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 210
-NVIDIA Corporation GeForce 210/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 210
-NVIDIA Corporation GeForce 210/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 210
-NVIDIA Corporation GeForce 310/PCI/SSE2 supported 3 1 3.3 NVIDIA 310
-NVIDIA Corporation GeForce 310/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA 310
-NVIDIA Corporation GeForce 310/PCIe/SSE2 supported 3 1 3.3 NVIDIA 310
-NVIDIA Corporation GeForce 310/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA 310
-NVIDIA Corporation GeForce 310M/PCI/SSE2 supported 2 0 3.3 NVIDIA 310M
-NVIDIA Corporation GeForce 310M/PCIe/SSE2 supported 2 0 3.3 NVIDIA 310M
-NVIDIA Corporation GeForce 315/PCI/SSE2 supported 3 1 3.3 NVIDIA 315
-NVIDIA Corporation GeForce 315/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA 315
-NVIDIA Corporation GeForce 315/PCIe/SSE2 supported 3 1 3.3 NVIDIA 315
-NVIDIA Corporation GeForce 315/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA 315
-NVIDIA Corporation GeForce 315M/PCI/SSE2 supported 2 0 3.3 NVIDIA 310M
-NVIDIA Corporation GeForce 315M/PCIe/SSE2 supported 2 0 3.3 NVIDIA 310M
-NVIDIA Corporation GeForce 320M/PCI/SSE2 supported 2 0 3.3 NVIDIA 320M
-NVIDIA Corporation GeForce 320M/integrated/SSE2 supported 2 0 3.3 NVIDIA 320M
-NVIDIA Corporation GeForce 405/PCI/SSE2 supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 405/PCI/SSE2/3DNOW! supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 405/PCIe/SSE2 supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 405/PCIe/SSE2/3DNOW! supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 410M/PCI/SSE2 supported 3 0 0 NVIDIA 410M
-NVIDIA Corporation GeForce 410M/PCIe/SSE2 supported 3 0 0 NVIDIA 410M
-NVIDIA Corporation GeForce 505/PCIe/SSE2 supported 3 0 0 NVIDIA 505
-NVIDIA Corporation GeForce 510/PCI/SSE2 supported 3 0 0 NVIDIA 510
-NVIDIA Corporation GeForce 510/PCIe/SSE2 supported 3 0 0 NVIDIA 510
-NVIDIA Corporation GeForce 605/PCI/SSE2 supported 3 1 4.3 NVIDIA 605
-NVIDIA Corporation GeForce 605/PCIe/SSE2 supported 3 1 4.3 NVIDIA 605
-NVIDIA Corporation GeForce 605/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA 605
-NVIDIA Corporation GeForce 610/PCIe/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100 nForce 400/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100 nForce 400/integrated/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100 nForce 400/integrated/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100 nForce 405/PCI/SSE2 supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 6100 nForce 405/PCI/SSE2/3DNOW! supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 6100 nForce 405/integrated/SSE2 supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 6100 nForce 405/integrated/SSE2/3DNOW! supported 3 0 3.3 NVIDIA 405
-NVIDIA Corporation GeForce 6100 nForce 420/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100 nForce 430/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100/PCI/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100/integrated/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6100/integrated/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 610M/PCI/SSE2 supported 3 1 4.3 NVIDIA 610M
-NVIDIA Corporation GeForce 610M/PCIe/SSE2 supported 3 1 4.3 NVIDIA 610M
-NVIDIA Corporation GeForce 615/PCIe/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150 LE/PCI/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150 LE/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150 LE/integrated/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150 LE/integrated/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150 SE/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150/integrated/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150/integrated/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6150SE/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA Corporation GeForce 6200 A-LE/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 A-LE/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 A-LE/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 A-LE/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 LE/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 LE/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 LE/PCIe/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 LE/PCIe/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCIe/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCIe/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/PCIe/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200/PCIe/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCIe/SSE2 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCIe/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA Corporation GeForce 6500/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 6500
-NVIDIA Corporation GeForce 6500/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6500
-NVIDIA Corporation GeForce 6500/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6500
-NVIDIA Corporation GeForce 6500/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6500
-NVIDIA Corporation GeForce 6600 GT/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 GT/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 GT/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 GT/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 LE/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 LE/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 LE/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 LE/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600 LE/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6600/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6610 XL/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6610 XL/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation GeForce 6700 XL/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 6700
-NVIDIA Corporation GeForce 6700 XL/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 6700
-NVIDIA Corporation GeForce 6800 GS/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GS/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GS/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GS/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GT/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GT/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GT/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 GT/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 LE/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 LE/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 LE/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 Ultra/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 Ultra/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 Ultra/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 Ultra/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 Ultra/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800 XT/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 6800/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2 supported 3 1 4.3 NVIDIA 610M
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW! supported 3 1 4.3 NVIDIA 610M
-NVIDIA Corporation GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7025 / nForce 630a/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7025 / nForce 630a/integrated/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 630i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 610i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 610i/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 620i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 620i/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 630i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 / nForce 630i/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/integrated/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA Corporation GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 / nForce 630i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 / nForce 630i/integrated/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 GS/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 GS/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 GS/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7100 GS/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 710A/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 710M/PCIe/SSE2 supported 3 0 4.3 NVIDIA 710M
-NVIDIA Corporation GeForce 7150 / nForce 630i/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7150M / nForce 630M/integrated/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA Corporation GeForce 7300 GS/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GS/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GS/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GS/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 GT/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 LE/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 LE/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 LE/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 LE/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7300 SE/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7350 LE/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7350 LE/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7350 LE/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation GeForce 7500 LE/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7500
-NVIDIA Corporation GeForce 7500 LE/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7500
-NVIDIA Corporation GeForce 7500 LE/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7500
-NVIDIA Corporation GeForce 7500 LE/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7500
-NVIDIA Corporation GeForce 7600 GS/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GS/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GS/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GS/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GS/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GS/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 GT/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7600 LE/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7650 GS/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7650 GS/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7650 GS/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7650 GS/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation GeForce 7800 GS/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GS/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GS/PCI/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GT/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GT/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GT/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GTX/PCI/SSE2 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GTX/PCIe/SSE2 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7800 GTX/PCIe/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA Corporation GeForce 7900 GS/AGP/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GS/AGP/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GS/PCI/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GS/PCI/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GS/PCIe/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GS/PCIe/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GT/GTO/PCI/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GT/GTO/PCIe/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GT/GTO/PCIe/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GT/PCI/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GTX/PCI/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GTX/PCI/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GTX/PCIe/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7900 GTX/PCIe/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/AGP/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/AGP/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/PCI/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/PCI/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/PCIe/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GT/PCIe/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GX2/PCI/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GX2/PCIe/SSE2 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 7950 GX2/PCIe/SSE2/3DNOW! supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation GeForce 8100 / nForce 720a/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 8100
-NVIDIA Corporation GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8100
-NVIDIA Corporation GeForce 8100 / nForce 720a/integrated/SSE2 supported 1 0 3.3 NVIDIA GeForce 8100
-NVIDIA Corporation GeForce 8100 / nForce 720a/integrated/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8100
-NVIDIA Corporation GeForce 8200/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 8200
-NVIDIA Corporation GeForce 8200/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8200
-NVIDIA Corporation GeForce 8200/integrated/SSE2 supported 1 0 3.3 NVIDIA GeForce 8200
-NVIDIA Corporation GeForce 8200/integrated/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8200
-NVIDIA Corporation GeForce 8200M G/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA Corporation GeForce 8200M G/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA Corporation GeForce 8200M G/integrated/SSE2 supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA Corporation GeForce 8200M G/integrated/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA Corporation GeForce 8200M/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA Corporation GeForce 8300 GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300 GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300 GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300 GS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300/integrated/SSE2 supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8300/integrated/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400 SE/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400 SE/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400GS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400GS/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400GS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400GS/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation GeForce 8400M G/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M G/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M G/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M G/PCIe/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GS/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GS/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GT/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8400M GT/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA Corporation GeForce 8500 GT/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA Corporation GeForce 8500 GT/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA Corporation GeForce 8500 GT/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA Corporation GeForce 8500 GT/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA Corporation GeForce 8600 GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GTS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GTS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GTS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600 GTS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation GeForce 8600M GS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GS/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GS/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GT/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GT/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GT/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8600M GT/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation GeForce 8700M GT/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8700M
-NVIDIA Corporation GeForce 8700M GT/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8700M
-NVIDIA Corporation GeForce 8800 GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS 512/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS 512/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS 512/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS 512/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTX/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTX/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTX/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 GTX/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 Ultra/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 Ultra/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800 Ultra/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation GeForce 8800M GTS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8800M
-NVIDIA Corporation GeForce 8800M GTS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8800M
-NVIDIA Corporation GeForce 8800M GTX/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 8800M
-NVIDIA Corporation GeForce 8800M GTX/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 8800M
-NVIDIA Corporation GeForce 9100/PCI/SSE2 supported 0 0 3.3 NVIDIA GeForce 9100
-NVIDIA Corporation GeForce 9100/PCI/SSE2/3DNOW! supported 0 0 3.3 NVIDIA GeForce 9100
-NVIDIA Corporation GeForce 9100/integrated/SSE2 supported 0 0 3.3 NVIDIA GeForce 9100
-NVIDIA Corporation GeForce 9100/integrated/SSE2/3DNOW! supported 0 0 3.3 NVIDIA GeForce 9100
-NVIDIA Corporation GeForce 9100M G/PCI/SSE2 supported 0 0 3.3 NVIDIA GeForce 9100M
-NVIDIA Corporation GeForce 9100M G/PCI/SSE2/3DNOW! supported 0 0 3.3 NVIDIA GeForce 9100M
-NVIDIA Corporation GeForce 9100M G/integrated/SSE2 supported 0 0 3.3 NVIDIA GeForce 9100M
-NVIDIA Corporation GeForce 9100M G/integrated/SSE2/3DNOW! supported 0 0 3.3 NVIDIA GeForce 9100M
-NVIDIA Corporation GeForce 9200/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200
-NVIDIA Corporation GeForce 9200/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 9200
-NVIDIA Corporation GeForce 9200/integrated/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200
-NVIDIA Corporation GeForce 9200/integrated/SSE2/3DNOW! supported 1 0 3.3 NVIDIA GeForce 9200
-NVIDIA Corporation GeForce 9200M GE/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA Corporation GeForce 9200M GE/PCIe/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA Corporation GeForce 9200M GS/PCI/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA Corporation GeForce 9200M GS/PCIe/SSE2 supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA Corporation GeForce 9300 / nForce 730i/integrated/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GE/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GE/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GE/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GE/PCIe/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GS/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GS/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GS/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 GS/PCIe/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300 SE/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300/integrated/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA Corporation GeForce 9300M G/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9300M G/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9300M G/PCIe/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9300M GS/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA Corporation GeForce 9400 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400/integrated/SSE2 supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation GeForce 9400M G/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA Corporation GeForce 9400M G/integrated/SSE2 supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA Corporation GeForce 9400M/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA Corporation GeForce 9400M/integrated/SSE2 supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA Corporation GeForce 9500 GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation GeForce 9500M GS/PCI/SSE2 supported 1 1 3.3 NVIDIA GeForce 9500M
-NVIDIA Corporation GeForce 9500M GS/PCI/SSE2/3DNOW! supported 1 1 3.3 NVIDIA GeForce 9500M
-NVIDIA Corporation GeForce 9500M GS/PCIe/SSE2 supported 1 1 3.3 NVIDIA GeForce 9500M
-NVIDIA Corporation GeForce 9600 GS/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GS/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GS/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO 512/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO 512/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO 512/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO 512/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GSO/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9600M GS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GS/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GT/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GT/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation GeForce 9650M GS/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9650M GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9650M GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation GeForce 9700M GT/PCI/SSE2 supported 0 1 3.3 NVIDIA GeForce 9700M
-NVIDIA Corporation GeForce 9700M GT/PCIe/SSE2 supported 0 1 3.3 NVIDIA GeForce 9700M
-NVIDIA Corporation GeForce 9700M GTS/PCI/SSE2 supported 0 1 3.3 NVIDIA GeForce 9700M
-NVIDIA Corporation GeForce 9700M GTS/PCIe/SSE2 supported 0 1 3.3 NVIDIA GeForce 9700M
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX+/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX+/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GTX/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 GX2/PCIe/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800 S/PCI/SSE2 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation GeForce 9800M GS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GT/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GT/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GTS/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GTS/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GTX/PCI/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce 9800M GTX/PCIe/SSE2 supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA Corporation GeForce FX 5100/AGP/SSE2 supported 3 0 0 NVIDIA 510
-NVIDIA Corporation GeForce FX 5200 Ultra/AGP/SSE2 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200 Ultra/AGP/SSE2/3DNOW! supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200/AGP/SSE/3DNOW! supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200/AGP/SSE2 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200/AGP/SSE2/3DNOW! supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200/PCI/SSE2 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200/PCI/SSE2/3DNOW! supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200LE/AGP/SSE2 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200LE/AGP/SSE2/3DNOW! supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5200SE/AGP/SSE2 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX 5500
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5500
-NVIDIA Corporation GeForce FX 5500/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce FX 5500
-NVIDIA Corporation GeForce FX 5500/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5500
-NVIDIA Corporation GeForce FX 5600/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5600
-NVIDIA Corporation GeForce FX 5600XT/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5600
-NVIDIA Corporation GeForce FX 5600XT/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce FX 5600
-NVIDIA Corporation GeForce FX 5600XT/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5600
-NVIDIA Corporation GeForce FX 5700/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700LE/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700LE/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700LE/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700VE/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5700VE/AGP/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA Corporation GeForce FX 5900 Ultra/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX 5900/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX 5900XT/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX 5900ZT/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX 5950 Ultra/AGP/SSE2 supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX 5950 Ultra/AGP/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA Corporation GeForce FX Go5200 32M/64M/AGP/SSE2 supported 0 0 1.5 NVIDIA GeForce FX Go5200
-NVIDIA Corporation GeForce FX Go5200/AGP/SSE2 supported 0 0 1.5 NVIDIA GeForce FX Go5200
-NVIDIA Corporation GeForce FX Go5200/AGP/SSE2/3DNOW! supported 0 0 1.5 NVIDIA GeForce FX Go5200
-NVIDIA Corporation GeForce FX Go5200/PCI/SSE2 supported 0 0 1.5 NVIDIA GeForce FX Go5200
-NVIDIA Corporation GeForce FX Go5300/AGP/SSE2 supported 0 0 0 NVIDIA GeForce FX Go5300
-NVIDIA Corporation GeForce FX Go53xx Series/AGP/SSE2 supported 0 0 0 NVIDIA GeForce FX Go5300
-NVIDIA Corporation GeForce FX Go5600/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX Go5600
-NVIDIA Corporation GeForce FX Go5650/AGP/SSE2 supported 0 1 2.1 NVIDIA GeForce FX Go5600
-NVIDIA Corporation GeForce FX Go5700/AGP/SSE2 supported 1 1 1.5 NVIDIA GeForce FX Go5700
-NVIDIA Corporation GeForce FX Go5700/AGP/SSE2/3DNOW! supported 1 1 1.5 NVIDIA GeForce FX Go5700
-NVIDIA Corporation GeForce G 103M/PCI/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G 103M/PCIe/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G 105M/PCI/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G 105M/PCIe/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G 110M/PCI/SSE2 supported 1 1 3.3 NVIDIA G 110M
-NVIDIA Corporation GeForce G100/PCI/SSE2 supported 3 1 4.2 NVIDIA G100
-NVIDIA Corporation GeForce G100/PCI/SSE2/3DNOW! supported 3 1 4.2 NVIDIA G100
-NVIDIA Corporation GeForce G100/PCIe/SSE2 supported 3 1 4.2 NVIDIA G100
-NVIDIA Corporation GeForce G100/PCIe/SSE2/3DNOW! supported 3 1 4.2 NVIDIA G100
-NVIDIA Corporation GeForce G102M/PCI/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G102M/integrated/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G105M/PCI/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G105M/PCIe/SSE2 supported 1 1 3.3 NVIDIA G 100M
-NVIDIA Corporation GeForce G200/PCI/SSE2 supported 2 1 3.3 NVIDIA G200
-NVIDIA Corporation GeForce G200/integrated/SSE2 supported 2 1 3.3 NVIDIA G200
-NVIDIA Corporation GeForce G205M/PCI/SSE2 supported 1 0 0 NVIDIA G 200M
-NVIDIA Corporation GeForce G205M/integrated/SSE2 supported 1 0 0 NVIDIA G 200M
-NVIDIA Corporation GeForce G210/PCI/SSE2 supported 3 1 3.3 NVIDIA G210
-NVIDIA Corporation GeForce G210/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA G210
-NVIDIA Corporation GeForce G210/PCIe/SSE2 supported 3 1 3.3 NVIDIA G210
-NVIDIA Corporation GeForce G210/PCIe/SSE2/3DNOW! supported 3 1 3.3 NVIDIA G210
-NVIDIA Corporation GeForce G210M/PCI/SSE2 supported 3 0 3.3 NVIDIA G210M
-NVIDIA Corporation GeForce G210M/PCIe/SSE2 supported 3 0 3.3 NVIDIA G210M
-NVIDIA Corporation GeForce GT 120/PCI/SSE2 supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 120/PCI/SSE2/3DNOW! supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 120/PCIe/SSE2 supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 120/PCIe/SSE2/3DNOW! supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 120M/PCI/SSE2 supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 120M/PCIe/SSE2 supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation GeForce GT 130/PCI/SSE2 supported 2 0 3.3 NVIDIA GT 130
-NVIDIA Corporation GeForce GT 130/PCIe/SSE2 supported 2 0 3.3 NVIDIA GT 130
-NVIDIA Corporation GeForce GT 130/PCIe/SSE2/3DNOW! supported 2 0 3.3 NVIDIA GT 130
-NVIDIA Corporation GeForce GT 130M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 130M
-NVIDIA Corporation GeForce GT 130M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 130M
-NVIDIA Corporation GeForce GT 140/PCI/SSE2 supported 2 0 3.3 NVIDIA GT 140
-NVIDIA Corporation GeForce GT 140/PCIe/SSE2 supported 2 0 3.3 NVIDIA GT 140
-NVIDIA Corporation GeForce GT 220/PCI/SSE2 supported 2 1 3.3 NVIDIA GT 220
-NVIDIA Corporation GeForce GT 220/PCI/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GT 220
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2 supported 2 1 3.3 NVIDIA GT 220
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GT 220
-NVIDIA Corporation GeForce GT 220M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 220M
-NVIDIA Corporation GeForce GT 220M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 220M
-NVIDIA Corporation GeForce GT 230/PCI/SSE2 supported 2 1 3.3 NVIDIA GT 230
-NVIDIA Corporation GeForce GT 230/PCIe/SSE2 supported 2 1 3.3 NVIDIA GT 230
-NVIDIA Corporation GeForce GT 230/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA GT 230
-NVIDIA Corporation GeForce GT 230M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 230M
-NVIDIA Corporation GeForce GT 230M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 230M
-NVIDIA Corporation GeForce GT 240/PCI/SSE2 supported 4 1 3.3 NVIDIA GT 240
-NVIDIA Corporation GeForce GT 240/PCI/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GT 240
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2 supported 4 1 3.3 NVIDIA GT 240
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GT 240
-NVIDIA Corporation GeForce GT 240M LE/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 240M
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 240M
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2/3DNOW! supported 3 1 3.3 NVIDIA GT 240M
-NVIDIA Corporation GeForce GT 240M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 240M
-NVIDIA Corporation GeForce GT 320/PCI/SSE2 supported 3 0 3.3 NVIDIA GT 320
-NVIDIA Corporation GeForce GT 320/PCI/SSE2/3DNOW! supported 3 0 3.3 NVIDIA GT 320
-NVIDIA Corporation GeForce GT 320/PCIe/SSE2 supported 3 0 3.3 NVIDIA GT 320
-NVIDIA Corporation GeForce GT 320/PCIe/SSE2/3DNOW! supported 3 0 3.3 NVIDIA GT 320
-NVIDIA Corporation GeForce GT 320M/PCI/SSE2 supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA Corporation GeForce GT 320M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA Corporation GeForce GT 325M/PCI/SSE2 supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA Corporation GeForce GT 325M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA Corporation GeForce GT 330/PCI/SSE2 supported 3 0 3.3 NVIDIA GT 330
-NVIDIA Corporation GeForce GT 330/PCIe/SSE2 supported 3 0 3.3 NVIDIA GT 330
-NVIDIA Corporation GeForce GT 330/PCIe/SSE2/3DNOW! supported 3 0 3.3 NVIDIA GT 330
-NVIDIA Corporation GeForce GT 330M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA Corporation GeForce GT 330M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA Corporation GeForce GT 335M/PCI/SSE2 supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA Corporation GeForce GT 335M/PCIe/SSE2 supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA Corporation GeForce GT 340/PCI/SSE2 supported 3 0 0 NVIDIA GT 340
-NVIDIA Corporation GeForce GT 340/PCIe/SSE2 supported 3 0 0 NVIDIA GT 340
-NVIDIA Corporation GeForce GT 415/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 415
-NVIDIA Corporation GeForce GT 415/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 415
-NVIDIA Corporation GeForce GT 415M/PCI/SSE2 supported 3 0 0 NVIDIA 410M
-NVIDIA Corporation GeForce GT 415M/PCIe/SSE2 supported 3 0 0 NVIDIA 410M
-NVIDIA Corporation GeForce GT 420/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 420
-NVIDIA Corporation GeForce GT 420/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 420
-NVIDIA Corporation GeForce GT 420/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 420
-NVIDIA Corporation GeForce GT 420M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA Corporation GeForce GT 420M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA Corporation GeForce GT 425M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA Corporation GeForce GT 425M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA Corporation GeForce GT 430/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 430
-NVIDIA Corporation GeForce GT 430/PCI/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 430
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 430
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 430
-NVIDIA Corporation GeForce GT 435M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 430M
-NVIDIA Corporation GeForce GT 435M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 430M
-NVIDIA Corporation GeForce GT 440/PCI/SSE2 supported 4 1 4.3 NVIDIA GT 440
-NVIDIA Corporation GeForce GT 440/PCI/SSE2/3DNOW! supported 4 1 4.3 NVIDIA GT 440
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2 supported 4 1 4.3 NVIDIA GT 440
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2/3DNOW! supported 4 1 4.3 NVIDIA GT 440
-NVIDIA Corporation GeForce GT 445M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 440M
-NVIDIA Corporation GeForce GT 445M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 440M
-NVIDIA Corporation GeForce GT 520/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 520
-NVIDIA Corporation GeForce GT 520/PCI/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 520
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 520
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 520
-NVIDIA Corporation GeForce GT 520M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 520M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 520MX/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 520MX/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 525M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 525M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA Corporation GeForce GT 530/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 530
-NVIDIA Corporation GeForce GT 530/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 530
-NVIDIA Corporation GeForce GT 530/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 530
-NVIDIA Corporation GeForce GT 540M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 540M
-NVIDIA Corporation GeForce GT 540M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 540M
-NVIDIA Corporation GeForce GT 545/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 540
-NVIDIA Corporation GeForce GT 545/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 540
-NVIDIA Corporation GeForce GT 545/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 540
-NVIDIA Corporation GeForce GT 550M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA Corporation GeForce GT 550M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA Corporation GeForce GT 555M/PCI/SSE2 supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA Corporation GeForce GT 555M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2 supported 3 1 4.3 NVIDIA GT 61x
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GT 61x
-NVIDIA Corporation GeForce GT 620/PCI/SSE2 supported 3 0 4.3 NVIDIA GT 62x
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 62x
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2/3DNOW! supported 3 0 4.3 NVIDIA GT 62x
-NVIDIA Corporation GeForce GT 620M/PCI/SSE2 supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA Corporation GeForce GT 620M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA Corporation GeForce GT 625/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 62x
-NVIDIA Corporation GeForce GT 625M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 63x
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2/3DNOW! supported 3 0 4.3 NVIDIA GT 63x
-NVIDIA Corporation GeForce GT 630M/PCI/SSE2 supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA Corporation GeForce GT 630M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA Corporation GeForce GT 635M/PCI/SSE2 supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA Corporation GeForce GT 635M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 64x
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2/3DNOW! supported 3 0 4.3 NVIDIA GT 64x
-NVIDIA Corporation GeForce GT 640M LE/PCI/SSE2 supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA Corporation GeForce GT 640M LE/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA Corporation GeForce GT 640M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA Corporation GeForce GT 645/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 64x
-NVIDIA Corporation GeForce GT 645M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA Corporation GeForce GT 650M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 650M
-NVIDIA Corporation GeForce GT 720M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 720M
-NVIDIA Corporation GeForce GT 730M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 730M
-NVIDIA Corporation GeForce GT 735M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 730M
-NVIDIA Corporation GeForce GT 740M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 740M
-NVIDIA Corporation GeForce GT 750M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 750M
-NVIDIA Corporation GeForce GT620M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA Corporation GeForce GT625M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA Corporation GeForce GTS 150/PCI/SSE2 supported 2 0 0 NVIDIA GTS 150
-NVIDIA Corporation GeForce GTS 160M/PCI/SSE2 supported 2 0 0 NVIDIA GTS 160M
-NVIDIA Corporation GeForce GTS 160M/PCIe/SSE2 supported 2 0 0 NVIDIA GTS 160M
-NVIDIA Corporation GeForce GTS 240/PCI/SSE2 supported 4 1 3.3 NVIDIA GTS 240
-NVIDIA Corporation GeForce GTS 240/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTS 240
-NVIDIA Corporation GeForce GTS 240/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTS 240
-NVIDIA Corporation GeForce GTS 250/PCI/SSE2 supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA Corporation GeForce GTS 250/PCI/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA Corporation GeForce GTS 250M/PCI/SSE2 supported 3 0 3.3 NVIDIA GTS 250M
-NVIDIA Corporation GeForce GTS 250M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GTS 250M
-NVIDIA Corporation GeForce GTS 350M/PCI/SSE2 supported 4 1 3.3 NVIDIA GTS 350M
-NVIDIA Corporation GeForce GTS 350M/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTS 350M
-NVIDIA Corporation GeForce GTS 360M/PCI/SSE2 supported 5 1 3.3 NVIDIA GTS 360M
-NVIDIA Corporation GeForce GTS 360M/PCIe/SSE2 supported 5 1 3.3 NVIDIA GTS 360M
-NVIDIA Corporation GeForce GTS 450/PCI/SSE2 supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA Corporation GeForce GTS 450/PCI/SSE2/3DNOW! supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2 supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2/3DNOW! supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA Corporation GeForce GTX 260/PCI/SSE2 supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA Corporation GeForce GTX 260/PCI/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA Corporation GeForce GTX 260M/PCI/SSE2 supported 3 0 3.3 NVIDIA GTX 260M
-NVIDIA Corporation GeForce GTX 260M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GTX 260M
-NVIDIA Corporation GeForce GTX 275/PCI/SSE2 supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA Corporation GeForce GTX 275/PCI/SSE2/3DNOW! supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2 supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2/3DNOW! supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA Corporation GeForce GTX 280/PCI/SSE2 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 280/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 280/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 280M/PCI/SSE2 supported 3 0 3.3 NVIDIA GTX 280M
-NVIDIA Corporation GeForce GTX 280M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GTX 280M
-NVIDIA Corporation GeForce GTX 285/PCI/SSE2 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 285/PCIe/SSE2 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 285/PCIe/SSE2/3DNOW! supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation GeForce GTX 285M/PCI/SSE2 supported 3 0 3.3 NVIDIA GTX 280M
-NVIDIA Corporation GeForce GTX 285M/PCIe/SSE2 supported 3 0 3.3 NVIDIA GTX 280M
-NVIDIA Corporation GeForce GTX 295/PCI/SSE2 supported 5 0 3.3 NVIDIA GTX 290
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2 supported 5 0 3.3 NVIDIA GTX 290
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2/3DNOW! supported 5 0 3.3 NVIDIA GTX 290
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 v2/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 460M/PCI/SSE2 supported 4 1 4.3 NVIDIA GTX 460M
-NVIDIA Corporation GeForce GTX 460M/PCIe/SSE2 supported 4 1 4.3 NVIDIA GTX 460M
-NVIDIA Corporation GeForce GTX 465/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation GeForce GTX 470/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA Corporation GeForce GTX 470/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA Corporation GeForce GTX 470M/PCI/SSE2 supported 3 0 4.3 NVIDIA GTX 470M
-NVIDIA Corporation GeForce GTX 480/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 480
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 480
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 480
-NVIDIA Corporation GeForce GTX 480M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 480M
-NVIDIA Corporation GeForce GTX 485M/PCI/SSE2 supported 3 1 4.3 NVIDIA GTX 480M
-NVIDIA Corporation GeForce GTX 485M/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 480M
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation GeForce GTX 560 SE/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation GeForce GTX 560M/PCI/SSE2 supported 3 0 4.3 NVIDIA GTX 560M
-NVIDIA Corporation GeForce GTX 560M/PCIe/SSE2 supported 3 0 4.3 NVIDIA GTX 560M
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA Corporation GeForce GTX 570M/PCI/SSE2 supported 5 0 4.3 NVIDIA GTX 570M
-NVIDIA Corporation GeForce GTX 570M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 570M
-NVIDIA Corporation GeForce GTX 580/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA Corporation GeForce GTX 580/PCI/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA Corporation GeForce GTX 580M/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 580M
-NVIDIA Corporation GeForce GTX 580M/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 580M
-NVIDIA Corporation GeForce GTX 590/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 590
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 590
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 590
-NVIDIA Corporation GeForce GTX 645/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 64x
-NVIDIA Corporation GeForce GTX 650 Ti BOOST/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650 Ti BOOST/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650 Ti Boost/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650 Ti Boost/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2 supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2/3DNOW! supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2/3DNOW! supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2/3DNOW! supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation GeForce GTX 660M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 660M
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 67x
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 67x
-NVIDIA Corporation GeForce GTX 670M/PCI/SSE2 supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation GeForce GTX 670M/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation GeForce GTX 670MX/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation GeForce GTX 675M/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation GeForce GTX 675MX/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 68x
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2/3DNOW! supported 5 1 4.3 NVIDIA GTX 68x
-NVIDIA Corporation GeForce GTX 680M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 680M
-NVIDIA Corporation GeForce GTX 680MX/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 680M
-NVIDIA Corporation GeForce GTX 690/PCIe/SSE2 supported 5 1 4.3 NVIDIA GTX 69x
-NVIDIA Corporation GeForce GTX 760/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 76x
-NVIDIA Corporation GeForce GTX 760M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 760M
-NVIDIA Corporation GeForce GTX 765M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 760M
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 77x
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2/3DNOW! supported 5 0 4.3 NVIDIA GTX 77x
-NVIDIA Corporation GeForce GTX 770M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 770M
-NVIDIA Corporation GeForce GTX 780/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 78x
-NVIDIA Corporation GeForce GTX 780M/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX 780M
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX TITAN
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2/3DNOW! supported 5 0 4.3 NVIDIA GTX TITAN
-NVIDIA Corporation GeForce GTX Titan/PCIe/SSE2 supported 5 0 4.3 NVIDIA GTX TITAN
-NVIDIA Corporation GeForce Go 6100/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA Corporation GeForce Go 6100/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA Corporation GeForce Go 6150/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA Corporation GeForce Go 6150/PCI/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA Corporation GeForce Go 6150/integrated/SSE2/3DNOW! supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA Corporation GeForce Go 6200/PCI/SSE2 supported 0 0 1.5 NVIDIA GeForce Go 6200
-NVIDIA Corporation GeForce Go 6200/PCI/SSE2/3DNOW! supported 0 0 1.5 NVIDIA GeForce Go 6200
-NVIDIA Corporation GeForce Go 6400/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 6400
-NVIDIA Corporation GeForce Go 6400/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 6400
-NVIDIA Corporation GeForce Go 6600 TE/6200 TE/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6600
-NVIDIA Corporation GeForce Go 6600/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6600
-NVIDIA Corporation GeForce Go 6800 Ultra/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6800
-NVIDIA Corporation GeForce Go 6800/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6800
-NVIDIA Corporation GeForce Go 6800/PCIe/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 6800
-NVIDIA Corporation GeForce Go 7200/PCI/SSE2 supported 1 0 2.1 NVIDIA GeForce Go 7200
-NVIDIA Corporation GeForce Go 7200/PCI/SSE2/3DNOW! supported 1 0 2.1 NVIDIA GeForce Go 7200
-NVIDIA Corporation GeForce Go 7300/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7300
-NVIDIA Corporation GeForce Go 7300/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7300
-NVIDIA Corporation GeForce Go 7300/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7300
-NVIDIA Corporation GeForce Go 7400/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7400
-NVIDIA Corporation GeForce Go 7400/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7400
-NVIDIA Corporation GeForce Go 7400/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7400
-NVIDIA Corporation GeForce Go 7600 GT/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation GeForce Go 7600/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation GeForce Go 7600/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation GeForce Go 7600/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation GeForce Go 7600/PCIe/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation GeForce Go 7700/PCI/SSE2 supported 0 1 2.1 NVIDIA GeForce Go 7700
-NVIDIA Corporation GeForce Go 7800 GTX/PCI/SSE2 supported 2 0 0 NVIDIA GeForce Go 7800
-NVIDIA Corporation GeForce Go 7800/PCI/SSE2 supported 2 0 0 NVIDIA GeForce Go 7800
-NVIDIA Corporation GeForce Go 7900 GS/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce Go 7900 GS/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce Go 7900 GS/PCIe/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce Go 7900 GTX/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce Go 7950 GTX/PCI/SSE2 supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce Go 7950 GTX/PCI/SSE2/3DNOW! supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA Corporation GeForce PCX 5300/PCI/SSE2 supported 0 0 1.5 NVIDIA GeForce PCX
-NVIDIA Corporation GeForce PCX 5750/PCI/SSE2 supported 0 0 1.5 NVIDIA GeForce PCX
-NVIDIA Corporation GeForce2 GTS/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 2
-NVIDIA Corporation GeForce2 MX/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 2
-NVIDIA Corporation GeForce2 MX/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 2
-NVIDIA Corporation GeForce2 MX/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 2
-NVIDIA Corporation GeForce3/AGP/SSE2 supported 2 1 2.1 NVIDIA GeForce 3
-NVIDIA Corporation GeForce3/AGP/SSE2/3DNOW! supported 2 1 2.1 NVIDIA GeForce 3
-NVIDIA Corporation GeForce4 420 Go 32M/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 420 Go 32M/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 420 Go 32M/PCI/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 420 Go/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 4200 Go/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 440 Go 64M/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 440 Go 64M/PCI/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 440 Go/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 448 Go/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 4000/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 4000/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 4000/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 4000/PCI/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 420/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 420/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440/440SE/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440SE with AGP8X/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 440SE with AGP8X/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 460/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 MX 460/AGP/SSE2/3DNOW! supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4200 with AGP8X/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4200 with AGP8X/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4200/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4400/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4600/AGP/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation GeForce4 Ti 4600/PCI/SSE2 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA Corporation ION LE/PCI/SSE2 supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation ION LE/integrated/SSE2 supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation ION/PCI/SSE2 supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation ION/PCIe/SSE2 supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation ION/PCIe/SSE2/3DNOW! supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation ION/integrated/SSE2 supported 2 1 3.3 NVIDIA ION b
-NVIDIA Corporation MCP61/PCI/SSE2/3DNOW! supported 1 0 2.1 NVIDIA MCP61
-NVIDIA Corporation MCP7A-O/PCI/SSE2 supported 1 0 0 NVIDIA MCP7A
-NVIDIA Corporation MCP7A-P/PCI/SSE2 supported 1 0 0 NVIDIA MCP7A
-NVIDIA Corporation N10P-GV2/PCI/SSE2 supported 1 0 2.1 NVIDIA N10
-NVIDIA Corporation N11M-GE2/PCI/SSE2 supported 2 0 3.1 NVIDIA Corporation N11M
-NVIDIA Corporation N12P-GVR-B-A1/PCI/SSE2 supported 1 1 4.1 NVIDIA Corporation N12P
-NVIDIA Corporation NB9M-GE1/PCI/SSE2 supported 1 0 0 NVIDIA NB9M
-NVIDIA Corporation NB9M-GS/PCI/SSE2 supported 1 0 0 NVIDIA NB9M
-NVIDIA Corporation NV17/AGP/SSE2 supported 0 0 0 NVIDIA NV17
-NVIDIA Corporation NVIDIA GeForce 210 OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 210
-NVIDIA Corporation NVIDIA GeForce 310M OpenGL Engine supported 2 0 3.3 NVIDIA 310M
-NVIDIA Corporation NVIDIA GeForce 320M OpenGL Engine supported 2 0 3.3 NVIDIA 320M
-NVIDIA Corporation NVIDIA GeForce 6600 GT OpenGL Engine supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA Corporation NVIDIA GeForce 7300 GT OpenGL Engine supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA Corporation NVIDIA GeForce 7600 GT OpenGL Engine supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA Corporation NVIDIA GeForce 7950 GT OpenGL Engine supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA Corporation NVIDIA GeForce 8400 GS OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA Corporation NVIDIA GeForce 8500 GT OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA Corporation NVIDIA GeForce 8600 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation NVIDIA GeForce 8600 GTS OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA Corporation NVIDIA GeForce 8600M GT OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA Corporation NVIDIA GeForce 8800 GS OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 8800 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 8800 GTS 512 OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 8800 GTS OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 8800 GTX OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 8800 Ultra OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA Corporation NVIDIA GeForce 9200M GS OpenGL Engine supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA Corporation NVIDIA GeForce 9400 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation NVIDIA GeForce 9400 OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA Corporation NVIDIA GeForce 9400M OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA Corporation NVIDIA GeForce 9500 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA Corporation NVIDIA GeForce 9600 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA Corporation NVIDIA GeForce 9600M GT OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA Corporation NVIDIA GeForce 9800 GT OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation NVIDIA GeForce 9800 GTX+ OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA Corporation NVIDIA GeForce GT 120 OpenGL Engine supported 2 0 3.3 NVIDIA GT 120
-NVIDIA Corporation NVIDIA GeForce GT 130 OpenGL Engine supported 2 0 3.3 NVIDIA GT 130
-NVIDIA Corporation NVIDIA GeForce GT 220 OpenGL Engine supported 2 1 3.3 NVIDIA GT 220
-NVIDIA Corporation NVIDIA GeForce GT 240 OpenGL Engine supported 4 1 3.3 NVIDIA GT 240
-NVIDIA Corporation NVIDIA GeForce GT 320M OpenGL Engine supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA Corporation NVIDIA GeForce GT 330M OpenGL Engine supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA Corporation NVIDIA GeForce GT 430 OpenGL Engine supported 3 1 4.3 NVIDIA GT 430
-NVIDIA Corporation NVIDIA GeForce GT 440 OpenGL Engine supported 4 1 4.3 NVIDIA GT 440
-NVIDIA Corporation NVIDIA GeForce GT 520 OpenGL Engine supported 3 1 4.3 NVIDIA GT 520
-NVIDIA Corporation NVIDIA GeForce GT 630 OpenGL Engine supported 3 0 4.3 NVIDIA GT 63x
-NVIDIA Corporation NVIDIA GeForce GT 640 OpenGL Engine supported 3 0 4.3 NVIDIA GT 64x
-NVIDIA Corporation NVIDIA GeForce GT 640M OpenGL Engine supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA Corporation NVIDIA GeForce GT 650M OpenGL Engine supported 3 0 4.3 NVIDIA GT 650M
-NVIDIA Corporation NVIDIA GeForce GTS 250 OpenGL Engine supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA Corporation NVIDIA GeForce GTS 450 OpenGL Engine supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA Corporation NVIDIA GeForce GTX 260 OpenGL Engine supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA Corporation NVIDIA GeForce GTX 280 OpenGL Engine supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation NVIDIA GeForce GTX 285 OpenGL Engine supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA Corporation NVIDIA GeForce GTX 460 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA Corporation NVIDIA GeForce GTX 470 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA Corporation NVIDIA GeForce GTX 480 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 480
-NVIDIA Corporation NVIDIA GeForce GTX 550 Ti OpenGL Engine supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA Corporation NVIDIA GeForce GTX 560 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation NVIDIA GeForce GTX 560 Ti OpenGL Engine supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA Corporation NVIDIA GeForce GTX 570 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA Corporation NVIDIA GeForce GTX 580 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA Corporation NVIDIA GeForce GTX 650 OpenGL Engine supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation NVIDIA GeForce GTX 650 Ti OpenGL Engine supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA Corporation NVIDIA GeForce GTX 660 OpenGL Engine supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation NVIDIA GeForce GTX 660 Ti OpenGL Engine supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA Corporation NVIDIA GeForce GTX 660M OpenGL Engine supported 5 0 4.3 NVIDIA GTX 660M
-NVIDIA Corporation NVIDIA GeForce GTX 670 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 67x
-NVIDIA Corporation NVIDIA GeForce GTX 675MX OpenGL Engine supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA Corporation NVIDIA GeForce GTX 680 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 68x
-NVIDIA Corporation NVIDIA GeForce GTX 680MX OpenGL Engine supported 5 0 4.3 NVIDIA GTX 680M
-NVIDIA Corporation NVIDIA GeForce GTX 775M OpenGL Engine supported 5 0 4.3 NVIDIA GTX 770M
-NVIDIA Corporation NVIDIA GeForce GTX 780M OpenGL Engine supported 5 0 4.3 NVIDIA GTX 780M
-NVIDIA Corporation NVIDIA GeForce Go 7600 OpenGL Engine supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA Corporation NVIDIA GeForce Pre-Release D14P2-30 OpenGL Engine supported 2 1 3.3 NVIDIA GeForce Pre-Release
-NVIDIA Corporation NVIDIA GeForce Pre-Release GK104 OpenGL Engine supported 2 1 3.3 NVIDIA GeForce Pre-Release
-NVIDIA Corporation NVIDIA GeForce Pre-Release ION OpenGL Engine supported 2 1 3.3 NVIDIA GeForce Pre-Release
-NVIDIA Corporation NVIDIA GeForce Pre-Release Unknown OpenGL Engine supported 2 1 3.3 NVIDIA GeForce Pre-Release
-NVIDIA Corporation NVIDIA NV34MAP OpenGL Engine supported 0 0 0 NVIDIA NV34
-NVIDIA Corporation NVIDIA Quadro 4000 OpenGL Engine supported 3 0 4.2 NVIDIA Quadro 4000
-NVIDIA Corporation NVIDIA Quadro FX 4500 OpenGL Engine supported 3 0 2.1 NVIDIA Quadro FX 4500
-NVIDIA Corporation NVIDIA Quadro FX 4800 OpenGL Engine supported 3 0 3.1 NVIDIA Quadro FX 4800
-NVIDIA Corporation NVIDIA Quadro FX 5600 OpenGL Engine supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation NVIDIA Quadro FX 580 OpenGL Engine supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation NVIDIA Quadro FX 770M OpenGL Engine supported 2 0 3.3 NVIDIA Quadro FX 770M
-NVIDIA Corporation NVS 2100M/PCI/SSE2 supported 2 0 3.3 NVIDIA Quadro NVS 2100M
-NVIDIA Corporation NVS 2100M/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro NVS 2100M
-NVIDIA Corporation NVS 300/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 300/PCI/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 300/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 310/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 3100M/PCI/SSE2 supported 2 0 3.3 NVIDIA Quadro NVS 3100M
-NVIDIA Corporation NVS 3100M/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro NVS 3100M
-NVIDIA Corporation NVS 315/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 4200M/PCI/SSE2 supported 2 0 4.2 NVIDIA Quadro NVS 4200M
-NVIDIA Corporation NVS 4200M/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro NVS 4200M
-NVIDIA Corporation NVS 510/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation NVS 5100M/PCI/SSE2 supported 2 0 0 NVIDIA Quadro NVS 5100M
-NVIDIA Corporation NVS 5100M/PCIe/SSE2 supported 2 0 0 NVIDIA Quadro NVS 5100M
-NVIDIA Corporation NVS 5200M/PCI/SSE2 supported 2 0 0 NVIDIA Quadro NVS 5200M
-NVIDIA Corporation NVS 5200M/PCIe/SSE2 supported 2 0 0 NVIDIA Quadro NVS 5200M
-NVIDIA Corporation NVS 5400M/PCIe/SSE2 supported 2 0 0 NVIDIA Quadro NVS 5400M
-NVIDIA Corporation Quadro 1000M/PCI/SSE2 supported 2 0 4.2 NVIDIA Quadro 1000M
-NVIDIA Corporation Quadro 1000M/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro 1000M
-NVIDIA Corporation Quadro 1100M/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro 1100M
-NVIDIA Corporation Quadro 2000 D/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 2000/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 2000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 2000D/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 2000M/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 2000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro 3000M/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 3000M
-NVIDIA Corporation Quadro 3000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 3000M
-NVIDIA Corporation Quadro 400/PCI/SSE2 supported 2 0 3.3 NVIDIA Quadro 400
-NVIDIA Corporation Quadro 400/PCI/SSE2/3DNOW! supported 2 0 3.3 NVIDIA Quadro 400
-NVIDIA Corporation Quadro 400/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro 400
-NVIDIA Corporation Quadro 4000/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000
-NVIDIA Corporation Quadro 4000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000
-NVIDIA Corporation Quadro 4000M/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000M
-NVIDIA Corporation Quadro 4000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000M
-NVIDIA Corporation Quadro 410/PCIe/SSE2 supported 3 0 3.3 NVIDIA 410
-NVIDIA Corporation Quadro 5000/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 5000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 5000M/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 5000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 5010M/PCI/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 5010M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro 600/PCI/SSE2 supported 2 0 4.2 NVIDIA Quadro K600
-NVIDIA Corporation Quadro 600/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro K600
-NVIDIA Corporation Quadro 600/PCIe/SSE2/3DNOW! supported 2 0 4.2 NVIDIA Quadro K600
-NVIDIA Corporation Quadro 6000/PCIe/SSE2 supported 3 0 0 NVIDIA Quadro 6000
-NVIDIA Corporation Quadro FX 1000/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1100/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1300/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1400/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1400/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1400/PCIe/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1500/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1500/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1500/PCIe/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1500M/PCI/SSE2 supported 1 0 2.1 NVIDIA Quadro FX 1500M
-NVIDIA Corporation Quadro FX 1600M/PCI/SSE2 supported 2 0 3.3 NVIDIA Quadro FX 1600M
-NVIDIA Corporation Quadro FX 1600M/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro FX 1600M
-NVIDIA Corporation Quadro FX 1700/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1700/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1700/PCIe/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1700M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1700M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1800/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1800/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1800M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 1800M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 2000/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 2500M/PCI/SSE2 supported 2 0 2.1 NVIDIA Quadro FX 2500M
-NVIDIA Corporation Quadro FX 2500M/PCIe/SSE2 supported 2 0 2.1 NVIDIA Quadro FX 2500M
-NVIDIA Corporation Quadro FX 2700M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 2700M
-NVIDIA Corporation Quadro FX 2700M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 2700M
-NVIDIA Corporation Quadro FX 2800M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 2800M
-NVIDIA Corporation Quadro FX 2800M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 2800M
-NVIDIA Corporation Quadro FX 3000/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3400/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3500/PCI/SSE2 supported 2 0 2.1 NVIDIA Quadro FX 3500
-NVIDIA Corporation Quadro FX 3500/PCIe/SSE2 supported 2 0 2.1 NVIDIA Quadro FX 3500
-NVIDIA Corporation Quadro FX 3500M/PCI/SSE2 supported 2 0 2.1 NVIDIA Quadro FX 3500
-NVIDIA Corporation Quadro FX 350M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3600M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3600
-NVIDIA Corporation Quadro FX 3600M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3600
-NVIDIA Corporation Quadro FX 360M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 360M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 370 Low Profile/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 370/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 370/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 370/PCIe/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3700/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3700
-NVIDIA Corporation Quadro FX 3700/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3700
-NVIDIA Corporation Quadro FX 3700M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3700
-NVIDIA Corporation Quadro FX 3700M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3700
-NVIDIA Corporation Quadro FX 370M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 370M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 380 LP/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 380 LP/PCIe/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 380/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 380/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 3800/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3800
-NVIDIA Corporation Quadro FX 3800/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3800
-NVIDIA Corporation Quadro FX 3800M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3800
-NVIDIA Corporation Quadro FX 3800M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 3800
-NVIDIA Corporation Quadro FX 380M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 380M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 4500/PCI/SSE2 supported 3 0 2.1 NVIDIA Quadro FX 4500
-NVIDIA Corporation Quadro FX 4500/PCIe/SSE2 supported 3 0 2.1 NVIDIA Quadro FX 4500
-NVIDIA Corporation Quadro FX 4600/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 4800/PCI/SSE2 supported 3 0 3.1 NVIDIA Quadro FX 4800
-NVIDIA Corporation Quadro FX 4800/PCIe/SSE2 supported 3 0 3.1 NVIDIA Quadro FX 4800
-NVIDIA Corporation Quadro FX 500/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 500/FX 600/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 500/FX 600/AGP/SSE2/3DNOW! supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 500/FX 600/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 540/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 540/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 550/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 550/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 5500/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 560/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 560/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 5600/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 570/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 570/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 570M/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 570M/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 580/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 580/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 5800/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX 770M/PCI/SSE2 supported 2 0 3.3 NVIDIA Quadro FX 770M
-NVIDIA Corporation Quadro FX 770M/PCIe/SSE2 supported 2 0 3.3 NVIDIA Quadro FX 770M
-NVIDIA Corporation Quadro FX 880M/PCI/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 880M
-NVIDIA Corporation Quadro FX 880M/PCIe/SSE2 supported 3 0 3.3 NVIDIA Quadro FX 880M
-NVIDIA Corporation Quadro FX Go1400/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX Go1400/PCIe/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro FX Go700/AGP/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation Quadro K1000/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro K1000
-NVIDIA Corporation Quadro K1000M/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro 1000M
-NVIDIA Corporation Quadro K2000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro K2000D/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro K2000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Corporation Quadro K3000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 3000M
-NVIDIA Corporation Quadro K4000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000
-NVIDIA Corporation Quadro K4000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 4000M
-NVIDIA Corporation Quadro K5000/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro K5000M/PCIe/SSE2 supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Corporation Quadro K600/PCIe/SSE2 supported 2 0 4.2 NVIDIA Quadro K600
-NVIDIA Corporation Quadro NVS 110M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 130M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 130M/PCIe/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 135M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 135M/PCIe/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 140M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 140M/PCIe/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 150M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 150M/PCIe/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 160M/PCI/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 160M/PCIe/SSE2 supported 0 1 3.3 NVIDIA Quadro NVS 1xxM
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/PCI/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/integrated/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 210S / NVIDIA GeForce 6150LE/PCI/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 210S/PCI/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 280 PCI-E/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 280 SD/AGP/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 285/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 285/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 290/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 290/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 290/PCIe/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 295/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 295/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 300M/PCI/SSE2 supported 2 0 0 NVIDIA Quadro NVS 300M
-NVIDIA Corporation Quadro NVS 320M/PCI/SSE2 supported 2 0 0 NVIDIA Quadro NVS 320M
-NVIDIA Corporation Quadro NVS 320M/PCIe/SSE2 supported 2 0 0 NVIDIA Quadro NVS 320M
-NVIDIA Corporation Quadro NVS 420/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 420/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 420/PCIe/SSE2/3DNOW! supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 450/PCIe/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 510M/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS 55/280 PCI/PCI/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS with AGP8X/AGP/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro NVS/AGP/SSE2 supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Corporation Quadro PCI-E Series/PCI/SSE2 NO MATCH
-NVIDIA Corporation Quadro2 MXR/AGP/SSE2 supported 0 0 1.5 NVIDIA Quadro2
-NVIDIA Corporation Quadro4 380 XGL/AGP/SSE2 supported 0 0 1.5 NVIDIA Quadro4
-NVIDIA Corporation Quadro4 550 XGL/AGP/SSE2 supported 0 0 1.5 NVIDIA Quadro4
-NVIDIA Corporation Quadro4 700 XGL/AGP/SSE2 supported 0 0 1.5 NVIDIA Quadro4
-NVIDIA Corporation Quadro4 980 XGL/AGP/SSE2 supported 0 0 1.5 NVIDIA Quadro4
-NVIDIA Corporation RIVA TNT2/AGP/SSE2 unsupported 0 0 1.5 NVIDIA RIVA TNT
-NVIDIA Corporation RIVA TNT2/AGP/SSE2/3DNOW! unsupported 0 0 1.5 NVIDIA RIVA TNT
-NVIDIA Corporation Stinger/emulated by Quadro FX 500/FX 600/PCI/SSE2 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Corporation nForce 750a SLI/PCI/SSE2 unsupported 0 0 3.3 NVIDIA nForce
-NVIDIA Corporation nForce 750a SLI/integrated/SSE2 unsupported 0 0 3.3 NVIDIA nForce
-NVIDIA Corporation nForce 760i SLI/integrated/SSE2 unsupported 0 0 3.3 NVIDIA nForce
-NVIDIA Corporation nForce 980a/780a SLI/integrated/SSE2 unsupported 0 0 3.3 NVIDIA nForce
-NVIDIA Corporation unknown board/AGP/SSE2 unsupported 0 0 2.1 NVIDIA Generic Unknown
-NVIDIA Corporation unknown board/PCI/SSE2 unsupported 0 0 2.1 NVIDIA Generic Unknown
-NVIDIA Corporation unknown board/PCI/SSE2/3DNOW! unsupported 0 0 2.1 NVIDIA Generic Unknown
-NVIDIA Corporation unknown board/PCIe/SSE2 unsupported 0 0 2.1 NVIDIA Generic Unknown
-NVIDIA D9M supported 1 0 0 NVIDIA D9M
-NVIDIA G 103M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G 105M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G 110M supported 1 1 3.3 NVIDIA G 110M
-NVIDIA G 120M supported 1 1 3.3 NVIDIA G 120M
-NVIDIA G 200 supported 2 1 3.3 NVIDIA G200
-NVIDIA G 205M supported 1 0 0 NVIDIA G 200M
-NVIDIA G 210 supported 3 1 3.3 NVIDIA G210
-NVIDIA G 310M supported 2 0 3.3 NVIDIA G 310M
-NVIDIA G 320M supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA G 405 supported 3 0 3.3 NVIDIA 405
-NVIDIA G 410M supported 3 1 4.2 NVIDIA G 410M
-NVIDIA G 610M supported 3 1 4.3 NVIDIA 610M
-NVIDIA G100 supported 3 1 4.2 NVIDIA G100
-NVIDIA G100M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G102M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G103M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G105M supported 1 1 3.3 NVIDIA G 100M
-NVIDIA G200 supported 2 1 3.3 NVIDIA G200
-NVIDIA G210 supported 3 1 3.3 NVIDIA G210
-NVIDIA G210M supported 3 0 3.3 NVIDIA G210M
-NVIDIA G73 supported 1 0 0 NVIDIA G73
-NVIDIA G84 supported 2 0 0 NVIDIA G84
-NVIDIA G92 supported 3 0 0 NVIDIA G92
-NVIDIA G94 supported 3 0 0 NVIDIA G94
-NVIDIA GT 120 supported 2 0 3.3 NVIDIA GT 120
-NVIDIA GT 120M supported 2 0 3.3 NVIDIA GT 120
-NVIDIA GT 130 supported 2 0 3.3 NVIDIA GT 130
-NVIDIA GT 130M supported 3 1 3.3 NVIDIA GT 130M
-NVIDIA GT 140 supported 2 0 3.3 NVIDIA GT 140
-NVIDIA GT 140M supported 3 1 3.3 NVIDIA GT 140M
-NVIDIA GT 150 supported 2 1 3.3 NVIDIA GT 150
-NVIDIA GT 220 supported 2 1 3.3 NVIDIA GT 220
-NVIDIA GT 220M supported 3 1 3.3 NVIDIA GT 220M
-NVIDIA GT 230 supported 2 1 3.3 NVIDIA GT 230
-NVIDIA GT 230M supported 3 1 3.3 NVIDIA GT 230M
-NVIDIA GT 240 supported 4 1 3.3 NVIDIA GT 240
-NVIDIA GT 240M supported 3 1 3.3 NVIDIA GT 240M
-NVIDIA GT 260M supported 3 1 3.3 NVIDIA GT 260M
-NVIDIA GT 320 supported 3 0 3.3 NVIDIA GT 320
-NVIDIA GT 320M supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA GT 325M supported 3 0 3.3 NVIDIA GT 320M
-NVIDIA GT 330 supported 3 0 3.3 NVIDIA GT 330
-NVIDIA GT 330M supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA GT 335M supported 3 1 3.3 NVIDIA GT 330M
-NVIDIA GT 340 supported 3 0 0 NVIDIA GT 340
-NVIDIA GT 340M supported 4 1 3.3 NVIDIA GT 340M
-NVIDIA GT 415M supported 3 0 0 NVIDIA 410M
-NVIDIA GT 420 supported 3 1 4.3 NVIDIA GT 420
-NVIDIA GT 420M supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA GT 425M supported 3 1 4.3 NVIDIA GT 420M
-NVIDIA GT 430 supported 3 1 4.3 NVIDIA GT 430
-NVIDIA GT 430M supported 3 1 4.3 NVIDIA GT 430M
-NVIDIA GT 435M supported 3 1 4.3 NVIDIA GT 430M
-NVIDIA GT 440 supported 4 1 4.3 NVIDIA GT 440
-NVIDIA GT 440M supported 3 1 4.3 NVIDIA GT 440M
-NVIDIA GT 445M supported 3 1 4.3 NVIDIA GT 440M
-NVIDIA GT 450 supported 4 1 4.3 NVIDIA GT 450
-NVIDIA GT 520 supported 3 1 4.3 NVIDIA GT 520
-NVIDIA GT 520M supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA GT 525M supported 3 1 4.3 NVIDIA GT 520M
-NVIDIA GT 530M supported 3 1 4.3 NVIDIA GT 530M
-NVIDIA GT 540 supported 3 1 4.3 NVIDIA GT 540
-NVIDIA GT 540M supported 3 1 4.3 NVIDIA GT 540M
-NVIDIA GT 550 supported 3 1 4.3 NVIDIA GT 550
-NVIDIA GT 550M supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA GT 555M supported 3 1 4.3 NVIDIA GT 550M
-NVIDIA GT 610 supported 3 1 4.3 NVIDIA GT 61x
-NVIDIA GT 620 supported 3 0 4.3 NVIDIA GT 62x
-NVIDIA GT 620M supported 3 0 4.3 NVIDIA GT 620M
-NVIDIA GT 630 supported 3 0 4.3 NVIDIA GT 63x
-NVIDIA GT 630M supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA GT 635M supported 3 0 4.3 NVIDIA GT 630M
-NVIDIA GT 640 supported 3 0 4.3 NVIDIA GT 64x
-NVIDIA GT 640M supported 3 0 4.3 NVIDIA GT 640M
-NVIDIA GT 650 supported 3 1 4.3 NVIDIA GT 65x
-NVIDIA GT 650M supported 3 0 4.3 NVIDIA GT 650M
-NVIDIA GTS 160M supported 2 0 0 NVIDIA GTS 160M
-NVIDIA GTS 240 supported 4 1 3.3 NVIDIA GTS 240
-NVIDIA GTS 250 supported 4 1 3.3 NVIDIA GTS 250
-NVIDIA GTS 350M supported 4 1 3.3 NVIDIA GTS 350M
-NVIDIA GTS 360 supported 4 1 3.3 NVIDIA GTS 360
-NVIDIA GTS 360M supported 5 1 3.3 NVIDIA GTS 360M
-NVIDIA GTS 450 supported 4 1 4.3 NVIDIA GTS 450
-NVIDIA GTX 260 supported 4 1 3.3 NVIDIA GTX 260
-NVIDIA GTX 270 supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA GTX 275 supported 4 0 3.3 NVIDIA GTX 270
-NVIDIA GTX 280 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA GTX 285 supported 4 1 3.3 NVIDIA GTX 280
-NVIDIA GTX 290 supported 5 0 3.3 NVIDIA GTX 290
-NVIDIA GTX 295 supported 5 0 3.3 NVIDIA GTX 290
-NVIDIA GTX 460 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA GTX 460M supported 4 1 4.3 NVIDIA GTX 460M
-NVIDIA GTX 465 supported 5 1 4.3 NVIDIA GTX 460
-NVIDIA GTX 470 supported 5 1 4.3 NVIDIA GTX 470
-NVIDIA GTX 470M supported 3 0 4.3 NVIDIA GTX 470M
-NVIDIA GTX 480 supported 5 1 4.3 NVIDIA GTX 480
-NVIDIA GTX 480M supported 3 1 4.3 NVIDIA GTX 480M
-NVIDIA GTX 485M supported 3 1 4.3 NVIDIA GTX 480M
-NVIDIA GTX 550 supported 5 1 4.3 NVIDIA GTX 550
-NVIDIA GTX 560 supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA GTX 560 Ti supported 5 1 4.3 NVIDIA GTX 560
-NVIDIA GTX 570 supported 5 1 4.3 NVIDIA GTX 570
-NVIDIA GTX 580 supported 5 1 4.3 NVIDIA GTX 580
-NVIDIA GTX 580M supported 5 1 4.3 NVIDIA GTX 580M
-NVIDIA GTX 590 supported 5 1 4.3 NVIDIA GTX 590
-NVIDIA GTX 650 supported 3 1 4.3 NVIDIA GTX 65x
-NVIDIA GTX 660 supported 5 0 4.3 NVIDIA GTX 66x
-NVIDIA GTX 670 supported 5 1 4.3 NVIDIA GTX 67x
-NVIDIA GTX 670M supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA GTX 675M supported 5 1 4.3 NVIDIA GTX 670M
-NVIDIA GTX 680 supported 5 1 4.3 NVIDIA GTX 68x
-NVIDIA GTX 680M supported 5 0 4.3 NVIDIA GTX 680M
-NVIDIA GTX 690 supported 5 1 4.3 NVIDIA GTX 69x
-NVIDIA GTX 770 supported 5 0 4.3 NVIDIA GTX 77x
-NVIDIA GTX TITAN supported 5 0 4.3 NVIDIA GTX TITAN
-NVIDIA GeForce 2 supported 0 1 1.5 NVIDIA GeForce 2
-NVIDIA GeForce 3 supported 2 1 2.1 NVIDIA GeForce 3
-NVIDIA GeForce 4 supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA GeForce 4 Go supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA GeForce 4 MX supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA GeForce 4 Ti supported 0 1 1.5 NVIDIA GeForce 4
-NVIDIA GeForce 6100 supported 3 1 4.2 NVIDIA GeForce 6100
-NVIDIA GeForce 6200 supported 0 1 2.1 NVIDIA GeForce 6200
-NVIDIA GeForce 6500 supported 1 1 2.1 NVIDIA GeForce 6500
-NVIDIA GeForce 6600 supported 2 1 2.1 NVIDIA GeForce 6600
-NVIDIA GeForce 6700 supported 2 1 2.1 NVIDIA GeForce 6700
-NVIDIA GeForce 6800 supported 1 1 2.1 NVIDIA GeForce 6800
-NVIDIA GeForce 7000 supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA GeForce 7000M supported 1 1 2.1 NVIDIA GeForce 7000
-NVIDIA GeForce 7100 supported 1 1 2.1 NVIDIA GeForce 7100
-NVIDIA GeForce 7300 supported 1 1 2.1 NVIDIA GeForce 7300
-NVIDIA GeForce 7500 supported 2 1 2.1 NVIDIA GeForce 7500
-NVIDIA GeForce 7600 supported 2 1 2.1 NVIDIA GeForce 7600
-NVIDIA GeForce 7800 supported 2 1 2.1 NVIDIA GeForce 7800
-NVIDIA GeForce 7900 supported 3 1 2.1 NVIDIA GeForce 7900
-NVIDIA GeForce 8100 supported 1 0 3.3 NVIDIA GeForce 8100
-NVIDIA GeForce 8200 supported 1 0 3.3 NVIDIA GeForce 8200
-NVIDIA GeForce 8200M supported 1 0 3.3 NVIDIA GeForce 8200M
-NVIDIA GeForce 8300 supported 3 1 3.3 NVIDIA GeForce 8300
-NVIDIA GeForce 8400 supported 2 1 3.3 NVIDIA GeForce 8400
-NVIDIA GeForce 8400M supported 1 1 3.3 NVIDIA GeForce 8400M
-NVIDIA GeForce 8500 supported 2 1 3.3 NVIDIA GeForce 8500
-NVIDIA GeForce 8600 supported 3 1 3.3 NVIDIA GeForce 8600
-NVIDIA GeForce 8600M supported 2 1 3.3 NVIDIA GeForce 8600M
-NVIDIA GeForce 8700 supported 3 0 0 NVIDIA GeForce 8700
-NVIDIA GeForce 8700M supported 2 1 3.3 NVIDIA GeForce 8700M
-NVIDIA GeForce 8800 supported 3 1 3.3 NVIDIA GeForce 8800
-NVIDIA GeForce 8800M supported 2 1 3.3 NVIDIA GeForce 8800M
-NVIDIA GeForce 9100 supported 0 0 3.3 NVIDIA GeForce 9100
-NVIDIA GeForce 9100M supported 0 0 3.3 NVIDIA GeForce 9100M
-NVIDIA GeForce 9200 supported 1 0 3.3 NVIDIA GeForce 9200
-NVIDIA GeForce 9200M supported 1 0 3.3 NVIDIA GeForce 9200M
-NVIDIA GeForce 9300 supported 1 1 3.3 NVIDIA GeForce 9300
-NVIDIA GeForce 9300M supported 1 1 3.3 NVIDIA GeForce 9300M
-NVIDIA GeForce 9400 supported 3 1 3.3 NVIDIA GeForce 9400
-NVIDIA GeForce 9400M supported 2 1 3.3 NVIDIA GeForce 9400M
-NVIDIA GeForce 9500 supported 3 1 3.3 NVIDIA GeForce 9500
-NVIDIA GeForce 9500M supported 1 1 3.3 NVIDIA GeForce 9500M
-NVIDIA GeForce 9600 supported 3 1 3.3 NVIDIA GeForce 9600
-NVIDIA GeForce 9600M supported 2 1 3.3 NVIDIA GeForce 9600M
-NVIDIA GeForce 9700M supported 0 1 3.3 NVIDIA GeForce 9700M
-NVIDIA GeForce 9800 supported 3 1 3.3 NVIDIA GeForce 9800
-NVIDIA GeForce 9800M supported 2 1 3.3 NVIDIA GeForce 9800M
-NVIDIA GeForce FX 5200 supported 0 0 2.1 NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5500 supported 0 1 2.1 NVIDIA GeForce FX 5500
-NVIDIA GeForce FX 5600 supported 1 1 2.1 NVIDIA GeForce FX 5600
-NVIDIA GeForce FX 5700 supported 0 1 2.1 NVIDIA GeForce FX 5700
-NVIDIA GeForce FX 5900 supported 1 1 2.1 NVIDIA GeForce FX 5900
-NVIDIA GeForce FX Go5100 supported 3 0 0 NVIDIA 510
-NVIDIA GeForce FX Go5200 supported 0 0 1.5 NVIDIA GeForce FX Go5200
-NVIDIA GeForce FX Go5600 supported 0 1 2.1 NVIDIA GeForce FX Go5600
-NVIDIA GeForce FX Go5700 supported 1 1 1.5 NVIDIA GeForce FX Go5700
-NVIDIA GeForce Go 6 supported 1 0 0 NVIDIA GeForce Go 6
-NVIDIA GeForce Go 6100 supported 0 1 2.1 NVIDIA GeForce Go 6100
-NVIDIA GeForce Go 6200 supported 0 0 1.5 NVIDIA GeForce Go 6200
-NVIDIA GeForce Go 6400 supported 1 1 2.1 NVIDIA GeForce Go 6400
-NVIDIA GeForce Go 6600 supported 0 1 2.1 NVIDIA GeForce Go 6600
-NVIDIA GeForce Go 6800 supported 0 1 2.1 NVIDIA GeForce Go 6800
-NVIDIA GeForce Go 7200 supported 1 0 2.1 NVIDIA GeForce Go 7200
-NVIDIA GeForce Go 7300 supported 1 1 2.1 NVIDIA GeForce Go 7300
-NVIDIA GeForce Go 7400 supported 1 1 2.1 NVIDIA GeForce Go 7400
-NVIDIA GeForce Go 7600 supported 1 1 2.1 NVIDIA GeForce Go 7600
-NVIDIA GeForce Go 7700 supported 0 1 2.1 NVIDIA GeForce Go 7700
-NVIDIA GeForce Go 7800 supported 2 0 0 NVIDIA GeForce Go 7800
-NVIDIA GeForce Go 7900 supported 1 1 2.1 NVIDIA GeForce Go 7900
-NVIDIA GeForce PCX supported 0 0 1.5 NVIDIA GeForce PCX
-NVIDIA Generic unsupported 0 0 2.1 NVIDIA Generic
-NVIDIA ION supported 2 1 3.3 NVIDIA ION a
-NVIDIA MCP61 supported 1 0 2.1 NVIDIA MCP61
-NVIDIA NV34 supported 0 0 0 NVIDIA NV34
-NVIDIA PCI unsupported 0 0 2.1 NVIDIA PCI
-NVIDIA Quadro 2000 supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Quadro 2000 M/D supported 3 0 4.2 NVIDIA Quadro 2000 M/D
-NVIDIA Quadro 3000M supported 3 0 4.2 NVIDIA Quadro 3000M
-NVIDIA Quadro 400 supported 2 0 3.3 NVIDIA Quadro 400
-NVIDIA Quadro 4000 supported 3 0 4.2 NVIDIA Quadro 4000
-NVIDIA Quadro 4000M supported 3 0 4.2 NVIDIA Quadro 4000M
-NVIDIA Quadro 50x0 M supported 3 0 4.2 NVIDIA Quadro 50x0 M
-NVIDIA Quadro 600 supported 2 0 4.2 NVIDIA Quadro 600
-NVIDIA Quadro 6000 supported 3 0 0 NVIDIA Quadro 6000
-NVIDIA Quadro FX supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Quadro FX 1500M supported 1 0 2.1 NVIDIA Quadro FX 1500M
-NVIDIA Quadro FX 1800 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Quadro FX 2500M supported 2 0 2.1 NVIDIA Quadro FX 2500M
-NVIDIA Quadro FX 2700M supported 3 0 3.3 NVIDIA Quadro FX 2700M
-NVIDIA Quadro FX 2800M supported 3 0 3.3 NVIDIA Quadro FX 2800M
-NVIDIA Quadro FX 3500 supported 2 0 2.1 NVIDIA Quadro FX 3500
-NVIDIA Quadro FX 3700 supported 3 0 3.3 NVIDIA Quadro FX 3700
-NVIDIA Quadro FX 3800 supported 3 0 3.3 NVIDIA Quadro FX 3800
-NVIDIA Quadro FX 4500 supported 3 0 2.1 NVIDIA Quadro FX 4500
-NVIDIA Quadro FX 4800 supported 3 0 3.1 NVIDIA Quadro FX 4800
-NVIDIA Quadro FX 550 supported 1 0 3.3 NVIDIA Quadro FX
-NVIDIA Quadro FX 770M supported 2 0 3.3 NVIDIA Quadro FX 770M
-NVIDIA Quadro FX 880M supported 3 0 3.3 NVIDIA Quadro FX 880M
-NVIDIA Quadro NVS supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Quadro NVS 1xxM supported 0 0 4.2 NVIDIA Quadro NVS
-NVIDIA Quadro NVS 4200M supported 2 0 4.2 NVIDIA Quadro NVS 4200M
-NVIDIA Quadro2 supported 0 0 1.5 NVIDIA Quadro2
-NVIDIA nForce unsupported 0 0 3.3 NVIDIA nForce
-Oracle VirtualBox Graphics supported 0 1 2.1 Oracle
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon Barts XT Prototype OpenGL Engine supported 3 1 2.1 AMD BARTS (HD 6800)
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 2600 OpenGL Engine supported 2 1 4 ATI Radeon HD 2600
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 2600 PRO OpenGL Engine supported 2 1 4 ATI Radeon HD 2600
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 4670 OpenGL Engine supported 3 1 4 ATI Radeon HD 4600
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 4850 OpenGL Engine supported 3 1 4 ATI Radeon HD 4800
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5600
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5700
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine supported 3 1 4.2 ATI Radeon HD 5700
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6630M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6600
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6700
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine supported 3 1 4.2 ATI Radeon HD 6700
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine supported 5 1 4.2 ATI Radeon HD 6900
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon X1600 OpenGL Engine supported 2 1 2.1 ATI Radeon X1600
-Parallels and Intel Inc. Parallels using Intel GMA X3100 OpenGL Engine supported 1 1 2.1 Intel X3100
-Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine supported 3 1 3.1 Intel HD Graphics 3000
-Parallels and Intel Inc. Parallels using Intel HD Graphics 4000 OpenGL Engine supported 3 1 4.2 Intel HD Graphics 4000
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 320M OpenGL Engine supported 2 0 3.3 NVIDIA 320M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 8800 GS OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 8800
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9400 OpenGL Engine supported 3 1 3.3 NVIDIA GeForce 9400
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9400M OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 9400M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9600M GT OpenGL Engine supported 2 1 3.3 NVIDIA GeForce 9600M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 130 OpenGL Engine supported 2 0 3.3 NVIDIA GT 130
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 330M OpenGL Engine supported 3 1 3.3 NVIDIA GT 330M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 640 OpenGL Engine supported 3 0 4.3 NVIDIA GT 64x
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 640M OpenGL Engine supported 3 0 4.3 NVIDIA GT 640M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 650M OpenGL Engine supported 3 0 4.3 NVIDIA GT 650M
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 570 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 570
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 660 OpenGL Engine supported 5 0 4.3 NVIDIA GTX 66x
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 660 Ti OpenGL Engine supported 5 0 4.3 NVIDIA GTX 66x
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 670 OpenGL Engine supported 5 1 4.3 NVIDIA GTX 67x
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 680MX OpenGL Engine supported 5 0 4.3 NVIDIA GTX 680M
-PowerVR SGX545 supported 1 1 3 PowerVR SGX545
-S3 unsupported 0 1 1.4 S3
-S3 Graphics K8M800/MMX/K3D unsupported 0 1 1.4 S3
-S3 Graphics KM400/KN400/MMX/SSE unsupported 0 1 1.4 S3
-S3 Graphics P8M800/MMX/SSE unsupported 0 1 1.4 S3
-S3 Graphics Unknown Device/MMX/SSE unsupported 0 1 1.4 S3
-S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE unsupported 0 1 1.4 S3
-S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated ProSavage/Twister unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated S3 Graphics Chrome9 HC unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated S3 Graphics DeltaChrome unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated VIA Chrome9 HC IGP unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated VIA Chrome9 HC3 IGP unsupported 0 1 1.4 S3
-S3 Graphics, Incorporated VIA Chrome9 HD Pro IGP unsupported 0 1 1.4 S3
-SiS unsupported 0 1 1.5 SiS
-SiS 3D-Analyze v2.3 - http://www.tommti-systems.com unsupported 0 1 1.5 SiS
-SiS 650/M650 VGA unsupported 0 1 1.5 SiS
-SiS 650/M650 VGA / MMX/SSE2 /AGP unsupported 0 1 1.5 SiS
-SiS 661 VGA unsupported 0 1 1.5 SiS
-SiS 662 VGA unsupported 0 1 1.5 SiS
-SiS 760 VGA unsupported 0 1 1.5 SiS
-SiS 761GX VGA unsupported 0 1 1.5 SiS
-SiS Mirage Graphics3 unsupported 0 1 1.4 S3
-SiS Xabre VGA unsupported 0 1 1.5 SiS
-Tungsten Graphics, Inc Mesa DRI Intel(R) 845G unsupported 0 1 1.4 Intel 845G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 852GM/855GM unsupported 0 1 1.4 Intel 855GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 852GM/855GM x86/MMX/SSE2 unsupported 0 1 1.4 Intel 855GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 865G unsupported 0 1 1.4 Intel 865G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 865G x86/MMX/SSE2 unsupported 0 1 1.4 Intel 865G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915G unsupported 0 1 1.4 Intel 915G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915G x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM unsupported 0 1 1.4 Intel 915GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM 20061017 x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM x86/MMX/SSE2 unsupported 0 1 1.4 Intel 915GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G GEM 20091221 2009Q4 x86/MMX/SSE2 supported 0 1 1.4 Intel 945G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G GEM 20100330 DEVELOPMENT x86/MMX/SSE2 supported 0 1 1.4 Intel 945G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G x86/MMX/SSE2 supported 0 1 1.4 Intel 945G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GM GEM 20091221 2009Q4 x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GM x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME supported 0 1 1.4 Intel 945GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME GEM 20091221 2009Q4 x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME x86/MMX/SSE2 supported 0 1 1.4 Intel 945GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4 x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GME/GLE x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q GEM 20091221 2009Q4 x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q x86/MMX/SSE2 supported 0 1 2.1 Intel 965
-Tungsten Graphics, Inc Mesa DRI Intel(R) G33 GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 1 1 1.4 Intel G33
-Tungsten Graphics, Inc Mesa DRI Intel(R) G33 x86/MMX/SSE2 unsupported 1 1 1.4 Intel G33
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 GEM 20091221 2009Q4 x86/MMX/SSE2 supported 1 1 2.1 Intel G41
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2 supported 1 1 2.1 Intel G41
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 x86/MMX/SSE2 supported 1 1 2.1 Intel G41
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD GEM 20091221 2009Q4 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD GEM 20091221 2009Q4 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGDNG_M GEM 20091221 2009Q4 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGDNG_M GEM 20091221 2009Q4 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Desktop unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Desktop unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Mobile unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q35 GEM 20091221 2009Q4 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q35 x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q45/Q43 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Desktop unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Desktop x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Server unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20091221 2009Q4 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2 supported 1 1 2.1 Intel Q45/Q43
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset x86/MMX/SSE2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R100 (RS200 4437) x86/MMX/SSE2 NO-TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R100 (RV200 4C57) TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R100 (RV200 4C57) x86/MMX/SSE2 TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) x86/MMX/SSE2 TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5960) x86/MMX+/3DNow!+/SSE2 TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5960) x86/MMX/SSE2 TCL DRI2 unsupported 1 1 3 Mesa
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5961) x86/MMX/SSE2 TCL DRI2 unsupported 1 1 3 Mesa
-VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE; supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE; supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on i915 (chipset: 945GME) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x209) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x300) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x301) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x302) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 128 bits) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 256 bits) supported 1 1 2.1 Gallium
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits) supported 1 1 2.1 Gallium
-X.Org Gallium 0.4 on AMD ARUBA supported 3 1 2.1 AMD ARUBA (HD 6800)
-X.Org Gallium 0.4 on AMD BARTS supported 3 1 2.1 AMD BARTS (HD 6800)
-X.Org Gallium 0.4 on AMD CAICOS supported 3 0 0 AMD CAICOS (HD 6400)
-X.Org Gallium 0.4 on AMD CAPE VERDE supported 1 1 2.1 Gallium
-X.Org Gallium 0.4 on AMD CEDAR supported 2 0 2.1 AMD CEDAR (HD 5450)
-X.Org Gallium 0.4 on AMD CYPRESS supported 3 0 0 AMD CYPRESS (HD 5800)
-X.Org Gallium 0.4 on AMD JUNIPER supported 3 0 0 AMD JUNIPER (HD 5700)
-X.Org Gallium 0.4 on AMD PALM supported 1 1 2.1 Gallium
-X.Org Gallium 0.4 on AMD REDWOOD supported 3 0 1.4 AMD REDWOOD (HD 5500/5600)
-X.Org Gallium 0.4 on AMD RS780 supported 0 1 2.1 AMD RS780 (HD 3200)
-X.Org Gallium 0.4 on AMD RS880 supported 0 1 3.2 AMD RS880 (HD 4200)
-X.Org Gallium 0.4 on AMD RV610 supported 1 0 0 AMD RV610 (HD 2400)
-X.Org Gallium 0.4 on AMD RV620 supported 1 0 0 AMD RV620 (HD 3400)
-X.Org Gallium 0.4 on AMD RV630 supported 2 0 0 AMD RV630 (HD 2600)
-X.Org Gallium 0.4 on AMD RV635 supported 3 0 1.4 AMD RV635 (HD 3600)
-X.Org Gallium 0.4 on AMD RV670 supported 3 0 0 AMD RV670 (HD 3800)
-X.Org Gallium 0.4 on AMD RV710 supported 0 1 1.4 AMD RV710 (HD 4300)
-X.Org Gallium 0.4 on AMD RV730 supported 3 0 1.4 AMD RV730 (HD 4600)
-X.Org Gallium 0.4 on AMD RV740 supported 3 0 0 AMD RV740 (HD 4700)
-X.Org Gallium 0.4 on AMD RV770 supported 3 0 0 AMD RV770 (HD 4800)
-X.Org Gallium 0.4 on AMD SUMO supported 3 1 4.1 AMD SUMO
-X.Org Gallium 0.4 on AMD SUMO2 supported 3 1 4.1 AMD SUMO
-X.Org Gallium 0.4 on AMD TURKS supported 3 0 2.1 AMD TURKS (HD 6500/6600)
-X.Org R300 Project Gallium 0.4 on ATI R350 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI R580 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RC410 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RS480 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RS482 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RS600 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RS690 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV350 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV370 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV380 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV410 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV515 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV530 supported 0 1 2.1 ATI R300 (9700)
-X.Org R300 Project Gallium 0.4 on ATI RV570 supported 0 1 2.1 ATI R300 (9700)
-XGI Volari V3 unsupported 0 0 0 XGI
-http://TitaniumGL.tk NVIDIA GeForce GTX 690/3999M VRAM/TitaniumGL/4 THREADs/3D GRAPHICS ACCELERATION supported 5 1 4.3 NVIDIA GTX 69x
-nouveau Gallium 0.4 on NV34 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV42 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV44 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV46 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV49 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV4A supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV4B supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV4C supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV4E supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV50 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV63 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV67 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV84 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV86 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV92 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV94 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV96 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NV98 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVA0 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVA3 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVA5 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVA8 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVAA supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVAC supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVAF supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVC0 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVC1 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVC3 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVC4 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVCE supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVCF supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVD9 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVE4 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVE6 supported 1 1 2.1 Gallium
-nouveau Gallium 0.4 on NVE7 supported 1 1 2.1 Gallium
diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt
deleted file mode 100644
index 66cbeece97..0000000000
--- a/indra/newview/tests/gpus_seen.txt
+++ /dev/null
@@ -1,4225 +0,0 @@
-AMD BARTS (HD 6800)
-AMD BARTS (HD 6800)
-AMD CAICOS (HD 6400)
-AMD CAICOS (HD 6400)
-AMD CAYMAN (HD 6900)
-AMD CEDAR (HD 5450)
-AMD CEDAR (HD 5450)
-AMD JUNIPER (HD 5700)
-AMD PARK
-AMD REDWOOD (HD 5500/5600)
-AMD RS780 (HD 3200)
-AMD RS880 (HD 4200)
-AMD RS880 (HD 4200)
-AMD RV610 (HD 2400)
-AMD RV620 (HD 3400)
-AMD RV630 (HD 2600)
-AMD RV635 (HD 3600)
-AMD RV670 (HD 3800)
-AMD RV710 (HD 4300)
-AMD RV730 (HD 4600)
-AMD RV770 (HD 4800)
-AMD RV790 (HD 4800)
-AMD TURKS (HD 6500/6600)
-ATI
-ATI 760G/Radeon 3000
-ATI ASUS AH24xx
-ATI ASUS AH34xx
-ATI ASUS AH36xx
-ATI ASUS AH46xx
-ATI ASUS AX3xx
-ATI ASUS AX5xx
-ATI ASUS EAH38xx
-ATI ASUS EAH43xx
-ATI ASUS EAH45xx
-ATI ASUS EAH48xx
-ATI ASUS EAH54xx
-ATI ASUS EAH57xx
-ATI ASUS EAH58xx
-ATI ASUS EAH64xx
-ATI ASUS EAH65xx
-ATI ASUS EAH66xx
-ATI ASUS EAH67xx
-ATI ASUS EAH68xx
-ATI ASUS EAH69xx
-ATI ASUS EAH6xxx
-ATI ASUS EAH77xx
-ATI ASUS HD7700
-ATI ASUS Radeon X1xxx
-ATI All-in-Wonder HD
-ATI All-in-Wonder PCI-E
-ATI Display Adapter
-ATI FireGL
-ATI FireGL 5200
-ATI FireGL 5xxx
-ATI FireMV
-ATI FirePro 2000
-ATI FirePro 4000
-ATI FirePro M
-ATI FirePro M3900
-ATI FirePro M5800
-ATI FirePro M7740
-ATI FirePro M7820
-ATI Geforce 9500 GT
-ATI Geforce 9600 GT
-ATI Geforce 9800 GT
-ATI IGP 340M
-ATI Mobility Radeon
-ATI Mobility Radeon 4100
-ATI Mobility Radeon 4100
-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 2300
-ATI Mobility Radeon HD 2400
-ATI Mobility Radeon HD 2400
-ATI Mobility Radeon HD 2600
-ATI Mobility Radeon HD 2600
-ATI Mobility Radeon HD 2700
-ATI Mobility Radeon HD 3400
-ATI Mobility Radeon HD 3400
-ATI Mobility Radeon HD 3600
-ATI Mobility Radeon HD 3600
-ATI Mobility Radeon HD 3800
-ATI Mobility Radeon HD 4200
-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 5100
-ATI Mobility Radeon HD 5100
-ATI Mobility Radeon HD 5300
-ATI Mobility Radeon HD 530v
-ATI Mobility Radeon HD 5400
-ATI Mobility Radeon HD 5400
-ATI Mobility Radeon HD 540v
-ATI Mobility Radeon HD 545v
-ATI Mobility Radeon HD 5500
-ATI Mobility Radeon HD 550v
-ATI Mobility Radeon HD 5600
-ATI Mobility Radeon HD 5600
-ATI Mobility Radeon HD 560v
-ATI Mobility Radeon HD 565v
-ATI Mobility Radeon HD 5700
-ATI Mobility Radeon HD 6300
-ATI Mobility Radeon HD 6300
-ATI Mobility Radeon HD 6500
-ATI Mobility Radeon HD 6500M
-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 Mobility Radeon Xxxx
-ATI R300 (9700)
-ATI RV410 (X700)
-ATI RV530
-ATI Radeon
-ATI Radeon 2100
-ATI Radeon 3000
-ATI Radeon 3100
-ATI Radeon 3100
-ATI Radeon 5xxx
-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 2300
-ATI Radeon HD 2400
-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 3200
-ATI Radeon HD 3300
-ATI Radeon HD 3400
-ATI Radeon HD 3400
-ATI Radeon HD 3400
-ATI Radeon HD 3500
-ATI Radeon HD 3600
-ATI Radeon HD 3700
-ATI Radeon HD 3800
-ATI Radeon HD 4200
-ATI Radeon HD 4300
-ATI Radeon HD 4300
-ATI Radeon HD 4400
-ATI Radeon HD 4500
-ATI Radeon HD 4500
-ATI Radeon HD 4600
-ATI Radeon HD 4700
-ATI Radeon HD 4800
-ATI Radeon HD 4800
-ATI Radeon HD 5400
-ATI Radeon HD 5400
-ATI Radeon HD 5500
-ATI Radeon HD 5500
-ATI Radeon HD 5600
-ATI Radeon HD 5700
-ATI Radeon HD 5700
-ATI Radeon HD 5800
-ATI Radeon HD 5900
-ATI Radeon HD 6200
-ATI Radeon HD 6200
-ATI Radeon HD 6300
-ATI Radeon HD 6300
-ATI Radeon HD 6300
-ATI Radeon HD 6300M
-ATI Radeon HD 6400
-ATI Radeon HD 64xx
-ATI Radeon HD 64xx
-ATI Radeon HD 6500
-ATI Radeon HD 65xx
-ATI Radeon HD 65xx
-ATI Radeon HD 6600
-ATI Radeon HD 66xx
-ATI Radeon HD 6700
-ATI Radeon HD 6700
-ATI Radeon HD 6700M
-ATI Radeon HD 6800
-ATI Radeon HD 6900
-ATI Radeon HD 6900
-ATI Radeon HD 7200
-ATI Radeon HD 7300
-ATI Radeon HD 7300
-ATI Radeon HD 7400
-ATI Radeon HD 7400
-ATI Radeon HD 7500
-ATI Radeon HD 7600
-ATI Radeon HD 7700
-ATI Radeon HD 7800
-ATI Radeon HD 7900
-ATI Radeon X1000
-ATI Radeon X1200
-ATI Radeon X1300
-ATI Radeon X13xx
-ATI Radeon X1400
-ATI Radeon X1500
-ATI Radeon X15xx
-ATI Radeon X1600
-ATI Radeon X16xx
-ATI Radeon X17xx
-ATI Radeon X1800
-ATI Radeon X18xx
-ATI Radeon X1900
-ATI Radeon X1900
-ATI Radeon X19xx
-ATI Radeon X1xxx
-ATI Radeon X1xxx
-ATI Radeon X1xxx
-ATI Radeon X1xxx
-ATI Radeon X2xxx
-ATI Radeon X2xxx
-ATI Radeon X300
-ATI Radeon X500
-ATI Radeon X500
-ATI Radeon X500
-ATI Radeon X600
-ATI Radeon X700
-ATI Radeon X800
-ATI Radeon Xpress
-ATI Radeon Xpress
-ATI Rage 128
-ATI Technologies
-ATI Technologies Inc.
-ATI Technologies Inc. (DNA-AMD GFX) AMD Radeon HD 6290 Graphics
-ATI Technologies Inc. (DNA-ATi 5.1.7.5x32) ATI Mobility Radeon HD 2
-ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730
-ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5870
-ATI Technologies Inc. 128MB ATI RADEON X600 SE
-ATI Technologies Inc. 128MB ATI RADEON X600 SE x86/SSE2
-ATI Technologies Inc. 128MB ATI Radeon X1300
-ATI Technologies Inc. 128MB ATI Radeon X1300 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2
-ATI Technologies Inc. 256MB ATI RADEON X600
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2
-ATI Technologies Inc. 3DP (ATI RADEON XPRESS 200M)
-ATI Technologies Inc. 3DP Edition v10.04 (Mobility Radeon X1600) x86/SSE2
-ATI Technologies Inc. 7900 MOD - AMD Radeon HD 7400M Series
-ATI Technologies Inc. 7900 MOD - AMD Radeon HD 7640G
-ATI Technologies Inc. ALL-IN-WONDER 9600 SERIES
-ATI Technologies Inc. AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics
-ATI Technologies Inc. AMD (ATI) FirePro M4000 (FireGL V) Mobility Pro Graphics
-ATI Technologies Inc. AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics
-ATI Technologies Inc. AMD (ATI) FirePro M6000 (FireGL V) Mobility Pro Graphics
-ATI Technologies Inc. AMD (ATI) FirePro M8900 (FireGL) Mobility Pro
-ATI Technologies Inc. AMD (ATI) FirePro M8900 (FireGL) Mobility Pro Graphics
-ATI Technologies Inc. AMD (ATI) FirePro M8900 (FireGL) Mobility Pro Graphics
-ATI Technologies Inc. AMD 760G
-ATI Technologies Inc. AMD 760G
-ATI Technologies Inc. AMD 760G (Microsoft Corporation WDDM 1.1)
-ATI Technologies Inc. AMD FirePro 2270
-ATI Technologies Inc. AMD FirePro 2460
-ATI Technologies Inc. AMD FirePro M2000
-ATI Technologies Inc. AMD FirePro M3900
-ATI Technologies Inc. AMD FirePro M4000
-ATI Technologies Inc. AMD FirePro M5950
-ATI Technologies Inc. AMD FirePro M5950 Mobility Professional Graphics
-ATI Technologies Inc. AMD FirePro M5950 Mobility Professional Graphics
-ATI Technologies Inc. AMD FirePro V3900
-ATI Technologies Inc. AMD FirePro V3900 (ATI FireGL)
-ATI Technologies Inc. AMD FirePro V4900
-ATI Technologies Inc. AMD FirePro V4900 (ATI FireGL)
-ATI Technologies Inc. AMD FirePro V4900 (FireGL V)
-ATI Technologies Inc. AMD FirePro V4900 (FireGL V) Graphics Adapter
-ATI Technologies Inc. AMD FirePro V5900
-ATI Technologies Inc. AMD FirePro V5900 (ATI FireGL)
-ATI Technologies Inc. AMD FirePro V5900 (FireGL V)
-ATI Technologies Inc. AMD FirePro V5900 (FireGL V) Graphics Adapter
-ATI Technologies Inc. AMD FirePro V7900
-ATI Technologies Inc. AMD FirePro V7900 (ATI FireGL)
-ATI Technologies Inc. AMD FirePro V7900 (FireGL V)
-ATI Technologies Inc. AMD FirePro V7900 (FireGL V) Graphics Adapter
-ATI Technologies Inc. AMD FirePro W5000 (FireGL V)
-ATI Technologies Inc. AMD FirePro W9000 (FireGL V)
-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 4200
-ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4225
-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 6350
-ATI Technologies Inc. AMD RADEON HD 6450
-ATI Technologies Inc. AMD RADEON HD 6450
-ATI Technologies Inc. AMD RADEON HD 6450A
-ATI Technologies Inc. AMD RADEON HD 6670
-ATI Technologies Inc. AMD RADEON HD 6670
-ATI Technologies Inc. AMD RADEON HD 7450
-ATI Technologies Inc. AMD RADEON HD6370D Graphics
-ATI Technologies Inc. AMD RADEON HD6370D Graphics
-ATI Technologies Inc. AMD RADEON HD6410D Graphics
-ATI Technologies Inc. AMD RADEON HD6410D Graphics
-ATI Technologies Inc. AMD RADEON HD6530D Graphics
-ATI Technologies Inc. AMD RADEON HD6550D Graphics
-ATI Technologies Inc. AMD Radeon
-ATI Technologies Inc. AMD Radeon
-ATI Technologies Inc. AMD Radeon (TM) HD 8500M/8700M
-ATI Technologies Inc. AMD Radeon (TM) HD 8500M/8700M
-ATI Technologies Inc. AMD Radeon 6600M and 6700M Series
-ATI Technologies Inc. AMD Radeon 6600M and 6700M Series
-ATI Technologies Inc. AMD Radeon 6600M and 6700M Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 5450
-ATI Technologies Inc. AMD Radeon HD 5500 Series
-ATI Technologies Inc. AMD Radeon HD 5500 Series
-ATI Technologies Inc. AMD Radeon HD 5500 Series (Microsoft Corporation - WDDM v1.20)
-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
-ATI Technologies Inc. AMD Radeon HD 6250 Graphics
-ATI Technologies Inc. AMD Radeon HD 6250 Graphics
-ATI Technologies Inc. AMD Radeon HD 6250M
-ATI Technologies Inc. AMD Radeon HD 6250M
-ATI Technologies Inc. AMD Radeon HD 6290
-ATI Technologies Inc. AMD Radeon HD 6290 Graphics
-ATI Technologies Inc. AMD Radeon HD 6290 Graphics
-ATI Technologies Inc. AMD Radeon HD 6290M
-ATI Technologies Inc. AMD Radeon HD 6290M
-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
-ATI Technologies Inc. AMD Radeon HD 6310
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Engineering Sample - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Microsoft Corporation - WDDM v1.3)
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics (Microsoft Corporation- WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6310M
-ATI Technologies Inc. AMD Radeon HD 6310M
-ATI Technologies Inc. AMD Radeon HD 6320
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics
-ATI Technologies Inc. AMD Radeon HD 6320 Graphic
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics
-ATI Technologies Inc. AMD Radeon HD 6320 Graphics (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6320 series Graphics
-ATI Technologies Inc. AMD Radeon HD 6320 series Graphics
-ATI Technologies Inc. AMD Radeon HD 6320M
-ATI Technologies Inc. AMD Radeon HD 6330M
-ATI Technologies Inc. AMD Radeon HD 6350
-ATI Technologies Inc. AMD Radeon HD 6350
-ATI Technologies Inc. AMD Radeon HD 6370D
-ATI Technologies Inc. AMD Radeon HD 6370M
-ATI Technologies Inc. AMD Radeon HD 6370M
-ATI Technologies Inc. AMD Radeon HD 6380G
-ATI Technologies Inc. AMD Radeon HD 6400 Series
-ATI Technologies Inc. AMD Radeon HD 6400M Series
-ATI Technologies Inc. AMD Radeon HD 6410D
-ATI Technologies Inc. AMD Radeon HD 6410D
-ATI Technologies Inc. AMD Radeon HD 6410D Graphics
-ATI Technologies Inc. AMD Radeon HD 6410D Graphics
-ATI Technologies Inc. AMD Radeon HD 6450
-ATI Technologies Inc. AMD Radeon HD 6450
-ATI Technologies Inc. AMD Radeon HD 6450 (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6450 Graphics
-ATI Technologies Inc. AMD Radeon HD 6450A
-ATI Technologies Inc. AMD Radeon HD 6450A Graphics
-ATI Technologies Inc. AMD Radeon HD 6450M
-ATI Technologies Inc. AMD Radeon HD 6450M
-ATI Technologies Inc. AMD Radeon HD 6470M
-ATI Technologies Inc. AMD Radeon HD 6470M
-ATI Technologies Inc. AMD Radeon HD 6470M/7400M Series
-ATI Technologies Inc. AMD Radeon HD 6480G
-ATI Technologies Inc. AMD Radeon HD 6480M
-ATI Technologies Inc. AMD Radeon HD 6490M
-ATI Technologies Inc. AMD Radeon HD 6500 Series
-ATI Technologies Inc. AMD Radeon HD 6500 Series
-ATI Technologies Inc. AMD Radeon HD 6500 series graphics
-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 6500M/5600/5700 Series
-ATI Technologies Inc. AMD Radeon HD 6510 Series
-ATI Technologies Inc. AMD Radeon HD 6510 Series
-ATI Technologies Inc. AMD Radeon HD 6520G
-ATI Technologies Inc. AMD Radeon HD 6520G
-ATI Technologies Inc. AMD Radeon HD 6530D
-ATI Technologies Inc. AMD Radeon HD 6530D
-ATI Technologies Inc. AMD Radeon HD 6530D Graphics
-ATI Technologies Inc. AMD Radeon HD 6530D Graphics
-ATI Technologies Inc. AMD Radeon HD 6530M
-ATI Technologies Inc. AMD Radeon HD 6550A
-ATI Technologies Inc. AMD Radeon HD 6550A
-ATI Technologies Inc. AMD Radeon HD 6550D
-ATI Technologies Inc. AMD Radeon HD 6550D
-ATI Technologies Inc. AMD Radeon HD 6550D Graphics
-ATI Technologies Inc. AMD Radeon HD 6550D Graphics
-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 6570 (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6570 (Microsoft Corporation - WDDM v1.20)
-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 6570M/5730
-ATI Technologies Inc. AMD Radeon HD 6600 Series
-ATI Technologies Inc. AMD Radeon HD 6600 Series
-ATI Technologies Inc. AMD Radeon HD 6600M Series
-ATI Technologies Inc. AMD Radeon HD 6610M Graphics
-ATI Technologies Inc. AMD Radeon HD 6620G
-ATI Technologies Inc. AMD Radeon HD 6620G
-ATI Technologies Inc. AMD Radeon HD 6625M Graphics
-ATI Technologies Inc. AMD Radeon HD 6630M
-ATI Technologies Inc. AMD Radeon HD 6630M
-ATI Technologies Inc. AMD Radeon HD 6650A Graphics
-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 6670 (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6670 (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6700 Series
-ATI Technologies Inc. AMD Radeon HD 6700 Series
-ATI Technologies Inc. AMD Radeon HD 6700 series
-ATI Technologies Inc. AMD Radeon HD 6700M Series
-ATI Technologies Inc. AMD Radeon HD 6700M Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6700M/7700M/7900M Series
-ATI Technologies Inc. AMD Radeon HD 6730M
-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 6770M
-ATI Technologies Inc. AMD Radeon HD 6770M
-ATI Technologies Inc. AMD Radeon HD 6770M OpenGL Engine
-ATI Technologies Inc. AMD Radeon HD 6800 Series
-ATI Technologies Inc. AMD Radeon HD 6800 Series
-ATI Technologies Inc. AMD Radeon HD 6800 Series
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Engineering Sample - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6800 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 6800M Series
-ATI Technologies Inc. AMD Radeon HD 6800M Series
-ATI Technologies Inc. AMD Radeon HD 6850
-ATI Technologies Inc. AMD Radeon HD 6850
-ATI Technologies Inc. AMD Radeon HD 6850 X2
-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 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 6900 Series
-ATI Technologies Inc. AMD Radeon HD 6900 Series
-ATI Technologies Inc. AMD Radeon HD 6900 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6900 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 6900M Series
-ATI Technologies Inc. AMD Radeon HD 6900M Series
-ATI Technologies Inc. AMD Radeon HD 6970
-ATI Technologies Inc. AMD Radeon HD 6970
-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 HD 6990M
-ATI Technologies Inc. AMD Radeon HD 6990M
-ATI Technologies Inc. AMD Radeon HD 6990M
-ATI Technologies Inc. AMD Radeon HD 7000 series
-ATI Technologies Inc. AMD Radeon HD 7000 series
-ATI Technologies Inc. AMD Radeon HD 7290 Graphics
-ATI Technologies Inc. AMD Radeon HD 7300 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 7300 Series Graphics
-ATI Technologies Inc. AMD Radeon HD 7300 Series Graphics
-ATI Technologies Inc. AMD Radeon HD 7310
-ATI Technologies Inc. AMD Radeon HD 7310
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics
-ATI Technologies Inc. AMD Radeon HD 7310 Graphics (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 7310G
-ATI Technologies Inc. AMD Radeon HD 7310M
-ATI Technologies Inc. AMD Radeon HD 7310M
-ATI Technologies Inc. AMD Radeon HD 7340
-ATI Technologies Inc. AMD Radeon HD 7340
-ATI Technologies Inc. AMD Radeon HD 7340 Graphics
-ATI Technologies Inc. AMD Radeon HD 7340 Graphics
-ATI Technologies Inc. AMD Radeon HD 7340G
-ATI Technologies Inc. AMD Radeon HD 7340G
-ATI Technologies Inc. AMD Radeon HD 7340M
-ATI Technologies Inc. AMD Radeon HD 7340M
-ATI Technologies Inc. AMD Radeon HD 7350
-ATI Technologies Inc. AMD Radeon HD 7350
-ATI Technologies Inc. AMD Radeon HD 7350 Graphics
-ATI Technologies Inc. AMD Radeon HD 7370M
-ATI Technologies Inc. AMD Radeon HD 7400 Series
-ATI Technologies Inc. AMD Radeon HD 7400 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 7400G
-ATI Technologies Inc. AMD Radeon HD 7400G
-ATI Technologies Inc. AMD Radeon HD 7400M Series
-ATI Technologies Inc. AMD Radeon HD 7400M Series
-ATI Technologies Inc. AMD Radeon HD 7400M Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7410M
-ATI Technologies Inc. AMD Radeon HD 7420G
-ATI Technologies Inc. AMD Radeon HD 7420G
-ATI Technologies Inc. AMD Radeon HD 7450
-ATI Technologies Inc. AMD Radeon HD 7450
-ATI Technologies Inc. AMD Radeon HD 7450
-ATI Technologies Inc. AMD Radeon HD 7450 Graphics
-ATI Technologies Inc. AMD Radeon HD 7450A Graphics
-ATI Technologies Inc. AMD Radeon HD 7450A Graphics
-ATI Technologies Inc. AMD Radeon HD 7450M
-ATI Technologies Inc. AMD Radeon HD 7470
-ATI Technologies Inc. AMD Radeon HD 7470
-ATI Technologies Inc. AMD Radeon HD 7470
-ATI Technologies Inc. AMD Radeon HD 7470 Series
-ATI Technologies Inc. AMD Radeon HD 7470 Series
-ATI Technologies Inc. AMD Radeon HD 7470M
-ATI Technologies Inc. AMD Radeon HD 7470M
-ATI Technologies Inc. AMD Radeon HD 7480D
-ATI Technologies Inc. AMD Radeon HD 7480D
-ATI Technologies Inc. AMD Radeon HD 7500 Series
-ATI Technologies Inc. AMD Radeon HD 7500 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. AMD Radeon HD 7500 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7500/7600 Series
-ATI Technologies Inc. AMD Radeon HD 7500G
-ATI Technologies Inc. AMD Radeon HD 7500G
-ATI Technologies Inc. AMD Radeon HD 7500G + 7500M/7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7500M/7600M Series
-ATI Technologies Inc. AMD Radeon HD 7510
-ATI Technologies Inc. AMD Radeon HD 7510
-ATI Technologies Inc. AMD Radeon HD 7520G
-ATI Technologies Inc. AMD Radeon HD 7520G
-ATI Technologies Inc. AMD Radeon HD 7520G + 6400M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7470M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7470M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7500/7600 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7610M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7670M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7520G + 7670M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7540D
-ATI Technologies Inc. AMD Radeon HD 7540D
-ATI Technologies Inc. AMD Radeon HD 7540D + 7450 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7550M
-ATI Technologies Inc. AMD Radeon HD 7550M
-ATI Technologies Inc. AMD Radeon HD 7550M/7650M Graphics
-ATI Technologies Inc. AMD Radeon HD 7550M/7650M Graphics
-ATI Technologies Inc. AMD Radeon HD 7560D
-ATI Technologies Inc. AMD Radeon HD 7560D
-ATI Technologies Inc. AMD Radeon HD 7560D (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7560D + 6570 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7560D + 6670 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7560D + 7560D Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7560D + 7600 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7560D + 7670 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7570
-ATI Technologies Inc. AMD Radeon HD 7570
-ATI Technologies Inc. AMD Radeon HD 7570 Graphics
-ATI Technologies Inc. AMD Radeon HD 7570 Series
-ATI Technologies Inc. AMD Radeon HD 7570M
-ATI Technologies Inc. AMD Radeon HD 7570M/HD 7670M Graphics
-ATI Technologies Inc. AMD Radeon HD 7580D
-ATI Technologies Inc. AMD Radeon HD 7600 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7600G
-ATI Technologies Inc. AMD Radeon HD 7600G + 7500M/7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7600G + 7550M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7600M + 7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7600M Series
-ATI Technologies Inc. AMD Radeon HD 7600M Series
-ATI Technologies Inc. AMD Radeon HD 7610M
-ATI Technologies Inc. AMD Radeon HD 7610M
-ATI Technologies Inc. AMD Radeon HD 7620G
-ATI Technologies Inc. AMD Radeon HD 7640G
-ATI Technologies Inc. AMD Radeon HD 7640G
-ATI Technologies Inc. AMD Radeon HD 7640G + 6400M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7450M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7470M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7470M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7500/7600 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7500M/7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7610M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7640G + 7670M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7650A
-ATI Technologies Inc. AMD Radeon HD 7650A Graphics
-ATI Technologies Inc. AMD Radeon HD 7650M
-ATI Technologies Inc. AMD Radeon HD 7650M
-ATI Technologies Inc. AMD Radeon HD 7650M Series
-ATI Technologies Inc. AMD Radeon HD 7660D
-ATI Technologies Inc. AMD Radeon HD 7660D
-ATI Technologies Inc. AMD Radeon HD 7660D + 6570 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660D + 6670 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660D + 7670 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660D + 7700 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G
-ATI Technologies Inc. AMD Radeon HD 7660G
-ATI Technologies Inc. AMD Radeon HD 7660G + 6400M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7400M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7470M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7500/7600 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7600M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7610M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7670M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7670M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7660G + 7700M Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 7670
-ATI Technologies Inc. AMD Radeon HD 7670
-ATI Technologies Inc. AMD Radeon HD 7670M
-ATI Technologies Inc. AMD Radeon HD 7670M
-ATI Technologies Inc. AMD Radeon HD 7690M
-ATI Technologies Inc. AMD Radeon HD 7700 Series
-ATI Technologies Inc. AMD Radeon HD 7700 Series
-ATI Technologies Inc. AMD Radeon HD 7700 Series
-ATI Technologies Inc. AMD Radeon HD 7700 Series (Microsoft Corporation - WDDM v1.3)
-ATI Technologies Inc. AMD Radeon HD 7700M Series
-ATI Technologies Inc. AMD Radeon HD 7730M
-ATI Technologies Inc. AMD Radeon HD 7770
-ATI Technologies Inc. AMD Radeon HD 7770
-ATI Technologies Inc. AMD Radeon HD 7770 GHz Edition
-ATI Technologies Inc. AMD Radeon HD 7800 Series
-ATI Technologies Inc. AMD Radeon HD 7800 Series
-ATI Technologies Inc. AMD Radeon HD 7800 Series
-ATI Technologies Inc. AMD Radeon HD 7800 Series
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Engineering Sample - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Microsoft Corporation - WDDM v1.3)
-ATI Technologies Inc. AMD Radeon HD 7800 Series (Microsoft Corporation - WDDM v1.3)
-ATI Technologies Inc. AMD Radeon HD 7800M Series
-ATI Technologies Inc. AMD Radeon HD 7800M Series
-ATI Technologies Inc. AMD Radeon HD 7870
-ATI Technologies Inc. AMD Radeon HD 7870
-ATI Technologies Inc. AMD Radeon HD 7870M
-ATI Technologies Inc. AMD Radeon HD 7870M
-ATI Technologies Inc. AMD Radeon HD 7900 Series
-ATI Technologies Inc. AMD Radeon HD 7900 Series
-ATI Technologies Inc. AMD Radeon HD 7900 Series
-ATI Technologies Inc. AMD Radeon HD 7900 Series
-ATI Technologies Inc. AMD Radeon HD 7900 Series (Microsoft Corporation - WDDM v1.3)
-ATI Technologies Inc. AMD Radeon HD 7950
-ATI Technologies Inc. AMD Radeon HD 7950
-ATI Technologies Inc. AMD Radeon HD 7950
-ATI Technologies Inc. AMD Radeon HD 7970
-ATI Technologies Inc. AMD Radeon HD 7970
-ATI Technologies Inc. AMD Radeon HD 7970M
-ATI Technologies Inc. AMD Radeon HD 7970M
-ATI Technologies Inc. AMD Radeon HD 7970M
-ATI Technologies Inc. AMD Radeon HD 8210
-ATI Technologies Inc. AMD Radeon HD 8240
-ATI Technologies Inc. AMD Radeon HD 8250
-ATI Technologies Inc. AMD Radeon HD 8280G
-ATI Technologies Inc. AMD Radeon HD 8330
-ATI Technologies Inc. AMD Radeon HD 8330
-ATI Technologies Inc. AMD Radeon HD 8350
-ATI Technologies Inc. AMD Radeon HD 8350
-ATI Technologies Inc. AMD Radeon HD 8350G
-ATI Technologies Inc. AMD Radeon HD 8400
-ATI Technologies Inc. AMD Radeon HD 8450
-ATI Technologies Inc. AMD Radeon HD 8450G
-ATI Technologies Inc. AMD Radeon HD 8470
-ATI Technologies Inc. AMD Radeon HD 8470
-ATI Technologies Inc. AMD Radeon HD 8470D
-ATI Technologies Inc. AMD Radeon HD 8550G
-ATI Technologies Inc. AMD Radeon HD 8550G
-ATI Technologies Inc. AMD Radeon HD 8570
-ATI Technologies Inc. AMD Radeon HD 8570
-ATI Technologies Inc. AMD Radeon HD 8570D
-ATI Technologies Inc. AMD Radeon HD 8570D
-ATI Technologies Inc. AMD Radeon HD 8610G
-ATI Technologies Inc. AMD Radeon HD 8650G
-ATI Technologies Inc. AMD Radeon HD 8650G
-ATI Technologies Inc. AMD Radeon HD 8670D
-ATI Technologies Inc. AMD Radeon HD 8670D
-ATI Technologies Inc. AMD Radeon HD 8670D
-ATI Technologies Inc. AMD Radeon HD 8670D + 6670 Dual Graphics
-ATI Technologies Inc. AMD Radeon HD 8700M Series
-ATI Technologies Inc. AMD Radeon HD 8700M Series
-ATI Technologies Inc. AMD Radeon HD 8730M
-ATI Technologies Inc. AMD Radeon HD 8730M
-ATI Technologies Inc. AMD Radeon HD 8730M
-ATI Technologies Inc. AMD Radeon HD 8750M
-ATI Technologies Inc. AMD Radeon HD 8760
-ATI Technologies Inc. AMD Radeon HD 8760
-ATI Technologies Inc. AMD Radeon HD 8760
-ATI Technologies Inc. AMD Radeon HD 8800M Series
-ATI Technologies Inc. AMD Radeon HD 8800M Series
-ATI Technologies Inc. AMD Radeon HD 8900 Series (OEM)
-ATI Technologies Inc. AMD Radeon HD 8950
-ATI Technologies Inc. AMD Radeon HD 8950
-ATI Technologies Inc. AMD Radeon HD HD7850M
-ATI Technologies Inc. AMD Radeon HD HD7850M
-ATI Technologies Inc. AMD Radeon HD6370D Graphics
-ATI Technologies Inc. AMD Radeon HD6370D Graphics
-ATI Technologies Inc. AMD Radeon HD7610M
-ATI Technologies Inc. AMD Radeon HD7610M
-ATI Technologies Inc. AMD Radeon HD7700 Series
-ATI Technologies Inc. AMD Radeon HD7700 Series
-ATI Technologies Inc. AMD Radeon HD7700 Series
-ATI Technologies Inc. AMD Radeon HD7770
-ATI Technologies Inc. AMD Radeon HD7770
-ATI Technologies Inc. AMD Radeon HD7770 GHz Edition
-ATI Technologies Inc. AMD Radeon HD7770 GHz Edition
-ATI Technologies Inc. AMD Radeon HD8350
-ATI Technologies Inc. AMD Radeon(TM) HD 6380G
-ATI Technologies Inc. AMD Radeon(TM) HD 6380G
-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 6480G
-ATI Technologies Inc. AMD Radeon(TM) HD 6480G (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. AMD Radeon(TM) HD 6520G
-ATI Technologies Inc. AMD Radeon(TM) HD 6520G
-ATI Technologies Inc. AMD Radeon(TM) HD 6620G
-ATI Technologies Inc. AMD Radeon(TM) HD 6620G
-ATI Technologies Inc. AMD Radeon(TM) HD 6630M
-ATI Technologies Inc. AMD Radeon(TM) HD 6650M
-ATI Technologies Inc. AMD Radeon(TM) HD 7450
-ATI Technologies Inc. AMD Radeon(TM) HD 7450A Graphics
-ATI Technologies Inc. AMD Radeon(TM) HD 7650A Graphics
-ATI Technologies Inc. AMD Radeon(TM) HD 7670A Graphics
-ATI Technologies Inc. AMD Radeon(TM) HD 7670M
-ATI Technologies Inc. AMD Radeon(TM) HD 8350
-ATI Technologies Inc. AMD Radeon(TM) HD8490
-ATI Technologies Inc. AMD Radeon. HD 7350
-ATI Technologies Inc. AMD Radeon. HD 7670M
-ATI Technologies Inc. AMD Radeon. HD 7730M
-ATI Technologies Inc. AMD Radeon. HD 7730M
-ATI Technologies Inc. ASUS AH3450 Series
-ATI Technologies Inc. ASUS AH3450 Series
-ATI Technologies Inc. ASUS AH3650 Series
-ATI Technologies Inc. ASUS AH4650 Series
-ATI Technologies Inc. ASUS ARES
-ATI Technologies Inc. ASUS ARES2
-ATI Technologies Inc. ASUS EAH2400 Series
-ATI Technologies Inc. ASUS EAH2600 Series
-ATI Technologies Inc. ASUS EAH3450 Series
-ATI Technologies Inc. ASUS EAH3650 Series
-ATI Technologies Inc. ASUS EAH3850 Series
-ATI Technologies Inc. ASUS EAH3870 Series
-ATI Technologies Inc. ASUS EAH4350 series
-ATI Technologies Inc. ASUS EAH4350 series
-ATI Technologies Inc. ASUS EAH4550 series
-ATI Technologies Inc. ASUS EAH4650 series
-ATI Technologies Inc. ASUS EAH4670 series
-ATI Technologies Inc. ASUS EAH4770 Series
-ATI Technologies Inc. ASUS EAH4770 series
-ATI Technologies Inc. ASUS EAH4850 series
-ATI Technologies Inc. ASUS EAH4870 series
-ATI Technologies Inc. ASUS EAH4870x2
-ATI Technologies Inc. ASUS EAH4890
-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 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 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 EAH6450 Series
-ATI Technologies Inc. ASUS EAH6450 Series
-ATI Technologies Inc. ASUS EAH6570 Series
-ATI Technologies Inc. ASUS EAH6570 Series
-ATI Technologies Inc. ASUS EAH6670 Series
-ATI Technologies Inc. ASUS EAH6670 Series
-ATI Technologies Inc. ASUS EAH6750 Series
-ATI Technologies Inc. ASUS EAH6750 Series
-ATI Technologies Inc. ASUS EAH6770 Series
-ATI Technologies Inc. ASUS EAH6770 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 Extreme AX300 Series
-ATI Technologies Inc. ASUS Extreme AX300SE/T
-ATI Technologies Inc. ASUS Extreme AX550 Series
-ATI Technologies Inc. ASUS Extreme AX550 Series x86/SSE2
-ATI Technologies Inc. ASUS Extreme AX600 Series
-ATI Technologies Inc. ASUS HD 7350
-ATI Technologies Inc. ASUS HD7470 Series
-ATI Technologies Inc. ASUS HD7670 Series
-ATI Technologies Inc. ASUS HD7670 Series
-ATI Technologies Inc. ASUS HD7750 Series
-ATI Technologies Inc. ASUS HD7750 Series
-ATI Technologies Inc. ASUS HD7770 Series
-ATI Technologies Inc. ASUS HD7770 Series
-ATI Technologies Inc. ASUS HD7790 Series
-ATI Technologies Inc. ASUS HD7850 Series
-ATI Technologies Inc. ASUS HD7850 Series
-ATI Technologies Inc. ASUS HD7850 Series
-ATI Technologies Inc. ASUS HD7870 Series
-ATI Technologies Inc. ASUS HD7870 Series
-ATI Technologies Inc. ASUS HD7870 Series
-ATI Technologies Inc. ASUS HD7870 Series
-ATI Technologies Inc. ASUS HD7950 Series
-ATI Technologies Inc. ASUS HD7950 Series
-ATI Technologies Inc. ASUS HD7950 Series
-ATI Technologies Inc. ASUS HD7970 Series
-ATI Technologies Inc. ASUS HD7970 Series
-ATI Technologies Inc. ASUS HD7970 Series
-ATI Technologies Inc. ASUS X1300 Series
-ATI Technologies Inc. ASUS X1300 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ASUS X1300 Series x86/SSE2
-ATI Technologies Inc. ASUS X1300 x86/SSE2
-ATI Technologies Inc. ASUS X1550 Series
-ATI Technologies Inc. ASUS X1550 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ASUS X1550 Series x86/SSE2
-ATI Technologies Inc. ASUS X1600 Series
-ATI Technologies Inc. ASUS X1600 Series x86
-ATI Technologies Inc. ASUS X1600 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ASUS X1600 Series x86/SSE2
-ATI Technologies Inc. ASUS X1650 Series
-ATI Technologies Inc. ASUS X1650 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ASUS X1650 Series x86/SSE2
-ATI Technologies Inc. ASUS X1950 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon HD 5000 Series
-ATI Technologies Inc. ATI Radeon HD 6350
-ATI Technologies Inc. ATI All-in-Wonder HD
-ATI Technologies Inc. ATI Display Adapter
-ATI Technologies Inc. ATI FireGL V3100
-ATI Technologies Inc. ATI FireGL V3200 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI FireGL V3300
-ATI Technologies Inc. ATI FireGL V3350
-ATI Technologies Inc. ATI FireGL V3350 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI FireGL V3400 (Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI FireGL V3400 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI FireGL V3600
-ATI Technologies Inc. ATI FireGL V5200 (Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI FireGL V5200 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI FireGL V5600
-ATI Technologies Inc. ATI FireGL V7200
-ATI Technologies Inc. ATI FireGL V7200 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI FireGL V7600
-ATI Technologies Inc. ATI FireGL V7700
-ATI Technologies Inc. ATI FireMV 2250
-ATI Technologies Inc. ATI FireMV 2250 x86/SSE2
-ATI Technologies Inc. ATI FirePro 2260
-ATI Technologies Inc. ATI FirePro 2260
-ATI Technologies Inc. ATI FirePro 2450
-ATI Technologies Inc. ATI FirePro 3800 (FireGL) Graphics Adapter
-ATI Technologies Inc. ATI FirePro M5800
-ATI Technologies Inc. ATI FirePro M7740
-ATI Technologies Inc. ATI FirePro M7820
-ATI Technologies Inc. ATI FirePro M7820
-ATI Technologies Inc. ATI FirePro M7820 (FireGL)
-ATI Technologies Inc. ATI FirePro V3700 (FireGL)
-ATI Technologies Inc. ATI FirePro V3800
-ATI Technologies Inc. ATI FirePro V3800 (FireGL V)
-ATI Technologies Inc. ATI FirePro V3800 (FireGL V) Graphics Adapter
-ATI Technologies Inc. ATI FirePro V3800 (FireGL)
-ATI Technologies Inc. ATI FirePro V4800
-ATI Technologies Inc. ATI FirePro V4800 (FireGL V)
-ATI Technologies Inc. ATI FirePro V4800 (FireGL)
-ATI Technologies Inc. ATI FirePro V5700 (FireGL)
-ATI Technologies Inc. ATI FirePro V5800 (FireGL V)
-ATI Technologies Inc. ATI FirePro V5800 (FireGL)
-ATI Technologies Inc. ATI FirePro V7800 (FireGL V)
-ATI Technologies Inc. ATI FirePro V7800 (FireGL)
-ATI Technologies Inc. ATI FirePro V8700 (FireGL)
-ATI Technologies Inc. ATI FirePro V9800 (FireGL V)
-ATI Technologies Inc. ATI MOBILITY FIRE GL T2/T2e
-ATI Technologies Inc. ATI MOBILITY FireGL V3200
-ATI Technologies Inc. ATI MOBILITY FireGL V5000 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI MOBILITY FireGL V5200
-ATI Technologies Inc. ATI MOBILITY FireGL V5200 Pentium 4 (SSE2)
-ATI Technologies Inc. ATI MOBILITY FireGL V5250
-ATI Technologies Inc. ATI MOBILITY RADEON 9600 Series
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series
-ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series (Omega 3
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2300
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2400
-ATI Technologies Inc. ATI MOBILITY RADEON HD 2600
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3430
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3450
-ATI Technologies Inc. ATI MOBILITY RADEON HD 3650
-ATI Technologies Inc. ATI MOBILITY RADEON HD 4530 / 4570
-ATI Technologies Inc. ATI MOBILITY RADEON X1300
-ATI Technologies Inc. ATI MOBILITY RADEON X1350
-ATI Technologies Inc. ATI MOBILITY RADEON X1400
-ATI Technologies Inc. ATI MOBILITY RADEON X1600
-ATI Technologies Inc. ATI MOBILITY RADEON X1700
-ATI Technologies Inc. ATI MOBILITY RADEON X1800
-ATI Technologies Inc. ATI MOBILITY RADEON X1900
-ATI Technologies Inc. ATI MOBILITY RADEON X2300
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI MOBILITY RADEON X300
-ATI Technologies Inc. ATI MOBILITY RADEON X300 x86/SSE2
-ATI Technologies Inc. ATI MOBILITY RADEON X600
-ATI Technologies Inc. ATI MOBILITY RADEON X600 SE
-ATI Technologies Inc. ATI MOBILITY RADEON X700
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI MOBILITY Radeon HD 4650
-ATI Technologies Inc. ATI Mobility FireGL V5700
-ATI Technologies Inc. ATI Mobility FireGL V5725
-ATI Technologies Inc. ATI Mobility FireGL V5725
-ATI Technologies Inc. ATI Mobility Radeon 4100
-ATI Technologies Inc. ATI Mobility Radeon Graphics
-ATI Technologies Inc. ATI Mobility Radeon HD 2300
-ATI Technologies Inc. ATI Mobility Radeon HD 2300 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI Mobility Radeon HD 2400
-ATI Technologies Inc. ATI Mobility Radeon HD 2400 (Omega 3.8.442)
-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 2600 XT (Microsoft Corporation WDDM 1.1)
-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 3400 Series (Microsoft Corporation WDDM 1.1)
-ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series (Microsoft Corporation- WDDM v1.1)
-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 3430 (Microsoft Corporation- WDDM v1.1)
-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 3470 Series
-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 3850
-ATI Technologies Inc. ATI Mobility Radeon HD 3870
-ATI Technologies Inc. ATI Mobility Radeon HD 3870 X2
-ATI Technologies Inc. ATI Mobility Radeon HD 4200
-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 4200 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Mobility Radeon HD 4225
-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 4270 Series
-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 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 4500 Series
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series (Microsoft Corporation WDDM 1.1)
-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 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 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 4650
-ATI Technologies Inc. ATI Mobility Radeon HD 4650
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Mobility Radeon HD 4650 (Microsoft Corporation- WDDM v1.1)
-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 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Mobility Radeon HD 4830
-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 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 5000 Series
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Engineering Sample - WDDM v1.20)
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. ATI Mobility Radeon HD 5100
-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
-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 5450
-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 5570
-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 565v
-ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
-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 5800 Series (Microsoft Corporation - WDDM v1.20)
-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 6370
-ATI Technologies Inc. ATI Mobility Radeon HD 6370
-ATI Technologies Inc. ATI Mobility Radeon HD 6550
-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 (Omega 3.8.252) x86/SSE2
-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 X1350
-ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1400
-ATI Technologies Inc. ATI Mobility Radeon X1400 (Omega 3.8.442)
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1450 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1600
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1700
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1800 x86/SSE2
-ATI Technologies Inc. ATI Mobility Radeon X1900
-ATI Technologies Inc. ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2300
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!
-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 X2500
-ATI Technologies Inc. ATI Mobility Radeon. HD 530v
-ATI Technologies Inc. ATI Mobility Radeon. HD 5470
-ATI Technologies Inc. ATI RADEON 9600 Series
-ATI Technologies Inc. ATI RADEON 9600/X1050 Series
-ATI Technologies Inc. ATI RADEON E4690
-ATI Technologies Inc. ATI RADEON HD 3200 Graphics
-ATI Technologies Inc. ATI RADEON XPRESS 1100
-ATI Technologies Inc. ATI RADEON XPRESS 1100 Series
-ATI Technologies Inc. ATI RADEON XPRESS 1100 Series
-ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2
-ATI Technologies Inc. ATI RADEON XPRESS 1200 Series
-ATI Technologies Inc. ATI RADEON XPRESS 200
-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 200 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series (Microsoft Corporation)
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series (Omega 3.8.421) x86/SSE2
-ATI Technologies Inc. ATI RADEON XPRESS 200M Series x86/SSE2
-ATI Technologies Inc. ATI Radeon 2100
-ATI Technologies Inc. ATI Radeon 2100 (Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI Radeon 2100 (Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI Radeon 2100 Graphics
-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 3000 Graphics
-ATI Technologies Inc. ATI Radeon 3000 Graphics (Engineering Sample - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon 3000 Series Graphics
-ATI Technologies Inc. ATI Radeon 3100 Graphics
-ATI Technologies Inc. ATI Radeon 3100 Graphics
-ATI Technologies Inc. ATI Radeon 3100 Graphics (Microsoft Corporation WDDM 1.1)
-ATI Technologies Inc. ATI Radeon 3100 Series Graphics
-ATI Technologies Inc. ATI Radeon 9550 / X1050
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series x86/SSE2
-ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series
-ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Barts PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Barts PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Barts PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Barts XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Barts XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Caicos PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Caicos Unknown Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Graphics Processor
-ATI Technologies Inc. ATI Radeon HD 2350
-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 PCI
-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 Series
-ATI Technologies Inc. ATI Radeon HD 2400 Series AGP
-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 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 AGP
-ATI Technologies Inc. ATI Radeon HD 2600 Series
-ATI Technologies Inc. ATI Radeon HD 2600 Series AGP
-ATI Technologies Inc. ATI Radeon HD 2600 XT
-ATI Technologies Inc. ATI Radeon HD 2600/3600 Series
-ATI Technologies Inc. ATI Radeon HD 2900 GT
-ATI Technologies Inc. ATI Radeon HD 2900 PRO
-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 3200 Graphics (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics (Microsoft Corporation WDDM 1.1)
-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 AGP
-ATI Technologies Inc. ATI Radeon HD 3470
-ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex
-ATI Technologies Inc. ATI Radeon HD 3600 Series
-ATI Technologies Inc. ATI Radeon HD 3600 Series
-ATI Technologies Inc. ATI Radeon HD 3600 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 3600 Series (Microsoft Corporation WDDM 1.1)
-ATI Technologies Inc. ATI Radeon HD 3650
-ATI Technologies Inc. ATI Radeon HD 3650 AGP
-ATI Technologies Inc. ATI Radeon HD 3800 Series
-ATI Technologies Inc. ATI Radeon HD 3850
-ATI Technologies Inc. ATI Radeon HD 3850 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 3850 AGP
-ATI Technologies Inc. ATI Radeon HD 3870
-ATI Technologies Inc. ATI Radeon HD 3870 (Engineering Sample - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 3870 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 3870 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 3870 OpenGL Engine
-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 4200 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4250
-ATI Technologies Inc. ATI Radeon HD 4250
-ATI Technologies Inc. ATI Radeon HD 4250 (Engineering Sample - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4250 (Microsoft Corporation - WDDM v1.1)
-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 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 4300/4500 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4300/4500 Series (Microsoft Corporation- WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4350
-ATI Technologies Inc. ATI Radeon HD 4350
-ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft Corporation WDDM 1.1)
-ATI Technologies Inc. ATI Radeon HD 4450
-ATI Technologies Inc. ATI Radeon HD 4500 Series
-ATI Technologies Inc. ATI Radeon HD 4520
-ATI Technologies Inc. ATI Radeon HD 4550
-ATI Technologies Inc. ATI Radeon HD 4550
-ATI Technologies Inc. ATI Radeon HD 4550 (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4570
-ATI Technologies Inc. ATI Radeon HD 4580
-ATI Technologies Inc. ATI Radeon HD 4590
-ATI Technologies Inc. ATI Radeon HD 4600 Series
-ATI Technologies Inc. ATI Radeon HD 4600 Series
-ATI Technologies Inc. ATI Radeon HD 4600 Series (Engineering Sample - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4600 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4600-serie (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4650
-ATI Technologies Inc. ATI Radeon HD 4650
-ATI Technologies Inc. ATI Radeon HD 4650 (Microsoft Corporation WDDM 1.1)
-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 4670 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 4700
-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 4730
-ATI Technologies Inc. ATI Radeon HD 4730 Series
-ATI Technologies Inc. ATI Radeon HD 4770
-ATI Technologies Inc. ATI Radeon HD 4770
-ATI Technologies Inc. ATI Radeon HD 4800
-ATI Technologies Inc. ATI Radeon HD 4800 Series
-ATI Technologies Inc. ATI Radeon HD 4800 Series
-ATI Technologies Inc. ATI Radeon HD 4800 Series (Microsoft Corporation - WDDM v1.1)
-ATI Technologies Inc. ATI Radeon HD 4810 series
-ATI Technologies Inc. ATI Radeon HD 4830
-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 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 4850 PRO OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 4850 Series
-ATI Technologies Inc. ATI Radeon HD 4850 X2
-ATI Technologies Inc. ATI Radeon HD 4870
-ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 4870 Series
-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 5450
-ATI Technologies Inc. ATI Radeon HD 5450 (Microsoft Corporation - WDDM v1.20)
-ATI Technologies Inc. ATI Radeon HD 5470
-ATI Technologies Inc. ATI Radeon HD 5500
-ATI Technologies Inc. ATI Radeon HD 5500 Series
-ATI Technologies Inc. ATI Radeon HD 5500 Series
-ATI Technologies Inc. ATI Radeon HD 5530
-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 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 5700 Series (Microsoft Corporation - WDDM v1.2)
-ATI Technologies Inc. ATI Radeon HD 5700 Series (Microsoft Corporation - WDDM v1.20)
-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 5750 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 5750 Series
-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 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 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 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 6290
-ATI Technologies Inc. ATI Radeon HD 6350
-ATI Technologies Inc. ATI Radeon HD 6390
-ATI Technologies Inc. ATI Radeon HD 6490
-ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
-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 6630M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
-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 6770M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 7350
-ATI Technologies Inc. ATI Radeon HD 7350
-ATI Technologies Inc. ATI Radeon HD 7950 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 7950 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD 7950 OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD Pitcairn XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD Tahiti XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD Tahiti XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon HD Verde XT Prototype 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 HD4650
-ATI Technologies Inc. ATI Radeon HD4670
-ATI Technologies Inc. ATI Radeon HD4670
-ATI Technologies Inc. ATI Radeon RV730 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 RV790 Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Turks PRO Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Turks XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon Turks XT Prototype OpenGL Engine
-ATI Technologies Inc. ATI Radeon X1050
-ATI Technologies Inc. ATI Radeon X1050 Series
-ATI Technologies Inc. ATI Radeon X1050 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1050 x86/SSE2
-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 (Microsoft Corporation - WDDM)
-ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1200 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1250
-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 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1300 / X1550 Series
-ATI Technologies Inc. ATI Radeon X1300/X1550 Series
-ATI Technologies Inc. ATI Radeon X1550
-ATI Technologies Inc. ATI Radeon X1550 Series
-ATI Technologies Inc. ATI Radeon X1550 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1550 Series x86/SSE2
-ATI Technologies Inc. ATI Radeon X1550 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1550 x86/SSE2
-ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
-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 X1950 GT
-ATI Technologies Inc. ATI Radeon X1950 GT x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon X1950 GT x86/SSE2
-ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
-ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
-ATI Technologies Inc. ATI Radeon X600/X550/X1050 Series
-ATI Technologies Inc. ATI Radeon Xpress 1100
-ATI Technologies Inc. ATI Radeon Xpress 1100 x86/SSE2
-ATI Technologies Inc. ATI Radeon Xpress 1150
-ATI Technologies Inc. ATI Radeon Xpress 1150 Series
-ATI Technologies Inc. ATI Radeon Xpress 1150 Series
-ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon Xpress 1200 Series
-ATI Technologies Inc. ATI Radeon Xpress 1200 Series (Microsoft Corporation - WDDM)
-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 1200 x86/MMX/3DNow!/SSE2
-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 1270 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ATI Radeon Xpress Series
-ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. All-in-Wonder 2006 PCI-E Edition
-ATI Technologies Inc. All-in-Wonder 2006 PCI-E Edition x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Diamond Radeon X1550
-ATI Technologies Inc. Diamond Radeon X1550 Series
-ATI Technologies Inc. Diamond Radeon X1550 Series x86/SSE2
-ATI Technologies Inc. Diamond Radeon X1550 x86/SSE2
-ATI Technologies Inc. Diamond X1600 PRO 512MB PCI-E x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2)
-ATI Technologies Inc. FireGL V3200 Pentium 4 (SSE2)
-ATI Technologies Inc. FireGL X1-128
-ATI Technologies Inc. FireMV 2400 PCI DDR x86
-ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
-ATI Technologies Inc. FirePro M3900 Mobility Professional Graphics
-ATI Technologies Inc. GIGABYTE RADEON 9600 PRO
-ATI Technologies Inc. GIGABYTE Radeon X1300 Pro
-ATI Technologies Inc. GIGABYTE Radeon X1300 Series
-ATI Technologies Inc. GIGABYTE Radeon X1600 PRO
-ATI Technologies Inc. GeCube RADEON 9600XT
-ATI Technologies Inc. GeCube RADEON X550 x86/SSE2
-ATI Technologies Inc. GeCube RADEON X700 Series
-ATI Technologies Inc. GeCube Radeon X1550
-ATI Technologies Inc. GeCube Radeon X1550 Series
-ATI Technologies Inc. GeCube Radeon X1550 Series
-ATI Technologies Inc. GeForce 9600 GT x86/SSE2
-ATI Technologies Inc. GigaByte Radeon X1050
-ATI Technologies Inc. Gigabyte RADEON X300
-ATI Technologies Inc. Gigabyte RADEON X300
-ATI Technologies Inc. Gigabyte RADEON X300 SE
-ATI Technologies Inc. Gigabyte RADEON X300 x86/SSE2
-ATI Technologies Inc. HD3730
-ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series
-ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series x86/SSE2
-ATI Technologies Inc. HIGHTECH RADEON 9600XT
-ATI Technologies Inc. HIS Radeon X1550 x86/SSE2
-ATI Technologies Inc. M52 x86
-ATI Technologies Inc. M72-M
-ATI Technologies Inc. MEDION RADEON 9600 TX
-ATI Technologies Inc. MEDION RADEON X740XL x86/SSE2
-ATI Technologies Inc. MOBILITY FIREGL T2 Pentium 4 (SSE2)
-ATI Technologies Inc. MOBILITY RADEON 7000 IGP DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9000/9100 IGP Series DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9000/9100 PRO IGP Series DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9200 DDR x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9600 x86
-ATI Technologies Inc. MOBILITY RADEON 9600 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9700 x86
-ATI Technologies Inc. MOBILITY RADEON 9700 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON 9800 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X300 x86
-ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X600 SE x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X600 x86
-ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X700 SE x86/SSE2
-ATI Technologies Inc. MOBILITY RADEON X700 x86/MMX/3DNow!/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. MOBILITY/RADEON 9000 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. MOBILITY/RADEON 9000 DDR x86/SSE2
-ATI Technologies Inc. MOBILITY/RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. MOBILITY/RADEON 9250/9200 Series DDR x86/SSE2
-ATI Technologies Inc. MSI RX9550SE x86/MMX/3DNow!/SSE
-ATI Technologies Inc. MSI Radeon X1550
-ATI Technologies Inc. Mobility Radeon X2300 HD
-ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
-ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 7000 DDR x86/SSE2
-ATI Technologies Inc. RADEON 7000 SDR x86
-ATI Technologies Inc. RADEON 7000 SW TCL x86/SSE2
-ATI Technologies Inc. RADEON 7200 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 7200 DDR x86/SSE2
-ATI Technologies Inc. RADEON 7200 SDR x86/SSE2
-ATI Technologies Inc. RADEON 7500 DDR x86/SSE2
-ATI Technologies Inc. RADEON 8500 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 8500 DDR x86/SSE2
-ATI Technologies Inc. RADEON 9000 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9000 DDR x86/SSE2
-ATI Technologies Inc. RADEON 9000 PRO DDR x86/SSE2
-ATI Technologies Inc. RADEON 9000 XT IGPRADEON 9100 XT IGP DDR x86/SSE2
-ATI Technologies Inc. RADEON 9100 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9100 DDR x86/SSE2
-ATI Technologies Inc. RADEON 9100 IGP DDR x86
-ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2
-ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9200 DDR x86/SSE2
-ATI Technologies Inc. RADEON 9200 LE DDR x86/SSE2
-ATI Technologies Inc. RADEON 9200 PRO DDR x86/SSE2
-ATI Technologies Inc. RADEON 9200 Series DDR x86
-ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!
-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/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 9200SE DDR x86/SSE2
-ATI Technologies Inc. RADEON 9250/9000 Series DDR x86/MMX/3DNow!/SSE2
-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 9500
-ATI Technologies Inc. RADEON 9500 PRO / 9700
-ATI Technologies Inc. RADEON 9550
-ATI Technologies Inc. RADEON 9550 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9550 x86/SSE2
-ATI Technologies Inc. RADEON 9600 SERIES
-ATI Technologies Inc. RADEON 9600 TX
-ATI Technologies Inc. RADEON 9600 TX x86/SSE2
-ATI Technologies Inc. RADEON 9600 XT x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9600 XT x86/SSE2
-ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9600 x86/SSE2
-ATI Technologies Inc. RADEON 9600SE x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON 9600SE x86/SSE2
-ATI Technologies Inc. RADEON 9700 PRO
-ATI Technologies Inc. RADEON 9800 PRO
-ATI Technologies Inc. RADEON 9800 PRO (Microsoft Corporation - WDDM)
-ATI Technologies Inc. RADEON 9800 PRO - Secondary
-ATI Technologies Inc. RADEON 9800 Pro x86/SSE2
-ATI Technologies Inc. RADEON 9800 SERIES
-ATI Technologies Inc. RADEON 9800 XT
-ATI Technologies Inc. RADEON 9800 XT x86/SSE2
-ATI Technologies Inc. RADEON 9800 x86/SSE2
-ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
-ATI Technologies Inc. RADEON Radeon X300/X550/X1050 Series x86/SSE2
-ATI Technologies Inc. RADEON X1600 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X1600 Series x86/SSE2
-ATI Technologies Inc. RADEON X300 SE 128MB HyperMemory x86/SSE2
-ATI Technologies Inc. RADEON X300 SE x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X300 Series
-ATI Technologies Inc. RADEON X300 Series x86/SSE2
-ATI Technologies Inc. RADEON X300 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X300 x86/SSE2
-ATI Technologies Inc. RADEON X300/X550 Series x86
-ATI Technologies Inc. RADEON X300/X550 Series x86/MMX/3DNow!/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!
-ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X550 x86/SSE2
-ATI Technologies Inc. RADEON X550XT
-ATI Technologies Inc. RADEON X600 256MB HyperMemory x86/SSE2
-ATI Technologies Inc. RADEON X600 PRO x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X600 PRO x86/SSE2
-ATI Technologies Inc. RADEON X600 SE x86/SSE2
-ATI Technologies Inc. RADEON X600 Series
-ATI Technologies Inc. RADEON X600 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X600 x86/SSE2
-ATI Technologies Inc. RADEON X600/X550 Series
-ATI Technologies Inc. RADEON X600/X550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. RADEON X600/X550 Series Secondary
-ATI Technologies Inc. RADEON X600/X550 Series x86/SSE2
-ATI Technologies Inc. RADEON X700 PRO x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X700 PRO x86/SSE2
-ATI Technologies Inc. RADEON X700 SE
-ATI Technologies Inc. RADEON X700 SE x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X700 SE x86/SSE2
-ATI Technologies Inc. RADEON X700 Series
-ATI Technologies Inc. RADEON X700 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X700 Series x86/SSE2
-ATI Technologies Inc. RADEON X700 x86/SSE2
-ATI Technologies Inc. RADEON X700/X550 Series x86/SSE2
-ATI Technologies Inc. RADEON X800 GT x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X800 GTO
-ATI Technologies Inc. RADEON X800 GTO x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X800 GTO x86/SSE2
-ATI Technologies Inc. RADEON X800 PRO/GTO
-ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X800 SE x86/SSE2
-ATI Technologies Inc. RADEON X800 Series
-ATI Technologies Inc. RADEON X800 Series
-ATI Technologies Inc. RADEON X800 XL x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON X800 XL x86/SSE2
-ATI Technologies Inc. RADEON X800 XT
-ATI Technologies Inc. RADEON X800 XT (Microsoft Corporation - WDDM)
-ATI Technologies Inc. RADEON X800 XT x86/SSE2
-ATI Technologies Inc. RADEON X800/X850 Series
-ATI Technologies Inc. RADEON X800GT
-ATI Technologies Inc. RADEON X850 Series
-ATI Technologies Inc. RADEON X850 XT Platinum Edition (Microsoft Corporation - WDDM)
-ATI Technologies Inc. RADEON X850 XT Platinum Edition x86/SSE2
-ATI Technologies Inc. RADEON X850 XT x86/SSE2
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86
-ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!
-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 x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2
-ATI Technologies Inc. RADEON XPRESS 200M Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86
-ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!
-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!
-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/SSE2
-ATI Technologies Inc. RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. RADEON Xpress 200G Series SW TCL x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. ROBSON CE
-ATI Technologies Inc. ROBSON LE
-ATI Technologies Inc. RS780M
-ATI Technologies Inc. RS880
-ATI Technologies Inc. RS880
-ATI Technologies Inc. RV250 DDR x86/SSE2
-ATI Technologies Inc. Radeon X1300XT/X1600 Pro Series
-ATI Technologies Inc. Radeon X1300XT/X1600Pro/X1650 Series
-ATI Technologies Inc. Radeon X1300XT/X1600Pro/X1650 Series
-ATI Technologies Inc. Radeon (TM) HD 7670M
-ATI Technologies Inc. Radeon (TM) HD 7670M
-ATI Technologies Inc. Radeon (TM) HD 6370M
-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 6490M
-ATI Technologies Inc. Radeon (TM) HD 6630M
-ATI Technologies Inc. Radeon (TM) HD 6750M
-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 6770M
-ATI Technologies Inc. Radeon (TM) HD 6850M
-ATI Technologies Inc. Radeon (TM) HD 6850M
-ATI Technologies Inc. Radeon (TM) HD 7450M
-ATI Technologies Inc. Radeon (TM) HD 7470M
-ATI Technologies Inc. Radeon (TM) HD 7670M
-ATI Technologies Inc. Radeon (TM) HD 7670M
-ATI Technologies Inc. Radeon (TM) HD 7670M
-ATI Technologies Inc. Radeon (TM) HD 7690M XT
-ATI Technologies Inc. Radeon (TM) HD 7690M XT
-ATI Technologies Inc. Radeon (TM) HD 7690M XT
-ATI Technologies Inc. Radeon (TM) HD 7750M
-ATI Technologies Inc. Radeon (TM) HD 7750M
-ATI Technologies Inc. Radeon (TM) HD 7850M
-ATI Technologies Inc. Radeon (TM) HD 7850M
-ATI Technologies Inc. Radeon (TM) HD 8750M
-ATI Technologies Inc. Radeon (TM) HD 8750M
-ATI Technologies Inc. Radeon 7000 DDR x86/SSE2
-ATI Technologies Inc. Radeon 7500 DDR x86
-ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
-ATI Technologies Inc. Radeon 9100 DDR x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon 9200 DDR x86/SSE2
-ATI Technologies Inc. Radeon HD 2600 PRO (Omega 3.8.442)
-ATI Technologies Inc. Radeon HD 6470M
-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 Radeon X300/X550/X1050 Series x86/SSE2
-ATI Technologies Inc. Radeon X1050
-ATI Technologies Inc. Radeon X1050 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1200 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1300 / X1550 Series
-ATI Technologies Inc. Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1300 / X1600 Series
-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 Series x86/SSE2
-ATI Technologies Inc. Radeon X1300/X1550 Series
-ATI Technologies Inc. Radeon X1300/X1550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1300/X1550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1300/X1550 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2
-ATI Technologies Inc. Radeon X1550 64-bit (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1550 64-bit x86/SSE2
-ATI Technologies Inc. Radeon X1550 Series
-ATI Technologies Inc. Radeon X1550 Series
-ATI Technologies Inc. Radeon X1550 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1550 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1550 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1550 Series x86/SSE2
-ATI Technologies Inc. Radeon X1600
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/SSE2
-ATI Technologies Inc. Radeon X1600 Series
-ATI Technologies Inc. Radeon X1600 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1600 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1600 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1600 Series x86/SSE2
-ATI Technologies Inc. Radeon X1600 x86/SSE2
-ATI Technologies Inc. Radeon X1600/1650 Series
-ATI Technologies Inc. Radeon X1600/X1650 Series
-ATI Technologies Inc. Radeon X1600/X1650 Series x86/SSE2
-ATI Technologies Inc. Radeon X1650 GTO
-ATI Technologies Inc. Radeon X1650 SE
-ATI Technologies Inc. Radeon X1650 SE x86/SSE2
-ATI Technologies Inc. Radeon X1650 Series
-ATI Technologies Inc. Radeon X1650 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1650 Series
-ATI Technologies Inc. Radeon X1650 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1650 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1650 Series (Omega 3.8.442)
-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 X1650/X1700 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1700 FSC
-ATI Technologies Inc. Radeon X1800 CrossFire Edition
-ATI Technologies Inc. Radeon X1800 Series
-ATI Technologies Inc. Radeon X1800 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1900 CrossFire Edition
-ATI Technologies Inc. Radeon X1900 GT
-ATI Technologies Inc. Radeon X1900 GT x86/SSE2
-ATI Technologies Inc. Radeon X1900 Series
-ATI Technologies Inc. Radeon X1900 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1900 Series x86/SSE2
-ATI Technologies Inc. Radeon X1950 CrossFire Edition
-ATI Technologies Inc. Radeon X1950 Pro
-ATI Technologies Inc. Radeon X1950 Pro (Omega 3.8.442)
-ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1950 Pro x86/SSE2
-ATI Technologies Inc. Radeon X1950 Series
-ATI Technologies Inc. Radeon X1950 Series
-ATI Technologies Inc. Radeon X1950 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1950 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X1950 Series x86/MMX/3DNow!/SSE2
-ATI Technologies Inc. Radeon X1950 Series x86/SSE2
-ATI Technologies Inc. Radeon X300/X550/X1050 Series
-ATI Technologies Inc. Radeon X300/X550/X1050 Series
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM)
-ATI Technologies Inc. Radeon X300/X550/X1050 Series (Omega 3.8.442)
-ATI Technologies Inc. Radeon X300/X550/X1050 Series x86/SSE2
-ATI Technologies Inc. Radeon X550/X700 Series
-ATI Technologies Inc. Radeon X550XTX
-ATI Technologies Inc. Radeon Xpress 200 Series (Omega 3.8.442) x86/SSE2
-ATI Technologies Inc. Radeon Xpress 200M Series (Omega 3.8.442)
-ATI Technologies Inc. SAPPHIRE RADEON 9600 ATLANTIS
-ATI Technologies Inc. SAPPHIRE RADEON X300SE
-ATI Technologies Inc. SAPPHIRE Radeon X1550
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2
-ATI Technologies Inc. SUMO 9640
-ATI Technologies Inc. SUMO 964A
-ATI Technologies Inc. Sapphire RADEON X1600 PRO
-ATI Technologies Inc. Sapphire RADEON X1600 PRO x86/SSE2
-ATI Technologies Inc. Sapphire RADEON X1600 XT
-ATI Technologies Inc. Tul Corporation, RADEON X1300 Series
-ATI Technologies Inc. Tul Corporation, RADEON X300SE
-ATI Technologies Inc. VisionTek Radeon 4350
-ATI Technologies Inc. VisionTek Radeon 4350
-ATI Technologies Inc. VisionTek Radeon HD 2400 PCI
-ATI Technologies Inc. VisionTek Radeon HD 2600 XT AGP
-ATI Technologies Inc. VisionTek Radeon HD 5450
-ATI Technologies Inc. VisionTek Radeon HD2400 Pro AGP
-ATI Technologies Inc. VisionTek Radeon HD2400 Pro PCI
-ATI Technologies Inc. VisionTek Radeon X1300
-ATI Technologies Inc. VisionTek Radeon X1300 Series
-ATI Technologies Inc. VisionTek Radeon X1300 XGE
-ATI Technologies Inc. VisionTek Radeon X1550 Series
-ATI Technologies Inc. WRESTLER 9802
-ATI Technologies Inc. XFX Radeon HD 4570
-Advanced Micro Devices, Inc. Mesa DRI R600 (RS880 9712) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
-Alex Mohr GL Hijacker!
-Brian Paul Mesa X11
-Gallium
-Humper
-Humper Chromium
-Humper Chromium
-Imagination Technologies 3D-Analyze v2.3 - http://www.tommti-systems.com
-Imagination Technologies PowerVR SGX545
-Imagination Technologies PowerVR SGX545
-Intel
-Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
-Intel 4 Series Internal
-Intel 845G
-Intel 855GM
-Intel 865G
-Intel 915G
-Intel 915GM
-Intel 945G
-Intel 945GM
-Intel 950
-Intel 965
-Intel 965
-Intel 965
-Intel Bear Lake
-Intel Broadwater
-Intel Brookdale
-Intel Cantiga
-Intel Corporation Intel(R) Graphics Media Accelerator 3600 Series
-Intel Corporation Intel(R) Graphics Media Accelerator 3600 Series
-Intel Eaglelake
-Intel G33
-Intel G41
-Intel G45
-Intel Graphics Media HD
-Intel Graphics Media HD
-Intel HD Graphics
-Intel HD Graphics
-Intel HD Graphics
-Intel HD Graphics
-Intel HD Graphics 2000
-Intel HD Graphics 2000
-Intel HD Graphics 3000
-Intel HD Graphics 3000
-Intel HD Graphics 4000
-Intel HD Graphics 4000
-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 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 3000 OpenGL Engine
-Intel Inc. Intel HD Graphics 4000 OpenGL Engine
-Intel Inc. Intel HD Graphics 4000 OpenGL Engine
-Intel Inc. Intel HD Graphics 4000 OpenGL Engine
-Intel Inc. Intel HD Graphics 4000 OpenGL Engine
-Intel Inc. Intel HD Graphics 5000 OpenGL Engine
-Intel Inc. Intel HD Graphics 5000 OpenGL Engine
-Intel Inc. Intel HD Graphics 5000 OpenGL Engine
-Intel Inc. Intel HD Graphics 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 Cantiga
-Intel Intel Cantiga
-Intel Intel Eaglelake
-Intel Intel Eaglelake
-Intel Intel Grantsdale-G
-Intel Intel Grantsdale-G
-Intel Intel Iris Pro Graphics 5200
-Intel Intel Montara-GM
-Intel Intel Pineview Platform
-Intel Intel Pineview Platform
-Intel Intel Springdale-G
-Intel Intel(R) HD Graphics Family
-Intel Intel(R) 4 Series Internal Chipset
-Intel Intel(R) 4 Series Internal Chipset
-Intel Intel(R) B43 Express Chipset
-Intel Intel(R) B43 Express Chipset
-Intel Intel(R) G41 Express Chipset
-Intel Intel(R) G41 Express Chipset
-Intel Intel(R) G41 Express Chipset
-Intel Intel(R) G41 Express Chipset (Microsoft Corporation - WDDM 1.1)
-Intel Intel(R) G41 Express Chipset v2
-Intel Intel(R) G45/G43 Express Chipset
-Intel Intel(R) G45/G43 Express Chipset
-Intel Intel(R) G45/G43 Express Chipset
-Intel Intel(R) G45/G43/G41 Express Chipset
-Intel Intel(R) Graphics Media Accelerator HD
-Intel Intel(R) Graphics Media Accelerator HD
-Intel Intel(R) Graphics Media Accelerator HD
-Intel Intel(R) HD Graphics
-Intel Intel(R) HD Graphics
-Intel Intel(R) HD Graphics
-Intel Intel(R) HD Graphics 100
-Intel Intel(R) HD Graphics 2000
-Intel Intel(R) HD Graphics 2000
-Intel Intel(R) HD Graphics 2500
-Intel Intel(R) HD Graphics 2500
-Intel Intel(R) HD Graphics 3000
-Intel Intel(R) HD Graphics 3000
-Intel Intel(R) HD Graphics 3000
-Intel Intel(R) HD Graphics 4000
-Intel Intel(R) HD Graphics 4000
-Intel Intel(R) HD Graphics 4000
-Intel Intel(R) HD Graphics 4000
-Intel Intel(R) HD Graphics 4400
-Intel Intel(R) HD Graphics 4600
-Intel Intel(R) HD Graphics 4600
-Intel Intel(R) HD Graphics 5000
-Intel Intel(R) HD Graphics BR-1004-01Y1
-Intel Intel(R) HD Graphics Family
-Intel Intel(R) HD Graphics Family
-Intel Intel(R) HD Graphics P3000
-Intel Intel(R) HD Graphics P4000
-Intel Intel(R) Q45/Q43 Express Chipset
-Intel Intel(R) Q45/Q43 Express Chipset
-Intel Iris OpenGL Graphics Engine
-Intel Mobile 4 Series
-Intel Mobile Intel(R) 4 Series Express Chipset Family
-Intel Mobile Intel(R) 4 Series Express Chipset Family
-Intel Mobile Intel(R) 4 Series Express Chipset Family v2
-Intel Mobile Intel(R) 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
-Intel Mobile Intel(R) HD Graphics
-Intel Mobile Intel(R) HD Graphics
-Intel Montara
-Intel Open Source Technology Center Mesa DRI Intel(R) 852GM/855GM x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 915G
-Intel Open Source Technology Center Mesa DRI Intel(R) 915G x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 915GM x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 945G
-Intel Open Source Technology Center Mesa DRI Intel(R) 945G x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GM x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 945GME x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 965G x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GM
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GM x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) 965GME/GLE
-Intel Open Source Technology Center Mesa DRI Intel(R) 965Q
-Intel Open Source Technology Center Mesa DRI Intel(R) 965Q x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) G33 x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) G41 x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) G45/G43
-Intel Open Source Technology Center Mesa DRI Intel(R) G45/G43 x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) IGD
-Intel Open Source Technology Center Mesa DRI Intel(R) IGD x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Desktop x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Mobile
-Intel Open Source Technology Center Mesa DRI Intel(R) Ironlake Mobile x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Desktop
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Desktop x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Mobile
-Intel Open Source Technology Center Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Q35
-Intel Open Source Technology Center Mesa DRI Intel(R) Q35 x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Q45/Q43
-Intel Open Source Technology Center Mesa DRI Intel(R) Q45/Q43 x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Desktop
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Desktop x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Mobile
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
-Intel Open Source Technology Center Mesa DRI Mobile Intel(R) GM45 Express Chipset
-Intel Open Source Technology Center Mesa DRI Mobile Intel(R) GM45 Express Chipset x86/MMX/SSE2
-Intel Pineview
-Intel Q45/Q43
-Intel Royal BNA Driver
-Intel Springdale
-Intel X3100
-Intel X3100
-Matrox Graphics Inc. Matrox ICD for M-Series
-Matrox Graphics Inc. Matrox G400
-Matrox Graphics Inc. Matrox ICD for Parhelia
-Mesa
-Mesa
-Mesa Project Software Rasterizer
-Mesa project: www.mesa3d.org Mesa GLX Indirect
-NVIDIA 205
-NVIDIA 210
-NVIDIA 210
-NVIDIA 310
-NVIDIA 310
-NVIDIA 310
-NVIDIA 310M
-NVIDIA 310M
-NVIDIA 315
-NVIDIA 315M
-NVIDIA 315M
-NVIDIA 320M
-NVIDIA 320M
-NVIDIA 405
-NVIDIA 410
-NVIDIA 510
-NVIDIA 610M
-NVIDIA Corporation /PCI/SSE2
-NVIDIA Corporation 3D-Analyze v2.3 - http://www.tommti-systems.com
-NVIDIA Corporation C51/PCI/SSE2/3DNOW!
-NVIDIA Corporation C51G/PCI/SSE2/3DNOW!
-NVIDIA Corporation D10P1-25/PCI/SSE2/3DNOW!
-NVIDIA Corporation D14P1-30/PCIe/SSE2
-NVIDIA Corporation D9M-20/PCI/SSE2
-NVIDIA Corporation D9M-20/PCI/SSE2/3DNOW!
-NVIDIA Corporation G72/PCI/SSE2/3DNOW!
-NVIDIA Corporation G73/AGP/SSE2/3DNOW!
-NVIDIA Corporation G73/PCI/SSE2/3DNOW!
-NVIDIA Corporation G84-50/PCI/SSE2
-NVIDIA Corporation G92-100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GK106/PCIe/SSE2
-NVIDIA Corporation GRID K2/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 555/PCI/SSE2
-NVIDIA Corporation GeForce GTX 555/PCI/SSE2
-NVIDIA Corporation GeForce GTX 555/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 555/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 555/PCIe/SSE2
-NVIDIA Corporation GeForce 205/PCI/SSE2
-NVIDIA Corporation GeForce 210/PCI/SSE2
-NVIDIA Corporation GeForce 210/PCI/SSE2
-NVIDIA Corporation GeForce 210/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 210/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 210/PCIe/SSE2
-NVIDIA Corporation GeForce 210/PCIe/SSE2
-NVIDIA Corporation GeForce 210/PCIe/SSE2
-NVIDIA Corporation GeForce 210/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 210/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 310/PCI/SSE2
-NVIDIA Corporation GeForce 310/PCI/SSE2
-NVIDIA Corporation GeForce 310/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 310/PCIe/SSE2
-NVIDIA Corporation GeForce 310/PCIe/SSE2
-NVIDIA Corporation GeForce 310/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 310M/PCI/SSE2
-NVIDIA Corporation GeForce 310M/PCI/SSE2
-NVIDIA Corporation GeForce 310M/PCIe/SSE2
-NVIDIA Corporation GeForce 310M/PCIe/SSE2
-NVIDIA Corporation GeForce 310M/PCIe/SSE2
-NVIDIA Corporation GeForce 315/PCI/SSE2
-NVIDIA Corporation GeForce 315/PCI/SSE2
-NVIDIA Corporation GeForce 315/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 315/PCIe/SSE2
-NVIDIA Corporation GeForce 315/PCIe/SSE2
-NVIDIA Corporation GeForce 315/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 315M/PCI/SSE2
-NVIDIA Corporation GeForce 315M/PCI/SSE2
-NVIDIA Corporation GeForce 315M/PCI/SSE2
-NVIDIA Corporation GeForce 315M/PCIe/SSE2
-NVIDIA Corporation GeForce 315M/PCIe/SSE2
-NVIDIA Corporation GeForce 320M/PCI/SSE2
-NVIDIA Corporation GeForce 320M/PCI/SSE2
-NVIDIA Corporation GeForce 320M/integrated/SSE2
-NVIDIA Corporation GeForce 405/PCI/SSE2
-NVIDIA Corporation GeForce 405/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 405/PCIe/SSE2
-NVIDIA Corporation GeForce 405/PCIe/SSE2
-NVIDIA Corporation GeForce 405/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 410M/PCI/SSE2
-NVIDIA Corporation GeForce 410M/PCI/SSE2
-NVIDIA Corporation GeForce 410M/PCIe/SSE2
-NVIDIA Corporation GeForce 410M/PCIe/SSE2
-NVIDIA Corporation GeForce 505/PCIe/SSE2
-NVIDIA Corporation GeForce 510/PCI/SSE2
-NVIDIA Corporation GeForce 510/PCI/SSE2
-NVIDIA Corporation GeForce 510/PCIe/SSE2
-NVIDIA Corporation GeForce 510/PCIe/SSE2
-NVIDIA Corporation GeForce 510/PCIe/SSE2
-NVIDIA Corporation GeForce 605/PCI/SSE2
-NVIDIA Corporation GeForce 605/PCIe/SSE2
-NVIDIA Corporation GeForce 605/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 610/PCIe/SSE2
-NVIDIA Corporation GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 400/integrated/SSE2
-NVIDIA Corporation GeForce 6100 nForce 400/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 405/PCI/SSE2
-NVIDIA Corporation GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 405/integrated/SSE2
-NVIDIA Corporation GeForce 6100 nForce 405/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 405/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100/PCI/SSE2
-NVIDIA Corporation GeForce 6100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6100/integrated/SSE2
-NVIDIA Corporation GeForce 6100/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 610M/PCI/SSE2
-NVIDIA Corporation GeForce 610M/PCIe/SSE2
-NVIDIA Corporation GeForce 610M/PCIe/SSE2
-NVIDIA Corporation GeForce 610M/PCIe/SSE2
-NVIDIA Corporation GeForce 615/PCIe/SSE2
-NVIDIA Corporation GeForce 6150 LE/PCI/SSE2
-NVIDIA Corporation GeForce 6150 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150 LE/integrated/SSE2
-NVIDIA Corporation GeForce 6150 LE/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150 LE/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150 SE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150/integrated/SSE2
-NVIDIA Corporation GeForce 6150/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE nForce 430/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6150SE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 A-LE/AGP/SSE2
-NVIDIA Corporation GeForce 6200 A-LE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 A-LE/PCI/SSE2
-NVIDIA Corporation GeForce 6200 A-LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 LE/PCI/SSE2
-NVIDIA Corporation GeForce 6200 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 6200 LE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCI/SSE2
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCIe/SSE2
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCIe/SSE2
-NVIDIA Corporation GeForce 6200 TurboCache(TM)/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200/AGP/SSE2
-NVIDIA Corporation GeForce 6200/AGP/SSE2
-NVIDIA Corporation GeForce 6200/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200/PCI/SSE2
-NVIDIA Corporation GeForce 6200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200/PCIe/SSE2
-NVIDIA Corporation GeForce 6200/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCI/SSE2
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCIe/SSE2
-NVIDIA Corporation GeForce 6200SE TurboCache(TM)/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6500/PCI/SSE2
-NVIDIA Corporation GeForce 6500/PCI/SSE2
-NVIDIA Corporation GeForce 6500/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6500/PCIe/SSE2
-NVIDIA Corporation GeForce 6500/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 GT/AGP/SSE2
-NVIDIA Corporation GeForce 6600 GT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 GT/PCI/SSE2
-NVIDIA Corporation GeForce 6600 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 LE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 LE/PCI/SSE2
-NVIDIA Corporation GeForce 6600 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 6600 LE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600/AGP/SSE2
-NVIDIA Corporation GeForce 6600/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600/PCI/SSE2
-NVIDIA Corporation GeForce 6600/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6600/PCIe/SSE2
-NVIDIA Corporation GeForce 6600/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6610 XL/PCI/SSE2
-NVIDIA Corporation GeForce 6610 XL/PCIe/SSE2
-NVIDIA Corporation GeForce 6700 XL/PCI/SSE2
-NVIDIA Corporation GeForce 6700 XL/PCIe/SSE2
-NVIDIA Corporation GeForce 6800 GS/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 GS/PCI/SSE2
-NVIDIA Corporation GeForce 6800 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 6800 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 GT/AGP/SSE2
-NVIDIA Corporation GeForce 6800 GT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 6800 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 LE/AGP/SSE2
-NVIDIA Corporation GeForce 6800 LE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 Ultra/AGP/SSE2
-NVIDIA Corporation GeForce 6800 Ultra/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 Ultra/PCI/SSE2
-NVIDIA Corporation GeForce 6800 Ultra/PCIe/SSE2
-NVIDIA Corporation GeForce 6800 Ultra/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 XT/AGP/SSE2
-NVIDIA Corporation GeForce 6800 XT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 XT/PCI/SSE2
-NVIDIA Corporation GeForce 6800 XT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800 XT/PCIe/SSE2
-NVIDIA Corporation GeForce 6800 XT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800/AGP/SSE2
-NVIDIA Corporation GeForce 6800/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 6800/PCI/SSE2
-NVIDIA Corporation GeForce 6800/PCIe/SSE2
-NVIDIA Corporation GeForce 6800/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2
-NVIDIA Corporation GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / nForce 630a/integrated/SSE2
-NVIDIA Corporation GeForce 7025 / nForce 630a/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7025 / nForce 630a/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / NVIDIA nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 610i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 610i/integrated/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 610i/integrated/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 620i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 620i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 620i/integrated/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 620i/integrated/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7050 / nForce 630i/integrated/SSE2
-NVIDIA Corporation GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/PCI/SSE2
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/integrated/SSE2
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7050 PV / nForce 630a/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
-NVIDIA Corporation GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7100 / nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7100 / nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7100 / nForce 630i/integrated/SSE2
-NVIDIA Corporation GeForce 7100 / nForce 630i/integrated/SSE2
-NVIDIA Corporation GeForce 7100 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7100 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7100 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7100 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7100 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 710A/PCIe/SSE2
-NVIDIA Corporation GeForce 710M/PCIe/SSE2
-NVIDIA Corporation GeForce 710M/PCIe/SSE2
-NVIDIA Corporation GeForce 710M/PCIe/SSE2
-NVIDIA Corporation GeForce 7150 / nForce 630i/PCI/SSE2
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7150M / nForce 630M/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7300 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 GT/AGP/SSE2
-NVIDIA Corporation GeForce 7300 GT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 GT/PCI/SSE2
-NVIDIA Corporation GeForce 7300 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 LE/PCI/SSE2
-NVIDIA Corporation GeForce 7300 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 LE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 SE/7200 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 SE/PCI/SSE2
-NVIDIA Corporation GeForce 7300 SE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7300 SE/PCIe/SSE2
-NVIDIA Corporation GeForce 7350 LE/PCI/SSE2
-NVIDIA Corporation GeForce 7350 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 7350 LE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7500 LE/PCI/SSE2
-NVIDIA Corporation GeForce 7500 LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7500 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 7500 LE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GS/AGP/SSE2
-NVIDIA Corporation GeForce 7600 GS/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7600 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7600 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GT/AGP/SSE2
-NVIDIA Corporation GeForce 7600 GT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GT/PCI/SSE2
-NVIDIA Corporation GeForce 7600 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7600 LE/PCIe/SSE2
-NVIDIA Corporation GeForce 7650 GS/AGP/SSE2
-NVIDIA Corporation GeForce 7650 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7650 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7650 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7800 GS/AGP/SSE2
-NVIDIA Corporation GeForce 7800 GS/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7800 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7800 GT/PCI/SSE2
-NVIDIA Corporation GeForce 7800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7800 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 7800 GTX/PCIe/SSE2
-NVIDIA Corporation GeForce 7800 GTX/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GS/AGP/SSE2
-NVIDIA Corporation GeForce 7900 GS/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GS/PCI/SSE2
-NVIDIA Corporation GeForce 7900 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 7900 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GT/GTO/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GT/GTO/PCIe/SSE2
-NVIDIA Corporation GeForce 7900 GT/GTO/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GT/PCI/SSE2
-NVIDIA Corporation GeForce 7900 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 7900 GTX/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7900 GTX/PCIe/SSE2
-NVIDIA Corporation GeForce 7900 GTX/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7950 GT/AGP/SSE2
-NVIDIA Corporation GeForce 7950 GT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7950 GT/PCI/SSE2
-NVIDIA Corporation GeForce 7950 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7950 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 7950 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 7950 GX2/PCI/SSE2
-NVIDIA Corporation GeForce 7950 GX2/PCIe/SSE2
-NVIDIA Corporation GeForce 7950 GX2/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8100 / nForce 720a/PCI/SSE2
-NVIDIA Corporation GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8100 / nForce 720a/integrated/SSE2
-NVIDIA Corporation GeForce 8100 / nForce 720a/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200/PCI/SSE2
-NVIDIA Corporation GeForce 8200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200/integrated/SSE2
-NVIDIA Corporation GeForce 8200/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200M G/PCI/SSE2
-NVIDIA Corporation GeForce 8200M G/PCI/SSE2
-NVIDIA Corporation GeForce 8200M G/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200M G/integrated/SSE2
-NVIDIA Corporation GeForce 8200M G/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8200M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8300 GS/PCI/SSE2
-NVIDIA Corporation GeForce 8300 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8300 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8300 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8300/PCI/SSE2
-NVIDIA Corporation GeForce 8300/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8300/integrated/SSE2
-NVIDIA Corporation GeForce 8300/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400 SE/PCI/SSE2
-NVIDIA Corporation GeForce 8400 SE/PCIe/SSE2
-NVIDIA Corporation GeForce 8400/PCI/SSE2
-NVIDIA Corporation GeForce 8400/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400/PCIe/SSE2
-NVIDIA Corporation GeForce 8400/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400GS/PCI/SSE2
-NVIDIA Corporation GeForce 8400GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M G/PCI/SSE2
-NVIDIA Corporation GeForce 8400M G/PCI/SSE2
-NVIDIA Corporation GeForce 8400M G/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M G/PCIe/SSE2
-NVIDIA Corporation GeForce 8400M G/PCIe/SSE2
-NVIDIA Corporation GeForce 8400M G/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M GS/PCI/SSE2
-NVIDIA Corporation GeForce 8400M GS/PCI/SSE2
-NVIDIA Corporation GeForce 8400M GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8400M GT/PCI/SSE2
-NVIDIA Corporation GeForce 8400M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8500 GT/PCI/SSE2
-NVIDIA Corporation GeForce 8500 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8500 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8500 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8500 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8500 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GS/PCI/SSE2
-NVIDIA Corporation GeForce 8600 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8600 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GT/PCI/SSE2
-NVIDIA Corporation GeForce 8600 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GTS/PCI/SSE2
-NVIDIA Corporation GeForce 8600 GTS/PCI/SSE2
-NVIDIA Corporation GeForce 8600 GTS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600 GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 8600 GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 8600 GTS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600GS/PCI/SSE2
-NVIDIA Corporation GeForce 8600GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600M GS/PCI/SSE2
-NVIDIA Corporation GeForce 8600M GS/PCI/SSE2
-NVIDIA Corporation GeForce 8600M GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8600M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8600M GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600M GT/PCI/SSE2
-NVIDIA Corporation GeForce 8600M GT/PCI/SSE2
-NVIDIA Corporation GeForce 8600M GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8600M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8600M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8600M GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8700M GT/PCI/SSE2
-NVIDIA Corporation GeForce 8700M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8700M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GS/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GT/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTS 512/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GTS 512/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTS 512/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GTS 512/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTS/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GTS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GTS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 8800 GTX/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 GTX/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 GTX/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800 Ultra/PCI/SSE2
-NVIDIA Corporation GeForce 8800 Ultra/PCIe/SSE2
-NVIDIA Corporation GeForce 8800 Ultra/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 8800M GTS/PCI/SSE2
-NVIDIA Corporation GeForce 8800M GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 8800M GTX/PCI/SSE2
-NVIDIA Corporation GeForce 8800M GTX/PCIe/SSE2
-NVIDIA Corporation GeForce 9100/PCI/SSE2
-NVIDIA Corporation GeForce 9100/PCI/SSE2
-NVIDIA Corporation GeForce 9100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9100/integrated/SSE2
-NVIDIA Corporation GeForce 9100/integrated/SSE2
-NVIDIA Corporation GeForce 9100/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9100M G/PCI/SSE2
-NVIDIA Corporation GeForce 9100M G/PCI/SSE2
-NVIDIA Corporation GeForce 9100M G/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9100M G/integrated/SSE2
-NVIDIA Corporation GeForce 9100M G/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9200/PCI/SSE2
-NVIDIA Corporation GeForce 9200/PCI/SSE2
-NVIDIA Corporation GeForce 9200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9200/integrated/SSE2
-NVIDIA Corporation GeForce 9200/integrated/SSE2
-NVIDIA Corporation GeForce 9200/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9200/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9200M GE/PCI/SSE2
-NVIDIA Corporation GeForce 9200M GE/PCI/SSE2
-NVIDIA Corporation GeForce 9200M GE/PCIe/SSE2
-NVIDIA Corporation GeForce 9200M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9200M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9200M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9200M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9300 / nForce 730i/integrated/SSE2
-NVIDIA Corporation GeForce 9300 GE/PCI/SSE2
-NVIDIA Corporation GeForce 9300 GE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300 GE/PCIe/SSE2
-NVIDIA Corporation GeForce 9300 GE/PCIe/SSE2
-NVIDIA Corporation GeForce 9300 GE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300 GS/PCI/SSE2
-NVIDIA Corporation GeForce 9300 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9300 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300 SE/PCIe/SSE2
-NVIDIA Corporation GeForce 9300/PCI/SSE2
-NVIDIA Corporation GeForce 9300/integrated/SSE2
-NVIDIA Corporation GeForce 9300M G/PCI/SSE2
-NVIDIA Corporation GeForce 9300M G/PCI/SSE2
-NVIDIA Corporation GeForce 9300M G/PCI/SSE2
-NVIDIA Corporation GeForce 9300M G/PCIe/SSE2
-NVIDIA Corporation GeForce 9300M G/PCIe/SSE2
-NVIDIA Corporation GeForce 9300M G/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9300M GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9300M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9300M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9300M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9400 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9400 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9400 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9400 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9400 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9400 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9400/PCI/SSE2
-NVIDIA Corporation GeForce 9400/integrated/SSE2
-NVIDIA Corporation GeForce 9400/integrated/SSE2
-NVIDIA Corporation GeForce 9400M G/PCI/SSE2
-NVIDIA Corporation GeForce 9400M G/PCI/SSE2
-NVIDIA Corporation GeForce 9400M G/integrated/SSE2
-NVIDIA Corporation GeForce 9400M/PCI/SSE2
-NVIDIA Corporation GeForce 9400M/integrated/SSE2
-NVIDIA Corporation GeForce 9500 GS/PCI/SSE2
-NVIDIA Corporation GeForce 9500 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9500 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9500 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9500M GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9500M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GS/PCI/SSE2
-NVIDIA Corporation GeForce 9600 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GS/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GSO 512/PCI/SSE2
-NVIDIA Corporation GeForce 9600 GSO 512/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GSO 512/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GSO 512/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GSO/PCI/SSE2
-NVIDIA Corporation GeForce 9600 GSO/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GSO/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GSO/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9600 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9600M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9600M GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9600M GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9650M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9650M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9650M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9650M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9700M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9700M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9700M GTS/PCI/SSE2
-NVIDIA Corporation GeForce 9700M GTS/PCI/SSE2
-NVIDIA Corporation GeForce 9700M GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GT/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GT/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GTX+/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GTX+/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 GTX/9800 GTX+/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce 9800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce 9800 GX2/PCIe/SSE2
-NVIDIA Corporation GeForce 9800 S/PCI/SSE2
-NVIDIA Corporation GeForce 9800M GS/PCI/SSE2
-NVIDIA Corporation GeForce 9800M GS/PCIe/SSE2
-NVIDIA Corporation GeForce 9800M GT/PCI/SSE2
-NVIDIA Corporation GeForce 9800M GT/PCIe/SSE2
-NVIDIA Corporation GeForce 9800M GTS/PCI/SSE2
-NVIDIA Corporation GeForce 9800M GTS/PCIe/SSE2
-NVIDIA Corporation GeForce 9800M GTX/PCI/SSE2
-NVIDIA Corporation GeForce 9800M GTX/PCIe/SSE2
-NVIDIA Corporation GeForce FX 5100/AGP/SSE2
-NVIDIA Corporation GeForce FX 5200 Ultra/AGP/SSE2
-NVIDIA Corporation GeForce FX 5200 Ultra/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5200/AGP/SSE/3DNOW!
-NVIDIA Corporation GeForce FX 5200/AGP/SSE2
-NVIDIA Corporation GeForce FX 5200/AGP/SSE2
-NVIDIA Corporation GeForce FX 5200/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5200/PCI/SSE2
-NVIDIA Corporation GeForce FX 5200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5200LE/AGP/SSE2
-NVIDIA Corporation GeForce FX 5200LE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5200SE/AGP/SSE2
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5500/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5500/PCI/SSE2
-NVIDIA Corporation GeForce FX 5500/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5600/AGP/SSE2
-NVIDIA Corporation GeForce FX 5600XT/AGP/SSE2
-NVIDIA Corporation GeForce FX 5600XT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5600XT/PCI/SSE2
-NVIDIA Corporation GeForce FX 5700/AGP/SSE2
-NVIDIA Corporation GeForce FX 5700/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5700LE/AGP/SSE2
-NVIDIA Corporation GeForce FX 5700LE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5700LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5700VE/AGP/SSE2
-NVIDIA Corporation GeForce FX 5700VE/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5900 Ultra/AGP/SSE2
-NVIDIA Corporation GeForce FX 5900/AGP/SSE2
-NVIDIA Corporation GeForce FX 5900XT/AGP/SSE2
-NVIDIA Corporation GeForce FX 5900ZT/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX 5950 Ultra/AGP/SSE2
-NVIDIA Corporation GeForce FX 5950 Ultra/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX Go5200 32M/64M/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5200/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5200/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce FX Go5200/PCI/SSE2
-NVIDIA Corporation GeForce FX Go5300/AGP/SSE2
-NVIDIA Corporation GeForce FX Go53xx Series/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5600/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5650/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5700/AGP/SSE2
-NVIDIA Corporation GeForce FX Go5700/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce G 103M/PCI/SSE2
-NVIDIA Corporation GeForce G 103M/PCI/SSE2
-NVIDIA Corporation GeForce G 103M/PCIe/SSE2
-NVIDIA Corporation GeForce G 103M/PCIe/SSE2
-NVIDIA Corporation GeForce G 105M/PCI/SSE2
-NVIDIA Corporation GeForce G 105M/PCIe/SSE2
-NVIDIA Corporation GeForce G 105M/PCIe/SSE2
-NVIDIA Corporation GeForce G 110M/PCI/SSE2
-NVIDIA Corporation GeForce G100/PCI/SSE2
-NVIDIA Corporation GeForce G100/PCI/SSE2
-NVIDIA Corporation GeForce G100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce G100/PCIe/SSE2
-NVIDIA Corporation GeForce G100/PCIe/SSE2
-NVIDIA Corporation GeForce G100/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce G100/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce G102M/PCI/SSE2
-NVIDIA Corporation GeForce G102M/PCI/SSE2
-NVIDIA Corporation GeForce G102M/integrated/SSE2
-NVIDIA Corporation GeForce G102M/integrated/SSE2
-NVIDIA Corporation GeForce G105M/PCI/SSE2
-NVIDIA Corporation GeForce G105M/PCI/SSE2
-NVIDIA Corporation GeForce G105M/PCIe/SSE2
-NVIDIA Corporation GeForce G105M/PCIe/SSE2
-NVIDIA Corporation GeForce G200/PCI/SSE2
-NVIDIA Corporation GeForce G200/PCI/SSE2
-NVIDIA Corporation GeForce G200/integrated/SSE2
-NVIDIA Corporation GeForce G205M/PCI/SSE2
-NVIDIA Corporation GeForce G205M/integrated/SSE2
-NVIDIA Corporation GeForce G205M/integrated/SSE2
-NVIDIA Corporation GeForce G210/PCI/SSE2
-NVIDIA Corporation GeForce G210/PCI/SSE2
-NVIDIA Corporation GeForce G210/PCI/SSE2
-NVIDIA Corporation GeForce G210/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce G210/PCIe/SSE2
-NVIDIA Corporation GeForce G210/PCIe/SSE2
-NVIDIA Corporation GeForce G210/PCIe/SSE2
-NVIDIA Corporation GeForce G210/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce G210M/PCI/SSE2
-NVIDIA Corporation GeForce G210M/PCI/SSE2
-NVIDIA Corporation GeForce G210M/PCIe/SSE2
-NVIDIA Corporation GeForce G210M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 120/PCI/SSE2
-NVIDIA Corporation GeForce GT 120/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 120/PCIe/SSE2
-NVIDIA Corporation GeForce GT 120/PCIe/SSE2
-NVIDIA Corporation GeForce GT 120/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 120M/PCI/SSE2
-NVIDIA Corporation GeForce GT 120M/PCI/SSE2
-NVIDIA Corporation GeForce GT 120M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 120M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 130/PCI/SSE2
-NVIDIA Corporation GeForce GT 130/PCIe/SSE2
-NVIDIA Corporation GeForce GT 130/PCIe/SSE2
-NVIDIA Corporation GeForce GT 130/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 130M/PCI/SSE2
-NVIDIA Corporation GeForce GT 130M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 130M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 140/PCI/SSE2
-NVIDIA Corporation GeForce GT 140/PCIe/SSE2
-NVIDIA Corporation GeForce GT 220/PCI/SSE2
-NVIDIA Corporation GeForce GT 220/PCI/SSE2
-NVIDIA Corporation GeForce GT 220/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 220/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 220M/PCI/SSE2
-NVIDIA Corporation GeForce GT 220M/PCI/SSE2
-NVIDIA Corporation GeForce GT 220M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 220M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 220M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 230/PCI/SSE2
-NVIDIA Corporation GeForce GT 230/PCIe/SSE2
-NVIDIA Corporation GeForce GT 230/PCIe/SSE2
-NVIDIA Corporation GeForce GT 230/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 230M/PCI/SSE2
-NVIDIA Corporation GeForce GT 230M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 230M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 230M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240/PCI/SSE2
-NVIDIA Corporation GeForce GT 240/PCI/SSE2
-NVIDIA Corporation GeForce GT 240/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 240/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 240M LE/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2
-NVIDIA Corporation GeForce GT 240M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 240M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 240M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 320/PCI/SSE2
-NVIDIA Corporation GeForce GT 320/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 320/PCIe/SSE2
-NVIDIA Corporation GeForce GT 320/PCIe/SSE2
-NVIDIA Corporation GeForce GT 320/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 320M/PCI/SSE2
-NVIDIA Corporation GeForce GT 320M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 320M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 325M/PCI/SSE2
-NVIDIA Corporation GeForce GT 325M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 330/PCI/SSE2
-NVIDIA Corporation GeForce GT 330/PCIe/SSE2
-NVIDIA Corporation GeForce GT 330/PCIe/SSE2
-NVIDIA Corporation GeForce GT 330/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 330M/PCI/SSE2
-NVIDIA Corporation GeForce GT 330M/PCI/SSE2
-NVIDIA Corporation GeForce GT 330M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 330M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 335M/PCI/SSE2
-NVIDIA Corporation GeForce GT 335M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 335M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 335M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 340/PCI/SSE2
-NVIDIA Corporation GeForce GT 340/PCIe/SSE2
-NVIDIA Corporation GeForce GT 415/PCIe/SSE2
-NVIDIA Corporation GeForce GT 415/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 415M/PCI/SSE2
-NVIDIA Corporation GeForce GT 415M/PCI/SSE2
-NVIDIA Corporation GeForce GT 415M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 415M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 420/PCI/SSE2
-NVIDIA Corporation GeForce GT 420/PCI/SSE2
-NVIDIA Corporation GeForce GT 420/PCIe/SSE2
-NVIDIA Corporation GeForce GT 420/PCIe/SSE2
-NVIDIA Corporation GeForce GT 420/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 420M/PCI/SSE2
-NVIDIA Corporation GeForce GT 420M/PCI/SSE2
-NVIDIA Corporation GeForce GT 420M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 420M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 425M/PCI/SSE2
-NVIDIA Corporation GeForce GT 425M/PCI/SSE2
-NVIDIA Corporation GeForce GT 425M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 425M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 430/PCI/SSE2
-NVIDIA Corporation GeForce GT 430/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 430/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 435M/PCI/SSE2
-NVIDIA Corporation GeForce GT 435M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 435M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 440/PCI/SSE2
-NVIDIA Corporation GeForce GT 440/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 440/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 445M/PCI/SSE2
-NVIDIA Corporation GeForce GT 445M/PCI/SSE2
-NVIDIA Corporation GeForce GT 445M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 445M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 445M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520/PCI/SSE2
-NVIDIA Corporation GeForce GT 520/PCI/SSE2
-NVIDIA Corporation GeForce GT 520/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 520/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 520M/PCI/SSE2
-NVIDIA Corporation GeForce GT 520M/PCI/SSE2
-NVIDIA Corporation GeForce GT 520M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520MX/PCI/SSE2
-NVIDIA Corporation GeForce GT 520MX/PCI/SSE2
-NVIDIA Corporation GeForce GT 520MX/PCIe/SSE2
-NVIDIA Corporation GeForce GT 520MX/PCIe/SSE2
-NVIDIA Corporation GeForce GT 525M/PCI/SSE2
-NVIDIA Corporation GeForce GT 525M/PCI/SSE2
-NVIDIA Corporation GeForce GT 525M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 525M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 530/PCI/SSE2
-NVIDIA Corporation GeForce GT 530/PCI/SSE2
-NVIDIA Corporation GeForce GT 530/PCIe/SSE2
-NVIDIA Corporation GeForce GT 530/PCIe/SSE2
-NVIDIA Corporation GeForce GT 530/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 540M/PCI/SSE2
-NVIDIA Corporation GeForce GT 540M/PCI/SSE2
-NVIDIA Corporation GeForce GT 540M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 540M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 545/PCI/SSE2
-NVIDIA Corporation GeForce GT 545/PCIe/SSE2
-NVIDIA Corporation GeForce GT 545/PCIe/SSE2
-NVIDIA Corporation GeForce GT 545/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 550M/PCI/SSE2
-NVIDIA Corporation GeForce GT 550M/PCI/SSE2
-NVIDIA Corporation GeForce GT 550M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 550M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 555M/PCI/SSE2
-NVIDIA Corporation GeForce GT 555M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 555M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 610/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 620/PCI/SSE2
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 620/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 620M/PCI/SSE2
-NVIDIA Corporation GeForce GT 620M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 620M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 625/PCIe/SSE2
-NVIDIA Corporation GeForce GT 625M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 625M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 630/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 630M/PCI/SSE2
-NVIDIA Corporation GeForce GT 630M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 630M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 630M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 635M/PCI/SSE2
-NVIDIA Corporation GeForce GT 635M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 635M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 640/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GT 640M LE/PCI/SSE2
-NVIDIA Corporation GeForce GT 640M LE/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640M LE/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 640M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 645/PCIe/SSE2
-NVIDIA Corporation GeForce GT 645/PCIe/SSE2
-NVIDIA Corporation GeForce GT 645M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 645M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 650M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 650M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 650M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 720M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 720M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 730M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 730M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 735M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 735M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 740M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 740M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 750M/PCIe/SSE2
-NVIDIA Corporation GeForce GT 750M/PCIe/SSE2
-NVIDIA Corporation GeForce GT620M/PCIe/SSE2
-NVIDIA Corporation GeForce GT625M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 150/PCI/SSE2
-NVIDIA Corporation GeForce GTS 160M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 160M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 160M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 160M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 240/PCI/SSE2
-NVIDIA Corporation GeForce GTS 240/PCI/SSE2
-NVIDIA Corporation GeForce GTS 240/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 240/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 240/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 250/PCI/SSE2
-NVIDIA Corporation GeForce GTS 250/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 250/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 250M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 250M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 250M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 250M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 350M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 350M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 350M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 350M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCI/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 360M/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 450/PCI/SSE2
-NVIDIA Corporation GeForce GTS 450/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTS 450/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 260/PCI/SSE2
-NVIDIA Corporation GeForce GTX 260/PCI/SSE2
-NVIDIA Corporation GeForce GTX 260/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 260/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 260M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 260M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 260M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 260M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 260M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 275/PCI/SSE2
-NVIDIA Corporation GeForce GTX 275/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 275/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 280/PCI/SSE2
-NVIDIA Corporation GeForce GTX 280/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 280/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 280M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 280M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 280M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 280M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 285/PCI/SSE2
-NVIDIA Corporation GeForce GTX 285/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 285/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 285/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 285M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 285M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 285M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 285M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 295/PCI/SSE2
-NVIDIA Corporation GeForce GTX 295/PCI/SSE2
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 295/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460 SE/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460 SE/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460 v2/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460 v2/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 460M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 460M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 465/PCI/SSE2
-NVIDIA Corporation GeForce GTX 465/PCI/SSE2
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 465/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 470/PCI/SSE2
-NVIDIA Corporation GeForce GTX 470/PCI/SSE2
-NVIDIA Corporation GeForce GTX 470/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 470/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 470M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 470M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 480/PCI/SSE2
-NVIDIA Corporation GeForce GTX 480/PCI/SSE2
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 480/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 480M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 480M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 485M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 485M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 485M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 550 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 SE/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 560M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 560M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 570/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 570/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 570M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 570M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 570M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 570M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580/PCI/SSE2
-NVIDIA Corporation GeForce GTX 580/PCI/SSE2
-NVIDIA Corporation GeForce GTX 580/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 580/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 580M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 580M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 580M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 580M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 590/PCI/SSE2
-NVIDIA Corporation GeForce GTX 590/PCI/SSE2
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 590/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 645/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 645/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti BOOST/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti BOOST/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti BOOST/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 650 Ti Boost/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti Boost/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti Boost/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 650 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 650/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660 Ti/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 660M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 660M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 670/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 670M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 670M/PCI/SSE2
-NVIDIA Corporation GeForce GTX 670M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 670MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 675MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 680/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 680M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 680MX/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 690/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 690/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 690/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 760/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 760/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 760M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 760M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 765M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 765M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 770/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX 770M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 770M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 780/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 780/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 780/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 780M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX 780M/PCIe/SSE2
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2
-NVIDIA Corporation GeForce GTX TITAN/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce GTX Titan/PCIe/SSE2
-NVIDIA Corporation GeForce GTX Titan/PCIe/SSE2
-NVIDIA Corporation GeForce Go 6100/PCI/SSE2
-NVIDIA Corporation GeForce Go 6100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6100/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6150/PCI/SSE2
-NVIDIA Corporation GeForce Go 6150/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6150/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6150/integrated/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6200/PCI/SSE2
-NVIDIA Corporation GeForce Go 6200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 6400/PCI/SSE2
-NVIDIA Corporation GeForce Go 6400/PCIe/SSE2
-NVIDIA Corporation GeForce Go 6600 TE/6200 TE/PCI/SSE2
-NVIDIA Corporation GeForce Go 6600/PCI/SSE2
-NVIDIA Corporation GeForce Go 6800 Ultra/PCI/SSE2
-NVIDIA Corporation GeForce Go 6800/PCI/SSE2
-NVIDIA Corporation GeForce Go 6800/PCIe/SSE2
-NVIDIA Corporation GeForce Go 7200/PCI/SSE2
-NVIDIA Corporation GeForce Go 7200/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7300/PCI/SSE2
-NVIDIA Corporation GeForce Go 7300/PCI/SSE2
-NVIDIA Corporation GeForce Go 7300/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7300/PCIe/SSE2
-NVIDIA Corporation GeForce Go 7400/PCI/SSE2
-NVIDIA Corporation GeForce Go 7400/PCI/SSE2
-NVIDIA Corporation GeForce Go 7400/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7400/PCIe/SSE2
-NVIDIA Corporation GeForce Go 7600 GT/PCI/SSE2
-NVIDIA Corporation GeForce Go 7600/PCI/SSE2
-NVIDIA Corporation GeForce Go 7600/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7600/PCIe/SSE2
-NVIDIA Corporation GeForce Go 7600/PCIe/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7700/PCI/SSE2
-NVIDIA Corporation GeForce Go 7800 GTX/PCI/SSE2
-NVIDIA Corporation GeForce Go 7800/PCI/SSE2
-NVIDIA Corporation GeForce Go 7800/PCI/SSE2
-NVIDIA Corporation GeForce Go 7900 GS/PCI/SSE2
-NVIDIA Corporation GeForce Go 7900 GS/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce Go 7900 GS/PCIe/SSE2
-NVIDIA Corporation GeForce Go 7900 GTX/PCI/SSE2
-NVIDIA Corporation GeForce Go 7950 GTX/PCI/SSE2
-NVIDIA Corporation GeForce Go 7950 GTX/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce PCX 5300/PCI/SSE2
-NVIDIA Corporation GeForce PCX 5750/PCI/SSE2
-NVIDIA Corporation GeForce2 GTS/AGP/SSE2
-NVIDIA Corporation GeForce2 MX/AGP/SSE2
-NVIDIA Corporation GeForce2 MX/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce2 MX/PCI/SSE2
-NVIDIA Corporation GeForce3/AGP/SSE2
-NVIDIA Corporation GeForce3/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 420 Go 32M/AGP/SSE2
-NVIDIA Corporation GeForce4 420 Go 32M/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 420 Go 32M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 420 Go/AGP/SSE2
-NVIDIA Corporation GeForce4 4200 Go/AGP/SSE2
-NVIDIA Corporation GeForce4 440 Go 64M/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 440 Go 64M/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 440 Go/AGP/SSE2
-NVIDIA Corporation GeForce4 448 Go/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 4000/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 4000/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 4000/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 MX 4000/PCI/SSE2
-NVIDIA Corporation GeForce4 MX 4000/PCI/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 MX 420/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 420/PCI/SSE2
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 MX 440 with AGP8X/PCI/SSE2
-NVIDIA Corporation GeForce4 MX 440/440SE/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 440/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 440/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 MX 440/PCI/SSE2
-NVIDIA Corporation GeForce4 MX 440SE with AGP8X/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 440SE with AGP8X/PCI/SSE2
-NVIDIA Corporation GeForce4 MX 460/AGP/SSE2
-NVIDIA Corporation GeForce4 MX 460/AGP/SSE2/3DNOW!
-NVIDIA Corporation GeForce4 Ti 4200 with AGP8X/AGP/SSE2
-NVIDIA Corporation GeForce4 Ti 4200 with AGP8X/PCI/SSE2
-NVIDIA Corporation GeForce4 Ti 4200/AGP/SSE2
-NVIDIA Corporation GeForce4 Ti 4400/AGP/SSE2
-NVIDIA Corporation GeForce4 Ti 4600/AGP/SSE2
-NVIDIA Corporation GeForce4 Ti 4600/PCI/SSE2
-NVIDIA Corporation ION LE/PCI/SSE2
-NVIDIA Corporation ION LE/integrated/SSE2
-NVIDIA Corporation ION LE/integrated/SSE2
-NVIDIA Corporation ION/PCI/SSE2
-NVIDIA Corporation ION/PCIe/SSE2
-NVIDIA Corporation ION/PCIe/SSE2
-NVIDIA Corporation ION/PCIe/SSE2/3DNOW!
-NVIDIA Corporation ION/integrated/SSE2
-NVIDIA Corporation ION/integrated/SSE2
-NVIDIA Corporation MCP61/PCI/SSE2/3DNOW!
-NVIDIA Corporation MCP7A-O/PCI/SSE2
-NVIDIA Corporation MCP7A-P/PCI/SSE2
-NVIDIA Corporation N10P-GV2/PCI/SSE2
-NVIDIA Corporation N11M-GE2/PCI/SSE2
-NVIDIA Corporation N11M-GE2/PCI/SSE2
-NVIDIA Corporation N12P-GVR-B-A1/PCI/SSE2
-NVIDIA Corporation N12P-GVR-B-A1/PCI/SSE2
-NVIDIA Corporation NB9M-GE1/PCI/SSE2
-NVIDIA Corporation NB9M-GS/PCI/SSE2
-NVIDIA Corporation NV17/AGP/SSE2
-NVIDIA Corporation NVIDIA GeForce 210 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 210 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 310M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 320M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 320M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 6600 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 7300 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 7600 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 7950 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 7950 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8400 GS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8500 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8600 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8600 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8600 GTS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8600M GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8600M GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GTS 512 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GTS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 GTX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 8800 Ultra OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9200M GS OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9400M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9500 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9500 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9600 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9600M GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9600M GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9800 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9800 GT OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9800 GTX+ OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce 9800 GTX+ OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 120 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 120 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 120 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 130 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 130 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 220 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 220 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 240 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 240 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 320M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 330M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 330M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 330M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 430 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 440 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 440 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 520 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 630 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 640 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 640 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 640M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 640M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 640M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 650M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 650M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GT 650M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTS 250 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTS 250 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTS 450 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 260 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 280 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 280 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 285 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 285 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 460 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 470 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 480 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 480 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 550 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 550 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 560 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 560 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 560 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 560 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 570 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 570 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 580 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 650 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 650 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 650 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 650 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660 Ti OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 660M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 670 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 670 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 675MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 675MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 675MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 675MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 680MX OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 775M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce GTX 780M OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce Go 7600 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce Pre-Release D14P2-30 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce Pre-Release GK104 OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce Pre-Release ION OpenGL Engine
-NVIDIA Corporation NVIDIA GeForce Pre-Release Unknown OpenGL Engine
-NVIDIA Corporation NVIDIA NV34MAP OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro 4000 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro 4000 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 4500 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 4500 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 4800 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 4800 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 5600 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 580 OpenGL Engine
-NVIDIA Corporation NVIDIA Quadro FX 770M OpenGL Engine
-NVIDIA Corporation NVS 2100M/PCI/SSE2
-NVIDIA Corporation NVS 2100M/PCIe/SSE2
-NVIDIA Corporation NVS 2100M/PCIe/SSE2
-NVIDIA Corporation NVS 300/PCI/SSE2
-NVIDIA Corporation NVS 300/PCI/SSE2/3DNOW!
-NVIDIA Corporation NVS 300/PCIe/SSE2
-NVIDIA Corporation NVS 310/PCIe/SSE2
-NVIDIA Corporation NVS 310/PCIe/SSE2
-NVIDIA Corporation NVS 3100M/PCI/SSE2
-NVIDIA Corporation NVS 3100M/PCI/SSE2
-NVIDIA Corporation NVS 3100M/PCIe/SSE2
-NVIDIA Corporation NVS 3100M/PCIe/SSE2
-NVIDIA Corporation NVS 315/PCIe/SSE2
-NVIDIA Corporation NVS 4200M/PCI/SSE2
-NVIDIA Corporation NVS 4200M/PCI/SSE2
-NVIDIA Corporation NVS 4200M/PCIe/SSE2
-NVIDIA Corporation NVS 4200M/PCIe/SSE2
-NVIDIA Corporation NVS 510/PCIe/SSE2
-NVIDIA Corporation NVS 510/PCIe/SSE2
-NVIDIA Corporation NVS 5100M/PCI/SSE2
-NVIDIA Corporation NVS 5100M/PCIe/SSE2
-NVIDIA Corporation NVS 5100M/PCIe/SSE2
-NVIDIA Corporation NVS 5200M/PCI/SSE2
-NVIDIA Corporation NVS 5200M/PCIe/SSE2
-NVIDIA Corporation NVS 5200M/PCIe/SSE2
-NVIDIA Corporation NVS 5400M/PCIe/SSE2
-NVIDIA Corporation NVS 5400M/PCIe/SSE2
-NVIDIA Corporation Quadro 1000M/PCI/SSE2
-NVIDIA Corporation Quadro 1000M/PCIe/SSE2
-NVIDIA Corporation Quadro 1000M/PCIe/SSE2
-NVIDIA Corporation Quadro 1100M/PCIe/SSE2
-NVIDIA Corporation Quadro 2000 D/PCI/SSE2
-NVIDIA Corporation Quadro 2000/PCI/SSE2
-NVIDIA Corporation Quadro 2000/PCIe/SSE2
-NVIDIA Corporation Quadro 2000/PCIe/SSE2
-NVIDIA Corporation Quadro 2000D/PCIe/SSE2
-NVIDIA Corporation Quadro 2000M/PCI/SSE2
-NVIDIA Corporation Quadro 2000M/PCIe/SSE2
-NVIDIA Corporation Quadro 3000M/PCI/SSE2
-NVIDIA Corporation Quadro 3000M/PCIe/SSE2
-NVIDIA Corporation Quadro 3000M/PCIe/SSE2
-NVIDIA Corporation Quadro 400/PCI/SSE2
-NVIDIA Corporation Quadro 400/PCI/SSE2
-NVIDIA Corporation Quadro 400/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro 400/PCIe/SSE2
-NVIDIA Corporation Quadro 4000/PCI/SSE2
-NVIDIA Corporation Quadro 4000/PCIe/SSE2
-NVIDIA Corporation Quadro 4000/PCIe/SSE2
-NVIDIA Corporation Quadro 4000M/PCI/SSE2
-NVIDIA Corporation Quadro 4000M/PCI/SSE2
-NVIDIA Corporation Quadro 4000M/PCIe/SSE2
-NVIDIA Corporation Quadro 410/PCIe/SSE2
-NVIDIA Corporation Quadro 5000/PCI/SSE2
-NVIDIA Corporation Quadro 5000/PCIe/SSE2
-NVIDIA Corporation Quadro 5000M/PCI/SSE2
-NVIDIA Corporation Quadro 5000M/PCIe/SSE2
-NVIDIA Corporation Quadro 5010M/PCI/SSE2
-NVIDIA Corporation Quadro 5010M/PCIe/SSE2
-NVIDIA Corporation Quadro 5010M/PCIe/SSE2
-NVIDIA Corporation Quadro 600/PCI/SSE2
-NVIDIA Corporation Quadro 600/PCI/SSE2
-NVIDIA Corporation Quadro 600/PCIe/SSE2
-NVIDIA Corporation Quadro 600/PCIe/SSE2
-NVIDIA Corporation Quadro 600/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro 6000/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1000/AGP/SSE2
-NVIDIA Corporation Quadro FX 1100/AGP/SSE2
-NVIDIA Corporation Quadro FX 1300/PCI/SSE2
-NVIDIA Corporation Quadro FX 1400/PCI/SSE2
-NVIDIA Corporation Quadro FX 1400/PCI/SSE2
-NVIDIA Corporation Quadro FX 1400/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1400/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1400/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 1500/PCI/SSE2
-NVIDIA Corporation Quadro FX 1500/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1500/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 1500M/PCI/SSE2
-NVIDIA Corporation Quadro FX 1600M/PCI/SSE2
-NVIDIA Corporation Quadro FX 1600M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1700/PCI/SSE2
-NVIDIA Corporation Quadro FX 1700/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1700/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1700/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 1700M/PCI/SSE2
-NVIDIA Corporation Quadro FX 1700M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1800/PCI/SSE2
-NVIDIA Corporation Quadro FX 1800/PCIe/SSE2
-NVIDIA Corporation Quadro FX 1800M/PCI/SSE2
-NVIDIA Corporation Quadro FX 1800M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 2000/AGP/SSE2
-NVIDIA Corporation Quadro FX 2500M/PCI/SSE2
-NVIDIA Corporation Quadro FX 2500M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 2700M/PCI/SSE2
-NVIDIA Corporation Quadro FX 2700M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 2800M/PCI/SSE2
-NVIDIA Corporation Quadro FX 2800M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3000/AGP/SSE2
-NVIDIA Corporation Quadro FX 3400/PCI/SSE2
-NVIDIA Corporation Quadro FX 3400/PCI/SSE2
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3450/4000 SDI/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3500/PCI/SSE2
-NVIDIA Corporation Quadro FX 3500/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3500M/PCI/SSE2
-NVIDIA Corporation Quadro FX 350M/PCI/SSE2
-NVIDIA Corporation Quadro FX 3600M/PCI/SSE2
-NVIDIA Corporation Quadro FX 3600M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 360M/PCI/SSE2
-NVIDIA Corporation Quadro FX 360M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 370 Low Profile/PCIe/SSE2
-NVIDIA Corporation Quadro FX 370/PCI/SSE2
-NVIDIA Corporation Quadro FX 370/PCIe/SSE2
-NVIDIA Corporation Quadro FX 370/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 3700/PCI/SSE2
-NVIDIA Corporation Quadro FX 3700/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3700M/PCI/SSE2
-NVIDIA Corporation Quadro FX 3700M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 370M/PCI/SSE2
-NVIDIA Corporation Quadro FX 370M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 380 LP/PCIe/SSE2
-NVIDIA Corporation Quadro FX 380 LP/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 380/PCI/SSE2
-NVIDIA Corporation Quadro FX 380/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3800/PCI/SSE2
-NVIDIA Corporation Quadro FX 3800/PCIe/SSE2
-NVIDIA Corporation Quadro FX 3800M/PCI/SSE2
-NVIDIA Corporation Quadro FX 3800M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 380M/PCI/SSE2
-NVIDIA Corporation Quadro FX 380M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 4500/PCI/SSE2
-NVIDIA Corporation Quadro FX 4500/PCIe/SSE2
-NVIDIA Corporation Quadro FX 4600/PCIe/SSE2
-NVIDIA Corporation Quadro FX 4800/PCI/SSE2
-NVIDIA Corporation Quadro FX 4800/PCIe/SSE2
-NVIDIA Corporation Quadro FX 500/AGP/SSE2
-NVIDIA Corporation Quadro FX 500/FX 600/AGP/SSE2
-NVIDIA Corporation Quadro FX 500/FX 600/AGP/SSE2/3DNOW!
-NVIDIA Corporation Quadro FX 500/FX 600/PCI/SSE2
-NVIDIA Corporation Quadro FX 540/PCI/SSE2
-NVIDIA Corporation Quadro FX 540/PCIe/SSE2
-NVIDIA Corporation Quadro FX 550/PCI/SSE2
-NVIDIA Corporation Quadro FX 550/PCIe/SSE2
-NVIDIA Corporation Quadro FX 5500/PCI/SSE2
-NVIDIA Corporation Quadro FX 560/PCI/SSE2
-NVIDIA Corporation Quadro FX 560/PCIe/SSE2
-NVIDIA Corporation Quadro FX 5600/PCIe/SSE2
-NVIDIA Corporation Quadro FX 570/PCI/SSE2
-NVIDIA Corporation Quadro FX 570/PCIe/SSE2
-NVIDIA Corporation Quadro FX 570M/PCI/SSE2
-NVIDIA Corporation Quadro FX 570M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 580/PCI/SSE2
-NVIDIA Corporation Quadro FX 580/PCIe/SSE2
-NVIDIA Corporation Quadro FX 5800/PCIe/SSE2
-NVIDIA Corporation Quadro FX 770M/PCI/SSE2
-NVIDIA Corporation Quadro FX 770M/PCIe/SSE2
-NVIDIA Corporation Quadro FX 880M/PCI/SSE2
-NVIDIA Corporation Quadro FX 880M/PCIe/SSE2
-NVIDIA Corporation Quadro FX Go1400/PCI/SSE2
-NVIDIA Corporation Quadro FX Go1400/PCI/SSE2
-NVIDIA Corporation Quadro FX Go1400/PCIe/SSE2
-NVIDIA Corporation Quadro FX Go700/AGP/SSE2
-NVIDIA Corporation Quadro K1000/PCIe/SSE2
-NVIDIA Corporation Quadro K1000M/PCIe/SSE2
-NVIDIA Corporation Quadro K2000/PCIe/SSE2
-NVIDIA Corporation Quadro K2000/PCIe/SSE2
-NVIDIA Corporation Quadro K2000D/PCIe/SSE2
-NVIDIA Corporation Quadro K2000M/PCIe/SSE2
-NVIDIA Corporation Quadro K2000M/PCIe/SSE2
-NVIDIA Corporation Quadro K3000M/PCIe/SSE2
-NVIDIA Corporation Quadro K4000/PCIe/SSE2
-NVIDIA Corporation Quadro K4000/PCIe/SSE2
-NVIDIA Corporation Quadro K4000/PCIe/SSE2
-NVIDIA Corporation Quadro K4000M/PCIe/SSE2
-NVIDIA Corporation Quadro K5000/PCIe/SSE2
-NVIDIA Corporation Quadro K5000M/PCIe/SSE2
-NVIDIA Corporation Quadro K600/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 110M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 110M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 130M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 130M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 130M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 135M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 135M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 140M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 140M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 140M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 150M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 150M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 150M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 160M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 160M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/PCI/SSE2
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 210S / GeForce 6150LE/integrated/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 210S / NVIDIA GeForce 6150LE/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 210S/PCI/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 280 PCI-E/PCI/SSE2
-NVIDIA Corporation Quadro NVS 280 SD/AGP/SSE2
-NVIDIA Corporation Quadro NVS 285/PCI/SSE2
-NVIDIA Corporation Quadro NVS 285/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 290/PCI/SSE2
-NVIDIA Corporation Quadro NVS 290/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 290/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 295/PCI/SSE2
-NVIDIA Corporation Quadro NVS 295/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 300M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 320M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 320M/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 420/PCI/SSE2
-NVIDIA Corporation Quadro NVS 420/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 420/PCIe/SSE2/3DNOW!
-NVIDIA Corporation Quadro NVS 450/PCIe/SSE2
-NVIDIA Corporation Quadro NVS 510M/PCI/SSE2
-NVIDIA Corporation Quadro NVS 55/280 PCI/PCI/SSE2
-NVIDIA Corporation Quadro NVS with AGP8X/AGP/SSE2
-NVIDIA Corporation Quadro NVS/AGP/SSE2
-NVIDIA Corporation Quadro PCI-E Series/PCI/SSE2
-NVIDIA Corporation Quadro2 MXR/AGP/SSE2
-NVIDIA Corporation Quadro4 380 XGL/AGP/SSE2
-NVIDIA Corporation Quadro4 550 XGL/AGP/SSE2
-NVIDIA Corporation Quadro4 700 XGL/AGP/SSE2
-NVIDIA Corporation Quadro4 980 XGL/AGP/SSE2
-NVIDIA Corporation RIVA TNT2/AGP/SSE2
-NVIDIA Corporation RIVA TNT2/AGP/SSE2/3DNOW!
-NVIDIA Corporation Stinger/emulated by Quadro FX 500/FX 600/PCI/SSE2
-NVIDIA Corporation nForce 750a SLI/PCI/SSE2
-NVIDIA Corporation nForce 750a SLI/integrated/SSE2
-NVIDIA Corporation nForce 760i SLI/integrated/SSE2
-NVIDIA Corporation nForce 980a/780a SLI/integrated/SSE2
-NVIDIA Corporation unknown board/AGP/SSE2
-NVIDIA Corporation unknown board/PCI/SSE2
-NVIDIA Corporation unknown board/PCI/SSE2/3DNOW!
-NVIDIA Corporation unknown board/PCIe/SSE2
-NVIDIA D9M
-NVIDIA G 103M
-NVIDIA G 105M
-NVIDIA G 110M
-NVIDIA G 120M
-NVIDIA G 200
-NVIDIA G 205M
-NVIDIA G 210
-NVIDIA G 310M
-NVIDIA G 320M
-NVIDIA G 405
-NVIDIA G 410M
-NVIDIA G 610M
-NVIDIA G100
-NVIDIA G100M
-NVIDIA G102M
-NVIDIA G103M
-NVIDIA G105M
-NVIDIA G200
-NVIDIA G210
-NVIDIA G210M
-NVIDIA G73
-NVIDIA G84
-NVIDIA G84
-NVIDIA G92
-NVIDIA G94
-NVIDIA GT 120
-NVIDIA GT 120
-NVIDIA GT 120M
-NVIDIA GT 130
-NVIDIA GT 130
-NVIDIA GT 130
-NVIDIA GT 130M
-NVIDIA GT 140
-NVIDIA GT 140M
-NVIDIA GT 150
-NVIDIA GT 220
-NVIDIA GT 220
-NVIDIA GT 220
-NVIDIA GT 220
-NVIDIA GT 220M
-NVIDIA GT 230
-NVIDIA GT 230
-NVIDIA GT 230M
-NVIDIA GT 240
-NVIDIA GT 240
-NVIDIA GT 240
-NVIDIA GT 240M
-NVIDIA GT 260M
-NVIDIA GT 320
-NVIDIA GT 320M
-NVIDIA GT 320M
-NVIDIA GT 325M
-NVIDIA GT 330
-NVIDIA GT 330
-NVIDIA GT 330
-NVIDIA GT 330M
-NVIDIA GT 330M
-NVIDIA GT 335M
-NVIDIA GT 340
-NVIDIA GT 340M
-NVIDIA GT 415M
-NVIDIA GT 420
-NVIDIA GT 420M
-NVIDIA GT 425M
-NVIDIA GT 430
-NVIDIA GT 430M
-NVIDIA GT 435M
-NVIDIA GT 440
-NVIDIA GT 440M
-NVIDIA GT 445M
-NVIDIA GT 450
-NVIDIA GT 520
-NVIDIA GT 520
-NVIDIA GT 520M
-NVIDIA GT 525M
-NVIDIA GT 530M
-NVIDIA GT 540
-NVIDIA GT 540M
-NVIDIA GT 550
-NVIDIA GT 550M
-NVIDIA GT 555M
-NVIDIA GT 610
-NVIDIA GT 620
-NVIDIA GT 620M
-NVIDIA GT 630
-NVIDIA GT 630M
-NVIDIA GT 635M
-NVIDIA GT 640
-NVIDIA GT 640M
-NVIDIA GT 650
-NVIDIA GT 650M
-NVIDIA GT 650M
-NVIDIA GTS 160M
-NVIDIA GTS 240
-NVIDIA GTS 240
-NVIDIA GTS 250
-NVIDIA GTS 350M
-NVIDIA GTS 360
-NVIDIA GTS 360M
-NVIDIA GTS 450
-NVIDIA GTX 260
-NVIDIA GTX 270
-NVIDIA GTX 275
-NVIDIA GTX 280
-NVIDIA GTX 285
-NVIDIA GTX 290
-NVIDIA GTX 295
-NVIDIA GTX 460
-NVIDIA GTX 460M
-NVIDIA GTX 465
-NVIDIA GTX 470
-NVIDIA GTX 470M
-NVIDIA GTX 480
-NVIDIA GTX 480M
-NVIDIA GTX 485M
-NVIDIA GTX 550
-NVIDIA GTX 560
-NVIDIA GTX 560
-NVIDIA GTX 560
-NVIDIA GTX 560 Ti
-NVIDIA GTX 570
-NVIDIA GTX 580
-NVIDIA GTX 580M
-NVIDIA GTX 590
-NVIDIA GTX 650
-NVIDIA GTX 660
-NVIDIA GTX 660
-NVIDIA GTX 670
-NVIDIA GTX 670
-NVIDIA GTX 670M
-NVIDIA GTX 675M
-NVIDIA GTX 675M
-NVIDIA GTX 680
-NVIDIA GTX 680
-NVIDIA GTX 680M
-NVIDIA GTX 690
-NVIDIA GTX 770
-NVIDIA GTX 770
-NVIDIA GTX TITAN
-NVIDIA GeForce 2
-NVIDIA GeForce 3
-NVIDIA GeForce 4
-NVIDIA GeForce 4 Go
-NVIDIA GeForce 4 MX
-NVIDIA GeForce 4 Ti
-NVIDIA GeForce 6100
-NVIDIA GeForce 6100
-NVIDIA GeForce 6200
-NVIDIA GeForce 6200
-NVIDIA GeForce 6500
-NVIDIA GeForce 6600
-NVIDIA GeForce 6700
-NVIDIA GeForce 6800
-NVIDIA GeForce 7000
-NVIDIA GeForce 7000M
-NVIDIA GeForce 7100
-NVIDIA GeForce 7300
-NVIDIA GeForce 7300
-NVIDIA GeForce 7500
-NVIDIA GeForce 7600
-NVIDIA GeForce 7600
-NVIDIA GeForce 7800
-NVIDIA GeForce 7800
-NVIDIA GeForce 7900
-NVIDIA GeForce 7900
-NVIDIA GeForce 8100
-NVIDIA GeForce 8200
-NVIDIA GeForce 8200M
-NVIDIA GeForce 8300
-NVIDIA GeForce 8300
-NVIDIA GeForce 8400
-NVIDIA GeForce 8400
-NVIDIA GeForce 8400M
-NVIDIA GeForce 8400M
-NVIDIA GeForce 8500
-NVIDIA GeForce 8500
-NVIDIA GeForce 8600
-NVIDIA GeForce 8600M
-NVIDIA GeForce 8600M
-NVIDIA GeForce 8700
-NVIDIA GeForce 8700M
-NVIDIA GeForce 8800
-NVIDIA GeForce 8800M
-NVIDIA GeForce 9100
-NVIDIA GeForce 9100M
-NVIDIA GeForce 9200
-NVIDIA GeForce 9200
-NVIDIA GeForce 9200M
-NVIDIA GeForce 9300
-NVIDIA GeForce 9300
-NVIDIA GeForce 9300M
-NVIDIA GeForce 9300M
-NVIDIA GeForce 9400
-NVIDIA GeForce 9400
-NVIDIA GeForce 9400M
-NVIDIA GeForce 9400M
-NVIDIA GeForce 9500
-NVIDIA GeForce 9500M
-NVIDIA GeForce 9600
-NVIDIA GeForce 9600
-NVIDIA GeForce 9600M
-NVIDIA GeForce 9600M
-NVIDIA GeForce 9700M
-NVIDIA GeForce 9800
-NVIDIA GeForce 9800M
-NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5500
-NVIDIA GeForce FX 5500
-NVIDIA GeForce FX 5600
-NVIDIA GeForce FX 5700
-NVIDIA GeForce FX 5900
-NVIDIA GeForce FX Go5100
-NVIDIA GeForce FX Go5200
-NVIDIA GeForce FX Go5600
-NVIDIA GeForce FX Go5700
-NVIDIA GeForce Go 6
-NVIDIA GeForce Go 6100
-NVIDIA GeForce Go 6200
-NVIDIA GeForce Go 6400
-NVIDIA GeForce Go 6600
-NVIDIA GeForce Go 6800
-NVIDIA GeForce Go 7200
-NVIDIA GeForce Go 7300
-NVIDIA GeForce Go 7400
-NVIDIA GeForce Go 7600
-NVIDIA GeForce Go 7700
-NVIDIA GeForce Go 7800
-NVIDIA GeForce Go 7900
-NVIDIA GeForce PCX
-NVIDIA Generic
-NVIDIA ION
-NVIDIA MCP61
-NVIDIA NV34
-NVIDIA PCI
-NVIDIA Quadro 2000
-NVIDIA Quadro 2000 M/D
-NVIDIA Quadro 2000 M/D
-NVIDIA Quadro 3000M
-NVIDIA Quadro 400
-NVIDIA Quadro 4000
-NVIDIA Quadro 4000
-NVIDIA Quadro 4000M
-NVIDIA Quadro 50x0 M
-NVIDIA Quadro 600
-NVIDIA Quadro 6000
-NVIDIA Quadro FX
-NVIDIA Quadro FX 1500M
-NVIDIA Quadro FX 1800
-NVIDIA Quadro FX 2500M
-NVIDIA Quadro FX 2700M
-NVIDIA Quadro FX 2800M
-NVIDIA Quadro FX 3500
-NVIDIA Quadro FX 3700
-NVIDIA Quadro FX 3800
-NVIDIA Quadro FX 4500
-NVIDIA Quadro FX 4800
-NVIDIA Quadro FX 550
-NVIDIA Quadro FX 770M
-NVIDIA Quadro FX 880M
-NVIDIA Quadro NVS
-NVIDIA Quadro NVS 1xxM
-NVIDIA Quadro NVS 4200M
-NVIDIA Quadro2
-NVIDIA nForce
-Oracle VirtualBox Graphics
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon Barts XT Prototype OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 2600 OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 2600 PRO OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 4670 OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 4850 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 5770 OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6630M 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 ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine
-Parallels and ATI Technologies Inc. Parallels using ATI Radeon X1600 OpenGL Engine
-Parallels and Intel Inc. Parallels using Intel GMA X3100 OpenGL Engine
-Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
-Parallels and Intel Inc. Parallels using Intel HD Graphics 4000 OpenGL Engine
-Parallels and Intel Inc. Parallels using Intel HD Graphics 4000 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 320M OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 8800 GS OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9400 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9400M OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce 9600M GT OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 130 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 330M OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 640 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 640M OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GT 650M OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 570 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 660 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 660 Ti OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 670 OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 680MX OpenGL Engine
-Parallels and NVIDIA Corporation Parallels using NVIDIA GeForce GTX 680MX OpenGL Engine
-PowerVR SGX545
-S3
-S3 Graphics K8M800/MMX/K3D
-S3 Graphics KM400/KN400/MMX/SSE
-S3 Graphics P8M800/MMX/SSE
-S3 Graphics Unknown Device/MMX/SSE
-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 DeltaChrome
-S3 Graphics, Incorporated VIA Chrome9 HC IGP
-S3 Graphics, Incorporated VIA Chrome9 HC IGP
-S3 Graphics, Incorporated VIA Chrome9 HC3 IGP
-S3 Graphics, Incorporated VIA Chrome9 HD Pro IGP
-S3 Graphics, Incorporated VIA Chrome9 HD Pro IGP
-SiS
-SiS 3D-Analyze v2.3 - http://www.tommti-systems.com
-SiS 650/M650 VGA
-SiS 650/M650 VGA / MMX/SSE2 /AGP
-SiS 661 VGA
-SiS 662 VGA
-SiS 760 VGA
-SiS 761GX VGA
-SiS Mirage Graphics3
-SiS Mirage Graphics3
-SiS Xabre VGA
-Tungsten Graphics, Inc Mesa DRI Intel(R) 845G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 852GM/855GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 852GM/855GM x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 865G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 865G x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915G
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915G x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM 20061017 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 915GM x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945G x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GM GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GM x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 945GME x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GM x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965GME/GLE x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) 965Q x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G33 GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G33 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) G41 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD GEM 20091221 2009Q4
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGD x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGDNG_M GEM 20091221 2009Q4
-Tungsten Graphics, Inc Mesa DRI Intel(R) IGDNG_M GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Desktop
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Desktop x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Desktop
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Desktop x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Mobile
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q35 GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q35 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Q45/Q43 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Desktop
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Desktop x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Intel(R) Sandybridge Server
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20091221 2009Q4
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset x86/MMX/SSE2
-Tungsten Graphics, Inc Mesa DRI Mobile Intel(R) GM45 Express Chipset x86/MMX/SSE2
-Tungsten Graphics, Inc. Mesa DRI R100 (RS200 4437) x86/MMX/SSE2 NO-TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R100 (RV200 4C57) TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R100 (RV200 4C57) x86/MMX/SSE2 TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) x86/MMX/SSE2 TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5960) x86/MMX+/3DNow!+/SSE2 TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5960) x86/MMX/SSE2 TCL DRI2
-Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5961) x86/MMX/SSE2 TCL DRI2
-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: RELEASE;
-VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE;
-VMware, Inc. Gallium 0.4 on i915 (chipset: 945GME)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x209)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x209)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x300)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x300)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x301)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x301)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x302)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 0x302)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 128 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 128 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 256 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.2, 256 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits)
-VMware, Inc. Gallium 0.4 on llvmpipe
-X.Org Gallium 0.4 on AMD ARUBA
-X.Org Gallium 0.4 on AMD ARUBA
-X.Org Gallium 0.4 on AMD BARTS
-X.Org Gallium 0.4 on AMD BARTS
-X.Org Gallium 0.4 on AMD CAICOS
-X.Org Gallium 0.4 on AMD CAPE VERDE
-X.Org Gallium 0.4 on AMD CEDAR
-X.Org Gallium 0.4 on AMD CYPRESS
-X.Org Gallium 0.4 on AMD JUNIPER
-X.Org Gallium 0.4 on AMD PALM
-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 RV610
-X.Org Gallium 0.4 on AMD RV610
-X.Org Gallium 0.4 on AMD RV620
-X.Org Gallium 0.4 on AMD RV630
-X.Org Gallium 0.4 on AMD RV635
-X.Org Gallium 0.4 on AMD RV670
-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 RV770
-X.Org Gallium 0.4 on AMD SUMO
-X.Org Gallium 0.4 on AMD SUMO
-X.Org Gallium 0.4 on AMD SUMO2
-X.Org Gallium 0.4 on AMD TURKS
-X.Org R300 Project Gallium 0.4 on ATI R350
-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 RS480
-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 RS600
-X.Org R300 Project Gallium 0.4 on ATI RS690
-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 RV380
-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 RV530
-X.Org R300 Project Gallium 0.4 on ATI RV530
-X.Org R300 Project Gallium 0.4 on ATI RV570
-XGI Volari V3
-http://TitaniumGL.tk NVIDIA GeForce GTX 690/3999M VRAM/TitaniumGL/4 THREADs/3D GRAPHICS ACCELERATION/4 TMUs
-nouveau Gallium 0.4 on NV34
-nouveau Gallium 0.4 on NV34
-nouveau Gallium 0.4 on NV42
-nouveau Gallium 0.4 on NV42
-nouveau Gallium 0.4 on NV44
-nouveau Gallium 0.4 on NV44
-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 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 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
-nouveau Gallium 0.4 on NVAF
-nouveau Gallium 0.4 on NVC0
-nouveau Gallium 0.4 on NVC0
-nouveau Gallium 0.4 on NVC1
-nouveau Gallium 0.4 on NVC1
-nouveau Gallium 0.4 on NVC3
-nouveau Gallium 0.4 on NVC4
-nouveau Gallium 0.4 on NVC4
-nouveau Gallium 0.4 on NVCE
-nouveau Gallium 0.4 on NVCE
-nouveau Gallium 0.4 on NVCF
-nouveau Gallium 0.4 on NVCF
-nouveau Gallium 0.4 on NVD9
-nouveau Gallium 0.4 on NVD9
-nouveau Gallium 0.4 on NVE4
-nouveau Gallium 0.4 on NVE6
-nouveau Gallium 0.4 on NVE7
-nouveau Gallium 0.4 on NVE7
diff --git a/indra/newview/tests/gpus_unmatched.txt b/indra/newview/tests/gpus_unmatched.txt
deleted file mode 100644
index 083f29aaa0..0000000000
--- a/indra/newview/tests/gpus_unmatched.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-ATI NO MATCH
-ATI Technologies NO MATCH
-ATI Technologies Inc. NO MATCH
-ATI Technologies Inc. (DNA-ATi 5.1.7.5x32) ATI Mobility Radeon HD 2 NO MATCH
-ATI Technologies Inc. ATI Mobility Radeon Graphics NO MATCH
-ATI Technologies Inc. ATI Radeon Graphics Processor NO MATCH
-Intel NO MATCH
-NVIDIA Corporation /PCI/SSE2 NO MATCH
-NVIDIA Corporation Quadro PCI-E Series/PCI/SSE2 NO MATCH
diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp
index 5d9c2f718b..ff4a4daf6d 100644
--- a/indra/newview/tests/lldir_stub.cpp
+++ b/indra/newview/tests/lldir_stub.cpp
@@ -28,7 +28,7 @@
LLDir::LLDir() {}
LLDir::~LLDir() {}
-BOOL LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask) { return true; }
+S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask) { return 1; }
void LLDir::setChatLogsDir(const std::string &path) {}
void LLDir::setPerAccountChatLogsDir(const std::string &) {}
void LLDir::updatePerAccountChatLogsDir() {}
diff --git a/indra/newview/tests/llglslshader_stub.cpp b/indra/newview/tests/llglslshader_stub.cpp
deleted file mode 100644
index 537434a6d8..0000000000
--- a/indra/newview/tests/llglslshader_stub.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @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/llpipeline_stub.cpp b/indra/newview/tests/llpipeline_stub.cpp
deleted file mode 100644
index 62b71e51e5..0000000000
--- a/indra/newview/tests/llpipeline_stub.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @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 c8fa2fbd6f..9f3d7454ad 100644
--- a/indra/newview/tests/llremoteparcelrequest_test.cpp
+++ b/indra/newview/tests/llremoteparcelrequest_test.cpp
@@ -27,7 +27,6 @@
#include "linden_common.h"
#include "../test/lltut.h"
-#if 0
#include "../llremoteparcelrequest.h"
@@ -40,16 +39,6 @@ namespace {
const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111");
}
-LLCurl::Responder::Responder() { }
-LLCurl::Responder::~Responder() { }
-void LLCurl::Responder::httpFailure() { }
-void LLCurl::Responder::httpSuccess() { }
-void LLCurl::Responder::httpCompleted() { }
-void LLCurl::Responder::failureResult(S32 status, const std::string& reason, const LLSD& content) { }
-void LLCurl::Responder::successResult(const LLSD& content) { }
-void LLCurl::Responder::completeResult(S32 status, const std::string& reason, const LLSD& content) { }
-std::string LLCurl::Responder::dumpResponse() const { return "(failure)"; }
-void LLCurl::Responder::completedRaw(LLChannelDescriptors const &,std::shared_ptr<LLBufferArray> 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) { }
@@ -136,4 +125,3 @@ namespace tut
processor.processParcelInfoReply(gMessageSystem, NULL);
}
}
-#endif
diff --git a/indra/newview/tests/llsechandler_basic_test.cpp b/indra/newview/tests/llsechandler_basic_test.cpp
index f4ee15319e..acbadbc85a 100644
--- a/indra/newview/tests/llsechandler_basic_test.cpp
+++ b/indra/newview/tests/llsechandler_basic_test.cpp
@@ -773,7 +773,7 @@ namespace tut
LLMachineID::getUniqueID(unique_id, sizeof(unique_id));
LLXORCipher cipher2(unique_id, sizeof(unique_id));
cipher2.encrypt(&binary_data[0], 16);
- std::ofstream temp_file("sechandler_settings.tmp", std::ofstream::binary);
+ llofstream temp_file("sechandler_settings.tmp", std::ofstream::binary);
temp_file.write((const char *)&binary_data[0], binary_data.size());
temp_file.close();
@@ -846,7 +846,7 @@ namespace tut
// rewrite the initial file to verify reloads
handler = NULL;
- std::ofstream temp_file2("sechandler_settings.tmp", std::ofstream::binary);
+ llofstream temp_file2("sechandler_settings.tmp", std::ofstream::binary);
temp_file2.write((const char *)&binary_data[0], binary_data.size());
temp_file2.close();
diff --git a/indra/newview/tests/llsky_stub.cpp b/indra/newview/tests/llsky_stub.cpp
deleted file mode 100644
index 8faca2665a..0000000000
--- a/indra/newview/tests/llsky_stub.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @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/lltextureinfo_test.cpp b/indra/newview/tests/lltextureinfo_test.cpp
index d491ce0f65..58451a1069 100644
--- a/indra/newview/tests/lltextureinfo_test.cpp
+++ b/indra/newview/tests/lltextureinfo_test.cpp
@@ -32,6 +32,13 @@
// Dependencies
#include "../lltextureinfodetails.cpp"
+#include "../llagent.h"
+#include "../llappviewer.h"
+#include "../llmeshrepository.h"
+#include "../lltexturecache.h"
+#include "../lltexturefetch.h"
+#include "../llvocache.h"
+
// Tut header
#include "../test/lltut.h"
@@ -43,6 +50,39 @@
// * 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.
+LLControlGroup gSavedSettings("Global");
+
+void send_texture_stats_to_sim(const LLSD& texture_stats) {}
+
+LLAgent gAgent;
+LLAgent::LLAgent() : mAgentAccess(nullptr) { }
+LLAgent::~LLAgent() { }
+LLViewerRegion* LLAgent::getRegion() const { return nullptr; }
+
+LLTextureCache* LLAppViewer::sTextureCache = nullptr;
+LLTextureFetch* LLAppViewer::sTextureFetch = nullptr;
+
+U32 LLMeshRepository::sCacheReads = 0;
+std::atomic<U32> LLMeshRepository::sCacheWrites = 0;
+
+S64 LLTextureCache::sCacheMaxTexturesSize = 0; // no limit
+
+void LLTextureFetch::getStateStats(U32* cache_read, U32* cache_write, U32* res_wait)
+{
+ *cache_read = 0;
+ *cache_write = 0;
+ *res_wait = 0;
+}
+
+LLVOCache::LLVOCache(bool read_only) :
+ mInitialized(false),
+ mReadOnly(read_only),
+ mNumEntries(0),
+ mCacheSize(1),
+ mEnabled(true)
+{}
+
+LLVOCache::~LLVOCache() {}
// End Stubbing
// -------------------------------------------------------------------------------------------
@@ -89,7 +129,7 @@ namespace tut
void textureinfo_object_t::test<1>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
ensure("have we crashed?", true);
}
@@ -98,7 +138,7 @@ namespace tut
void textureinfo_object_t::test<2>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID nonExistant("3a0efa3b-84dc-4e17-9b8c-79ea028850c1");
ensure(!tex_info.has(nonExistant));
@@ -109,7 +149,7 @@ namespace tut
void textureinfo_object_t::test<3>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID id("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestStartTime(id, 200);
@@ -122,7 +162,7 @@ namespace tut
void textureinfo_object_t::test<4>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID nonExistant("3a0efa3b-84dc-4e17-9b8c-79ea028850c1");
ensure_equals(tex_info.getRequestStartTime(nonExistant), 0);
@@ -133,7 +173,7 @@ namespace tut
void textureinfo_object_t::test<5>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID nonExistant("3a0efa3b-84dc-4e17-9b8c-79ea028850c1");
ensure_equals(tex_info.getRequestCompleteTime(nonExistant), 0);
@@ -144,7 +184,7 @@ namespace tut
void textureinfo_object_t::test<6>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID id("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestSize(id, 600);
@@ -157,7 +197,7 @@ namespace tut
void textureinfo_object_t::test<7>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID id("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestType(id, LLTextureInfoDetails::REQUEST_TYPE_HTTP);
@@ -170,7 +210,7 @@ namespace tut
void textureinfo_object_t::test<8>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID id("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestType(id, LLTextureInfoDetails::REQUEST_TYPE_UDP);
@@ -183,7 +223,7 @@ namespace tut
void textureinfo_object_t::test<9>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
LLUUID id("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestOffset(id, 1234);
@@ -195,11 +235,13 @@ namespace tut
template<> template<>
void textureinfo_object_t::test<10>()
{
+ skip("Test skipped due to use of LLTrace stats failing in test");
+
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
S32 requestStartTimeOne = 200;
- S32 requestEndTimeOne = 400;
+ U64Microseconds requestEndTimeOne(400);
S32 requestSizeOne = 1024;
S32 requestSizeOneBits = requestSizeOne * 8;
LLUUID id1("10e65d70-46fd-429f-841a-bf698e9424d3");
@@ -209,7 +251,7 @@ namespace tut
tex_info.setRequestCompleteTimeAndLog(id1, requestEndTimeOne);
U32 requestStartTimeTwo = 100;
- U32 requestEndTimeTwo = 500;
+ U64Microseconds requestEndTimeTwo(500);
U32 requestSizeTwo = 2048;
S32 requestSizeTwoBits = requestSizeTwo * 8;
LLUUID id2("10e65d70-46fd-429f-841a-bf698e9424d4");
@@ -218,8 +260,9 @@ namespace tut
tex_info.setRequestType(id2, LLTextureInfoDetails::REQUEST_TYPE_HTTP);
tex_info.setRequestCompleteTimeAndLog(id2, requestEndTimeTwo);
- S32 averageBitRate = ((requestSizeOneBits/(requestEndTimeOne - requestStartTimeOne)) +
- (requestSizeTwoBits/(requestEndTimeTwo - requestStartTimeTwo))) / 2;
+ S32 averageBitRate = ((requestSizeOneBits / (S32(requestEndTimeOne.value()) - requestStartTimeOne)) +
+ (requestSizeTwoBits / (S32(requestEndTimeTwo.value()) - requestStartTimeTwo))) /
+ 2;
S32 totalBytes = requestSizeOne + requestSizeTwo;
@@ -234,10 +277,10 @@ namespace tut
void textureinfo_object_t::test<11>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
S32 requestStartTimeOne = 200;
- S32 requestEndTimeOne = 400;
+ U64Microseconds requestEndTimeOne(400);
S32 requestSizeOne = 1024;
LLUUID id1("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestStartTime(id1, requestStartTimeOne);
@@ -246,7 +289,7 @@ namespace tut
tex_info.setRequestCompleteTimeAndLog(id1, requestEndTimeOne);
tex_info.getAverages();
- tex_info.reset();
+ tex_info.resetTextureStatistics();
LLSD results = tex_info.getAverages();
ensure_equals("is average bits per second correct", results["bits_per_second"].asInteger(), 0);
ensure_equals("is total bytes is correct", results["bytes_downloaded"].asInteger(), 0);
@@ -258,10 +301,10 @@ namespace tut
void textureinfo_object_t::test<12>()
{
LLTextureInfo tex_info;
- tex_info.setUpLogging(true, true);
+ tex_info.setLogging(true);
S32 requestStartTimeOne = 200;
- S32 requestEndTimeOne = 400;
+ U64Microseconds requestEndTimeOne(400);
S32 requestSizeOne = 1024;
LLUUID id1("10e65d70-46fd-429f-841a-bf698e9424d3");
tex_info.setRequestStartTime(id1, requestStartTimeOne);
diff --git a/indra/newview/tests/lltexturestatsuploader_test.cpp b/indra/newview/tests/lltexturestatsuploader_test.cpp
deleted file mode 100644
index 782a4892b9..0000000000
--- a/indra/newview/tests/lltexturestatsuploader_test.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- * @file lltexturestatsuploader_test.cpp
- * @author Si
- * @date 2009-05-27
- *
- * $LicenseInfo:firstyear=2006&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$
- */
-
-// Precompiled header: almost always required for newview cpp files
-#include "../llviewerprecompiledheaders.h"
-// Class to test
-#include "../lltexturestatsuploader.h"
-// Dependencies
-
-// Tut header
-#include "../test/lltut.h"
-
-// -------------------------------------------------------------------------------------------
-// Stubbing: Declarations required to link and run the class being tested
-// Notes:
-// * Add here stubbed implementation of the few classes and methods used in the class to be tested
-// * Add as little as possible (let the link errors guide you)
-// * 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.
-
-#include "boost/intrusive_ptr.hpp"
-void boost::intrusive_ptr_add_ref(LLCurl::Responder*){}
-void boost::intrusive_ptr_release(LLCurl::Responder* p){}
-const F32 HTTP_REQUEST_EXPIRY_SECS = 0.0f;
-
-static std::string most_recent_url;
-static LLSD most_recent_body;
-
-void LLHTTPClient::post(
- const std::string& url,
- const LLSD& body,
- ResponderPtr,
- const LLSD& headers,
- const F32 timeout)
-{
- // set some sensor code
- most_recent_url = url;
- most_recent_body = body;
- return;
-}
-
-// End Stubbing
-// -------------------------------------------------------------------------------------------
-
-// -------------------------------------------------------------------------------------------
-// TUT
-// -------------------------------------------------------------------------------------------
-
-namespace tut
-{
- // Test wrapper declarations
- struct texturestatsuploader_test
- {
- // Constructor and destructor of the test wrapper
- texturestatsuploader_test()
- {
- most_recent_url = "some sort of default text that should never match anything the tests are expecting!";
- LLSD blank_llsd;
- most_recent_body = blank_llsd;
- }
- ~texturestatsuploader_test()
- {
- }
- };
-
- // Tut templating thingamagic: test group, object and test instance
- typedef test_group<texturestatsuploader_test> texturestatsuploader_t;
- typedef texturestatsuploader_t::object texturestatsuploader_object_t;
- tut::texturestatsuploader_t tut_texturestatsuploader("LLTextureStatsUploader");
-
-
- // ---------------------------------------------------------------------------------------
- // Test functions
- // Notes:
- // * Test as many as you possibly can without requiring a full blown simulation of everything
- // * The tests are executed in sequence so the test instance state may change between calls
- // * Remember that you cannot test private methods with tut
- // ---------------------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------------------
- // Test the LLTextureInfo
- // ---------------------------------------------------------------------------------------
-
-
- // Test instantiation
- template<> template<>
- void texturestatsuploader_object_t::test<1>()
- {
- LLTextureStatsUploader tsu;
- LL_INFOS() << &tsu << LL_ENDL;
- ensure("have we crashed?", true);
- }
-
- // does it call out to the provided url if we ask it to?
- template<> template<>
- void texturestatsuploader_object_t::test<2>()
- {
- LLTextureStatsUploader tsu;
- std::string url = "http://blahblahblah";
- LLSD texture_stats;
- tsu.uploadStatsToSimulator(url, texture_stats);
- ensure_equals("did the right url get called?", most_recent_url, url);
- ensure_equals("did the right body get sent?", most_recent_body, texture_stats);
- }
-
- // does it not call out to the provided url if we send it an ungranted cap?
- template<> template<>
- void texturestatsuploader_object_t::test<3>()
- {
- LLTextureStatsUploader tsu;
-
- // this url left intentionally blank to mirror
- // not getting a cap in the caller.
- std::string url_for_ungranted_cap = "";
-
- LLSD texture_stats;
- std::string most_recent_url_before_test = most_recent_url;
- tsu.uploadStatsToSimulator(url_for_ungranted_cap, texture_stats);
-
- ensure_equals("hopefully no url got called!", most_recent_url, most_recent_url_before_test);
- }
-
- // does it call out if the data is empty?
- // should it even do that?
-}
-
diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp
index 8049e67fc5..a78235c5f7 100644
--- a/indra/newview/tests/llversioninfo_test.cpp
+++ b/indra/newview/tests/llversioninfo_test.cpp
@@ -29,6 +29,8 @@
#include "../llversioninfo.h"
+#include "llversioninfovars.h"
+
#include <iostream>
// LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The
diff --git a/indra/newview/tests/llvieweroctree_stub.cpp b/indra/newview/tests/llvieweroctree_stub.cpp
index caf9299a2f..e850efd9ac 100644
--- a/indra/newview/tests/llvieweroctree_stub.cpp
+++ b/indra/newview/tests/llvieweroctree_stub.cpp
@@ -35,7 +35,7 @@ bool LLViewerOctreeCull::checkObjects(const OctreeNode* branch, const LLViewerOc
void LLViewerOctreeCull::processGroup(LLViewerOctreeGroup* group) {}
-bool LLViewerOctreeGroup::boundObjects(BOOL empty, LLVector4a& minOut, LLVector4a& maxOut) { return false; }
+bool LLViewerOctreeGroup::boundObjects(bool empty, LLVector4a& minOut, LLVector4a& maxOut) { return false; }
void LLViewerOctreeGroup::unbound() {}
void LLViewerOctreeGroup::rebound() {}
void LLViewerOctreeGroup::handleInsertion(const TreeNode* node, LLViewerOctreeEntry* obj) {}
@@ -55,8 +55,8 @@ void LLOcclusionCullingGroup::doOcclusion(LLCamera* camera, const LLVector4a* sh
void LLOcclusionCullingGroup::setOcclusionState(U32 state, S32 mode) {}
void LLOcclusionCullingGroup::clearOcclusionState(U32 state, S32 mode) {}
void LLOcclusionCullingGroup::handleChildAddition(const OctreeNode *parent, OctreeNode *child) {}
-BOOL LLOcclusionCullingGroup::isRecentlyVisible() const { return FALSE; }
-BOOL LLOcclusionCullingGroup::isAnyRecentlyVisible() const { return FALSE; }
+bool LLOcclusionCullingGroup::isRecentlyVisible() const { return false; }
+bool LLOcclusionCullingGroup::isAnyRecentlyVisible() const { return false; }
LLViewerOctreeGroup::LLViewerOctreeGroup(OctreeNode* node) : mOctreeNode(node) {}
@@ -81,6 +81,6 @@ LLViewerOctreePartition::LLViewerOctreePartition() = default;
LLViewerOctreePartition::~LLViewerOctreePartition() = default;
void LLViewerOctreePartition::cleanup() {}
-BOOL LLViewerOctreeGroup::isRecentlyVisible() const { return FALSE; }
+bool LLViewerOctreeGroup::isRecentlyVisible() const { return false; }
diff --git a/indra/newview/tests/llviewershadermgr_stub.cpp b/indra/newview/tests/llviewershadermgr_stub.cpp
deleted file mode 100644
index 5d6cb33019..0000000000
--- a/indra/newview/tests/llviewershadermgr_stub.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @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/llwldaycycle_stub.cpp b/indra/newview/tests/llwldaycycle_stub.cpp
deleted file mode 100644
index cd82e9b200..0000000000
--- a/indra/newview/tests/llwldaycycle_stub.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @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
deleted file mode 100644
index 2838ddb719..0000000000
--- a/indra/newview/tests/llwlparammanager_test.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/**
- * @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
deleted file mode 100644
index e6c4221895..0000000000
--- a/indra/newview/tests/llwlparamset_stub.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @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/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp
index ee6281fc24..c77ce367c5 100644
--- a/indra/newview/tests/llxmlrpclistener_test.cpp
+++ b/indra/newview/tests/llxmlrpclistener_test.cpp
@@ -62,8 +62,8 @@ namespace tut
// These variables are required by machinery used by
// LLXMLRPCTransaction. The values reflect reality for this test
// executable; hopefully these values are correct.
- gSavedSettings.declareBOOL("BrowserProxyEnabled", FALSE, "", LLControlVariable::PERSIST_NO); // don't persist
- gSavedSettings.declareBOOL("NoVerifySSLCert", TRUE, "", LLControlVariable::PERSIST_NO); // don't persist
+ gSavedSettings.declareBOOL("BrowserProxyEnabled", false, "", LLControlVariable::PERSIST_NO); // don't persist
+ gSavedSettings.declareBOOL("NoVerifySSLCert", true, "", LLControlVariable::PERSIST_NO); // don't persist
}
// LLEventPump listener signature
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 8e59c26316..f86dd81913 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1333,33 +1333,33 @@ class LinuxManifest(ViewerManifest):
super(LinuxManifest, self).construct()
pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
+ if "package_dir" in self.args:
+ pkgdir = self.args['package_dir']
+
relpkgdir = os.path.join(pkgdir, "lib", "release")
debpkgdir = os.path.join(pkgdir, "lib", "debug")
self.path("licenses-linux.txt","licenses.txt")
with self.prefix("linux_tools"):
- self.path("client-readme.txt","README-linux.txt")
- self.path("client-readme-voice.txt","README-linux-voice.txt")
- self.path("client-readme-joystick.txt","README-linux-joystick.txt")
self.path("wrapper.sh","secondlife")
with self.prefix(dst="etc"):
self.path("handle_secondlifeprotocol.sh")
self.path("register_secondlifeprotocol.sh")
self.path("refresh_desktop_app_entry.sh")
- self.path("launch_url.sh")
self.path("install.sh")
with self.prefix(dst="bin"):
self.path("secondlife-bin","do-not-directly-run-secondlife-bin")
- self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
self.path2basename("../llplugin/slplugin", "SLPlugin")
#this copies over the python wrapper script, associated utilities and required libraries, see SL-321, SL-322 and SL-323
- with self.prefix(src="../viewer_components/manager", dst=""):
- self.path("*.py")
+ #with self.prefix(src="../viewer_components/manager", dst=""):
+ # self.path("*.py")
# recurses, packaged again
self.path("res-sdl")
+ # We copy ll_icon.BMP in CMakeLists.txt to newview/res-sdl and this will let the above self.path step take care of copying
+ # the correct branded icon
# Get the icons based on the channel type
icon_path = self.icon_path()
print("DEBUG: icon_path '%s'" % icon_path)
@@ -1368,32 +1368,69 @@ class LinuxManifest(ViewerManifest):
with self.prefix(dst="res-sdl") :
self.path("secondlife_256.BMP","ll_icon.BMP")
+ with self.prefix(src=os.path.join(self.args['build'], os.pardir, "llwebrtc" ), dst="lib"):
+ self.path("libllwebrtc.so")
+
# plugins
- with self.prefix(src="../media_plugins", dst="bin/llplugin"):
- self.path("gstreamer010/libmedia_plugin_gstreamer010.so",
- "libmedia_plugin_gstreamer.so")
- self.path2basename("libvlc", "libmedia_plugin_libvlc.so")
+ with self.prefix(dst="bin/llplugin"):
+ with self.prefix(src=os.path.join(self.args['build'], os.pardir, 'media_plugins')):
+ with self.prefix(src='cef'):
+ self.path("libmedia_plugin_cef.so")
+
+ # Media plugins - LibVLC
+ with self.prefix(src='libvlc'):
+ self.path("libmedia_plugin_libvlc.so")
+
+ # GStreamer 1.0 Media Plugin
+ with self.prefix(src='gstreamer10'):
+ self.path("libmedia_plugin_gstreamer10.so")
+
+ # Media plugins - Example (useful for debugging - not shipped with release viewer)
+ if self.channel_type() != 'release':
+ with self.prefix(src='example'):
+ self.path("libmedia_plugin_example.so")
+
- with self.prefix(src=os.path.join(pkgdir, 'lib', 'vlc', 'plugins'), dst="bin/llplugin/vlc/plugins"):
- self.path( "plugins.dat" )
- self.path( "*/*.so" )
+ with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="lib"):
+ self.path( "libcef.so" )
+ self.path( "libEGL*" )
+ self.path( "libvulkan*" )
+ self.path( "libvk_swiftshader*" )
+ self.path( "libGLESv2*" )
- with self.prefix(src=os.path.join(pkgdir, 'lib' ), dst="lib"):
- self.path( "libvlc*.so*" )
+ with self.prefix(src=os.path.join(pkgdir, 'bin', 'release'), dst="bin"):
+ self.path( "chrome-sandbox" )
+ self.path( "dullahan_host" )
- # llcommon
- if not self.path("../llcommon/libllcommon.so", "lib/libllcommon.so"):
- print("Skipping llcommon.so (assuming llcommon was linked statically)")
+ with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="bin"):
+ self.path( "v8_context_snapshot.bin" )
+ self.path( "vk_swiftshader_icd.json")
+
+ with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="lib"):
+ self.path( "v8_context_snapshot.bin" )
+ self.path( "vk_swiftshader_icd.json")
+
+ with self.prefix(src=os.path.join(pkgdir, 'resources'), dst="lib"):
+ self.path( "chrome_100_percent.pak" )
+ self.path( "chrome_200_percent.pak" )
+ self.path( "resources.pak" )
+ self.path( "icudtl.dat" )
+
+ with self.prefix(src=os.path.join(pkgdir, 'resources', 'locales'), dst=os.path.join('lib', 'locales')):
+ self.path("*.pak")
self.path("featuretable_linux.txt")
self.path("cube.dae")
- with self.prefix(src=pkgdir):
+ with self.prefix(src=pkgdir, dst="bin"):
self.path("ca-bundle.crt")
def package_finish(self):
installer_name = self.installer_base_name()
+ # When running as a GitHub Action job, RUNNER_TEMP is defined as the tmp dir
+ RUNNER_TEMP = os.getenv('RUNNER_TEMP')
+
self.strip_binaries()
# Fix access permissions
@@ -1408,8 +1445,18 @@ class LinuxManifest(ViewerManifest):
# temporarily move directory tree so that it has the right
# name in the tarfile
realname = self.get_dst_prefix()
- tempname = self.build_path_of(installer_name)
- self.run_command(["mv", realname, tempname])
+ versionedName = self.build_path_of(installer_name)
+
+ tarName = versionedName + ".tar.xz"
+
+ # If using a github runner we divert packaging a little. Considering this wil be a VM/docker image
+ # we can just pack the final installer into RUNNER_TEMP and not into the usual stop we'd pick when
+ # not building a GHA release
+ if RUNNER_TEMP:
+ tarName = os.path.join(RUNNER_TEMP, self.package_file)
+
+ self.run_command(["mv", realname, versionedName])
+
try:
# only create tarball if it's a release build.
if self.args['buildtype'].lower() == 'release':
@@ -1417,87 +1464,54 @@ class LinuxManifest(ViewerManifest):
# security etc.
self.run_command(['tar', '-C', self.get_build_prefix(),
'--numeric-owner', '-cJf',
- tempname + '.tar.xz', installer_name])
+ tarName, installer_name])
+ self.set_github_output_path('viewer_app', tarName)
else:
print("Skipping %s.tar.xz for non-Release build (%s)" % \
(installer_name, self.args['buildtype']))
finally:
- self.run_command(["mv", tempname, realname])
+ self.run_command(["mv", versionedName, realname])
def strip_binaries(self):
if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
- print("* Going strip-crazy on the packaged binaries, since this is a RELEASE build")
+ print("* Going strip-crazy on the packaged binaries, since this is a Release build")
# makes some small assumptions about our packaged dir structure
self.run_command(
["find"] +
[os.path.join(self.get_dst_prefix(), dir) for dir in ('bin', 'lib')] +
['-type', 'f', '!', '-name', '*.py',
+ '!', '-name', '*.pak',
+ '!', '-name', '*.bin',
+ '!', '-name', '*.dat',
+ '!', '-name', '*.crt',
+ '!', '-name', '*.dll',
+ '!', '-name', '*.lib',
+ '!', '-name', '*.json',
'!', '-name', 'update_install', '-exec', 'strip', '-S', '{}', ';'])
-class Linux_i686_Manifest(LinuxManifest):
- address_size = 32
+class Linux_x86_64_Manifest(LinuxManifest):
+ address_size = 64
def construct(self):
- super(Linux_i686_Manifest, self).construct()
+ super(Linux_x86_64_Manifest, self).construct()
pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
+ if "package_dir" in self.args:
+ pkgdir = self.args['package_dir']
+
relpkgdir = os.path.join(pkgdir, "lib", "release")
- debpkgdir = os.path.join(pkgdir, "lib", "debug")
+ #debpkgdir = os.path.join(pkgdir, "lib", "debug")
with self.prefix(src=relpkgdir, dst="lib"):
- self.path("libdb*.so")
- self.path("libuuid.so*")
- self.path("libSDL-1.2.so.*")
- self.path("libdirectfb-1.*.so.*")
- self.path("libfusion-1.*.so.*")
- self.path("libdirect-1.*.so.*")
- self.path("libopenjp2.so*")
- self.path("libdirectfb-1.4.so.5")
- self.path("libfusion-1.4.so.5")
- self.path("libdirect-1.4.so.5*")
+ self.path("libSDL*.so.*")
+
self.path("libalut.so*")
self.path("libopenal.so*")
- # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs
- # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1
- # and libfontconfig.so. Before we added support for library-file
- # wildcards, though, this self.path() call specifically named
- # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I
- # (nat) changed the call to self.path("libfontconfig.so.*"), we
- # ended up with the libfontconfig.so.1 symlink in the target
- # directory as well. But guess what! At least on Ubuntu 10.04,
- # certain viewer fonts look terrible with libfontconfig.so.1
- # present in the target directory. Removing that symlink suffices
- # to improve them. I suspect that means we actually do better when
- # the viewer fails to find our packaged libfontconfig.so*, falling
- # back on the system one instead -- but diagnosing and fixing that
- # is a bit out of scope for the present project. Meanwhile, this
- # particular wildcard specification gets us exactly what the
- # previous call did, without having to explicitly state the
- # version number.
- self.path("libfontconfig.so.*.*")
-
- # Include libfreetype.so. but have it work as libfontconfig does.
- self.path("libfreetype.so.*.*")
- try:
- self.path("libtcmalloc.so*") #formerly called google perf tools
- pass
- except:
- print("tcmalloc files not found, skipping")
- pass
+ if self.args['discord'] == 'ON':
+ self.path("libdiscord_partner_sdk.so*")
self.strip_binaries()
-
-
-class Linux_x86_64_Manifest(LinuxManifest):
- address_size = 64
-
- def construct(self):
- super(Linux_x86_64_Manifest, self).construct()
-
- # support file for valgrind debug tool
- self.path("secondlife-i686.supp")
-
################################################################
if __name__ == "__main__":