Recent from talks
Nothing was collected or created yet.
Mantle (API)
View on Wikipedia| Mantle | |
|---|---|
| Developers | AMD, DICE[1] |
| Initial release | September 25, 2013[2] |
| Operating system | Windows |
| Platform | x86 and x86-64 |
| Successor | Vulkan |
| License | Proprietary, freeware |
| Website | www |
Mantle was a low-overhead rendering API targeted at 3D video games.[3] AMD originally developed Mantle in cooperation with DICE, starting in 2013.[1] Mantle was designed as an alternative to Direct3D and OpenGL, primarily for use on personal computers. In 2015, Mantle's public development was suspended and in 2019 completely discontinued, as DirectX 12 and the Mantle-derived Vulkan rose in popularity.[4][5][6][7]
Overview
[edit]The draw call improvements of Mantle help alleviate cases where the CPU is the bottleneck. The design goals of Mantle are to allow games and applications to utilize the CPUs and GPUs more efficiently, eliminate CPU bottlenecks by reducing API validation overhead and allowing more effective scaling on multiple CPU cores, provide faster draw routines, and allow greater control over the graphics pipeline by eliminating certain aspects of hardware abstraction inherent to both current prevailing graphics APIs OpenGL and Direct3D.[8]
CPU-bound scenarios
[edit]With a basic implementation, Mantle was designed to improve performance in scenarios where the CPU is the limiting factor:
- Low-overhead validation and processing of API commands;[9][10]
- Explicit command buffer control;[9]
- Close to linear performance scaling from reordering command buffers onto multiple CPU cores;[9]
- Reduced runtime shader compilation overhead;[9]
- AMD claims that Mantle can generate up to 9 times more draw calls per second than comparable APIs by reducing CPU overhead;[11]
- Multithreaded parallel CPU rendering support for at least 8 cores.[12]
GPU-bound scenarios
[edit]Mantle was also designed to improve situations where high resolutions and "maximum detail" settings are used, although to a somewhat lesser degree, as these settings tax GPU resources in a way that is more difficult to improve at the API level. While Mantle provides some built-in features to improve GPU-bound performance, gains in these cases are largely dependent on how well Mantle features and optimizations are being utilized by the game engine. Some of those features include:[13][14]
- Reduction of command buffers submissions
- Explicit control of resource compression, expands and synchronizations
- Asynchronous DMA queue for data uploads independent from the graphics engine
- Asynchronous compute queue for overlapping of compute and graphics workloads
- Data formats optimizations via flexible buffer/image access
- Advanced Anti-Aliasing features for MSAA/EQAA optimizations[3][9]
- Native multi-GPU support[3]
Benchmarks
[edit]- Performance superior to Direct3D 11[15]
- Improved performance in Battlefield 4[16][17][18] and up to 319% faster in the Star Swarm demo in single GPU configuration[19][20][21] in extremely CPU-limited situations.
Other claims
[edit]- Easier to port from Mantle to Direct3D 12 than from Direct3D 11 to Direct3D 12[22]
- At GDC 14 Oxide Games employee Dan Baker stated that Mantle would address fundamental development challenges that could not be addressed by a retrofit of an existing API. It is hard to optimize for the graphics device driver.[23][24][25]
- At the AMD Developer Summit (APU) in November 2013 Johan Andersson, technical director of the Frostbite engine at DICE praised Mantle for making development easier and enabling developers to innovate.[26]
- Mantle targets 100K[27]
- Monolithic Pipeline[3]
- Pipeline saving and loading[22]
- Hybrid Resource Model
- Generalized Resources
- Control over resource preparation
- Dynamic flow control without CPU intervention
- Direct GPU control
- Reduced runtime shader compilation overhead
- Better control over the hardware.[11]
- "All hardware capabilities are exposed through the API."[11]
- Reduction of command buffer submissions
- Data formats optimizations via flexible buffer/image access
- Explicit control of resource compression, expansion, and synchronization
- Asynchronous DMA queue for data uploads independent from the graphics engine
- Asynchronous compute queue for overlapping of compute and graphics workloads
- New rendering techniques
Support
[edit]The Mantle API was only available as part of AMD Catalyst prior to 19.5.1, which was available for Microsoft Windows. AMD promised to support their Mantle API only for their graphics cards and APUs which are based on their Graphics Core Next microarchitecture, but not older products based on the TeraScale microarchitecture.[28] As of July 2014[update] the implementation of the Mantle API was available for the following hardware:[citation needed]
- certain Radeon HD 7000 series GPUs
- certain Radeon HD 8000 series GPUs
- certain AMD Radeon Rx 200 series GPUs ("R7" and "R9")
- all Steamroller-based "Kaveri" APUs: AMD A10-7000 series and AMD A8-7000 series
- all Jaguar-based "Kabini" and "Temash" APUs: AMD E1-2000 series, E2-3000 series, A4-1200 series, A4-1350, A4-5000 series, A6-1450, A6-5200, Sempron 2650, Sempron 3850, Athlon 5150, Athlon 5350, etc.
- all Puma-based "Beema" and "Mullins" APUs: E1 Micro-6200T, A4 Micro-6400T, A10 Micro-6700T, E1-6010, E2-6110, A4-6210, A6-6310, etc.
Mantle was originally planned to be released on other platforms than Windows, including Linux, but it never happened.[29][30]
While the API was officially discontinued, Clément Guérin[31] started a Mantle to Vulkan translation layer called GRVK[32] in mid 2020. This allows the API and ultimately the games to live on even without Mantle supporting graphic drivers.
Game engines
[edit]- At GDC 2014, Crytek announced they will support Mantle in their CryEngine.[33]
- During a GPU 14 Tech Days presentation, an announcement was made that Frostbite 3 would include a Mantle backend.[34][11]
- The Nitrous game engine from Oxide Games, alongside DirectX 12. Mantle benchmark is still available in a free Star Swarm stress test.[35]
- Thief is based on a modified Unreal Engine 3 that supported Mantle.
- LORE, a Civilization: Beyond Earth engine supported Mantle.
- Asura, engine used by Sniper Elite III supported Mantle.
Video games
[edit]- Battlefield 4[36]
- Battlefield Hardline
- Thief
- Plants vs. Zombies: Garden Warfare
- Civilization: Beyond Earth[37]
- Dragon Age: Inquisition
- Sniper Elite III[38]
Originally planned
[edit]- Star Citizen[39][40]
- 15 Frostbite games after Battlefield 4 were planned to support Mantle, potentially including Need for Speed Rivals, Mass Effect: Andromeda, Mirror's Edge Catalyst, The Sims 4 and Star Wars Battlefront (2015).[41]
- There have been rumours about other games from that time, including Call of Duty: Advanced Warfare, Dying Light, Grand Theft Auto V and Rise of the Tomb Raider potentially supporting Mantle, but these reports were not confirmed.
Similar technologies
[edit]A set of recent OpenGL 4.4 features, coupled with bindless texturing as an extension, can also substantially reduce driver overhead. This approach, termed by the Khronos Group as "AZDO" (Approaching Zero Driver Overhead) has been shown to achieve substantial performance improvements, approaching those stated for Mantle.[42][43] Nvidia has extended OpenGL with a number of features that further reduce driver overhead.[44]
After details about DirectX 12 were made public, AMD has stated that they fully intend to support DirectX 12, but at the same time they claimed that Mantle "will [still] do some things faster." They have also claimed that due to similarities in the design philosophy of the two APIs, porting games from Mantle to DirectX 12 will be relatively straightforward,[45] and easier than porting from DirectX 11 to 12.[22]
Ultimately, AMD discontinued Mantle as a game API due to the similar aims of DirectX 12 and glNext (later renamed Vulkan).[4][5] AMD donated the Mantle API to the Khronos group, which developed it into the Vulkan API.[46][47][48][49][50][51]
Comments
[edit]Much of the work that drivers used to do on an application’s behalf is now the responsibility of the game engine. ... It also means that this work, which must still be done, is done by someone with considerably more information. Because the engine knows exactly what it will do and how it will do it, it is able to make design decisions that drivers could not.
— Firaxis on 2014-04-28, Why We Went With Mantle
Recording and FPS overlay software
[edit]PC gamers and professionals traditionally used programs such as Fraps and Bandicam to record gameplay, measure game FPS and display FPS overlay, but because Mantle is new, most traditional recording software does not work with new titles while using the new API.
In partnership with AMD, PC gaming community and game recording software maker Raptr have overhauled their client and have since re-branded it as the AMD Gaming Evolved client in conjunction with AMD's Gaming Evolved initiative in the PC gaming space. Out of the partnership, players who install and use the client while in-game can earn points to spend on digital items like games or computer hardware, chat with friends, keep their game library optimized, check for graphics card driver updates, stream their games to Twitch and record gameplay of their own with a built-in GVR, a feature similar to Nvidia Shadowplay software in its own GeForce Experience software that allows users to define a custom buffer length in their game for retroactive game recording with the push of a button so no moment gets missed and users typically do not need expensive hard drive setups to record to. In late 2014, AMD updated the client to support the recording and streaming of titles using Mantle.[52] As of its initial update into the client, the Gaming Evolved software was the only software to officially support the recording and streaming of Mantle enabled games.
Besides Raptr, D3DGear[53] was the only other commercial game recording software that supported Mantle API based games.
See also
[edit]References
[edit]- ^ a b Altavilla, Dave (2013-09-30). "AMD and DICE To Co-Develop Console Style API For Radeon Graphics". Forbes. Retrieved 2014-07-14.
- ^ "AMD Radeon R9 and R7 Series Graphics Cards Usher in a New Era of Gaming Realism". AMD. Retrieved 22 June 2021.
- ^ a b c d "Mantle WhitePaper" (PDF). AMD.
- ^ a b Smith, Ryan (2 March 2015). "AMD Lays Out Future of Mantle". Anandtech.com. Archived from the original on March 4, 2015. Retrieved 28 June 2016.
- ^ a b "One of Mantle's Futures: Vulkan | AMD Blogs".
- ^ "AMD's Revolutionary Mantle Graphics API". Retrieved 2017-10-04.
- ^ "Farewell Mantle… AMD has ended all support for DirectX 12's API inspiration". 14 May 2019. Retrieved 2019-05-15.
- ^ "Some Mantle benchmarks by AMD". AMD. 2014-02-01.
- ^ a b c d e "Mantle 101". AMD. 2014-05-28. Archived from the original on 2014-05-30.
- ^ "AMD Gaming". 2014-02-01.
- ^ a b c d "AMD Livestream at GPU 14 Tech Days". 2013. Archived from the original on September 27, 2013.
- ^ Smith, Ryan (Sep 26, 2013). "Understanding AMD's Mantle: A Low-Level Graphics API For GCN". anandtech.com. AnandTech. Archived from the original on October 1, 2013. Retrieved Oct 1, 2013.
- ^ "The Next Generation of Graphics APIs". Oxide Games. 2014-05-21. Archived from the original on 2016-03-04. Retrieved 2014-07-18.
- ^ "The Race to the Metal". Josh Barczak. 2014-05-23.
- ^ "The performance of Mantle". AMD. 2014-05-28.
- ^ "AMD Mantle API Performance Analysis With Radeon R7 260X, R9 270X, R9 280X". 2 February 2014.
- ^ "Tłumacz Google". February 2014.
- ^ "AMD claim performance boosts of up to 45% using Mantle over DirectX | PCGamesN". 6 January 2014.
- ^ "AMD Mantle Powered Flagship Nitrous Engine "Star Swarm Benchmark" Released on Steam". 31 January 2014.
- ^ "Page 2 - AMD's Mantle benchmarked: The biggest innovation in gaming since DirectX 9 | ExtremeTech".
- ^ "AMD releases Mantle, shares performance numbers".
- ^ a b c "Mantle: the start of a low-overhead future". AMD. 2014-05-28.
- ^ "Combining Efficient Engine Design with a modern API". 2014-03-20.
- ^ "Mantle in the words of game developers". AMD. 2014-05-28.
- ^ "How Mantle changes the game" (PDF). 2013-11-21. Archived from the original (PDF) on 2014-08-11. Retrieved 2014-07-18.
- ^ "Mantle for Developers (by Johan Andersson, DICE)". 2013-11-21.
- ^ "Empowering 3D Graphics Innovation". 2013-11-21.
- ^ Smith, Ryan (26 September 2013). "Understanding AMD's Mantle". Anandtech.com. Archived from the original on October 1, 2013. Retrieved 28 June 2016.
- ^ "AMD wants to improve gaming in Linux and Steam boxes with its Mantle tools". 2014-06-18.
- ^ "Linux support isn't ruled out completely". Phoronix. 2014-05-31.
- ^ "libcg on Github". GitHub.
- ^ "GRVK on GitHub". GitHub.
- ^ "AMD Mantle support is headed to another game engine". 14 January 2022.
- ^ Parrish, Kevin (Sep 25, 2013). "AMD's Mantle API Gives Devs Direct Hardware Control". tomshardware.com. Tom's Hardware. Retrieved Oct 1, 2013.
- ^ "Star Swarm Stress Test on Steam".
- ^ "Mantle Renderer now available in Battlefield 4".
- ^ "Mantle Takes to the Stars with Sid Meier's Civilization: Beyond Earth".
- ^ "Sniper Elite 3 to tap AMD's Mantle API". 21 November 2013.
- ^ "AMD's Revolutionary Mantle Graphics API Adopted by Industry Leading Game Developers Cloud Imperium, Eidos-Montréal and Oxide". AMD. NYSE: AMD. November 4, 2013. Archived from the original on 22 February 2014. Retrieved November 5, 2013.
- ^ "Star Citizen to Include Mantle Support". Transmission. Cloud Imperium Games. 5 November 2013. Retrieved 6 November 2013.
- ^ "Mantle to power 15 Frostbite games; DICE calls for multi-vendor support - The Tech Report". 13 November 2013.
- ^ "OpenGL Efficiency: AZDO" (PDF). Khronos Group. March 2014. Retrieved 2020-10-07.
- ^ "Beyond Porting: How Modern OpenGL Can Radically Reduce Driver Overhead". YouTube. 2014-02-11. Retrieved 2020-10-07.
- ^ "OpenGL NVIDIA Command-List: Approaching Zero Driver Overhead". 2014-12-04. Retrieved 2020-10-07.
- ^ "A closer look at DirectX 12". The Tech Report. 2014-03-30. Retrieved 2020-10-07.
- ^ "More on Vulkan and SPIR - V: The future of high-performance graphics" (PDF). Khronos Group. p. 10. Retrieved 27 June 2015.
Thanks AMD!
- ^ Mah Ung, Gordon (6 March 2015). "Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor". PCWorld.
- ^ "AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs". Community.amd.com. Retrieved 2015-03-05.
- ^ Hruska, Joel (4 March 2015). "Not dead yet: AMD's Mantle powers new Vulkan API, VR efforts". ExtremeTech. Retrieved 2015-03-05.
- ^ "AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL". Wccftech.com. 2014-06-20. Retrieved 2020-10-07.
- ^ Kirsch, Nathan (2015-03-03). "Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL". Legit Reviews. Retrieved 2020-10-07.
- ^ "AMD Gaming Evolved Now Supports Mantle".
- ^ "D3DGear Mantle Recording Software".
External links
[edit]Mantle (API)
View on GrokipediaIntroduction
Overview
Mantle is a proprietary, low-overhead graphics rendering API developed by AMD to enable direct access to GPU hardware for PC gaming applications.[1] Designed specifically for AMD's Graphics Core Next (GCN) architecture, it serves as an alternative to high-level APIs such as DirectX and OpenGL by providing developers with finer control over hardware resources.[4] The API's core purpose is to bridge the abstraction layers between software and hardware, particularly by reducing CPU overhead in processing draw calls and command submissions that often bottleneck rendering pipelines in complex 3D scenes.[5] By minimizing driver-mediated translations and validations, Mantle allows for more efficient utilization of multi-core CPUs, enabling better parallelism in game engines. This results in key benefits such as higher frame rates in CPU-bound scenarios, enhanced support for multi-threading to distribute rendering tasks across cores, and lower overall latency, which is critical for real-time interactive applications like video games.[1] These improvements stem from Mantle's streamlined communication model between the CPU and GPU, avoiding the inefficiencies of higher-level APIs that impose generalized assumptions on developer workflows.[4] Mantle was first announced by AMD in September 2013, with a private beta SDK made available to select developers in May 2014 to facilitate early integration.[6] In March 2015, AMD released a comprehensive 450-page programming guide and API reference to provide detailed documentation on its architecture and implementation.[7] The API targets Windows as its primary platform, with planned support for Linux that was ultimately not implemented, and is exclusive to AMD Radeon GPUs compatible with the GCN architecture.[8]Development History
Mantle originated in 2013 as a collaborative effort between AMD and Electronic Arts' DICE studio to mitigate high CPU overhead in the Frostbite 3 engine powering Battlefield 4.[9] The API was publicly announced on September 25, 2013, at AMD's GPU14 developer conference in Hawaii, positioning it as a low-overhead alternative to established graphics APIs like Direct3D and OpenGL, with an initial beta software development kit (SDK) provided to select partners including DICE in early 2014.[9] Key milestones followed rapidly, including the integration of Mantle support into Battlefield 4 via a patch released on January 30, 2014, which marked the first public deployment of the API in a major title.[10] AMD committed to a public SDK release by the end of 2014, enabling broader developer access beyond initial partners.[11] This culminated in the publication of a comprehensive 450-page programming guide and reference API on March 3, 2015, providing detailed documentation for implementation.[7] Expansion initiatives included announcements in June 2014 for Linux compatibility and open-sourcing aspects of the API, though implementation remained confined to AMD's Graphics Core Next (GCN) hardware architecture.[8] Adoption peaked in late 2013, with developer support confirmed from Oxide Games, Cloud Imperium Games, and Eidos-Montréal on November 4, 2013, alongside ongoing collaborations like DICE.[1] By July 9, 2015, AMD ceased further optimizations for Mantle on existing and future graphics cards, redirecting resources toward the emerging Vulkan and DirectX 12 standards while maintaining legacy support.[12]Technical Features
Low-Overhead Architecture
Mantle's low-overhead architecture is built on the core principle of bypassing the high-level abstractions present in traditional graphics APIs such as DirectX and OpenGL, enabling developers to gain explicit control over GPU resources and thereby reducing CPU-GPU communication overhead.[13] By minimizing driver intervention, including the elimination of extensive runtime validation and automatic state management, Mantle shifts responsibility to the application layer, allowing for more efficient resource utilization and lower latency in command submission.[13] This approach addresses the bottlenecks caused by driver-managed abstractions, which can introduce significant overhead in complex rendering pipelines.[14] A key aspect of this efficiency is Mantle's support for high draw call volumes, enabling up to 100,000 or more draw calls per frame without stalling the CPU, achieved through batched submissions of command buffers directly to the GPU.[14] In contrast, traditional APIs like DirectX 11 typically handle around 1,000 draw calls per frame before overhead becomes prohibitive, due to per-call driver processing.[13] This batched mechanism allows developers to group rendering commands, reducing the frequency of synchronization points and enabling smoother frame rates in scenes with dense geometry. The multi-threading model further enhances performance by supporting asynchronous command buffer creation across multiple CPU cores, with dedicated GPU-side execution queues that parallelize workloads such as graphics, compute, and data transfer operations.[13] Developers can record commands in parallel without driver-imposed serialization, leading to linear scaling with available CPU threads and better utilization of multi-core processors.[2] This is complemented by resource management features that permit direct allocation of GPU memory and buffers at page granularity, minimizing state changes and validation overhead by avoiding unnecessary CPU-GPU data copies.[13] Mantle was specifically designed for compatibility with AMD's Graphics Core Next (GCN) architecture, supporting Radeon HD 7000 series and later GPUs, and provided no official support for NVIDIA hardware.[13] This architecture-specific optimization leverages GCN's virtual address space and queue management to enable the low-overhead features, though it limits broader adoption.[2] The design's emphasis on direct hardware access influenced subsequent APIs like Vulkan, which adopt similar principles for overhead reduction.[13]Core Components and API Design
The Mantle API is structured around a low-level, explicit programming model that emphasizes direct control over GPU resources to minimize overhead. Central to this design is the MantleDevice object, which serves as the primary handle for initializing and managing the GPU execution context. Developers create a MantleDevice using thegrCreateDevice function, passing a GR_DEVICE_CREATE_INFO structure that specifies queue types, such as GR_QUEUE_UNIVERSAL for general-purpose operations or GR_QUEUE_COMPUTE for compute workloads, along with optional extensions like window system integration. This setup allows for one device per physical GPU, enabling fine-grained control over hardware capabilities without automatic state management.[15]
Once the device is established, MantleQueue objects handle the submission and execution of workloads to the GPU. Queues are retrieved via grGetDeviceQueue during device creation or defined in the GR_DEVICE_CREATE_INFO with a GR_QUEUE_CREATE_INFO array, supporting multiple queue families for concurrent operations like graphics rendering and compute tasks. Execution on queues is asynchronous and serialized within each queue, facilitating multi-threaded command preparation on the CPU while the GPU processes submissions independently. This queue-based model underpins Mantle's ability to support parallel pipelines, with synchronization handled separately to avoid implicit barriers.[15]
Command buffers form the core mechanism for recording GPU instructions, providing a lightweight way to batch draw calls, compute dispatches, and resource state transitions. Created with grCreateCommandBuffer using a GR_CMD_BUFFER_CREATE_INFO structure, buffers are either primary—suitable for direct submission to queues via grQueueSubmit—or secondary, which can be inherited and nested within primary buffers for modular command construction. Recording begins with grBeginCommandBuffer and ends with grEndCommandBuffer, during which developers issue commands like grCmdDraw for vertex rendering, grCmdDispatch for compute kernels, or grCmdBindStateObject for pipeline and descriptor bindings. Unlike higher-level APIs, Mantle requires explicit tracking of state changes, with no automatic validation or caching to ensure minimal runtime overhead.[15]
Resource management in Mantle relies on opaque handles for buffers and images, promoting explicit allocation and binding to reduce driver intervention. The MantleBuffer handle, allocated through grAllocMemory with a GR_MEMORY_ALLOC_INFO specifying size, alignment, and heap preferences, stores vertex data, index buffers, or uniform data, requiring manual binding to command buffers via descriptor sets updated with grUpdateDescriptorSets. Similarly, the MantleImage handle is created using grCreateImage with parameters for format, dimensions, and usage flags (e.g., as textures or render targets), followed by memory binding via grBindObjectMemory after querying requirements with grGetObjectInfo and GR_INFO_TYPE_MEMORY_REQUIREMENTS. Shaders are compiled offline into intermediate language (IL) and loaded as binary modules with grCreateShader, bound explicitly without runtime compilation. This design enforces developer responsibility for resource lifetimes and transitions, optimizing for performance in resource-constrained environments.[15]
Synchronization in Mantle is achieved through dedicated primitives to coordinate CPU-GPU interactions and multi-queue dependencies without relying on implicit ordering. Fences, created with grCreateFence, signal the completion of submitted command buffers and can be waited on via grWaitForFences or polled with grGetFenceStatus, enabling CPU-side blocking until GPU tasks finish. Semaphores, instantiated using grCreateQueueSemaphore, facilitate inter-queue synchronization by signaling availability with grQueueSignalSemaphore and waiting with grQueueWaitSemaphore before submissions. Events provide finer-grained control for intra-queue operations, created via grCreateEvent and manipulated in command buffers with grCmdSetEvent or grCmdResetEvent, with status queried by grGetEventStatus. These primitives support robust multi-threaded scenarios, such as staging data across queues, while avoiding automatic synchronization to preserve low latency.[15]
The programming model of Mantle adopts a C-style interface, utilizing function pointers and handles for all operations, which demands manual memory management through explicit allocations, bindings, and releases to prevent leaks and optimize usage. Error handling is callback-based, registered with grDbgRegisterMsgCallback to intercept validation messages or runtime faults, allowing developers to implement custom logging without halting execution. For maximum performance, validation layers—enabled by the GR_DEVICE_CREATE_VALIDATION flag—can be disabled at device creation, shifting all checks to debug builds and eliminating overhead in release configurations. This approach prioritizes developer expertise over safety nets, aligning with Mantle's goal of exposing hardware directly.[15]
Mantle's extensibility is provided through a mechanism for incorporating future hardware features, such as tessellation controls, via discoverable extensions enumerated with grEnumerateExtensions during device creation. Extensions are specified in GR_DEVICE_CREATE_INFO as strings (e.g., for hull and domain shader support in graphics pipelines), enabling optional functionality like advanced geometry processing without altering the core API. This limited but targeted extensibility ensures backward compatibility while allowing evolution for specific AMD GPU advancements.[15]
