removing dependency of Object
This commit is contained in:
parent
8353fe0d0a
commit
f3ecd8ae8c
@ -19,6 +19,18 @@ namespace llvm {
|
|||||||
class raw_ostream;
|
class raw_ostream;
|
||||||
namespace mcdxbc {
|
namespace mcdxbc {
|
||||||
|
|
||||||
|
struct RootConstants {
|
||||||
|
uint32_t ShaderRegister;
|
||||||
|
uint32_t RegisterSpace;
|
||||||
|
uint32_t Num32BitValues;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RootDescriptor {
|
||||||
|
uint32_t ShaderRegister;
|
||||||
|
uint32_t RegisterSpace;
|
||||||
|
uint32_t Flags;
|
||||||
|
};
|
||||||
|
|
||||||
struct RootParameterInfo {
|
struct RootParameterInfo {
|
||||||
dxbc::RootParameterType Type;
|
dxbc::RootParameterType Type;
|
||||||
dxbc::ShaderVisibility Visibility;
|
dxbc::ShaderVisibility Visibility;
|
||||||
@ -42,8 +54,8 @@ struct DescriptorTable {
|
|||||||
struct RootParametersContainer {
|
struct RootParametersContainer {
|
||||||
SmallVector<RootParameterInfo> ParametersInfo;
|
SmallVector<RootParameterInfo> ParametersInfo;
|
||||||
|
|
||||||
SmallVector<dxbc::RTS0::v1::RootConstants> Constants;
|
SmallVector<RootConstants> Constants;
|
||||||
SmallVector<dxbc::RTS0::v2::RootDescriptor> Descriptors;
|
SmallVector<RootDescriptor> Descriptors;
|
||||||
SmallVector<DescriptorTable> Tables;
|
SmallVector<DescriptorTable> Tables;
|
||||||
|
|
||||||
void addInfo(dxbc::RootParameterType Type, dxbc::ShaderVisibility Visibility,
|
void addInfo(dxbc::RootParameterType Type, dxbc::ShaderVisibility Visibility,
|
||||||
@ -52,15 +64,14 @@ struct RootParametersContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addParameter(dxbc::RootParameterType Type,
|
void addParameter(dxbc::RootParameterType Type,
|
||||||
dxbc::ShaderVisibility Visibility,
|
dxbc::ShaderVisibility Visibility, RootConstants Constant) {
|
||||||
dxbc::RTS0::v1::RootConstants Constant) {
|
|
||||||
addInfo(Type, Visibility, Constants.size());
|
addInfo(Type, Visibility, Constants.size());
|
||||||
Constants.push_back(Constant);
|
Constants.push_back(Constant);
|
||||||
}
|
}
|
||||||
|
|
||||||
void addParameter(dxbc::RootParameterType Type,
|
void addParameter(dxbc::RootParameterType Type,
|
||||||
dxbc::ShaderVisibility Visibility,
|
dxbc::ShaderVisibility Visibility,
|
||||||
dxbc::RTS0::v2::RootDescriptor Descriptor) {
|
RootDescriptor Descriptor) {
|
||||||
addInfo(Type, Visibility, Descriptors.size());
|
addInfo(Type, Visibility, Descriptors.size());
|
||||||
Descriptors.push_back(Descriptor);
|
Descriptors.push_back(Descriptor);
|
||||||
}
|
}
|
||||||
@ -76,11 +87,11 @@ struct RootParametersContainer {
|
|||||||
return Info;
|
return Info;
|
||||||
}
|
}
|
||||||
|
|
||||||
const dxbc::RTS0::v1::RootConstants &getConstant(size_t Index) const {
|
const RootConstants &getConstant(size_t Index) const {
|
||||||
return Constants[Index];
|
return Constants[Index];
|
||||||
}
|
}
|
||||||
|
|
||||||
const dxbc::RTS0::v2::RootDescriptor &getRootDescriptor(size_t Index) const {
|
const RootDescriptor &getRootDescriptor(size_t Index) const {
|
||||||
return Descriptors[Index];
|
return Descriptors[Index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ Error MetadataParser::parseRootConstants(mcdxbc::RootSignatureDesc &RSD,
|
|||||||
if (auto E = Visibility.takeError())
|
if (auto E = Visibility.takeError())
|
||||||
return Error(std::move(E));
|
return Error(std::move(E));
|
||||||
|
|
||||||
dxbc::RTS0::v1::RootConstants Constants;
|
mcdxbc::RootConstants Constants;
|
||||||
if (std::optional<uint32_t> Val = extractMdIntValue(RootConstantNode, 2))
|
if (std::optional<uint32_t> Val = extractMdIntValue(RootConstantNode, 2))
|
||||||
Constants.ShaderRegister = *Val;
|
Constants.ShaderRegister = *Val;
|
||||||
else
|
else
|
||||||
@ -294,7 +294,7 @@ Error MetadataParser::parseRootDescriptors(
|
|||||||
if (auto E = Visibility.takeError())
|
if (auto E = Visibility.takeError())
|
||||||
return Error(std::move(E));
|
return Error(std::move(E));
|
||||||
|
|
||||||
dxbc::RTS0::v2::RootDescriptor Descriptor;
|
mcdxbc::RootDescriptor Descriptor;
|
||||||
if (std::optional<uint32_t> Val = extractMdIntValue(RootDescriptorNode, 2))
|
if (std::optional<uint32_t> Val = extractMdIntValue(RootDescriptorNode, 2))
|
||||||
Descriptor.ShaderRegister = *Val;
|
Descriptor.ShaderRegister = *Val;
|
||||||
else
|
else
|
||||||
@ -544,7 +544,7 @@ Error MetadataParser::validateRootSignature(
|
|||||||
case dxbc::RootParameterType::CBV:
|
case dxbc::RootParameterType::CBV:
|
||||||
case dxbc::RootParameterType::UAV:
|
case dxbc::RootParameterType::UAV:
|
||||||
case dxbc::RootParameterType::SRV: {
|
case dxbc::RootParameterType::SRV: {
|
||||||
const dxbc::RTS0::v2::RootDescriptor &Descriptor =
|
const mcdxbc::RootDescriptor &Descriptor =
|
||||||
RSD.ParametersContainer.getRootDescriptor(Info.Location);
|
RSD.ParametersContainer.getRootDescriptor(Info.Location);
|
||||||
if (!hlsl::rootsig::verifyRegisterValue(Descriptor.ShaderRegister))
|
if (!hlsl::rootsig::verifyRegisterValue(Descriptor.ShaderRegister))
|
||||||
DeferredErrs =
|
DeferredErrs =
|
||||||
|
@ -97,7 +97,7 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
|
|||||||
const auto Info = ParametersContainer.getInfo(I);
|
const auto Info = ParametersContainer.getInfo(I);
|
||||||
switch (Info.Type) {
|
switch (Info.Type) {
|
||||||
case dxbc::RootParameterType::Constants32Bit: {
|
case dxbc::RootParameterType::Constants32Bit: {
|
||||||
const dxbc::RTS0::v1::RootConstants &Constants =
|
const mcdxbc::RootConstants &Constants =
|
||||||
ParametersContainer.getConstant(Info.Location);
|
ParametersContainer.getConstant(Info.Location);
|
||||||
support::endian::write(BOS, Constants.ShaderRegister,
|
support::endian::write(BOS, Constants.ShaderRegister,
|
||||||
llvm::endianness::little);
|
llvm::endianness::little);
|
||||||
@ -110,7 +110,7 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
|
|||||||
case dxbc::RootParameterType::CBV:
|
case dxbc::RootParameterType::CBV:
|
||||||
case dxbc::RootParameterType::SRV:
|
case dxbc::RootParameterType::SRV:
|
||||||
case dxbc::RootParameterType::UAV: {
|
case dxbc::RootParameterType::UAV: {
|
||||||
const dxbc::RTS0::v2::RootDescriptor &Descriptor =
|
const mcdxbc::RootDescriptor &Descriptor =
|
||||||
ParametersContainer.getRootDescriptor(Info.Location);
|
ParametersContainer.getRootDescriptor(Info.Location);
|
||||||
|
|
||||||
support::endian::write(BOS, Descriptor.ShaderRegister,
|
support::endian::write(BOS, Descriptor.ShaderRegister,
|
||||||
|
@ -288,7 +288,7 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
|
|||||||
case dxbc::RootParameterType::Constants32Bit: {
|
case dxbc::RootParameterType::Constants32Bit: {
|
||||||
const DXContainerYAML::RootConstantsYaml &ConstantYaml =
|
const DXContainerYAML::RootConstantsYaml &ConstantYaml =
|
||||||
P.RootSignature->Parameters.getOrInsertConstants(L);
|
P.RootSignature->Parameters.getOrInsertConstants(L);
|
||||||
dxbc::RTS0::v1::RootConstants Constants;
|
mcdxbc::RootConstants Constants;
|
||||||
|
|
||||||
Constants.Num32BitValues = ConstantYaml.Num32BitValues;
|
Constants.Num32BitValues = ConstantYaml.Num32BitValues;
|
||||||
Constants.RegisterSpace = ConstantYaml.RegisterSpace;
|
Constants.RegisterSpace = ConstantYaml.RegisterSpace;
|
||||||
@ -302,7 +302,7 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
|
|||||||
const DXContainerYAML::RootDescriptorYaml &DescriptorYaml =
|
const DXContainerYAML::RootDescriptorYaml &DescriptorYaml =
|
||||||
P.RootSignature->Parameters.getOrInsertDescriptor(L);
|
P.RootSignature->Parameters.getOrInsertDescriptor(L);
|
||||||
|
|
||||||
dxbc::RTS0::v2::RootDescriptor Descriptor;
|
mcdxbc::RootDescriptor Descriptor;
|
||||||
Descriptor.RegisterSpace = DescriptorYaml.RegisterSpace;
|
Descriptor.RegisterSpace = DescriptorYaml.RegisterSpace;
|
||||||
Descriptor.ShaderRegister = DescriptorYaml.ShaderRegister;
|
Descriptor.ShaderRegister = DescriptorYaml.ShaderRegister;
|
||||||
if (RS.Version > 1)
|
if (RS.Version > 1)
|
||||||
|
@ -171,7 +171,7 @@ static void validateRootSignature(Module &M,
|
|||||||
dxbc::RootParameterType ParamType = dxbc::RootParameterType(ParamInfo.Type);
|
dxbc::RootParameterType ParamType = dxbc::RootParameterType(ParamInfo.Type);
|
||||||
switch (ParamType) {
|
switch (ParamType) {
|
||||||
case dxbc::RootParameterType::Constants32Bit: {
|
case dxbc::RootParameterType::Constants32Bit: {
|
||||||
dxbc::RTS0::v1::RootConstants Const =
|
mcdxbc::RootConstants Const =
|
||||||
RSD.ParametersContainer.getConstant(ParamInfo.Location);
|
RSD.ParametersContainer.getConstant(ParamInfo.Location);
|
||||||
Builder.trackBinding(dxil::ResourceClass::CBuffer, Const.RegisterSpace,
|
Builder.trackBinding(dxil::ResourceClass::CBuffer, Const.RegisterSpace,
|
||||||
Const.ShaderRegister, Const.ShaderRegister,
|
Const.ShaderRegister, Const.ShaderRegister,
|
||||||
@ -182,7 +182,7 @@ static void validateRootSignature(Module &M,
|
|||||||
case dxbc::RootParameterType::SRV:
|
case dxbc::RootParameterType::SRV:
|
||||||
case dxbc::RootParameterType::UAV:
|
case dxbc::RootParameterType::UAV:
|
||||||
case dxbc::RootParameterType::CBV: {
|
case dxbc::RootParameterType::CBV: {
|
||||||
dxbc::RTS0::v2::RootDescriptor Desc =
|
mcdxbc::RootDescriptor Desc =
|
||||||
RSD.ParametersContainer.getRootDescriptor(ParamInfo.Location);
|
RSD.ParametersContainer.getRootDescriptor(ParamInfo.Location);
|
||||||
Builder.trackBinding(toResourceClass(ParamInfo.Type), Desc.RegisterSpace,
|
Builder.trackBinding(toResourceClass(ParamInfo.Type), Desc.RegisterSpace,
|
||||||
Desc.ShaderRegister, Desc.ShaderRegister,
|
Desc.ShaderRegister, Desc.ShaderRegister,
|
||||||
|
@ -182,7 +182,7 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
|
|||||||
const uint32_t &Loc = Info.Location;
|
const uint32_t &Loc = Info.Location;
|
||||||
switch (Info.Type) {
|
switch (Info.Type) {
|
||||||
case dxbc::RootParameterType::Constants32Bit: {
|
case dxbc::RootParameterType::Constants32Bit: {
|
||||||
const dxbc::RTS0::v1::RootConstants &Constants =
|
const mcdxbc::RootConstants &Constants =
|
||||||
RS.ParametersContainer.getConstant(Loc);
|
RS.ParametersContainer.getConstant(Loc);
|
||||||
OS << " Register Space: " << Constants.RegisterSpace << "\n"
|
OS << " Register Space: " << Constants.RegisterSpace << "\n"
|
||||||
<< " Shader Register: " << Constants.ShaderRegister << "\n"
|
<< " Shader Register: " << Constants.ShaderRegister << "\n"
|
||||||
@ -192,7 +192,7 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
|
|||||||
case dxbc::RootParameterType::CBV:
|
case dxbc::RootParameterType::CBV:
|
||||||
case dxbc::RootParameterType::UAV:
|
case dxbc::RootParameterType::UAV:
|
||||||
case dxbc::RootParameterType::SRV: {
|
case dxbc::RootParameterType::SRV: {
|
||||||
const dxbc::RTS0::v2::RootDescriptor &Descriptor =
|
const mcdxbc::RootDescriptor &Descriptor =
|
||||||
RS.ParametersContainer.getRootDescriptor(Loc);
|
RS.ParametersContainer.getRootDescriptor(Loc);
|
||||||
OS << " Register Space: " << Descriptor.RegisterSpace << "\n"
|
OS << " Register Space: " << Descriptor.RegisterSpace << "\n"
|
||||||
<< " Shader Register: " << Descriptor.ShaderRegister << "\n";
|
<< " Shader Register: " << Descriptor.ShaderRegister << "\n";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user