LLVM 22.0.0git
Classes | Public Member Functions | Friends | List of all members
llvm::hlsl::BindingInfo Class Reference

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

BindingSpacesgetBindingSpaces (dxil::ResourceClass RC)
 
const BindingSpacesgetBindingSpaces (dxil::ResourceClass RC) const
 
LLVM_ABI std::optional< uint32_tfindAvailableBinding (dxil::ResourceClass RC, uint32_t Space, int32_t Size)
 

Friends

class BindingInfoBuilder
 

Detailed Description

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.

Member Function Documentation

◆ findAvailableBinding()

std::optional< uint32_t > BindingInfo::findAvailableBinding ( dxil::ResourceClass  RC,
uint32_t  Space,
int32_t  Size 
)

◆ getBindingSpaces() [1/2]

BindingSpaces & llvm::hlsl::BindingInfo::getBindingSpaces ( dxil::ResourceClass  RC)
inline

◆ getBindingSpaces() [2/2]

const BindingSpaces & llvm::hlsl::BindingInfo::getBindingSpaces ( dxil::ResourceClass  RC) const
inline

Definition at line 92 of file HLSLBinding.h.

References getBindingSpaces().

Friends And Related Function Documentation

◆ BindingInfoBuilder

friend class BindingInfoBuilder
friend

Definition at line 100 of file HLSLBinding.h.


The documentation for this class was generated from the following files: