AMD GPU Services (AGS)
AMD GPU Services (AGS) Documentation

AGS Library Overview

This document provides an overview of the AGS (AMD GPU Services) library. The AGS library provides software developers with the ability to query AMD GPU software and hardware state information that is not normally available through standard operating systems or graphic APIs.

The latest version of the API is publicly hosted here: https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/. It is also worth checking http://gpuopen.com/gaming-product/amd-gpu-services-ags-library/ for any updates and articles on AGS.


What's new in AGS 6.0 since version 5.4.2

AGS 6.0 includes the following updates:

  • DX12 ray tracing hit token for RDNA2 hardware.
  • Shader intrinsic that exposes ReadLaneAt in DX12.
  • Shader intrinsics that expose explicit float conversions in DX12.
  • Refactored and revised API to minimize user error.
  • Added agsGetVersionNumber.
  • Detection for external GPUs.
  • Detection of RDNA2 architecture.
  • Grouped the more established intrinsics together into per year support.
  • Function pointer typedefs for the API

What's new in AGS 5.4.2 since version 5.4.1

AGS 5.4.2 includes the following updates:

  • sharedMemoryInBytes has been reinstated.
  • Clock speed returned for APUs.

What's new in AGS 5.4.1 since version 5.4.0

AGS 5.4.1 includes the following updates:

  • AsicFamily_Count to help with code maintenance.
  • Visual Studio 2019 support.
  • x86 support
  • BaseInstance and BaseVertex intrinsics along with corresponding caps bits.
  • GetWaveSize intrinsic along with corresponding caps bits.

What's new in AGS 5.4 since version 5.3

AGS 5.4 includes the following updates:

  • A more detailed description of the GPU architecture, now including RDNA GPUs.
  • Radeon 7 core and memory speeds returned.
  • Draw index and Atomic U64 intrinsics for both DX11 and DX12.

What's new in AGS 5.3 since version 5.2

AGS 5.3 includes the following updates:

  • DX11 deferred context support for Multi Draw Indirect and UAV Overlap extensions.
  • A Radeon Software Version helper to determine whether the installed driver meets your game's minimum driver version requirements.
  • Freesync HDR Gamma 2.2 mode which uses a 1010102 swapchain and can be considered as an alternative to using the 64 bit swapchain required for Freesync HDR scRGB.

Using the AGS library

It is recommended to take a look at the source code for the samples that come with the AGS SDK:

  • AGSSample
  • CrossfireSample
  • EyefinitySample The AGSSample application is the simplest of the three examples and demonstrates the code required to initialize AGS and use it to query the GPU and Eyefinity state. The CrossfireSample application demonstrates the use of the new API to transfer resources on GPUs in Crossfire mode. Lastly, the EyefinitySample application provides a more extensive example of Eyefinity setup than the basic example provided in AGSSample. There are other samples on Github that demonstrate the DirectX shader extensions, such as the Barycentrics11 and Barycentrics12 samples.

To add AGS support to an existing project, follow these steps:

  • Link your project against the correct import library. Choose from either the 32 bit or 64 bit version.
  • Copy the AGS dll into the same directory as your game executable.
  • Include the amd_ags.h header file from your source code.
  • Include the AGS hlsl files if you are using the shader intrinsics.
  • Declare a pointer to an AGSContext and make this available for all subsequent calls to AGS.
  • On game initialization, call agsInitialize passing in the address of the context. On success, this function will return a valid context pointer.

Don't forget to cleanup AGS by calling agsDeInitialize when the app exits, after the device has been destroyed.