AMD GPU Services (AGS)
Public Types | Public Attributes | List of all members
AGSDeviceInfo Struct Reference

The device info struct used to describe a physical GPU enumerated by AGS. More...

#include <amd_ags.h>

Public Types

enum  AsicFamily {
  AsicFamily_Unknown, AsicFamily_PreGCN, AsicFamily_GCN1, AsicFamily_GCN2,
  AsicFamily_GCN3, AsicFamily_GCN4, AsicFamily_Vega, AsicFamily_RDNA,
  AsicFamily_RDNA2, AsicFamily_RDNA3, AsicFamily_Count
}
 The ASIC family. More...
 
typedef enum AGSDeviceInfo::AsicFamily AsicFamily
 The ASIC family.
 

Public Attributes

const char * adapterString
 The adapter name string.
 
AsicFamily asicFamily
 Set to Unknown if not AMD hardware.
 
unsigned int isAPU: 1
 Whether this device is an APU.
 
unsigned int isPrimaryDevice: 1
 Whether this device is marked as the primary device.
 
unsigned int isExternal:1
 Whether this device is a detachable, external device.
 
unsigned int reservedPadding: 29
 Reserved for future use.
 
int vendorId
 The vendor id.
 
int deviceId
 The device id.
 
int revisionId
 The revision id.
 
int numCUs
 Number of compute units.
 
int numWGPs
 Number of RDNA Work Group Processors. Only valid if ASIC is RDNA onwards.
 
int numROPs
 Number of ROPs.
 
int coreClock
 Core clock speed at 100% power in MHz.
 
int memoryClock
 Memory clock speed at 100% power in MHz.
 
int memoryBandwidth
 Memory bandwidth in MB/s.
 
float teraFlops
 Teraflops of GPU. Zero if not GCN onwards. Calculated from iCoreClock * iNumCUs * 64 Pixels/clk * 2 instructions/MAD.
 
unsigned long long localMemoryInBytes
 The size of local memory in bytes. 0 for non AMD hardware.
 
unsigned long long sharedMemoryInBytes
 The size of system memory available to the GPU in bytes. More...
 
int numDisplays
 The number of active displays found to be attached to this adapter.
 
AGSDisplayInfodisplays
 List of displays allocated by AGS to be numDisplays in length.
 
int eyefinityEnabled
 Indicates if Eyefinity is active.
 
int eyefinityGridWidth
 Contains width of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
 
int eyefinityGridHeight
 Contains height of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
 
int eyefinityResolutionX
 Contains width in pixels of the multi-monitor Single Large Surface.
 
int eyefinityResolutionY
 Contains height in pixels of the multi-monitor Single Large Surface.
 
int eyefinityBezelCompensated
 Indicates if bezel compensation is used for the current SLS display area. 1 if enabled, and 0 if disabled.
 
int adlAdapterIndex
 Internally used index into the ADL list of adapters.
 
int reserved
 reserved field
 

Detailed Description

The device info struct used to describe a physical GPU enumerated by AGS.

Member Enumeration Documentation

◆ AsicFamily

The ASIC family.

Enumerator
AsicFamily_Unknown 

Unknown architecture, potentially from another IHV. Check AGSDeviceInfo::vendorId.

AsicFamily_PreGCN 

Pre GCN architecture.

AsicFamily_GCN1 

AMD GCN 1 architecture: Oland, Cape Verde, Pitcairn & Tahiti.

AsicFamily_GCN2 

AMD GCN 2 architecture: Hawaii & Bonaire. This also includes APUs Kaveri and Carrizo.

AsicFamily_GCN3 

AMD GCN 3 architecture: Tonga & Fiji.

AsicFamily_GCN4 

AMD GCN 4 architecture: Polaris.

AsicFamily_Vega 

AMD Vega architecture, including Raven Ridge (ie AMD Ryzen CPU + AMD Vega GPU).

AsicFamily_RDNA 

AMD RDNA architecture.

AsicFamily_RDNA2 

AMD RDNA2 architecture.

AsicFamily_RDNA3 

AMD RDNA3 architecture.

AsicFamily_Count 

Number of enumerated ASIC families.

Member Data Documentation

◆ sharedMemoryInBytes

unsigned long long AGSDeviceInfo::sharedMemoryInBytes

The size of system memory available to the GPU in bytes.

It is important to factor this into your VRAM budget for APUs as the reported local memory will only be a small fraction of the total memory available to the GPU.