Radeon GPU Analyzer (RGA) is our offline compiler and integrated code analysis tool, supporting the high-level shading and kernel languages that are consumed by DirectX® 11, Vulkan®, OpenGL® and OpenCL™, including HLSL, GLSL, the OpenCL kernel language, and SPIR-V™.
RGA lets you write and edit shader or kernel programs, and then analyse the generated machine ISA for a wide range of supported AMD GPUs, showing you the isolated cost of a particular program as you develop it, to help you understand and fine-tune it for the target GPU you care about.
Along with support for Vulkan in the RGA GUI, the biggest new feature in RGA 2.1 is a new analysis system that lets you obtain the GCN machine ISA and hardware resource information, using the compiler in the running driver that you have in your system.
There hardware resource information gives you a rolling summary of resource usage (VGPRs, SGPRs, LDS and more) across the entire program that updates as you type, underneath the ISA window on the right.
As you can see, there’s also a resource tracker that will show you performance hazards such as register spills and how much instruction cache pressure you’re putting on the target machine that you’re analysing for.
The screenshot above shows editing of a SPIR-V input program used in a Vulkan application, with associated disassembly for the Vega graphics architecture.
You can see all of the major information at a glance, too. It’s a GLSL input vertex shader, with highlight on a line of the resulting SPIR-V after being run through glslang
, the associated highlight of the resulting line of Vega machine ISA in the right-hand pane, and the detailed build output below which shows how the offline compiler was invoked, and which products the gfx900
graphics IP is used in, across all product families (Radeon RX, Radeon Instinct and Radeon Pro).
You’ll have access to not just code generation for Vega, but for all of our GCN- and Vega-powered GPUs, including the recently released AMD Radeon VII, and you can compile for those GPUs without needing to have them in your system. That list is searchable too, so just start typing to filter the list and select what you’re interested in, including product names, so just start typing those and the filter will find what you need.
Lastly, there’s a new feature that lets you edit the pipeline state of a running Vulkan application using a VK layer that you activate in your application. RGA then intercepts Vulkan pipeline (more info here!) objects and lets you edit them in a searchable, filterable tree. The tree represents the relationships between parts of the pipeline state, something which is traditionally hard to do just by reading the spec.
You can see that feature above, highlighting all parts of the VkGraphicsPipelineCreateInfo
that are related to blending. Check out the RGA manual for more information about how to activate that layer in your game or application.
We’re very excited to release it, and because RGA is open source, binaries are available on GitHub that work on Windows 7 and 10 (64-bit only), Ubuntu 18.04, and RHEL 7.
Note that the new UI only supports Vulkan and OpenCL project types today; the command line version of RGA supports a wider range of platforms, including DirectX 11 and OpenGL. Future updates will widen the API support in the UI so that it more closely matches the command line version of RGA, and we’re happy to confirm that DirectX 12 is next; we’re working hard on it and we’ll let everyone know as soon as that’s ready.
Find out more on our RGA product page here on GPUOpen, and if you want help using RGA or integrating the command line version into your own tooling, drop us a line!