GPUOpen

Middleware software suite
GPUOpen
AMD GPUOpen Logo, Jan 2016.png
Original author(s)Advanced Micro Devices
Developer(s)Advanced Micro Devices
Initial releaseJanuary 26, 2016 (2016-01-26)[1]
Repository
  • github.com/GPUOpen-LibrariesAndSDKs Edit this at Wikidata
Written inC, C++, GLSL
Operating systemLinux, Microsoft Windows
TypeGame effects libraries, GPU debugging, CPU & GPU profiling
LicenseMIT License
Websitegpuopen.com

GPUOpen is a middleware software suite originally developed by AMD's Radeon Technologies Group that offers advanced visual effects for computer games. It was released in 2016. GPUOpen serves as an alternative to, and a direct competitor of Nvidia GameWorks. GPUOpen is similar to GameWorks in that it encompasses several different graphics technologies as its main components that were previously independent and separate from one another.[2] However, GPUOpen is entirely open source software, unlike GameWorks which is proprietary and closed.

History

GPUOpen was announced on December 15, 2015,[3][4][2][5][6] and released on January 26, 2016.

Rationale

Nicolas Thibieroz, AMD's Senior Manager of Worldwide Gaming Engineering, argues that "it can be difficult for developers to leverage their R&D investment on both consoles and PC because of the disparity between the two platforms" and that "proprietary libraries or tools chains with "black box" APIs prevent developers from accessing the code for maintenance, porting or optimizations purposes".[7] He says that upcoming architectures, such as AMD's RX 400 series "include many features not exposed today in PC graphics APIs".

AMD designed GPUOpen to be a competing open-source middleware stack released under the MIT License. The libraries are intended to increase software portability between video game consoles, PCs and also High-performance computing.[8]

Components

GPUOpen unifies many of AMD's previously separate tools and solutions into one package, also fully open-sourcing them under the MIT License.[4] GPUOpen also makes it easy for developers to get low-level GPU access.[9]

Additionally AMD wants to grant interested developers the kind of low-level "direct access" to their GCN-based GPUs, that surpasses the possibilities of Direct3D 12 or Vulkan. AMD mentioned e.g. a low-level access to the Asynchronous Compute Engines (ACEs). The ACE implement "Asynchronous Compute", but they cannot be freely configured under either Vulkan or Direct3D 12.

GPUOpen is made up of several main components, tools, and SDKs.[2]

Games and CGI

Software for computer-generated imagery (CGI) used in development of computer games and movies alike.

Visual effects libraries

GPUOpen Visual Effects Libraries[10]
Name API Source Description
TressFX DirectX 12, Vulkan GitHub This visual effects library allows the creation of realistic hair, fur, and grass.
GeometryFX DirectX 11 GitHub This library allows easy access to compute-based triangle filtering.
DepthOfFieldFX DirectX 11 GitHub This library grants access to a depth of field implementation optimized for the GCN GPU architecture via a compute shader.
ShadowFX DirectX 11, DirectX 12 GitHub This library grants access to an implementation for deferred shadow filtering that is optimized for the GCN GPU architecture.
FidelityFX DirectX 11, DirectX 12, Vulkan GitHub FidelityFX is a suite of visual effects and effects-helper libraries.

FidelityFX

FidelityFX Components[11]
Name Algorithm Source Description
FidelityFX CAS Contrast Adaptive Sharpening GitHub This algorithm adaptively sharpens an image or scene while minimizing artifacts.
FidelityFX CACAO Combined Adaptive Compute Ambient Occlusion GitHub This algorithm is an optimized implementation of adaptive sampling ambient occlusion.
FidelityFX LPM Luminance Preserving Mapper GitHub This algorithm is used to tone map the luma of an RGB pixel rather than tone mapping the color of the pixel.
FidelityFX SPD Single Pass Downsampler GitHub This algorithm, optimized for the RDNA GPU architecture, is used to generate 12 MIP levels for a given texture.
FidelityFX SSSR Stochastic Screen Space Reflections GitHub This algorithm is used to add screen space reflections to a frame or scene.
FidelityFX VS Variable Shading GitHub This algorithm is used to generate image-based variable rate shading using the luminance of samples in the prior frame.
FidelityFX Parallel Sort Radix Sort GitHub This algorithm provides a compute-based radix sort.
FidelityFX Denoiser Shadow & Reflection Denoiser GitHub This algorithm provides denoising functionality for ray-traced shadows and ray-traced or screen-space reflections.
FidelityFX Super Resolution 1 Spatial Upsampler GitHub This algorithm is used to upsample an image or frame into a higher resolution using only the spacial information provided in the input frame.
FidelityFX Super Resolution 2 Temporal Upscaler GitHub This algorithm is used to upscale frame(s) into a higher resolution using the temporal information provided by input frames.

FidelityFX Super Resolution

FidelityFX Super Resolution (FSR) is used to upsample an input image into a higher resolution. There are two versions of FSR with distinctive upscaling technique and image quality. FSR 1 is a spatial upscaler based on the Lanczos algorithm requiring an anti aliased lower resolution image, meanwhile FSR 2 is a temporal upscaler based on a modified Lanczos requiring an aliased lower resolution image and utilising the temporal data (such as motion vectors and frame history) and then applies its own anti aliasing pass which replaces the game's temporal anti-aliasing solution. The standard presets for FSR by AMD can be found in the table below. Note that these presets are not the only way in which the algorithm can be used, they are simply presets for input/output resolutions. Certain titles, such as Dota 2 have offered resolution sliders to fine tune the scaling percentage or dynamically scaling the internal render resolution depending on the FPS cap.

Standard FSR presets[12][13]
Quality Preset[a] Scale Factor[b] Render Scale[c]
Ultra Qualityv1.0 only 1.30x 77.0%
Quality 1.50x 66.6%
Balanced 1.70x 58.8%
Performance 2.00x 50.0%
Ultra Performancesince v2.0 3.00x 33.3%

FSR 2 can also be modded into nearly any game supporting DLSS by swapping the DLSS DLL with the FSR 2.0 DLL as long as the game does not explicitly check for driver or GPU. [14]


  1. ^ The algorithm does not necessarily need to be implemented using these presets; it is possible for the implementer to define custom input and output resolutions.
  2. ^ The linear scale factor used for upsampling the input resolution to the output resolution. For example, a scene rendered at 540p with a 2.00x scale factor would have an output resolution of 1080p.
  3. ^ The linear render scale, compared to the output resolution, that the technology uses to render scenes internally before upsampling. For example, a 1080p scene with a 50% render scale would have an internal resolution of 540p.

Tools

The official AMD directory lists:[15]

Name source-code API OS Task
CodeXL CodeXL Direct3D, OpenGL, OpenCL, Vulkan Linux
Windows
software development tool suite that includes a GPU debugger, a GPU profiler, a CPU profiler, a static OpenCL kernel analyzer and various plugins.[16]
static analyzer for AMD CodeXL amd-codexl-analyzer Direct3D, OpenGL, OpenCL Linux
Windows 64bit
Off-line compiler and performance analysis CLI-tool for processing: OpenCL kernels, HLSL shaders and GLSL shaders
part of the AMD CodeXL tools suite
Requires either Radeon Software Crimson Edition or AMD Catalyst to be installed to run this tool.[17]
D3D 12 plug-in for GPU PerfStudio amd-gpuperfstudio-dx12 Direct3D 12 Windows a plug-in to GPU PerfStudio GPU perfstudio[18]
Tootle amd-tootle agnostic Linux
Windows
Triangle Order Optimization Tool; originally developed in 2006; can be easily integrated as part of a rendering or mesh pre-processing tool chain[19] Cf. http://mgarland.org/files/papers/quadrics.pdf

Having been released by ATI Technologies under the BSD license in 2006? HLSL2GLSL is not part of GPUOpen. Whether similar tools for SPIR-V will be available remains to be seen, as is the official release of the Vulkan (API) itself. Source-code that has been defined as being part of GPUOpen is also part of the Linux kernel (e.g. amdgpu and amdkfd[20]), Mesa 3D and LLVM.

Software development kits

Name source-code API OS Task
LiquidVR SDK LiquidVR D3D 11 Windows improves the smoothness of virtual reality.[21] The aim is to reduce latency between hardware so that the hardware can keep up with the user's head movement, eliminating the motion sickness. A particular focus is on dual GPU setups where each GPU will now render for one eye individually of the display
FireRays SDK FireRays_SDK agnostic 64-bit Linux, OS X, 64-bit Windows A high efficiency, high performance heterogeneous ray tracing intersection library for GPU and CPU or APU on any platform.
FireRender SDK FireRenderSDK ? physically-based rendering engine
Advanced Media Framework (AMF) DirectX 12 Windows 64 bits Light-weight, portable multimedia framework that abstracts away most of the platform and API-specific details.
True Audio Next (TAN) OpenCL 3 Windows 64 bits SDK for Radeon GPU accelerated and multi-core high-performance audio signal processing.
RapidFire SDK ? facilitates the use of AMD's video compression acceleration SIP blocks VCE (H.264 encoder) and UVD (H.264 decoder) for "Cloud gaming"/off-site rendering

Professional Compute

As of 2022, AMD compute software ecosystem is regrouped under the ROCm metaproject.

AMD Boltzmann Initiative: amdgpu (Linux kernel 4.2+) and amdkfd (Linux kernel 3.19+)

Software around Heterogeneous System Architecture (HSA), General-Purpose computing on Graphics Processing Units (GPGPU) and High-Performance Computing (HPC)

Radeon Open Compute (ROCm)

AMD's "Boltzmann Initiative" (named after Ludwig Boltzmann) was announced in November 2015 at the SuperComputing15 [22][23][24][25][26] and productized as the Radeon Open Compute platform (ROCm). It aims to provide an alternative to Nvidia's CUDA which includes a tool to port CUDA source-code to portable (HIP) source-code which can be compiled on both HCC and NVCC.

  • Radeon Open Compute Kernel (ROCK) driver
  • Radeon Open Compute Runtime (ROCR) runtime
  • HCC: Heterogeneous Compute Compiler
  • HIP: C++ Heterogeneous-Compute Interface for Portability

Heterogeneous System Architecture

Various deprecated

  • clFFT library for Fast Fourier transform written in OpenCL
  • hcFFT library for Fast Fourier transform written in HCC-optimized C++

Availability

GPUOpen are available under the MIT license to the general public through GitHub starting on January 26, 2016.[4]

There is interlocking between GPUOpen and well established and widespread free software projects, e.g. Linux kernel, Mesa 3D and LLVM.

See also

  • ROCm
  • AMD CodeXL
  • Mantle (API)
  • Vulkan (API)
  • List of games with support for high-fidelity image upscaling

References

  1. ^ AMD: GPUOpen (2016-01-26). "Welcome to GPUOpen". Archived from the original on 2016-03-05.
  2. ^ a b c Tom's Hardware (2015-12-15). "AMD GPUOpen: Doubling Down On Open-Source Development". Retrieved 2016-01-24.
  3. ^ Maximum PC (2015-12-15). "AMD Radeon Technologies Group Summit: GPUOpen and Software". Retrieved 2016-01-24.
  4. ^ a b c AnandTech (2015-12-15). "AMD's GPUOpen bundle of developer tools in 2016". Retrieved 2016-01-24.
  5. ^ Heinz Heise (2015-12-16). "AMDs Open-Source-Initiative GPUOpen: Direkte GPU-Kontrolle und bessere Treiber" (in German).
  6. ^ PC Games Hardware (2015-12-16). "AMD GPU Open: Radeon-Software wird bald zu 100 % Open-Source" (in German).
  7. ^ "It's Time to Open up the GPU". Archived from the original on 2016-03-05.
  8. ^ wccftech.com (2015-12-15). "AMD's Answer To Nvidia's GameWorks, GPUOpen Announced". Retrieved 2016-01-24.
  9. ^ HotHardware (2015-12-15). "AMD Goes Open Source, Announces GPUOpen Initiative, New Compiler And Drivers For Linux And HPC". Retrieved 2016-01-24.
  10. ^ "GPUOpen Effects". GitHub.
  11. ^ "FidelityFX". GitHub. 20 October 2021.
  12. ^ Walker, Alex (2021-06-23). "AMD's FSR Only Supports 7 Games, But It's Already Super Promising". Kotaku Australia. Retrieved 2021-07-11.
  13. ^ Mujtaba, Hassan (2022-03-23). "AMD Details FSR 2.0: NVIDIA GeForce 10 & Up Support, High-Quality Upscaling Without Machine Learning, More Quality Modes". Wccftech. Retrieved 2022-03-24.
  14. ^ "Unofficial FSR 2.0 mod arrives to several more games including Dying Light 2, RDR 2 and Death Stranding".
  15. ^ "GPUOpen Libraries & SDKS". GitHub.
  16. ^ AMD GPUOpen (2016-04-19). "CodeXL 2.0 made open-source".
  17. ^ AMD GPUOpen (2016-01-26). "CodeXL Static Analyzer CLI".
  18. ^ AMD GPUOpen (2016-01-26). "Create Your own GPU PerfStudio Direct3D 12 Plugin".
  19. ^ AMD GPUOpen (2016-01-26). "Have You Tootled Your 3D Models?".
  20. ^ "Linux kernel 4.2 /drivers/gpu/drm/amd".
  21. ^ Heinz Heise (2015-03-04). "LiquidVR: Neues Virtual-Reality-SDK von AMD" (in German).
  22. ^ AnandTech (2015-11-16). "[email protected]: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs".
  23. ^ Heinz Heise (2015-11-17). "Supercomputer: AMD startet Software-Offensive "Boltzmann"" (in German).
  24. ^ 3dcenter.org (2015-11-16). "AMDs Boltzmann-Initiative geht direkt gegen nVidias CUDA" (in German).
  25. ^ AMD (2015-11-16). "AMD Launches 'Boltzmann Initiative'".
  26. ^ AMD (2015-11-16). "A Defining Moment for Heterogeneous Computing".

External links

  • Official website
  • List of games that support high-fidelity upscaling - List moved from Wikipedia to PCGamingWiki
  • v
  • t
  • e
Radeon-brand
List of GPUs (GPU features template) and List of APUs (APU features template)
Fixed pipeline
Vertex and fragment shaders
Unified shaders
TeraScale
Unified shaders & memory
GCN
RDNA
Current technologies and software
Audio/Video acceleration
GPU technologies
Software
Current
Obsolete
Other brands and products
Workstations
& Supercomputers
Current
Obsolete
Consoles
& Handheld PCs