The AGS (AMD GPU Services) library provides game and application developers with the ability to query information about installed AMD GPUs and their driver, in order to access useful information that isn’t normally available through standard operating system or graphics APIs. AGS is also the gateway to some of the very useful extra functionality provided by AMD GPUs, especially for games and apps running on Windows®.

We have recently released our latest update – version 5.4 – and with it comes improved handling of video memory reporting for APUs (AMD Accelerated Processing Units). When determining total available graphics memory, things can often be complicated by whether you’re on an APU or a discrete GPU, and whether the information you require is available in the graphics API you’re using.

For APUs, this distinction is important as all memory is shared memory, with an OS typically budgeting half of the remaining total memory for graphics after the operating system fulfils its functional needs. As a result, the traditional queries to Dedicated Video Memory in these platforms will only return the dedicated carveout – and often represent a fraction of what is actually available for graphics. Most of the available graphics budget will actually come in the form of shared memory which is carefully OS-managed for performance.

With AGS version 5.4 we’ve introduced the isAPU flag. When determining which memory value is relevant, then query this flag.

  • If isAPU is true, set your video memory budget to sharedMemoryInBytes .
  • If isAPU is false, you can treat this as discrete GPU and should return localMemoryInBytes .

We often hear requests for the ability to query the details surrounding shared memory in unified memory architecture GPUs. To support this, AGS can provide video memory bandwidth speeds, allowing developers who require it some additional granularity in platform bucketing.

Key variables in AGSDeviceInfo include:

  • isAPU : Boolean. Returns whether the device is an APU.
  • localMemoryInBytes : Returns dedicated video memory in bytes. Use this for video memory budget if isAPU is false.
  • sharedMemoryInBytes : Returns shared video memory in bytes. Use this for video memory budget if isAPU is true.
  • memoryBandwidth : Returns memory bandwidth in MB/s.