diff options
| author | Theresa Foley <tfoleyNV@users.noreply.github.com> | 2021-08-11 11:00:16 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-11 11:00:16 -0700 |
| commit | 4323a15708cafa6411ec10ef8fefb736f8bda82c (patch) | |
| tree | d8f348c6db794a7e1128334e3f95023452c6ee1d /tools/render-test | |
| parent | 08e36dd6c3c03eb0af7b090d30afee864e309de9 (diff) | |
Fix a few issues around opaque types as outputs (#1918)
* Fix a few issues around opaque types as outputs
Slang and HLSL support opaque types (textures, buffers, samplers, etc.) as members of `struct`s, mutable local variables, function results, and `out`/`inout` parameters. GLSL and SPIR-V do not.
In order to translate Slang code over to GLSL/SPIR-V we use a variety of passes that seek to eliminate all of the above use cases and produce code that only uses opaque types in the limited ways that GLSL/SPIR-V allow. This change relates to the passes that deal with function results and `out`/`inout` parameters.
There are two basic changes here:
1. The `specializeResourceOutputs` pass was only dealing with resource (texture/buffer) types. This change updates it to process sampler types as well.
2. The sequencing of the passes made it possible that an opaque-typed local variable might be left around after `specializeResourceOutputs`, which would mean the code is still invalid for GLSL/SPIR-V. This change adds an additional SSA-formation pass which would eliminate any opaque-type local variables whose lifetimes were made simple enough by the optimizations.
Together these changes fix a problem-case user shader that was failing to compile for Vulkan.
* Update slang-emit.cpp
Fix typo 'reuslt'
* Update slang-emit.cpp
Comment change to re-trigger CI build.
Co-authored-by: jsmall-nvidia <jsmall@nvidia.com>
Diffstat (limited to 'tools/render-test')
0 files changed, 0 insertions, 0 deletions
