| HLSL Resources are runtime-bound data that is provided as input, output or both |
| to shader programs written in HLSL. Resource Types in HLSL provide key user |
| abstractions for reading and writing resource data. |
| In Clang resource types are forward declared by the ``HLSLExternalSemaSource`` |
| on initialization. They are then lazily completed when ``requiresCompleteType`` |
| Resource types are classes that have the "intangible" resource handle type, |
| `__hlsl_resource_t`, as a member. These are generally templated class |
| declarations that specify the type of data that can be loaded from or stored |
| into the resource. The handle is annotated with hlsl-specific attributes |
| describing properties of the resource. Member functions of a resource type are |
| generally fairly simple wrappers around builtins that operate on the handle |
| During code generation resource types are lowered to target extension types in |
| IR. These types are target specific and differ between DXIL and SPIR-V |
| generation, providing the necessary information for the targets to generate |
| binding metadata for their respective target runtimes. |