diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-11-06 14:01:53 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-06 14:01:53 -0800 |
| commit | 13a2ca6135284a63a178918bd0c7c7becc56eaf2 (patch) | |
| tree | 2b067bef2f9d42e288ddb56a3b66e32217cd6dea /source/core/slang-uint-set.cpp | |
| parent | 835eb1b6a6d75c206fc65cf5e9e5ac132c5200a0 (diff) | |
Fixes to how "pending" data is reported in type layouts (#1108)
These fixes were needed to get a Falcor example that uses Slang `interface`s for shader specialization to work.
The basic fixes are:
* In `applyOffsetToTypeLayout`, we need to account for the case where the type being offset had "pending" data, and make sure to offset it as well. This also means that when computing if offsetting is needed, we also need to check the pending data, if any.
* In `_createParameterGroupTypeLayout` make sure to call `applyOffsetToTypeLayout` *after* the layout for "pending" data, if any, has been computed.
* In `_createTypeLayout`, when computing layout for an `ExistentialSpecializedType` (a type that has had existential/interface-type slots specialized to known types), don't forget to set the type layout of the variable layout we create to store pending data.
The first two items relate a "legacy" reflection API that the client code really shouldn't be using (but it was easier to fix the "do what I mean" behavior in Slang than to refactor the client), and the last is a detailed corner case in the layout of interface-based types that we are not currently equiped to test directly.
Diffstat (limited to 'source/core/slang-uint-set.cpp')
0 files changed, 0 insertions, 0 deletions
