Skip to content

Commit 102ff4b

Browse files
author
joaosaffran
committed
removing unnecessary parameters
1 parent 021976d commit 102ff4b

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed

llvm/include/llvm/Object/DXContainer.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,12 @@ class RootSignature {
170170
uint32_t StaticSamplersOffset;
171171
uint32_t Flags;
172172
ViewArray<dxbc::RootParameterHeader> ParametersHeaders;
173-
uint32_t ParameterSpaceOffset;
174-
StringRef ParameterSpace;
173+
StringRef PartData;
175174

176175
using param_header_iterator = ViewArray<dxbc::RootParameterHeader>::iterator;
177176

178177
public:
179-
RootSignature() {}
178+
RootSignature(StringRef PD) : PartData(PD) {}
180179

181180
Error parse(StringRef Data);
182181
uint32_t getVersion() const { return Version; }
@@ -191,23 +190,22 @@ class RootSignature {
191190

192191
llvm::Expected<RootParameterView>
193192
getParameter(const dxbc::RootParameterHeader &Header) const {
194-
assert(ParameterSpaceOffset != 0 &&
195-
"This should be initialized before reading parameters");
196-
size_t CorrectOffset = Header.ParameterOffset - ParameterSpaceOffset;
197-
StringRef Data;
198193
size_t DataSize;
199194

200195
switch (Header.ParameterType) {
201196
case dxbc::RootParameterType::Constants32Bit:
202197
DataSize = sizeof(dxbc::RootConstants);
203198
break;
204199
}
200+
auto EndOfSectionByte = getNumStaticSamplers() == 0
201+
? PartData.size()
202+
: getStaticSamplersOffset();
205203

206-
if (CorrectOffset + DataSize > ParameterSpace.size())
204+
if (Header.ParameterOffset + DataSize > EndOfSectionByte)
207205
return parseFailed("Reading structure out of file bounds");
208206

209-
Data = ParameterSpace.substr(CorrectOffset, DataSize);
210-
RootParameterView View = RootParameterView(Header, Data);
207+
StringRef Buff = PartData.substr(Header.ParameterOffset, DataSize);
208+
RootParameterView View = RootParameterView(Header, Buff);
211209
return View;
212210
}
213211
};

llvm/lib/Object/DXContainer.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ Error DXContainer::parseHash(StringRef Part) {
9696
Error DXContainer::parseRootSignature(StringRef Part) {
9797
if (RootSignature)
9898
return parseFailed("More than one RTS0 part is present in the file");
99-
RootSignature = DirectX::RootSignature();
99+
RootSignature = DirectX::RootSignature(Part);
100100
if (Error Err = RootSignature->parse(Part))
101101
return Err;
102102
return Error::success();
@@ -278,14 +278,6 @@ Error DirectX::RootSignature::parse(StringRef Data) {
278278
ParametersHeaders.Data = Data.substr(
279279
RootParametersOffset, NumParameters * sizeof(dxbc::RootParameterHeader));
280280

281-
ParameterSpaceOffset =
282-
RootParametersOffset + NumParameters * sizeof(dxbc::RootParameterHeader);
283-
size_t ParameterSpaceEnd =
284-
(NumStaticSamplers == 0) ? Data.size() : StaticSamplersOffset;
285-
286-
ParameterSpace = Data.substr(ParameterSpaceOffset,
287-
ParameterSpaceEnd - ParameterSpaceOffset);
288-
289281
return Error::success();
290282
}
291283

0 commit comments

Comments
 (0)