=================================
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:

   DirectX/DXContainer
   DirectX/DXILArchitecture
   DirectX/DXILOpTableGenDesign
   DirectX/DXILResources
   DirectX/RootSignatures

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 build 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+ (as 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>`_.
The format is documented in the LLVM project docs as well (see
:doc:`DirectX/DXContainer`).

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.
