Skip to content

Commit 3991c5d

Browse files
author
joaosaffran
committed
address comments
1 parent 67da709 commit 3991c5d

File tree

6 files changed

+35
-30
lines changed

6 files changed

+35
-30
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -560,15 +560,17 @@ struct ProgramSignatureElement {
560560
static_assert(sizeof(ProgramSignatureElement) == 32,
561561
"ProgramSignatureElement is misaligned");
562562

563+
// following dx12 naming
564+
// https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12-d3d12_root_constants
563565
struct RootConstants {
564-
uint32_t Register;
565-
uint32_t Space;
566-
uint32_t NumOfConstants;
566+
uint32_t ShaderRegister;
567+
uint32_t RegisterSpace;
568+
uint32_t Num32BitValues;
567569

568570
void swapBytes() {
569-
sys::swapByteOrder(Register);
570-
sys::swapByteOrder(Space);
571-
sys::swapByteOrder(NumOfConstants);
571+
sys::swapByteOrder(ShaderRegister);
572+
sys::swapByteOrder(RegisterSpace);
573+
sys::swapByteOrder(Num32BitValues);
572574
}
573575
};
574576

llvm/include/llvm/ObjectYAML/DXContainerYAML.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ struct ShaderHash {
7676
#define ROOT_ELEMENT_FLAG(Num, Val) bool Val = false;
7777

7878
struct RootConstantsYaml {
79-
uint32_t Register;
80-
uint32_t Space;
81-
uint32_t NumOfConstants;
79+
uint32_t ShaderRegister;
80+
uint32_t RegisterSpace;
81+
uint32_t Num32BitValues;
8282
};
8383

8484
struct RootParameterYamlDesc {

llvm/lib/MC/DXContainerRootSignature.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ static void rewriteOffsetToCurrentByte(raw_svector_ostream &Stream,
3030
}
3131

3232
size_t RootSignatureDesc::getSize() const {
33-
size_t Size = sizeof(dxbc::RootSignatureHeader);
33+
size_t Size = sizeof(dxbc::RootSignatureHeader) +
34+
Parameters.size() * sizeof(dxbc::RootParameterHeader);
3435

3536
for (const auto &P : Parameters) {
36-
Size += sizeof(P.Header);
3737
switch (P.Header.ParameterType) {
3838
case dxbc::RootParameterType::Constants32Bit:
3939
Size += sizeof(dxbc::RootConstants);
@@ -47,15 +47,17 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
4747
SmallString<256> Storage;
4848
raw_svector_ostream BOS(Storage);
4949
BOS.reserveExtraSpace(getSize());
50+
5051
const uint32_t NumParameters = Parameters.size();
51-
const uint32_t Zero = 0u;
52+
const uint32_t StaticSamplerOffset = 0u;
53+
const uint32_t NumStaticSamplers = 0u;
5254

5355
support::endian::write(BOS, Header.Version, llvm::endianness::little);
5456
support::endian::write(BOS, NumParameters, llvm::endianness::little);
5557
support::endian::write(BOS, (uint32_t)sizeof(dxbc::RootSignatureHeader),
5658
llvm::endianness::little);
57-
support::endian::write(BOS, Zero, llvm::endianness::little);
58-
support::endian::write(BOS, Zero, llvm::endianness::little);
59+
support::endian::write(BOS, StaticSamplerOffset, llvm::endianness::little);
60+
support::endian::write(BOS, NumStaticSamplers, llvm::endianness::little);
5961
support::endian::write(BOS, Header.Flags, llvm::endianness::little);
6062

6163
SmallVector<uint32_t> ParamsOffsets;
@@ -75,14 +77,15 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
7577

7678
switch (P.Header.ParameterType) {
7779
case dxbc::RootParameterType::Constants32Bit:
78-
support::endian::write(BOS, P.Constants.Register,
80+
support::endian::write(BOS, P.Constants.ShaderRegister,
81+
llvm::endianness::little);
82+
support::endian::write(BOS, P.Constants.RegisterSpace,
7983
llvm::endianness::little);
80-
support::endian::write(BOS, P.Constants.Space, llvm::endianness::little);
81-
support::endian::write(BOS, P.Constants.NumOfConstants,
84+
support::endian::write(BOS, P.Constants.Num32BitValues,
8285
llvm::endianness::little);
8386
break;
8487
}
8588
}
86-
89+
assert(Storage.size() == getSize());
8790
OS.write(Storage.data(), Storage.size());
8891
}

llvm/lib/ObjectYAML/DXContainerEmitter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,9 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
277277
switch (Param.Type) {
278278

279279
case dxbc::RootParameterType::Constants32Bit:
280-
NewParam.Constants.NumOfConstants = Param.Constants.NumOfConstants;
281-
NewParam.Constants.Space = Param.Constants.Space;
282-
NewParam.Constants.Register = Param.Constants.Register;
280+
NewParam.Constants.Num32BitValues = Param.Constants.Num32BitValues;
281+
NewParam.Constants.RegisterSpace = Param.Constants.RegisterSpace;
282+
NewParam.Constants.ShaderRegister = Param.Constants.ShaderRegister;
283283
break;
284284
}
285285

llvm/lib/ObjectYAML/DXContainerYAML.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ DXContainerYAML::RootSignatureYamlDesc::RootSignatureYamlDesc(
5656
if (!Constants)
5757
llvm::errs() << "Error: " << Constants.takeError() << "\n";
5858

59-
NewP.Constants.NumOfConstants = Constants->NumOfConstants;
60-
NewP.Constants.Register = Constants->Register;
61-
NewP.Constants.Space = Constants->Space;
59+
NewP.Constants.Num32BitValues = Constants->Num32BitValues;
60+
NewP.Constants.ShaderRegister = Constants->ShaderRegister;
61+
NewP.Constants.RegisterSpace = Constants->RegisterSpace;
6262
}
6363
Parameters.push_back(NewP);
6464
}
@@ -247,9 +247,9 @@ void MappingTraits<DXContainerYAML::RootSignatureYamlDesc>::mapping(
247247

248248
void MappingTraits<llvm::DXContainerYAML::RootConstantsYaml>::mapping(
249249
IO &IO, llvm::DXContainerYAML::RootConstantsYaml &C) {
250-
IO.mapRequired("Num32BitValues", C.NumOfConstants);
251-
IO.mapRequired("RegisterSpace", C.Space);
252-
IO.mapRequired("ShaderRegister", C.Register);
250+
IO.mapRequired("Num32BitValues", C.Num32BitValues);
251+
IO.mapRequired("RegisterSpace", C.RegisterSpace);
252+
IO.mapRequired("ShaderRegister", C.ShaderRegister);
253253
}
254254

255255
void MappingTraits<llvm::DXContainerYAML::RootParameterYamlDesc>::mapping(

llvm/unittests/Object/DXContainerTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -906,8 +906,8 @@ TEST(RootSignature, ParseRootConstant) {
906906

907907
ASSERT_THAT_ERROR(Constants.takeError(), Succeeded());
908908

909-
ASSERT_EQ(Constants->Register, 15u);
910-
ASSERT_EQ(Constants->Space, 14u);
911-
ASSERT_EQ(Constants->NumOfConstants, 16u);
909+
ASSERT_EQ(Constants->ShaderRegister, 15u);
910+
ASSERT_EQ(Constants->RegisterSpace, 14u);
911+
ASSERT_EQ(Constants->Num32BitValues, 16u);
912912
}
913913
}

0 commit comments

Comments
 (0)