diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-10-19 11:49:16 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-19 11:49:16 -0700 |
| commit | 88023aea669f258d66e53eab10215337a7f72853 (patch) | |
| tree | 630d2f89a201283307ebc3ae1ccd3ce3d28876bb /tests/reflection/vertex-input-semantics.hlsl | |
| parent | 5995b7a47b2b65025410b9d558dfe1820e4c42e0 (diff) | |
Reflection: allow querying of semantics on varying input/output (#224)
This is functionality required to support a Falcor bug fix.
Most of the code to compute the right semantic name/index for a parameter was already present.
This change adds:
- Storage for semantic name/index on every `VarLayout`
- Note: this is wasteful and should be optimized later
- A public API to query the semantic name/index
- The contract is that this API returns `NULL` if the parameter had no semantic
- A bit of work in `parameter-binding.cpp` to attach semantics to varying input/output when traversing varying parameters.
- Note: this is intentionally set up so that it associates semantics even with non-leaf parameters, so that an API user can query the semantic of a `struct` parameter and know that its members will be assigned sequential semantic indices from its starting value.
- Support for dumping this information in reflection tests
One notable thing that I did *not* change here is that the reflection test fixture doesn't report information on the output of an entry point, even though it really should. That should be fixed in a separate change, though, because it would affect many of the expected outputs.
Diffstat (limited to 'tests/reflection/vertex-input-semantics.hlsl')
| -rw-r--r-- | tests/reflection/vertex-input-semantics.hlsl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/reflection/vertex-input-semantics.hlsl b/tests/reflection/vertex-input-semantics.hlsl new file mode 100644 index 000000000..87a8431bc --- /dev/null +++ b/tests/reflection/vertex-input-semantics.hlsl @@ -0,0 +1,33 @@ +//TEST:REFLECTION:-profile vs_4_0 -target hlsl + +// Confirm that we can generate reflection info for +// vertex shader input parameters, including those +// that have semantics, and including nesting +// via struct types. + +struct X +{ + float4 x0; + float4 x1; +}; + +struct B +{ + int4 b0; + X b1; +}; + +struct C +{ + X c0 : CX; + int4 c1 : CY; +}; + +float4 main( + float4 a : A, + B b : B, + C c) + : SV_Position +{ + return 0.0; +}
\ No newline at end of file |
