fastfetch icon indicating copy to clipboard operation
fastfetch copied to clipboard

[FEAT] Detect GDDR VRAM type for dedicated GPUs.

Open Get-Newsletters-Int opened this issue 1 year ago • 6 comments

Wanted features:

Detect what type of VRAM dedicated GPUs are using, for example GDDR5, GDDR6, GDDR6X etc.

Motivation:

It is important information about graphics cards, that companies making them often show prominently on the model page.

Get-Newsletters-Int avatar Jun 04 '24 12:06 Get-Newsletters-Int

Doesn't seem to be possible because no public APIs of Nvidia / AMD / Intel drivers report this info AFAIK.

Do you know any open-source program can report it?

CarterLi avatar Jun 05 '24 11:06 CarterLi

Nope, I think only GPU-Z detects it, but no idea how, maybe they don't and they do a database lookup instead.

Get-Newsletters-Int avatar Jun 05 '24 13:06 Get-Newsletters-Int

There is no API for this, so you need a database that can infer the VRAM type from the GPU model name. Luckily, pretty much all GPUs of a same model use a single VRAM type (e.g. all GTX 1080s use GDDR5X).

A few GPUs have different VRAM types depending on VRAM size (such as the Radeon HD 7750 or GeForce GT 1030), but this practice hasn't been seen in GPUs released since 2016 or so. In this case, I'd return the most commonly found VRAM type (GDDR5 and DDR3 respectively). If you really want to, you could get fancy by picking the correct VRAM type depending on VRAM size:

  • HD 7750 1 GB: GDDR5
  • HD 7750 2 GB: DDR3
  • GT 1030 1 GB: GDDR5
  • GT 1030 2 GB: DDR3

Calinou avatar Jun 16 '24 21:06 Calinou

Integration with GPU-Z via SDK would be amazing tbh.

There is no API for this

I think it is (but more likely uses DB). TechPowerUp says: "We also offer a GPU-Z SDK, which is provided as simple-to-use DLL with full feature set that can be used from C/C++/.NET and others."

Maybe somebody could write to them and get SDK? It should include some sort of a database too, so later we should be able to create linux version using it

Kseen715 avatar Aug 13 '24 06:08 Kseen715

Maybe somebody could write to them and get SDK? It should include some sort of a database too, so later we should be able to create linux version using it

GPU-Z's SDK is proprietary and Windows-only, and therefore not a good fit for an open source CLI tool that aims to be portable.

Calinou avatar Aug 13 '24 12:08 Calinou

It should tell you in the vBIOS. Maybe poke a few tech YTbers that play with overclocking, if you can't get ahold of KingPin directly.

LowJack187 avatar Sep 24 '24 03:09 LowJack187

In fact this has been discussed before, see this link https://forums.developer.nvidia.com/t/memory-brand-type/51653.

Nope, I think only GPU-Z detects it, but no idea how, maybe they don't and they do a database lookup instead.

Because nvidia provides an interface to request memory information in the windows version driver, but not in linux version.

It should tell you in the vBIOS. Maybe poke a few tech YTbers that play with overclocking, if you can't get ahold of KingPin directly.

Yes, vbios defines the supported video memory types. But bypassing the driver to read the vbios at runtime doesn't seem to be a safe operation.

Another way is to read the vbios version through Nvidia's interface and create a database from here. But this method is not "elegant".

xiaoran007 avatar Nov 14 '24 16:11 xiaoran007

Hello! I's been 9 months. VMEM type detection is (finally) implemented for Intel (B580 etc), AMD and NVIDIA dGPUs. Windows only.

Please test it: fastfetch -s gpu --gpu-driver-specific --gpu-temp --format json

Example output on my laptop. See result.memortyType:

[
  {
    "type": "GPU",
    "result": [
      {
        "index": 0,
        "coreCount": 5888,
        "coreUsage": 0.0,
        "memory": {
          "dedicated": {
            "total": 8407482368,
            "used": 0
          },
          "shared": {
            "total": 17022656512,
            "used": null
          }
        },
        "driver": "32.0.15.7283",
        "name": "NVIDIA GeForce RTX 3070 Ti Laptop GPU",
        "memoryType": "GDDR6",
        "temperature": 53.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.2",
        "frequency": 1785,
        "deviceId": 1000
      },
      {
        "index": null,
        "coreCount": 96,
        "coreUsage": null,
        "memory": {
          "dedicated": {
            "total": 134217728,
            "used": null
          },
          "shared": {
            "total": 17022656512,
            "used": null
          }
        },
        "driver": "32.0.101.6559",
        "name": "Intel(R) Iris(R) Xe Graphics",
        "memoryType": "",
        "temperature": null,
        "type": "Integrated",
        "vendor": "Intel",
        "platformApi": "Direct3D 12.1",
        "frequency": 1400,
        "deviceId": 20
      }
    ]
  }
]

CarterLi avatar Mar 24 '25 13:03 CarterLi

Latest build (2b20ed8) from github actions works, detected GDDR6 on my 3050ti

ty

# ./fastfetch.exe -s gpu --gpu-driver-specific --gpu-temp --format json

[
  {
    "type": "GPU",
    "result": [
      {
        "index": null,
        "coreCount": null,
        "coreUsage": null,
        "memory": {
          "dedicated": {
            "total": 134217728,
            "used": null
          },
          "shared": {
            "total": 8494526464,
            "used": null
          },
          "type": null
        },
        "driver": "31.0.101.2111",
        "name": "Parsec Virtual Display Adapter",
        "temperature": null,
        "type": "Discrete",
        "vendor": "Intel",
        "platformApi": "Direct3D 12.1",
        "frequency": 0,
        "deviceId": 104135
      },
      {
        "index": null,
        "coreCount": null,
        "coreUsage": null,
        "memory": {
          "dedicated": {
            "total": 134217728,
            "used": null
          },
          "shared": {
            "total": 8494526464,
            "used": null
          },
          "type": null
        },
        "driver": "31.0.101.2111",
        "name": "Intel(R) UHD Graphics",
        "temperature": null,
        "type": "Integrated",
        "vendor": "Intel",
        "platformApi": "Direct3D 12.1",
        "frequency": 0,
        "deviceId": 20
      },
      {
        "index": 0,
        "coreCount": 2560,
        "coreUsage": 18.0,
        "memory": {
          "dedicated": {
            "total": 4154458112,
            "used": 1179242496
          },
          "shared": {
            "total": 8494526464,
            "used": null
          },
          "type": "GDDR6"
        },
        "driver": "32.0.15.6590",
        "name": "NVIDIA GeForce RTX 3050 Ti Laptop GPU",
        "temperature": 67.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.2",
        "frequency": 2100,
        "deviceId": 2000
      }
    ]
  }
]

Kseen715 avatar Mar 24 '25 16:03 Kseen715

Yes, the latest build detects my VM types (GDDR5X and GDDR6X) correctly on Windows.

[
  {
    "type": "GPU",
    "result": [
      {
        "index": null,
        "coreCount": null,
        "coreUsage": null,
        "memory": {
          "dedicated": {
            "total": 25506611200,
            "used": null
          },
          "shared": {
            "total": 34308233216,
            "used": null
          },
          "type": null
        },
        "driver": "32.0.15.6614",
        "name": "GameViewer Virtual Display Adapter",
        "temperature": null,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.1",
        "frequency": 0,
        "deviceId": 113230
      },
      {
        "index": 1,
        "coreCount": 3584,
        "coreUsage": 0.0,
        "memory": {
          "dedicated": {
            "total": 12715032576,
            "used": 0
          },
          "shared": {
            "total": 34308233216,
            "used": null
          },
          "type": "GDDR5X"
        },
        "driver": "32.0.15.6614",
        "name": "NVIDIA TITAN X (Pascal)",
        "temperature": 36.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.1",
        "frequency": 1911,
        "deviceId": 4000
      },
      {
        "index": 0,
        "coreCount": 10496,
        "coreUsage": 0.0,
        "memory": {
          "dedicated": {
            "total": 25506611200,
            "used": 2352979968
          },
          "shared": {
            "total": 34308233216,
            "used": null
          },
          "type": "GDDR6X"
        },
        "driver": "32.0.15.6614",
        "name": "NVIDIA GeForce RTX 3090",
        "temperature": 35.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.1",
        "frequency": 2115,
        "deviceId": 3000
      }
    ]
  }
]

xiaoran007 avatar Mar 24 '25 17:03 xiaoran007

Supported in Windows. If you find bugs please file an new issue

CarterLi avatar Mar 31 '25 03:03 CarterLi