diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-10-18 11:08:47 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-18 11:08:47 -0700 |
| commit | a12480fe49d5ba7c0a9c2ac63363dc76b599ddbd (patch) | |
| tree | 6344dec2a432f2f5cb1cdd981d0aafe21ea6a443 /tests | |
| parent | f12c2552b3f494cbc8245edb90b32b93ca8a1539 (diff) | |
Work on IR-based cross-compilation (#222)
There are two big changes here:
- Add logic during the initial IR cloning pass for an entry point + target that tries to pick the best possible version of any target-overloaded function. This allows us to pick the intrinsic version of `saturate()` when compiling for HLSL output, but then pick the non-intrinsic version (that is implemented in terms of `clamp()`) when targetting GLSL.
- Add an initial specialization pass that tries to deal with generics. This required some fixing work to IR generation, so that we correctly generate explicit operations to specialize a generic for specific types (this is currently implemented as a `specialize` instruction that takes the generic to specialize plus a declaration-reference that represents the specialized form). With that work in place, we can scan for `specialize` instructions inside of non-generic functions, and use them to trigger generation of specialized code. We rely on the name-mangling scheme to help us find pre-existing specializations when possible.
There are also a bunch of cleanups encountered along the way:
- Don't use the explicit `layout(offset=...)` for uniforms, because it isn't supported by all current drivers. For now we will just assume that our layout rules compute the same values that the driver would for un-marked-up code. We can come back later and try to implement a workaround in the cases where this doesn't apply (e.g., by re-running the layout logic as part of emission, and dropping layout modifiers from variables that don't need explicit layout).
- Fix some issues in IR dump printing so that we print function declarations more nicely.
- Testing: print out failing pixel when image-diff fails
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ir/loop.slang.expected | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tests/ir/loop.slang.expected b/tests/ir/loop.slang.expected index a9122c094..390fd80e0 100644 --- a/tests/ir/loop.slang.expected +++ b/tests/ir/loop.slang.expected @@ -7,7 +7,7 @@ ir_global_var %2 : Ptr<StructuredBuffer<vector<float,4>>>; ir_global_var %3 : Ptr<RWStructuredBuffer<vector<float,4>>>; -ir_func @_S04mainp3 : (uint, uint, uint) -> void +ir_func @_S04mainp3uuuV : (uint, uint, uint) -> void { block %4( param %5 : uint, |
