From 544abef39e1aa5fe27968e927831de7020454440 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 30 Nov 2013 20:41:56 -0500 Subject: [PATCH] Wow, those cards are old... Remove detection for cards that are don't support at LEAST DirectX 8. There's no way they would even be able to get past Direct3DCreate9, so we shouldn't need to worry about them... I hope. --- Sources/Plasma/Apps/plClient/plClient.cpp | 7 - .../plPipeline/hsG3DDeviceSelector.cpp | 381 +----------------- 2 files changed, 21 insertions(+), 367 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/plClient.cpp b/Sources/Plasma/Apps/plClient/plClient.cpp index 9c21bb94..a588f75c 100644 --- a/Sources/Plasma/Apps/plClient/plClient.cpp +++ b/Sources/Plasma/Apps/plClient/plClient.cpp @@ -2281,13 +2281,6 @@ void plClient::IDetectAudioVideoSettings() plPipeline::fDefaultPipeParams.VideoQuality = pixelshaders ? 2 : 1; plPipeline::fDefaultPipeParams.VSync = false; - // card specific overrides - if(rec->GetDriverDesc() && strstr(rec->GetDriverDesc(), "FX 5200")) - { - plPipeline::fDefaultPipeParams.AntiAliasingAmount = 0; - } - - int val = 0; hsStream *stream = nil; hsUNIXStream s; diff --git a/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp b/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp index 1c1baca0..f43332e3 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp +++ b/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp @@ -1218,28 +1218,12 @@ namespace enum { kDefaultChipset = 0x00, - kSavage4Chipset, - kATIRageFuryChipset, - kATIRageProChipset, - kNVidiaTNTChipset, - kNVidiaGeForceChipset, - kMatroxG400Chipset, kIntelI810Chipset, - kSavage2000Chipset, kS3GenericChipset, - kATIGenericChipset, - kMatroxGenericChipset, kKYROChipset, - kSavage3DChipset, kATIRadeonChipset, - kATIR7X00Chipset, - kATIR7500Chipset, kATIR8X00Chipset, kMatroxParhelia, - kNVidiaGeForce2Chipset, - kNVidiaGeForce3Chipset, - kNVidiaGeForce4MXChipset, - kNVidiaGeForce4Chipset, kNVidiaGeForceFXChipset }; @@ -1255,8 +1239,6 @@ namespace } FogTweakTable; FogTweakTable dsDefaultFogVals = { 0, 0, 254.0 / 255.0, 0.5f, 0.15f, 0.5f, 0.15f }; - FogTweakTable dsATIFogVals = { 0.1f, 0.1f, 254.0 / 255.0, 0.85f, 0.15f, 0.5f, 0.15f }; - FogTweakTable dsS3DFogVals = { 0, 0, 254.0 / 255.0, 1.0f, 1.0f, 1.0f, 1.0f }; FogTweakTable dsi810FogVals = { 0, 0, 254.0 / 255.0, 0.6f, 0.15f, 0.4f, 0.15f }; FogTweakTable dsRadeonFogVals = { 0, 0, 254.0 / 255.0, 0.7f, 0.15f, 0.5f, 0.2f }; @@ -1271,24 +1253,9 @@ namespace FogTweakTable *fFogTweaks; } CFTable; - uint32_t dsSavageCapsClr[] = { - 4, // First integer is always the length - hsG3DDeviceSelector::kCapsCompressTextures, - hsG3DDeviceSelector::kCapsFogExp, - hsG3DDeviceSelector::kCapsFogExp2, - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - - uint32_t dsSavageCapsSet[] = { + uint32_t dsGeForceFXCapsSet[] = { 1, // First integer is always the length - hsG3DDeviceSelector::kCapsBadYonStuff }; - - uint32_t dsSavage2kCapsClr[] = { - 5, // First integer is always the length - hsG3DDeviceSelector::kCapsCompressTextures, - hsG3DDeviceSelector::kCapsPixelFog, - hsG3DDeviceSelector::kCapsFogExp, - hsG3DDeviceSelector::kCapsFogExp2, - hsG3DDeviceSelector::kCapsDoesSmallTextures }; + hsG3DDeviceSelector::kCapsNoAA }; uint32_t dsS3GenerCapsClr[] = { 4, // First integer is always the length @@ -1297,59 +1264,6 @@ namespace hsG3DDeviceSelector::kCapsFogExp2, hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsATIFuryCapsClr[] = { - 3, // First integer is always the length - hsG3DDeviceSelector::kCapsFogExp, - hsG3DDeviceSelector::kCapsFogExp2, - hsG3DDeviceSelector::kCapsPixelFog }; - - uint32_t dsATIRageCapsClr[] = { - 4, // First integer is always the length - hsG3DDeviceSelector::kCapsFogExp, - hsG3DDeviceSelector::kCapsFogExp2, - hsG3DDeviceSelector::kCapsDoesSmallTextures, - hsG3DDeviceSelector::kCapsPixelFog }; - - uint32_t dsATIGenerCapsClr[] = { - 4, // First integer is always the length - hsG3DDeviceSelector::kCapsPixelFog, - hsG3DDeviceSelector::kCapsFogExp, - hsG3DDeviceSelector::kCapsFogExp2, - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - - uint32_t dsATIRadeonCapsSet[] = { - 2, // First integer is always the length - hsG3DDeviceSelector::kCapsBadManaged, - hsG3DDeviceSelector::kCapsShareDepth - }; - - uint32_t dsATIRadeonCapsClr[] = { - 2, // First integer is always the length - hsG3DDeviceSelector::kCapsWBuffer, - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - - uint32_t dsATIR7X00CapsSet[] = { - 4, // First integer is always the length - hsG3DDeviceSelector::kCapsCantShadow, - hsG3DDeviceSelector::kCapsBadManaged, - hsG3DDeviceSelector::kCapsShareDepth, - hsG3DDeviceSelector::kCapsNoAniso - }; - - uint32_t dsATIR7500CapsSet[] = { - 5, // First integer is always the length - hsG3DDeviceSelector::kCapsMaxUVWSrc2, - hsG3DDeviceSelector::kCapsCantShadow, - hsG3DDeviceSelector::kCapsBadManaged, - hsG3DDeviceSelector::kCapsShareDepth, - hsG3DDeviceSelector::kCapsNoAniso - }; - - uint32_t dsATIR7X00CapsClr[] = { - 2, // First integer is always the length - hsG3DDeviceSelector::kCapsWBuffer, - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsATIR8X00CapsSet[] = { 2, // First integer is always the length hsG3DDeviceSelector::kCapsBadManaged, @@ -1361,18 +1275,10 @@ namespace hsG3DDeviceSelector::kCapsWBuffer, hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsTNTCapsClr[] = { - 1, // First integer is always the length - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsDefaultCapsClr[] = { 1, // First integer is always the length hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsMG400CapsClr[] = { - 1, // First integer is always the length - hsG3DDeviceSelector::kCapsDoesSmallTextures }; - uint32_t dsKYROCapsClr[] = { 2, // First integer is always the length hsG3DDeviceSelector::kCapsDoesSmallTextures, @@ -1382,59 +1288,14 @@ namespace 1, // First integer is always the length hsG3DDeviceSelector::kCapsNoKindaSmallTexs }; - uint32_t dsMatroxParheliaSet[] = { - 1, - hsG3DDeviceSelector::kCapsNoAA }; - - uint32_t dsGeForceSet[] = { - 2, - hsG3DDeviceSelector::kCapsCantProj, - hsG3DDeviceSelector::kCapsDoubleFlush }; - - uint32_t dsGeForce2Set[] = { - 1, - hsG3DDeviceSelector::kCapsDoubleFlush }; - - uint32_t dsGeForce3Set[] = { - 1, - hsG3DDeviceSelector::kCapsSingleFlush }; - - uint32_t dsGeForce4MXSet[] = { - 1, - hsG3DDeviceSelector::kCapsSingleFlush }; - - uint32_t dsGeForce4Set[] = { - 1, - hsG3DDeviceSelector::kCapsSingleFlush - }; - CFTable dsCFTable[] = { - // Chipset ID // F2Set // F2Clear // ZSuck // MaxLayers // LODBias // Fog Value Tables - { kDefaultChipset, nil, dsDefaultCapsClr, 0, 0, 0, &dsDefaultFogVals }, - { kATIRageFuryChipset, nil, dsATIFuryCapsClr, 4.25f, 1, 0, &dsATIFogVals }, - { kATIRageProChipset, nil, dsATIRageCapsClr, 4.25f, 1, 0, &dsATIFogVals }, - { kATIGenericChipset, nil, dsATIGenerCapsClr, 4.25f, 1, 0, &dsATIFogVals }, - { kNVidiaTNTChipset, nil, dsTNTCapsClr, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForce2Chipset,dsGeForce2Set, nil, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForce3Chipset,dsGeForce3Set, nil, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForce4MXChipset,dsGeForce4MXSet, nil, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForce4Chipset,dsGeForce4Set, nil, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForceChipset,dsGeForceSet, nil, 0, 0, 0, &dsDefaultFogVals }, - { kNVidiaGeForceFXChipset,nil, nil, 0, 0, 0, &dsDefaultFogVals }, - { kMatroxG400Chipset, nil, dsMG400CapsClr, 3.25f, 0, 0, &dsDefaultFogVals }, - { kMatroxParhelia, dsMatroxParheliaSet,nil, 0, 0, 0, &dsDefaultFogVals }, - { kMatroxGenericChipset,nil, dsMG400CapsClr, 3.25f, 0, 0, &dsDefaultFogVals }, - { kIntelI810Chipset, nil, dsDefaultCapsClr, 4.5f, 1, -0.5f, &dsi810FogVals }, - { kSavage4Chipset, dsSavageCapsSet, dsSavageCapsClr, 4.0f, 1, 0, &dsDefaultFogVals }, // LOD bias should be -0.5 here - { kSavage2000Chipset, dsSavageCapsSet, dsSavage2kCapsClr, 4.0f, 1, 0, &dsDefaultFogVals }, - { kS3GenericChipset, dsSavageCapsSet, dsS3GenerCapsClr, 4.0f, 1, 0, &dsDefaultFogVals }, - { kKYROChipset, dsKYROCapsSet, dsKYROCapsClr, -151.0f, 1, 0, &dsDefaultFogVals }, - { kSavage3DChipset, nil, dsDefaultCapsClr, 0, 0, 0, &dsS3DFogVals }, - { kATIRadeonChipset, dsATIRadeonCapsSet, dsATIRadeonCapsClr, 0, 0, 0, &dsRadeonFogVals }, - { kATIR7X00Chipset, dsATIR7X00CapsSet, dsATIR7X00CapsClr, 3.f, 2, 0, &dsRadeonFogVals }, - { kATIR7500Chipset, dsATIR7500CapsSet, dsATIR7X00CapsClr, 3.f, 2, 0, &dsRadeonFogVals }, - { kATIR8X00Chipset, dsATIR8X00CapsSet, dsATIR8X00CapsClr, 0, 0, 0, &dsRadeonFogVals }, + // Chipset ID // F2Set // F2Clear // ZSuck // MaxLayers // LODBias // Fog Value Tables + { kDefaultChipset, nullptr, dsDefaultCapsClr, 0, 0, 0, &dsDefaultFogVals }, + { kNVidiaGeForceFXChipset, dsGeForceFXCapsSet, nullptr, 0, 0, 0, &dsDefaultFogVals }, + { kIntelI810Chipset, nullptr, dsDefaultCapsClr, 4.5f, 1, -0.5f, &dsi810FogVals }, + { kKYROChipset, dsKYROCapsSet, dsKYROCapsClr, -151.0f, 1, 0, &dsDefaultFogVals }, + { kATIR8X00Chipset, dsATIR8X00CapsSet, dsATIR8X00CapsClr, 0, 0, 0, &dsRadeonFogVals }, }; }; @@ -1471,202 +1332,47 @@ void hsG3DDeviceSelector::IFudgeDirectXDevice( hsG3DDeviceRecord &record, hsAssert( strlen( szDesc ) < sizeof( desc ), "D3D device description longer than expected!" ); hsStrcpy( desc, szDesc ); hsStrLower( desc ); - - //// S3-based Cards /////////////////////////////////////////////////////// - /// Detect Savage 4 chipset - if( deviceID == 0x00008a22 || stricmp( szDriver, "s3savg4.dll" ) == 0 || - ( strstr( desc, "diamond" ) != nil && strstr( desc, "stealth iii" ) != nil ) || - strstr( desc, "savage4 " ) != nil ) - { - /// Yup, Savage 4. - hsStatusMessage( "== Using fudge factors for a Savage 4 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a Savage 4 chipset" ); - ISetFudgeFactors( kSavage4Chipset, record ); - } - /// Detect Savage 2000 chipset - else if( deviceID == 0x00009102 || - stricmp( szDriver, "s3sav2k.dll" ) == 0 || - ( strstr( desc, "diamond" ) != nil && - strstr( desc, "viperii" ) != nil ) || - strstr( desc, "savage2000 " ) != nil ) - { - /// Yup, Savage 2000. - hsStatusMessage( "== Using fudge factors for a Savage 2000 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a Savage 2000 chipset" ); - ISetFudgeFactors( kSavage2000Chipset, record ); - } - /// Detect Savage3D chipset - else if( deviceID == 0x00008a20 || - stricmp( szDriver, "s3_6.dll" ) == 0 || - strstr( desc, "savage3d" ) != nil ) - { - /// Yup, Savage3D. - hsStatusMessage( "== Using fudge factors for a Savage3D chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a Savage3D chipset" ); - ISetFudgeFactors( kSavage3DChipset, record ); - } - /// Detect Generic S3 chipset - else if( ( strncmp( szDriver, "s3", 2 ) == 0 ) || ( strstr( desc, "savage" ) != nil ) ) - { - /// Yup, Generic S3. - hsStatusMessage( "== Using fudge factors for a generic S3 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a generic S3 chipset" ); - ISetFudgeFactors( kS3GenericChipset, record ); - } - //// ATI-based Cards ////////////////////////////////////////////////////// - /// Detect ATI Radeon HD - else if (strstr( desc, "radeon hd" ) != nullptr) - { - hsStatusMessage( "== Using fudge factors for an ATI Radeon HD chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an ATI Radeon HD chipset" ); - ISetFudgeFactors( kDefaultChipset, record ); - } - - /// Detect ATI Rage 128 Pro chipset - else if( ( deviceID == 0x00005046 && // Normal ATI Rage 128 Pro detection - ( stricmp( szDriver, "ati2dvaa.dll" ) == 0 - || strstr( desc, "rage 128 pro" ) != nil ) ) || - ( deviceID == 0x00005246 && // ATI All-in-wonder--same chipset, diff values - ( stricmp( szDriver, "ati3draa.dll" ) == 0 - || strstr( desc, "all-in-wonder 128" ) != nil ) ) ) - { - hsStatusMessage( "== Using fudge factors for an ATI Rage 128 Pro chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an ATI Rage 128 Pro chipset" ); - ISetFudgeFactors( kATIRageProChipset, record ); - } - /// Detect(detest?) ATI Rage FURY MAXX chipset - else if( deviceID == 0x00005046 && - ( stricmp( szDriver, "ati3drau.dll" ) == 0 - || strstr( desc, "rage fury" ) != nil ) ) - { - hsStatusMessage( "== Using fudge factors for an ATI Rage Fury MAXX chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an ATI Rage Fury MAXX chipset" ); - ISetFudgeFactors( kATIRageFuryChipset, record ); - } /// Detect ATI Radeon chipset // We will probably need to differentiate between different Radeons at some point in // the future, but not now. - else if( // deviceID == 0x00005144 && - ( stricmp( szDriver, "ati2dvag.dll" ) == 0 - || strstr( desc, "radeon" ) != nil ) ) + if (stricmp(szDriver, "ati2dvag.dll") == 0 || strstr(desc, "radeon") != nullptr) { int series = 0; const char* str = strstr(desc, "radeon"); if( str ) str += strlen("radeon"); - else - { - str = strstr(desc, "all-in-wonder"); - if( str ) - str += strlen("all-in-wonder"); - } if( str ) { if( 1 == sscanf(str, "%d", &series) ) { - if( (series == 7500) || (series == 7200) ) - { - hsStatusMessage( "== Using fudge factors for ATI Radeon 7200/7500 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for ATI Radeon 7200/7500 chipset" ); - ISetFudgeFactors( kATIR7500Chipset, record ); - } - else - if( (series >= 7000) && (series < 8000) ) - { - hsStatusMessage( "== Using fudge factors for ATI Radeon 7X00 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for ATI Radeon 7X00 chipset" ); - ISetFudgeFactors( kATIR7X00Chipset, record ); - } - else if( (series >= 8000) && (series < 9000) ) { hsStatusMessage( "== Using fudge factors for ATI Radeon 8X00 chipset ==\n" ); plDemoDebugFile::Write( " Using fudge factors for ATI Radeon 8X00 chipset" ); ISetFudgeFactors( kATIR8X00Chipset, record ); } - else + else if (series >= 9000) { - series = 0; + hsStatusMessage("== Using fudge factors for ATI Radeon 9X00 chipset ==\n"); + plDemoDebugFile::Write(" Using fudge factors for ATI Radeon 9X00 chipset"); + ISetFudgeFactors(kATIRadeonChipset, record); } - } - else - { - series = 0; - - // Skip white space - while( *str && (*str <= 0x32) ) - str++; - - // I've still never seen either of these, so I'm just going by ATI's site. - // Don't have the option of using device-id's. - if( (str[0] == 'v') && (str[1] == 'e') ) + else { - // Got an alias here. If it's an All-in-Wonder VE, it's really a 7500. - // If it's a Radeon VE, it's really a 7000. - if( strstr(desc, "radeon") ) - series = 7000; - else if( strstr(desc, "all-in-wonder") ) - series = 7500; + series = 0; } } } - if( !series ) + if (series == 0) { - hsStatusMessage( "== Using fudge factors for ATI Radeon chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for ATI Radeon chipset" ); - ISetFudgeFactors( kATIRadeonChipset, record ); + hsStatusMessage("== Using fudge factors for ATI/AMD Radeon X/HD/R chipset ==\n"); + plDemoDebugFile::Write(" Using fudge factors for ATI/AMD Radeon X/HD/R chipset"); + ISetFudgeFactors(kDefaultChipset, record); } } - /// Detect generic ATI chipset - else if( ( strncmp( szDriver, "ati", 3 ) == 0 ) || ( strstr( desc, "ati " ) != nil ) ) - { - hsStatusMessage( "== Using fudge factors for a generic ATI chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a generic ATI chipset" ); - ISetFudgeFactors( kATIGenericChipset, record ); - } - - //// Matrox-based Cards /////////////////////////////////////////////////// - else if( (deviceID == 0x527) - || strstr(desc, "parhelia") ) - { - hsStatusMessage( "== Using fudge factors for a Matrox Parhelia chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a Matrox Millenium G400 chipset" ); - ISetFudgeFactors( kMatroxParhelia, record ); - } - /// Detect Matrox G400 chipset - else if( deviceID == 0x00000525 && - ( stricmp( szDriver, "g400d.dll" ) == 0 - || ( strstr( desc, "matrox" ) != nil && strstr( desc, "g400" ) != nil ) ) ) - { - hsStatusMessage( "== Using fudge factors for a Matrox Millenium G400 chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a Matrox Millenium G400 chipset" ); - ISetFudgeFactors( kMatroxG400Chipset, record ); - } - /// Detect generic Matrox chipset - else if( strstr( desc, "matrox" ) != nil ) - { - hsStatusMessage( "== Using fudge factors for a generic Matrox chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for a generic Matrox chipset" ); - ISetFudgeFactors( kMatroxGenericChipset, record ); - } //// Other Cards ////////////////////////////////////////////////////////// - /// Detect NVidia RIVA TNT chipset - else if( deviceID == 0x00000020 && - ( stricmp( szDriver, "nvdd32.dll" ) == 0 - || strstr( desc, "nvidia riva tnt" ) != nil ) ) - { - hsStatusMessage( "== Using fudge factors for an NVidia RIVA TNT chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia RIVA TNT chipset" ); - ISetFudgeFactors( kNVidiaTNTChipset, record ); - if( record.GetMemoryBytes() < 16 * 1024 * 1024 ) - { - hsStatusMessage( "== (also fudging memory up to 16MB) ==\n" ); - plDemoDebugFile::Write( " (also fudging memory up to 16MB)" ); - record.SetMemoryBytes( 16 * 1024 * 1024 ); - } - } /// Detect Intel i810 chipset else if( deviceID == 0x00007125 && ( stricmp( szDriver, "i81xdd.dll" ) == 0 @@ -1683,58 +1389,13 @@ void hsG3DDeviceSelector::IFudgeDirectXDevice( hsG3DDeviceRecord &record, plDemoDebugFile::Write( " Using fudge factors for a KYRO chipset" ); ISetFudgeFactors( kKYROChipset, record ); } - /// Detect for a GeForce-class card. We can be loose here because we want - /// to get ALL GeForce/2/256 cards - else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce2" ) != nil ) - { - hsStatusMessage( "== Using fudge factors for an NVidia GeForce2-based chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForce2-based chipset" ); - ISetFudgeFactors( kNVidiaGeForce2Chipset, record ); - } - else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce3" ) != nil ) - { - hsStatusMessage( "== Using fudge factors for an NVidia GeForce3-based chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForce3-based chipset" ); - ISetFudgeFactors( kNVidiaGeForce3Chipset, record ); - } - else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce4 mx" ) != nil ) - { - hsStatusMessage( "== Using fudge factors for an NVidia GeForce4MX-based chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForce4MX-based chipset" ); - ISetFudgeFactors( kNVidiaGeForce4MXChipset, record ); - } - else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce4" ) != nil ) - { - hsStatusMessage( "== Using fudge factors for an NVidia GeForce4-based chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForce4-based chipset" ); - ISetFudgeFactors( kNVidiaGeForce4Chipset, record ); - } - else if( - strstr( desc, "nvidia" ) && strstr( desc, "geforce" ) - && ( - (deviceID == 0x101) - ||(deviceID == 0x100) - ||strstr(desc, "256") - ) - ) - { - hsStatusMessage( "== Using fudge factors for an NVidia GeForce-based chipset ==\n" ); - plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForce-based chipset" ); - ISetFudgeFactors( kNVidiaGeForceChipset, record ); - } - else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce" ) != nil ) + /// Detect for a GeForc FX card. We only need to nerf the really low end one. + else if( strstr( desc, "nvidia" ) != nil && strstr( desc, "geforce fx 5200" ) != nil ) { hsStatusMessage( "== Using fudge factors for an NVidia GeForceFX-based chipset ==\n" ); plDemoDebugFile::Write( " Using fudge factors for an NVidia GeForceFX-based chipset" ); ISetFudgeFactors( kNVidiaGeForceFXChipset, record ); } - /// Detect for a TNT-based card and force it to >= 16MB memory, so we always use it - else if( strstr( desc, "tnt" ) != nil && record.GetMemoryBytes() < 16 * 1024 * 1024 ) - { - hsStatusMessage( "== NVidia TNT-based card detected. Fudging memory reading to 16MB ==\n" ); - plDemoDebugFile::Write( " NVidia TNT-based card detected. Fudging memory reading to 16MB" ); - record.SetMemoryBytes( 16 * 1024 * 1024 ); - } /// Default fudge values else