Developing Microsoft® DirectX®12 applications
Microsoft® DirectX®12 provides low-level APIs for creating games and other graphics applications.
Here on GPUOpen, we not only provide tools and libraries to help you with the development of your Vulkan application, but we’ve produced quite a few detailed blogs and videos to support you along the way too.
Jump to the section you need:
Videos
Our engineers regularly present at industry conferences on topics relating to DirectX.
These links to YouTube videos will usually provide an opportunity to download the slides shown as well.
Don’t miss our other videos about DirectX and more available here on GPUOpen!
AMD RDNA™ 2 – DirectX® Raytracing 1.1 – YouTube link
Graphics feature architect Rys Sommefeldt provides a short presentation on the major advantages of the new API, and how to best utilize it on AMD RDNA™ 2-based hardware.
AMD RDNA™ 2 – DirectX® 12 Ultimate: Variable Rate Shading – YouTube link
Engineer Stephan Hodes provides a short description how VRS works, and how AMD’s FidelityFX Variable Shading technique can assist with integrating VRS into your engine.
AMD RDNA™ 2 – DirectX® 12 Ultimate: Sampler Feedback and Mesh Shaders – YouTube link
Engineer Colin Riley provides a short description of Sampler Feedback and Mesh Shaders, as well as important performance guidelines that graphics developers should consider when using AMD RDNA™ 2-based GPUs.
Porting Your Engine to Vulkan® or DirectX®12
This talk by AMD’s Adam Sawicki at Digital Dragons in 2018 discusses how to port your engine to Vulkan® or DirectX®12.
Presentations
If you’re just getting started with DirectX12, these presentations are an excellent place to start to understand the concepts.
Concurrency Model in Explicit Graphics APIs
Dr. Matthäus G. Chajdas and Dominik Baumeister give a (slightly) more in-depth look for people interested in graphics programming. They prepare the mental model for explicit graphics APIs such as DirectX12 and Vulkan.
Memory Management in Vulkan and DX12
Adam Sawicki introduces memory management in Vulkan and DirectX 12 with a detailed presentation on the different memory types, gives some tips and tricks, and discusses the libraries involved.
Don’t miss more presentations on DirectX and other topics available on GPUOpen!
Sample - "HelloD3D12"
Ready to put things into practice? Our “HelloD3D12” sample is a great way to get hands-on and see how everything works.
We have more DirectX samples further down the page too.
HelloD3D12 DirectX® 12 Sample
HelloD3D12 is a small, introductory Direct3D 12 sample, which shows how to set up a window and render a textured quad complete with proper uploading handling, multiple frames queued and constant buffers.
Libraries and tools
If you’re looking for some welcome help with allocating and managing memory, our Direct3D 12 Memory Allocator (D3D12MA) library is exactly what you need!
D3D12 Memory Allocator
The D3D12 Memory Allocator (D3D12MA) is a C++ library that provides a simple and easy-to-integrate API to help you allocate memory for DirectX®12 buffers and textures.
Our very popular Radeon Developer Tool Suite is a package containing several tools to help you analyze and optimize your DirectX application, and now includes ray tracing analysis.
Radeon™ Raytracing Analyzer (RRA) is a tool which allows you to investigate the performance of your raytracing applications and highlight potential bottlenecks.
Radeon™ Memory Visualizer (RMV) is a tool to allow you to gain a deep understanding of how your application uses memory for graphics resources.
RGP gives you unprecedented, in-depth access to a GPU. Easily analyze graphics, async compute usage, event timing, pipeline stalls, barriers, bottlenecks, and other performance inefficiencies.
Radeon GPU Analyzer is an offline compiler and performance analysis tool for DirectX®, Vulkan®, SPIR-V™, OpenGL® and OpenCL™.
Don’t forget, you can also find DirectX support with our FidelityFX effects. We also have other tools and SDKs which support DirectX.
Ready to learn more?
Take a look at our dedicated DirectX 12 and DirectX 12 Ultimate pages here on GPUOpen.
There’s also plenty of blog posts that are about or mention DirectX12 to look through:
This blog series provides detailed explanations, analysis, use-case examples, tutorials, and advice about mesh shading.
This sample demonstrates how to use most of Cauldron’s features. It is also a useful reference for getting started with developing your own samples and prototypes.
This sample demonstrates how to enable Freesync Premium Pro (HDR) with the DirectX® 12 and Vulkan® APIs.
This sample demonstrates how to use the explicit Crossfire™ application programming interface (API).
This is a slightly modified version of the Microsoft D3D12nBodyGravity sample, This sample demonstrates the use of asynchronous compute shaders (multi-engine) to simulate an n-body gravity system.
This sample demonstrates some of the ways in which to reduce scene aliasing without using a post process technique.
This SDK sample implements PN Triangles and Phong tessellation. It also shows how to optimize performance by using adaptive tessellation techniques.
This sample presents a technique for achieving highly optimized, user-defined separable filters.
This sample demonstrates a post-process pixel shader technique that applies fullscreen anti-aliasing to an image.
This sample demonstrates how to implement a simple GPU-based particle system.
This sample provides an example implementation of the Forward+ algorithm, which extends traditional forward rendering to support high numbers of dynamic lights while maintaining performance.
The DepthBoundsTest11 sample shows how to use the Depth Bounds driver extension.
This sample provides an example implementation of two tile-based light culling methods: Forward+ and Tiled Deferred.
Other GPUOpen samples that use DirectX12
Barycentrics DirectX® Shader Extension Samples
The Barycentrics samples show how to enable intrinsic instructions in your DirectX®11 or DirectX®12 HLSL code.
Microsoft documentation
Explore the fantastic DirectX®12 Developer resources available from our partners at Microsoft®
Latest DirectX news on GPUOpen
AMF v1.4.33 provides native DX12 encoding support, public Vulkan Khronos decoding extensions + more
In addition, AMF on Linux can now be used with AMD Pro Vulkan and experimentally with RADV drivers. Download Advanced Media Framework now!
AMD support for Microsoft DirectStorage 1.1
AMD is pleased to support Microsoft’s recently released DirectStorage 1.1 with GPU Decompression. DirectStorage must be enabled by developers to realize the benefits.
AMD support for Shader Model 6.7 and enhanced barriers in the Agility SDK
The upcoming AMD Radeon Software Adrenalin Edition release offers full Shader Model 6.7 support to align with the new update to Agility SDK from Microsoft.
Developing with Vulkan®? We have a similar page for Vulkan® developers!
Developing Vulkan® applications
Discover our Vulkan blog posts, presentations, samples, and more. Find out how we can help you create and optimize your Vulkan applications!