AMD Extends Radeon Cauldron 1.0 SDK To Programming Community Which Uses Simplified C++

After extensive internal testing and surprisingly rapid adoption within, AMD is now offering Radeon Cauldron 1.0 Software Development Kit (SDK) to the programming community. The company assures the framework is not only highly simplified but it is also remarkably versatile. In other words, the Radeon Cauldron SDK is easily graspable for beginners. Moreover, the framework is extensively flexible for programmers looking to extend it with new features.

AMD is offering one of its most popular software development frameworks to the masses. The first comprehensive and stable release of the Radeon Cauldron SDK is now available to programmers. Radeon Cauldron is essentially a framework library for rapid prototyping. It is used in AMD SDK samples and effects. The SDK works seamlessly with either the Vulkan or Direct3D 12 APIs. AMD has made the entire framework available for download on GitHub, the most popular repository for open-source software that was recently acquired by Microsoft. Interestingly, AMD has also uploaded a GltfSample. The weirdly named app has been designed, developed and built using the Cauldron framework. Incidentally, all the relevant resources to the Radeon Cauldron SDK are available on GitHub as well.

What Is Radeon Cauldron SDK And How Will It Impact Software, App or Game Development?

Radeon Cauldron is essentially an entire framework or complete Software Development Kit for rapid prototyping. It will be primarily be used in AMD SDK samples and effects. As mentioned above, it can work optimally with Vulkan, which is a preferred low-overhead, cross-platform 3D graphics and computing API. Moreover, the SDK also works with Direct3D’s latest version, which is Direct3D 12.

The Radeon Cauldron SDK was first released internally at AMD. Although expected, the initial release was exceptionally accepted and adopted by AMD’s internal software development teams. After the first pilot project, AMD confirmed even other tangential groups within the company began showing interest. Eventually, the SDK became one of the preferred frameworks for teams that handled tools, drivers, and even software and features demonstrations.

AMD is providing Radeon Cauldron 1.0 on GPUOpen under the MIT open source license. The company has repeatedly stressed the ease of understanding the code and the ease of extending the same. In other words, even if experienced programmers are unavailable, new users can quickly decipher the multiple components and their individual functions as well as the dependencies. This should greatly simplify the process of complex development and ensures that all users are confident and comfortable while using the same. Moreover, programmers can quickly and efficiently extend the code without worrying about hampering past work or breaking something in the process.

The framework is surprisingly flexible and versatile, assures AMD. The claims appear true primarily because the SDK uses vanilla C++. AMD has developed the same with a clear aim to follow a ‘one feature, one class, one file’ philosophy. Needless to mention this means programmers need not navigate complex and multiple files while simply attempting to understand how an application or web platform works. AMD has ensured that the Radeon Cauldron SDK will stick to the simplest form of classes. In other words, wherever possible, most of the classes will implement the following methods:

class MyTechnique

{

bool OnCreate(…); //creates the pipelines, static geometry, and other one-time initializations

void OnDestroy(…);

void OnDraw(…) // use the created resources to draw the technique

}

The Radeon Cauldron SDK allows two techniques that are needed to render glTF 2.0 models. While one is needed for the PBR (Physically Based Rendering) pass, the other is meant for the Depth-Only pass. As an extension, there are two classes called GltfPbrPass and GltfDepthPass. The data of a glTF model is split into three files:

  1. GltfCommon, an API-agnostic class that loads and takes care of the transformation and animation of the scene, including skinnin
    class MyTechnique { bool OnCreate(…); //creates the pipelines, static geometry, and other one-time initializations void OnDestroy(…); void OnDraw(…) // use the created resources to draw the technique }
    g.
  2. GltfTexturesAndBuffers, a class that loads and holds all the textures, skinning matrices, and geometry buffers.
  3. GltfPbrPass and GltfDepthPass, two classes that use the above classes to render the scene with the mentioned techniques.

The Radeon Cauldron framework contains both, graphics-agnostic and graphics-dependent code. Hence the framework can be split into three Visual Studio projects:

  1. Framework_DX12: As evident from the name, this part pertains to the DirectX12. In other words, it contains all the Direct3D 12 code.
  2. Framework_VK: This part contains all the relevant Vulkan code.

Incidentally, there is a third component as well, which is common for both the types of Visual Studio projects mentioned above. This part is called ‘Framework_Common’. The common component contains the following aspects:

GLTF structures

  • Transformation and animation code
  • Loading images
  • Window handling
  • Camera

The Radeon Cauldron framework supports post-processing techniques such as bloom, blur, downsampling, and tone-mapping. The SDK introduces two new sub-members. These are useful in the creation of temporary render targets:

bool OnCreateWindowSizeDependentResources(…) // creates temporary render targets needed for the effect

void OnDestroyWindowSizeDependentResources(…)

Interestingly, the internally tested AMD Radeon Cauldron 1.0 SDK allows programmers to implement things at a lower level as well. Surprisingly, even at these levels, they can use several memory managers to ensure things run smoothly. Some of the memory managers that still work even at a lower level are as follows:

  • StaticBufferPool: This component holds the static data. Moreover, it features sub-allocation as well.
  • DynamicBufferRing: This is a circular buffer system. Programmers can rely on this for constant buffers.
  • Texture: Allows loading of textures and creation of render targets. Interestingly the Texture system also allows the creation of views for the render targets.
  • ShaderCompilerHelper: This is a powerful tool that assists in compiling the source code. The ShaderCompilerHelper also caches the binaries. Needless to mention, this significantly brings down the loading times.
  • UploadHeap: This tool allows programmers to sub-allocate from a system memory pool to upload data, which essentially includes textures as well as buffers to a video memory buffer.

As this is an open-source SDK, AMD is urging early outside adopters to test the same and offer their feedback. It is quite likely that AMD will analyze the same and implement some of the suggestions to improve the Radeon Cauldron SDK.

Tags

Alap Naik Desai


A B.Tech Plastics (UDCT) and a Windows enthusiast. Optimizing the OS, exploring software, searching and deploying solutions to strange and weird issues is Alap's main interest.
Close