Experimental Runtime test suite for HLSL
Testing Machine | DXC | Clang |
---|---|---|
Windows DirectX12 Intel GPU | ||
Windows DirectX12 Warp | ||
Windows Vulkan Intel GPU | ||
Windows DirectX12 NVIDIA GPU | ||
Windows Vulkan NVIDIA GPU | ||
macOS Apple M1 |
This project requires being able to locally build LLVM and leverages LLVM's build infrastructure. It also requires installing the pyyaml
Python package. You can install pyyaml
by running:
pip3 install pyyaml
Add the following to the CMake options:
-DLLVM_EXTERNAL_OFFLOADTEST_SOURCE_DIR=${workspaceRoot}\..\OffloadTest -DLLVM_EXTERNAL_PROJECTS="OffloadTest"
If you do not have a build of dxc on your path you'll need to specify the shader compiler to use by passing:
-DDXC_DIR=<path to folder containing dxc & dxv>
This framework provides a YAML representation for describing GPU pipelines and buffers. The format is implemented by the API/Pipeline.{h|cpp}
sources. The following is an example pipleine YAML description:
---
DescriptorSets:
- Resources:
- Access: Constant
Format: Int32
Data: [ 1, 2, 3, 4, 5, 6, 7, 8]
DirectXBinding:
Register: 0 # implies b0 due to Access being Constant
Space: 0
- Access: ReadOnly
Format: Float32
Data: [ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]
DirectXBinding:
Register: 0 # implies t0 due to Access being RO
Space: 0
- Resources:
- Access: ReadOnly
Format: Hex16
Data: [ 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]
DirectXBinding:
Register: 1 # implies t1 due to Access being RO
Space: 0
...