Skip to content

Commit 6eac7c4

Browse files
author
joaosaffran
committed
making NumDescriptors uint32_t
1 parent d616b65 commit 6eac7c4

File tree

12 files changed

+91
-78
lines changed

12 files changed

+91
-78
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ struct DescriptorRange {
613613
uint32_t NumDescriptors;
614614
uint32_t BaseShaderRegister;
615615
uint32_t RegisterSpace;
616-
int32_t OffsetInDescriptorsFromTableStart;
616+
uint32_t OffsetInDescriptorsFromTableStart;
617617
void swapBytes() {
618618
sys::swapByteOrder(RangeType);
619619
sys::swapByteOrder(NumDescriptors);

llvm/include/llvm/MC/DXContainerRootSignature.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ struct RootParametersContainer {
6262
Descriptors.push_back(Descriptor);
6363
}
6464

65-
void addParameter(dxbc::RootParameterHeader H, DescriptorTable D) {
66-
addInfo(H, Tables.size());
67-
Tables.push_back(D);
65+
void addParameter(dxbc::RootParameterHeader Header, DescriptorTable Table) {
66+
addInfo(Header, Tables.size());
67+
Tables.push_back(Table);
6868
}
6969

7070
const std::pair<uint32_t, uint32_t>

llvm/include/llvm/Object/DXContainer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ class RootSignature {
282282
else
283283
DataSize = sizeof(dxbc::RTS0::v2::DescriptorRange) * NumRanges;
284284

285-
// 4 bits for the number of ranges in table and
286-
// 4 bits for the ranges offset
285+
// 4 bytes for the number of ranges in table and
286+
// 4 bytes for the ranges offset
287287
DataSize += 2 * sizeof(uint32_t);
288288
break;
289289
}

llvm/include/llvm/ObjectYAML/DXContainerYAML.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ struct DescriptorRangeYaml {
9595
uint32_t NumDescriptors;
9696
uint32_t BaseShaderRegister;
9797
uint32_t RegisterSpace;
98-
int32_t OffsetInDescriptorsFromTableStart;
98+
uint32_t OffsetInDescriptorsFromTableStart;
9999

100100
uint32_t getEncodedFlags() const;
101101

@@ -195,7 +195,6 @@ struct RootParameterYamlDesc {
195195
return *this;
196196
}
197197

198-
// ToDo: Fix this (Already have a follow up PR with it)
199198
union {
200199
RootConstantsYaml Constants;
201200
RootDescriptorYaml Descriptor;

llvm/lib/MC/DXContainerRootSignature.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ size_t RootSignatureDesc::getSize() const {
5050
const DescriptorTable &Table =
5151
ParametersContainer.getDescriptorTable(I.Location);
5252

53-
// 4 bits for the number of ranges in table and
54-
// 4 bits for the ranges offset
53+
// 4 bytes for the number of ranges in table and
54+
// 4 bytes for the ranges offset
5555
Size += 2 * sizeof(uint32_t);
5656
if (Version == 1)
5757
Size += sizeof(dxbc::RTS0::v1::DescriptorRange) * Table.Ranges.size();

llvm/lib/ObjectYAML/DXContainerEmitter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
322322
}
323323

324324
RS.write(OS);
325+
break;
325326
}
326327
uint64_t BytesWritten = OS.tell() - DataStart;
327328
RollingOffset += BytesWritten;

llvm/lib/ObjectYAML/DXContainerYAML.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "llvm/BinaryFormat/DXContainer.h"
1818
#include "llvm/Support/Error.h"
1919
#include "llvm/Support/ScopedPrinter.h"
20+
#include <climits>
2021
#include <cstdint>
2122
#include <system_error>
2223

@@ -95,10 +96,10 @@ DXContainerYAML::RootSignatureYamlDesc::create(
9596
llvm::to_underlying(dxbc::RootDescriptorFlag::Val)) > 0;
9697
#include "llvm/BinaryFormat/DXContainerConstants.def"
9798
}
98-
} else if (auto *TDV =
99+
} else if (auto *DTV =
99100
dyn_cast<object::DirectX::DescriptorTableView>(&ParamView)) {
100101
llvm::Expected<object::DirectX::DescriptorTable> TableOrErr =
101-
TDV->read(Version);
102+
DTV->read(Version);
102103
if (Error E = TableOrErr.takeError())
103104
return std::move(E);
104105
auto Table = *TableOrErr;
@@ -349,7 +350,19 @@ void MappingTraits<llvm::DXContainerYAML::RootDescriptorYaml>::mapping(
349350
void MappingTraits<llvm::DXContainerYAML::DescriptorRangeYaml>::mapping(
350351
IO &IO, llvm::DXContainerYAML::DescriptorRangeYaml &R) {
351352
IO.mapRequired("RangeType", R.RangeType);
352-
IO.mapRequired("NumDescriptors", R.NumDescriptors);
353+
// handling the edge case where NumDescriptors might be -1
354+
if (IO.outputting()) {
355+
if (R.NumDescriptors == UINT_MAX) {
356+
int32_t NegOne = -1;
357+
IO.mapRequired("NumDescriptors", NegOne);
358+
} else
359+
IO.mapRequired("NumDescriptors", R.NumDescriptors);
360+
} else {
361+
int32_t TmpNumDesc = 0;
362+
IO.mapRequired("NumDescriptors", TmpNumDesc);
363+
R.NumDescriptors = static_cast<uint32_t>(TmpNumDesc);
364+
}
365+
353366
IO.mapRequired("BaseShaderRegister", R.BaseShaderRegister);
354367
IO.mapRequired("RegisterSpace", R.RegisterSpace);
355368
IO.mapRequired("OffsetInDescriptorsFromTableStart",

llvm/test/ObjectYAML/DXContainer/RootSignature-DescriptorTable1.0.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ Parts:
2626
NumRanges: 1
2727
Ranges:
2828
- RangeType: 0
29-
NumDescriptors: 41
29+
NumDescriptors: -1
3030
BaseShaderRegister: 42
3131
RegisterSpace: 43
32-
OffsetInDescriptorsFromTableStart: -1
32+
OffsetInDescriptorsFromTableStart: 41
3333
AllowInputAssemblerInputLayout: true
3434
DenyGeometryShaderRootAccess: true
3535

@@ -49,9 +49,9 @@ Parts:
4949
# CHECK-NEXT: RangesOffset: 44
5050
# CHECK-NEXT: Ranges:
5151
# CHECK-NEXT: - RangeType: 0
52-
# CHECK-NEXT: NumDescriptors: 41
52+
# CHECK-NEXT: NumDescriptors: -1
5353
# CHECK-NEXT: BaseShaderRegister: 42
5454
# CHECK-NEXT: RegisterSpace: 43
55-
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: -1
55+
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: 41
5656
# CHECK-NEXT: AllowInputAssemblerInputLayout: true
5757
# CHECK-NEXT: DenyGeometryShaderRootAccess: true

llvm/test/ObjectYAML/DXContainer/RootSignature-DescriptorTable1.1.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ Parts:
2626
NumRanges: 1
2727
Ranges:
2828
- RangeType: 0
29-
NumDescriptors: 41
29+
NumDescriptors: -1
3030
BaseShaderRegister: 42
3131
RegisterSpace: 43
32-
OffsetInDescriptorsFromTableStart: -1
32+
OffsetInDescriptorsFromTableStart: 41
3333
DATA_STATIC_WHILE_SET_AT_EXECUTE: true
3434
AllowInputAssemblerInputLayout: true
3535
DenyGeometryShaderRootAccess: true
@@ -50,10 +50,10 @@ Parts:
5050
# CHECK-NEXT: RangesOffset: 44
5151
# CHECK-NEXT: Ranges:
5252
# CHECK-NEXT: - RangeType: 0
53-
# CHECK-NEXT: NumDescriptors: 41
53+
# CHECK-NEXT: NumDescriptors: -1
5454
# CHECK-NEXT: BaseShaderRegister: 42
5555
# CHECK-NEXT: RegisterSpace: 43
56-
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: -1
56+
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: 41
5757
# CHECK-NEXT: DATA_STATIC_WHILE_SET_AT_EXECUTE: true
5858
# CHECK-NEXT: AllowInputAssemblerInputLayout: true
5959
# CHECK-NEXT: DenyGeometryShaderRootAccess: true

llvm/test/ObjectYAML/DXContainer/RootSignature-MultipleParameters.yaml

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -43,52 +43,52 @@ Parts:
4343
NumRanges: 1
4444
Ranges:
4545
- RangeType: 0
46-
NumDescriptors: 41
46+
NumDescriptors: -1
4747
BaseShaderRegister: 42
4848
RegisterSpace: 43
49-
OffsetInDescriptorsFromTableStart: -1
49+
OffsetInDescriptorsFromTableStart: 41
5050
DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: true
5151
AllowInputAssemblerInputLayout: true
5252
DenyGeometryShaderRootAccess: true
5353

54-
#CHECK: - Name: RTS0
55-
#CHECK-NEXT: Size: 200
56-
#CHECK-NEXT: RootSignature:
57-
#CHECK-NEXT: Version: 2
58-
#CHECK-NEXT: NumRootParameters: 4
59-
#CHECK-NEXT: RootParametersOffset: 24
60-
#CHECK-NEXT: NumStaticSamplers: 0
61-
#CHECK-NEXT: StaticSamplersOffset: 60
62-
#CHECK-NEXT: Parameters:
63-
#CHECK-NEXT: - ParameterType: 1
64-
#CHECK-NEXT: ShaderVisibility: 2
65-
#CHECK-NEXT: Constants:
66-
#CHECK-NEXT: Num32BitValues: 16
67-
#CHECK-NEXT: RegisterSpace: 14
68-
#CHECK-NEXT: ShaderRegister: 15
69-
#CHECK-NEXT: - ParameterType: 1
70-
#CHECK-NEXT: ShaderVisibility: 4
71-
#CHECK-NEXT: Constants:
72-
#CHECK-NEXT: Num32BitValues: 21
73-
#CHECK-NEXT: RegisterSpace: 23
74-
#CHECK-NEXT: ShaderRegister: 22
75-
#CHECK-NEXT: - ParameterType: 2
76-
#CHECK-NEXT: ShaderVisibility: 3
77-
#CHECK-NEXT: Descriptor:
78-
#CHECK-NEXT: RegisterSpace: 32
79-
#CHECK-NEXT: ShaderRegister: 31
80-
#CHECK-NEXT: DATA_STATIC_WHILE_SET_AT_EXECUTE: true
81-
#CHECK-NEXT: - ParameterType: 0
82-
#CHECK-NEXT: ShaderVisibility: 3
83-
#CHECK-NEXT: Table:
84-
#CHECK-NEXT: NumRanges: 1
85-
#CHECK-NEXT: RangesOffset: 116
86-
#CHECK-NEXT: Ranges:
87-
#CHECK-NEXT: - RangeType: 0
88-
#CHECK-NEXT: NumDescriptors: 41
89-
#CHECK-NEXT: BaseShaderRegister: 42
90-
#CHECK-NEXT: RegisterSpace: 43
91-
#CHECK-NEXT: OffsetInDescriptorsFromTableStart: -1
92-
#CHECK-NEXT: DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: true
93-
#CHECK-NEXT: AllowInputAssemblerInputLayout: true
94-
#CHECK-NEXT: DenyGeometryShaderRootAccess: true
54+
# CHECK: - Name: RTS0
55+
# CHECK-NEXT: Size: 200
56+
# CHECK-NEXT: RootSignature:
57+
# CHECK-NEXT: Version: 2
58+
# CHECK-NEXT: NumRootParameters: 4
59+
# CHECK-NEXT: RootParametersOffset: 24
60+
# CHECK-NEXT: NumStaticSamplers: 0
61+
# CHECK-NEXT: StaticSamplersOffset: 60
62+
# CHECK-NEXT: Parameters:
63+
# CHECK-NEXT: - ParameterType: 1
64+
# CHECK-NEXT: ShaderVisibility: 2
65+
# CHECK-NEXT: Constants:
66+
# CHECK-NEXT: Num32BitValues: 16
67+
# CHECK-NEXT: RegisterSpace: 14
68+
# CHECK-NEXT: ShaderRegister: 15
69+
# CHECK-NEXT: - ParameterType: 1
70+
# CHECK-NEXT: ShaderVisibility: 4
71+
# CHECK-NEXT: Constants:
72+
# CHECK-NEXT: Num32BitValues: 21
73+
# CHECK-NEXT: RegisterSpace: 23
74+
# CHECK-NEXT: ShaderRegister: 22
75+
# CHECK-NEXT: - ParameterType: 2
76+
# CHECK-NEXT: ShaderVisibility: 3
77+
# CHECK-NEXT: Descriptor:
78+
# CHECK-NEXT: RegisterSpace: 32
79+
# CHECK-NEXT: ShaderRegister: 31
80+
# CHECK-NEXT: DATA_STATIC_WHILE_SET_AT_EXECUTE: true
81+
# CHECK-NEXT: - ParameterType: 0
82+
# CHECK-NEXT: ShaderVisibility: 3
83+
# CHECK-NEXT: Table:
84+
# CHECK-NEXT: NumRanges: 1
85+
# CHECK-NEXT: RangesOffset: 116
86+
# CHECK-NEXT: Ranges:
87+
# CHECK-NEXT: - RangeType: 0
88+
# CHECK-NEXT: NumDescriptors: -1
89+
# CHECK-NEXT: BaseShaderRegister: 42
90+
# CHECK-NEXT: RegisterSpace: 43
91+
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: 41
92+
# CHECK-NEXT: DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: true
93+
# CHECK-NEXT: AllowInputAssemblerInputLayout: true
94+
# CHECK-NEXT: DenyGeometryShaderRootAccess: true

0 commit comments

Comments
 (0)