@@ -229,7 +229,7 @@ function SpliceReportByArchAndVendor(reportContainer) {
229
229
230
230
const NvidiaArchitectures = {
231
231
Fermi : 0x000000C0 , // GF10x (most 4xx)
232
- Fermi1 : 0x000000D0 , // GF11x (most 5xx)
232
+ Fermi2 : 0x000000D0 , // GF11x (most 5xx)
233
233
Kepler : 0x000000E0 , // GK10x (most 6xx)
234
234
Kepler1 : 0x000000F0 , // GK110 (Titan, 780)
235
235
Kepler2 : 0x00000100 , // GK2xx (Tegra, Jetson, Tesla K80, 720, etc.)
@@ -256,21 +256,87 @@ function SpliceReportByArchAndVendor(reportContainer) {
256
256
// filter variants except Maxwell, should have same D3D12 features (though not CUDA features)
257
257
if ( arch == "Kepler2" || arch == "Kepler1" )
258
258
arch = "Kepler" ;
259
- else if ( arch == "Fermi1 " )
259
+ else if ( arch == "Fermi2 " )
260
260
arch = "Fermi" ; // unconfirmed
261
261
else if ( arch == "Volta1" )
262
262
arch = "Volta" ; // unconfirmed
263
263
264
264
ArchsPerVendor . Nvidia . add ( arch ? arch : report . NvPhysicalGpuHandle [ "NvAPI_GPU_GetArchInfo - NV_GPU_ARCH_INFO::architecture_id" ] . toString ( ) ) ;
265
265
}
266
+ else if ( vendorId . startsWith ( "NVIDIA" ) ) {
267
+ // old GPUs for which nvapi doesn't work, or we don't know whether it works
268
+ switch ( report . DXGI_ADAPTER_DESC3 . Description ) {
269
+ case "NVIDIA GeForce 615" :
270
+ case "NVIDIA GeForce GT 415M" :
271
+ case "NVIDIA GeForce GT 420" :
272
+ case "NVIDIA GeForce GT 420M" :
273
+ case "NVIDIA GeForce GT 425M" :
274
+ case "NVIDIA GeForce GT 430" :
275
+ case "NVIDIA GeForce GT 435M" :
276
+ case "NVIDIA GeForce GT 440" :
277
+ case "NVIDIA GeForce GT 445M" :
278
+ case "NVIDIA GeForce GT 525M" :
279
+ case "NVIDIA GeForce GT 530" :
280
+ case "NVIDIA GeForce GT 555M" :
281
+ case "NVIDIA GeForce GTS 450" :
282
+ case "NVIDIA GeForce GTX 460M" :
283
+ case "NVIDIA GeForce GTX 465" :
284
+ case "NVIDIA GeForce GTX 470" :
285
+ case "NVIDIA GeForce GTX 470M" :
286
+ case "NVIDIA GeForce GTX 480" :
287
+ case "NVIDIA GeForce GTX 480M" :
288
+ case "NVIDIA GeForce GTX 485M" :
289
+ case "NVIDIA NVS 5400M" :
290
+ case "NVIDIA Quadro 1000M" :
291
+ case "NVIDIA Quadro 2000" :
292
+ case "NVIDIA Quadro 2000M" :
293
+ case "NVIDIA Quadro 3000M" :
294
+ case "NVIDIA Quadro 4000" :
295
+ case "NVIDIA Quadro 4000M" :
296
+ case "NVIDIA Quadro 5000M" :
297
+ case "NVIDIA Quadro 600" :
298
+ case "NVIDIA Quadro 6000" :
299
+ arch = "Fermi" ;
300
+ break ;
301
+ case "NVIDIA GeForce 410M" :
302
+ case "NVIDIA GeForce 510" :
303
+ case "NVIDIA GeForce 605" :
304
+ case "NVIDIA GeForce 705A" :
305
+ case "NVIDIA GeForce GT 520" :
306
+ case "NVIDIA GeForce GT 520MX" :
307
+ case "NVIDIA GeForce GT 545" :
308
+ case "NVIDIA GeForce GT 550M" :
309
+ case "NVIDIA GeForce GT 625" :
310
+ case "NVIDIA GeForce GT 705" :
311
+ case "NVIDIA GeForce GTX 550 Ti" :
312
+ case "NVIDIA GeForce GTX 555" :
313
+ case "NVIDIA GeForce GTX 560" :
314
+ case "NVIDIA GeForce GTX 560 SE" :
315
+ case "NVIDIA GeForce GTX 560 Ti" :
316
+ case "NVIDIA GeForce GTX 560M" :
317
+ case "NVIDIA GeForce GTX 570" :
318
+ case "NVIDIA GeForce GTX 570M" :
319
+ case "NVIDIA GeForce GTX 580" :
320
+ case "NVIDIA GeForce GTX 580M" :
321
+ case "NVIDIA GeForce GTX 590" :
322
+ case "NVIDIA GeForce GTX 670M" :
323
+ case "NVIDIA GeForce GTX 675M" :
324
+ case "NVIDIA NVS 315" :
325
+ case "NVIDIA NVS 4200M" :
326
+ case "NVIDIA Quadro 5010M" :
327
+ arch = "Fermi2" ;
328
+ break ;
329
+ }
330
+ if ( arch ) {
331
+ ArchsPerVendor . Nvidia . add ( arch ) ;
332
+ }
333
+ }
266
334
else if ( vendorId . startsWith ( "Qualcomm" ) ) {
267
335
268
- if ( / S n a p d r a g o n \( R \) X ( P l u s ) | ( E l i t e ) - X 1 .* / . test ( report . DXGI_ADAPTER_DESC3 . Description ) )
269
- {
336
+ if ( / S n a p d r a g o n \( R \) X ( P l u s ) | ( E l i t e ) - X 1 .* / . test ( report . DXGI_ADAPTER_DESC3 . Description ) ) {
270
337
arch = "X1" ;
271
338
}
272
- if ( / Q u a l c o m m \( R \) A d r e n o \( T M \) X 1 .* / . test ( report . DXGI_ADAPTER_DESC3 . Description ) )
273
- {
339
+ if ( / Q u a l c o m m \( R \) A d r e n o \( T M \) X 1 .* / . test ( report . DXGI_ADAPTER_DESC3 . Description ) ) {
274
340
arch = "X1" ;
275
341
}
276
342
else if ( report . DXGI_ADAPTER_DESC3 . Description . includes ( "8cx" ) ) {
@@ -493,7 +559,7 @@ function AddFilterPanel(container) {
493
559
archAgeSlider . type = "range" ;
494
560
archAgeSlider . min = 2010 ;
495
561
archAgeSlider . max = new Date ( ) . getFullYear ( ) ;
496
- archAgeSlider . value = 2017 ;
562
+ archAgeSlider . value = ( new Date ( ) . getFullYear ( ) ) - 9 ;
497
563
archAgeSlider . step = 1 ;
498
564
let archAgeLabel = document . createElement ( "label" ) ;
499
565
archAgeLabel . htmlFor = "archAgeSlider" ;
@@ -663,7 +729,7 @@ function OverrideCell(tableRow, archName, featureName, featureValue, newestDrive
663
729
}
664
730
else if ( featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS5.RaytracingTier" && archName == "Pascal" ) {
665
731
AddCellReal ( "Tier 1.0 *" , tableRow , "Pascal have (software emulated) Tier 1.0 raytracing support, but only if the card has 6GB of VRAM or more" ) ;
666
- return true ;
732
+ return true ;
667
733
}
668
734
else if ( featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS5.RaytracingTier" && archName == "Turing" ) {
669
735
AddCellReal ( "Tier 1.1 *" , tableRow , "Within Turing architecture there are:\nRTX 20 series and Quadro RTX cards with hardware Tier 1.1 support\nGTX 16 series cards with >= 6GB of VRAM with software emulated Tier 1.0 support\nGTX 16 series cards with < 6GB of VRAM with no raytracing support at all" ) ;
@@ -693,9 +759,8 @@ function AddCell(featureRow, archName, featureName) {
693
759
AddCellReal ( MakeHumanReadableForTable ( featureName , featureValue ) , featureRow ) ;
694
760
}
695
761
696
- function AddSpecialRow ( featureRow , featureName ) {
697
- if ( featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS19.RasterizerDesc2Supported" )
698
- {
762
+ function AddSpecialRow ( featureRow , featureName ) {
763
+ if ( featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS19.RasterizerDesc2Supported" ) {
699
764
AddCellReal ( "Always supported" , featureRow , "Given new enough Agility SDK, you can always use it independenly of GPU or driver." , "bottomcenter" , ArchToOutputCount ( ) ) ;
700
765
return true ;
701
766
}
@@ -732,8 +797,7 @@ function AddRow(tbody, featureName, featureShortName) {
732
797
733
798
featureRow . appendChild ( featureHeader ) ;
734
799
735
- if ( AddSpecialRow ( featureRow , featureName ) )
736
- {
800
+ if ( AddSpecialRow ( featureRow , featureName ) ) {
737
801
tbody . appendChild ( featureRow ) ;
738
802
return ;
739
803
}
0 commit comments