=================================
User Guide for the DirectX Target
=================================

.. warning::
   Disclaimer: The DirectX backend is experimental and under active development.
   It is not yet feature complete or ready to be used outside of experimental or
   demonstration contexts.

.. contents::
   :local:

.. toctree::
   :hidden:

Introduction
============

The DirectX target implements the DirectX programmability interfaces. These
interfaces are documented in the `DirectX Specifications. <https://github.com/Microsoft/DirectX-Specs>`_

Initially the backend is aimed at supporting DirectX 12, and support for DirectX
11 is planned at a later date.

The DirectX backend is currently experimental and is not shipped with any
release builds of LLVM tools. To enable building the DirectX backend locally add
``DirectX`` to the ``LLVM_EXPERIMENTAL_TARGETS_TO_BUILD`` CMake option. For more
information on building LLVM see the :doc:`CMake` documentation.

.. _dx-target-triples:

Target Triples
==============

At present the DirectX target only supports the ``dxil`` architecture, which
generates code for the
`DirectX Intermediate Language. <https://github.com/microsoft/DirectXShaderCompiler/blob/main/docs/DXIL.rst>`_

In addition to target architecture, the DirectX backend also needs to know the
target runtime version and pipeline stage. These are expressed using the OS and
Environment triple component.

Presently the DirectX backend requires targeting the ``shadermodel`` OS, and
supports versions 6.0+ (at time of writing the latest announced version is 6.7).

.. table:: DirectX Environments

     ================== ========================================================
     Environment         Description
     ================== ========================================================
     ``pixel``           Pixel shader
     ``vertex``          Vertex shader
     ``geometry``        Geometry shader
     ``hull``            Hull shader (tesselation)
     ``domain``          Domain shader (tesselation)
     ``compute``         Compute kernel
     ``library``         Linkable ``dxil`` library
     ``raygeneration``   Ray generation (ray tracing)
     ``intersection``    Ray intersection (ray tracing)
     ``anyhit``          Ray any collision (ray tracing)
     ``closesthit``      Ray closest collision (ray tracing)
     ``miss``            Ray miss (ray tracing)
     ``callable``        Callable shader (ray tracing)
     ``mesh``            Mesh shader
     ``amplification``   Amplification shader
     ================== ========================================================

Output Binaries
===============

The DirectX runtime APIs read a file format based on the
`DirectX Specification. <https://github.com/Microsoft/DirectX-Specs>`_. In
different codebases the file format is referred to by different names
(specifically ``DXBC`` and ``DXILContainer``). Since the format is used to store
both ``DXBC`` and ``DXIL`` outputs, and the ultimate goal is to support both as
code generation targets in LLVM, the LLVM codebase uses a more neutral name,
``DXContainer``.

The ``DXContainer`` format is sparsely documented in the functional
specification, but a reference implementation exists in the
`DirectXShaderCompiler. <https://github.com/microsoft/DirectXShaderCompiler>`_.

Support for generating ``DXContainer`` files in LLVM, is being added to the LLVM
MC layer for object streamers and writers, and to the Object and ObjectYAML
libraries for testing and object file tooling.

For ``dxil`` targeting, bitcode emission into ``DXContainer`` files follows a
similar model to the ``-fembed-bitcode`` flag supported by clang for other
targets.
