| //===-- DXILABI.h - ABI Sensitive Values for DXIL ---------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains definitions of various constants and enums that are |
| // required to remain stable as per the DXIL format's requirements. |
| // |
| // Documentation for DXIL can be found in |
| // https://github.com/Microsoft/DirectXShaderCompiler/blob/main/docs/DXIL.rst. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_SUPPORT_DXILABI_H |
| #define LLVM_SUPPORT_DXILABI_H |
| |
| #include <cstdint> |
| |
| namespace llvm { |
| namespace dxil { |
| |
| enum class ResourceClass : uint8_t { |
| SRV = 0, |
| UAV, |
| CBuffer, |
| Sampler, |
| }; |
| |
| /// The kind of resource for an SRV or UAV resource. Sometimes referred to as |
| /// "Shape" in the DXIL docs. |
| enum class ResourceKind : uint32_t { |
| Invalid = 0, |
| Texture1D, |
| Texture2D, |
| Texture2DMS, |
| Texture3D, |
| TextureCube, |
| Texture1DArray, |
| Texture2DArray, |
| Texture2DMSArray, |
| TextureCubeArray, |
| TypedBuffer, |
| RawBuffer, |
| StructuredBuffer, |
| CBuffer, |
| Sampler, |
| TBuffer, |
| RTAccelerationStructure, |
| FeedbackTexture2D, |
| FeedbackTexture2DArray, |
| NumEntries, |
| }; |
| |
| /// The element type of an SRV or UAV resource. |
| enum class ElementType : uint32_t { |
| Invalid = 0, |
| I1, |
| I16, |
| U16, |
| I32, |
| U32, |
| I64, |
| U64, |
| F16, |
| F32, |
| F64, |
| SNormF16, |
| UNormF16, |
| SNormF32, |
| UNormF32, |
| SNormF64, |
| UNormF64, |
| PackedS8x32, |
| PackedU8x32, |
| }; |
| |
| /// Metadata tags for extra resource properties. |
| enum class ExtPropTags : uint32_t { |
| ElementType = 0, |
| StructuredBufferStride = 1, |
| SamplerFeedbackKind = 2, |
| Atomic64Use = 3, |
| }; |
| |
| enum class SamplerType : uint32_t { |
| Default = 0, |
| Comparison = 1, |
| Mono = 2, // Note: Seems to be unused. |
| }; |
| |
| enum class SamplerFeedbackType : uint32_t { |
| MinMip = 0, |
| MipRegionUsed = 1, |
| }; |
| |
| const unsigned MinWaveSize = 4; |
| const unsigned MaxWaveSize = 128; |
| |
| } // namespace dxil |
| } // namespace llvm |
| |
| #endif // LLVM_SUPPORT_DXILABI_H |