AGS SDK 5.4 improves handling of video memory reporting for APUs

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.

Latest news

AMD Matrix Cores (amd-lab-notes)

This first post in the ‘AMD lab notes’ series takes a look at AMD’s Matrix Core technology and how best to use it to speed up your matrix operations.

Looking for a good place to get started with exploring GPUOpen?

Getting started: our software

New or fairly new to AMD’s tools, libraries, and effects? This is the best place to get started on GPUOpen!

Getting started: development and performance

Looking for tips on getting started with developing and/or optimizing your game, whether on AMD hardware or generally? We’ve got you covered!

You may also like...

Explore our huge collection of detailed tutorials, sample code, presentations, and documentation to find your answers to your graphics development questions.

Create wonder. No black boxes.

The home of great performance and optimization advice for AMD RDNA™ 2 GPUs, AMD Ryzen™ CPUs, and so much more.

Browse all our useful samples. Perfect for when you’re needing to get started, want to integrate one of our libraries, and much more.

Discover what our SDK technologies can offer you. Query hardware or software, manage memory, create rendering applications or machine learning, and much more!

Analyze, Optimize, Profile, Benchmark. We provide you with the developer tools you need to make sure your game is the best it can be!