Skip to content

Commit c29d3f2

Browse files
author
joaosaffran
committed
addressing comments
1 parent 2a4c2cb commit c29d3f2

File tree

5 files changed

+35
-34
lines changed

5 files changed

+35
-34
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ struct RootDescriptor : public v1::RootDescriptor {
602602
uint32_t Flags;
603603

604604
RootDescriptor() = default;
605-
RootDescriptor(v1::RootDescriptor &Base)
605+
explicit RootDescriptor(v1::RootDescriptor &Base)
606606
: v1::RootDescriptor(Base), Flags(0u) {}
607607

608608
void swapBytes() {

llvm/include/llvm/MC/DXContainerRootSignature.h

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ struct RootParameterInfo {
2121

2222
RootParameterInfo() = default;
2323

24-
RootParameterInfo(dxbc::RootParameterHeader H, size_t L)
25-
: Header(H), Location(L) {}
24+
RootParameterInfo(dxbc::RootParameterHeader Header, size_t Location)
25+
: Header(Header), Location(Location) {}
2626
};
2727

2828
struct RootParametersContainer {
@@ -31,29 +31,34 @@ struct RootParametersContainer {
3131
SmallVector<dxbc::RootConstants> Constants;
3232
SmallVector<dxbc::RTS0::v2::RootDescriptor> Descriptors;
3333

34-
void addInfo(dxbc::RootParameterHeader H, size_t L) {
35-
ParametersInfo.push_back(RootParameterInfo(H, L));
34+
void addInfo(dxbc::RootParameterHeader Header, size_t Location) {
35+
ParametersInfo.push_back(RootParameterInfo(Header, Location));
3636
}
3737

38-
void addParameter(dxbc::RootParameterHeader H, dxbc::RootConstants C) {
39-
addInfo(H, Constants.size());
40-
Constants.push_back(C);
38+
void addParameter(dxbc::RootParameterHeader Header,
39+
dxbc::RootConstants Constant) {
40+
addInfo(Header, Constants.size());
41+
Constants.push_back(Constant);
4142
}
4243

43-
void addParameter(dxbc::RootParameterHeader H,
44-
dxbc::RTS0::v2::RootDescriptor D) {
45-
addInfo(H, Descriptors.size());
46-
Descriptors.push_back(D);
44+
void addInvalidParameter(dxbc::RootParameterHeader Header) {
45+
addInfo(Header, -1);
46+
}
47+
48+
void addParameter(dxbc::RootParameterHeader Header,
49+
dxbc::RTS0::v2::RootDescriptor Descriptor) {
50+
addInfo(Header, Descriptors.size());
51+
Descriptors.push_back(Descriptor);
4752
}
4853

4954
const std::pair<uint32_t, uint32_t>
50-
getTypeAndLocForParameter(uint32_t Index) const {
51-
const RootParameterInfo &Info = ParametersInfo[Index];
55+
getTypeAndLocForParameter(uint32_t Location) const {
56+
const RootParameterInfo &Info = ParametersInfo[Location];
5257
return {Info.Header.ParameterType, Info.Location};
5358
}
5459

55-
const dxbc::RootParameterHeader &getHeader(size_t Index) const {
56-
const RootParameterInfo &Info = ParametersInfo[Index];
60+
const dxbc::RootParameterHeader &getHeader(size_t Location) const {
61+
const RootParameterInfo &Info = ParametersInfo[Location];
5762
return Info.Header;
5863
}
5964

llvm/lib/MC/DXContainerRootSignature.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
8989
llvm::endianness::little);
9090
support::endian::write(BOS, Constants.Num32BitValues,
9191
llvm::endianness::little);
92-
} break;
92+
break;
93+
}
9394
case llvm::to_underlying(dxbc::RootParameterType::CBV):
9495
case llvm::to_underlying(dxbc::RootParameterType::SRV):
9596
case llvm::to_underlying(dxbc::RootParameterType::UAV): {
@@ -102,7 +103,8 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
102103
llvm::endianness::little);
103104
if (Version > 1)
104105
support::endian::write(BOS, Descriptor.Flags, llvm::endianness::little);
105-
} break;
106+
break;
107+
}
106108
}
107109
}
108110
assert(Storage.size() == getSize());

llvm/lib/ObjectYAML/DXContainerEmitter.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,8 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
274274
RS.StaticSamplersOffset = P.RootSignature->StaticSamplersOffset;
275275

276276
for (const auto &Param : P.RootSignature->Parameters) {
277-
auto Header = dxbc::RootParameterHeader{Param.Type, Param.Visibility,
278-
Param.Offset};
277+
dxbc::RootParameterHeader Header{Param.Type, Param.Visibility,
278+
Param.Offset};
279279

280280
switch (Param.Type) {
281281
case llvm::to_underlying(dxbc::RootParameterType::Constants32Bit):
@@ -288,24 +288,18 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
288288
case llvm::to_underlying(dxbc::RootParameterType::SRV):
289289
case llvm::to_underlying(dxbc::RootParameterType::UAV):
290290
case llvm::to_underlying(dxbc::RootParameterType::CBV):
291-
if (RS.Version == 1) {
292-
dxbc::RTS0::v1::RootDescriptor Descriptor;
293-
Descriptor.RegisterSpace = Param.Descriptor.RegisterSpace;
294-
Descriptor.ShaderRegister = Param.Descriptor.ShaderRegister;
295-
RS.ParametersContainer.addParameter(Header, Descriptor);
296-
} else {
297-
dxbc::RTS0::v2::RootDescriptor Descriptor;
298-
Descriptor.RegisterSpace = Param.Descriptor.RegisterSpace;
299-
Descriptor.ShaderRegister = Param.Descriptor.ShaderRegister;
291+
dxbc::RTS0::v2::RootDescriptor Descriptor;
292+
Descriptor.RegisterSpace = Param.Descriptor.RegisterSpace;
293+
Descriptor.ShaderRegister = Param.Descriptor.ShaderRegister;
294+
if (RS.Version > 1)
300295
Descriptor.Flags = Param.Descriptor.getEncodedFlags();
301-
RS.ParametersContainer.addParameter(Header, Descriptor);
302-
}
296+
RS.ParametersContainer.addParameter(Header, Descriptor);
303297
break;
304298
default:
305299
// Handling invalid parameter type edge case. We intentionally let
306300
// obj2yaml/yaml2obj parse and emit invalid dxcontainer data, in order
307301
// for that to be used as a testing tool more effectively.
308-
RS.ParametersContainer.addInfo(Header, -1);
302+
RS.ParametersContainer.addInvalidParameter(Header);
309303
}
310304
}
311305

llvm/lib/Target/DirectX/DXILRootSignature.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ static bool parseRootConstants(LLVMContext *Ctx, mcdxbc::RootSignatureDesc &RSD,
7676
return reportError(Ctx, "Invalid format for RootConstants Element");
7777

7878
dxbc::RootParameterHeader Header;
79-
// this will be properly calculated when writing it.
80-
Header.ParameterOffset = 0;
79+
// The parameter offset doesn't matter here - we recalculate it during
80+
// serialization Header.ParameterOffset = 0;
8181
Header.ParameterType =
8282
llvm::to_underlying(dxbc::RootParameterType::Constants32Bit);
8383

0 commit comments

Comments
 (0)