diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-03-01 08:20:09 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-01 08:20:09 -0800 |
| commit | efca2bb38700847adb2385d311b8b801376659bb (patch) | |
| tree | 79d83f46d5d2719892bbfd78d8b33f0c201f0633 /tests/preprocessor | |
| parent | 852c88cc9d7e720af66275bf7fdf58341f5f6e7c (diff) | |
A small refactor to how implicit constant buffers are getting created. (#871)
This affects layout computation for both the global and entry-point scopes, where multiple discrete shader parameters can be declared, but for layout purposes they must be treated as if they lived in the same `struct` type. If that `struct` type ends up consuming any "ordinary" data (`LayoutResourceKind::Uniform`) then an implicit constant buffer will be needed for that scope (e.g., the way fxc produces a `$Globals` constant buffer for the global scope).
The logic for computing those scope layouts had a bug in it, in that the struct type was not being updated to have the right size for uniform data at the scope. That bug hasn't bitten anybody yet because no Slang users are relying on entry-point uniforms, and global-scope uniforms aren't fully implemented (and get diagnosed as an error elsewhere in the compiler). This change fixes that bug.
This change also refactors things so that the logic for creating a constant buffer layout if and only if needed is moved into `type-layout.cpp` instead of relying on `parameter-binding.cpp` to compute whether or not it needs a block on its own. This is anticipating the rules for deciding whether or not a constant buffer is needed being slightly more thorny once interface types are in the mix.
Diffstat (limited to 'tests/preprocessor')
0 files changed, 0 insertions, 0 deletions
