LLVM 22.0.0git
|
BindingInfo represents the ranges of bindings and free space for each dxil::ResourceClass
.
More...
#include "llvm/Frontend/HLSL/HLSLBinding.h"
Classes | |
struct | BindingRange |
struct | BindingSpaces |
struct | RegisterSpace |
Public Member Functions | |
BindingSpaces & | getBindingSpaces (dxil::ResourceClass RC) |
const BindingSpaces & | getBindingSpaces (dxil::ResourceClass RC) const |
LLVM_ABI std::optional< uint32_t > | findAvailableBinding (dxil::ResourceClass RC, uint32_t Space, int32_t Size) |
Friends | |
class | BindingInfoBuilder |
BindingInfo represents the ranges of bindings and free space for each dxil::ResourceClass
.
This can represent HLSL-level bindings as well as bindings described in root signatures, and can be used for analysis of overlapping or missing bindings as well as for finding space for implicit bindings.
As an example, given these resource bindings:
RWBuffer<float> A[10] : register(u3); RWBuffer<float> B[] : register(u5, space2)
The binding info for UAV bindings should look like this:
UAVSpaces { ResClass = ResourceClass::UAV, Spaces = { { Space = 0u, FreeRanges = {{ 0u, 2u }, { 13u, ~0u }} }, { Space = 2u, FreeRanges = {{ 0u, 4u }} } } }
Definition at line 46 of file HLSLBinding.h.
std::optional< uint32_t > BindingInfo::findAvailableBinding | ( | dxil::ResourceClass | RC, |
uint32_t | Space, | ||
int32_t | Size | ||
) |
Definition at line 16 of file HLSLBinding.cpp.
References llvm::hlsl::BindingInfo::RegisterSpace::findAvailableBinding(), getBindingSpaces(), llvm::hlsl::BindingInfo::BindingSpaces::getOrInsertSpace(), and Size.
Referenced by llvm::DXILResourceBindingInfo::findAvailableBinding().
|
inline |
Definition at line 78 of file HLSLBinding.h.
References llvm::dxil::CBuffer, llvm_unreachable, llvm::dxil::Sampler, llvm::dxil::SRV, and llvm::dxil::UAV.
Referenced by findAvailableBinding(), and getBindingSpaces().
|
inline |
Definition at line 92 of file HLSLBinding.h.
References getBindingSpaces().
|
friend |
Definition at line 100 of file HLSLBinding.h.