diff options
| author | Yong He <yonghe@outlook.com> | 2018-03-16 14:28:04 -0400 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2018-03-16 11:28:04 -0700 |
| commit | a549362ba7011562f123b52c35c875c2c02f4f40 (patch) | |
| tree | 45fa1fa81e88652d9ea7f8d55d791dd810d01d96 /source/slang/parameter-binding.cpp | |
| parent | 4c23ba2af6dfb244bbf193f2e540e5e70e13f629 (diff) | |
Small bug fixes. (#445)
This commit contains two small bug fixes:
1. In `specializeProgramLayout`, we cannot assume the resourceInfo entries in a varLayout and its corresponding type layout has the same order. Should use `FindResourceLayout`.
2. When generating ir for a switch statement, make sure to remove the breakLabel from the shared context when done. For some reason if a switch statement is being lowered twice, the Dictionary::Add method will complain the statement key already exists.
Diffstat (limited to 'source/slang/parameter-binding.cpp')
| -rw-r--r-- | source/slang/parameter-binding.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/source/slang/parameter-binding.cpp b/source/slang/parameter-binding.cpp index b0d90d435..3ff2be61f 100644 --- a/source/slang/parameter-binding.cpp +++ b/source/slang/parameter-binding.cpp @@ -2492,14 +2492,14 @@ RefPtr<ProgramLayout> specializeProgramLayout( for (UInt i = 0; i < varLayout->resourceInfos.Count(); i++) { auto resInfo = varLayout->resourceInfos[i]; - auto tresInfo = varLayout->typeLayout->resourceInfos[i]; - SLANG_ASSERT(resInfo.kind == tresInfo.kind); + auto tresInfo = varLayout->typeLayout->FindResourceInfo(resInfo.kind); + SLANG_ASSERT(tresInfo); auto usedRangeSet = findUsedRangeSetForSpace(&context, resInfo.space); markSpaceUsed(&context, resInfo.space); usedRangeSet->usedResourceRanges[(int)resInfo.kind].Add( nullptr, // we don't need to track parameter info here resInfo.index, - resInfo.index + tresInfo.count); + resInfo.index + tresInfo->count); } structLayout->fields[varId] = varLayout; varLayoutMapping[varLayout] = varLayout; |
