diff options
| author | Alexey Panteleev <alpanteleev@nvidia.com> | 2022-05-18 10:57:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-18 10:57:37 -0700 |
| commit | 69cb6e8f300d77e74bd2c7dfe15d12e10b38f512 (patch) | |
| tree | c2d23f2883acb28407106a096b55c64111f098b1 /tests/reflection | |
| parent | 1148564b9cdbbc8fec4fbecf65b0af60aa6af344 (diff) | |
Support for querying which parameters are used in emitted code (#2239)
See https://github.com/shader-slang/slang/issues/2213
Diffstat (limited to 'tests/reflection')
26 files changed, 430 insertions, 28 deletions
diff --git a/tests/reflection/arrays.hlsl b/tests/reflection/arrays.hlsl index d013bc498..20d18e91e 100644 --- a/tests/reflection/arrays.hlsl +++ b/tests/reflection/arrays.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target hlsl +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen // Confirm that we can generate reflection info for arrays // diff --git a/tests/reflection/attribute.slang b/tests/reflection/attribute.slang index 687148add..41179fcf5 100644 --- a/tests/reflection/attribute.slang +++ b/tests/reflection/attribute.slang @@ -2,7 +2,7 @@ // Tests reflection of user defined attributes. -//TEST:REFLECTION:-stage compute -entry main -target hlsl +//TEST:REFLECTION:-stage compute -entry main -target hlsl -no-codegen [__AttributeUsage(_AttributeTargets.Struct)] struct MyStructAttribute diff --git a/tests/reflection/binding-gl.hlsl b/tests/reflection/binding-gl.hlsl index cd2ab666a..04c65ca54 100644 --- a/tests/reflection/binding-gl.hlsl +++ b/tests/reflection/binding-gl.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target spirv +//TEST:REFLECTION:-profile ps_4_0 -target spirv -no-codegen // Confirm that we can generate reflection info for arrays // diff --git a/tests/reflection/binding-push-constant-gl.hlsl b/tests/reflection/binding-push-constant-gl.hlsl index f6bf13602..a3110f5cb 100644 --- a/tests/reflection/binding-push-constant-gl.hlsl +++ b/tests/reflection/binding-push-constant-gl.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target spirv +//TEST:REFLECTION:-profile ps_4_0 -target spirv -no-codegen // Confirm that we can generate reflection info for arrays // diff --git a/tests/reflection/buffer-layout.slang b/tests/reflection/buffer-layout.slang index 51b9680d1..b2cc3f724 100644 --- a/tests/reflection/buffer-layout.slang +++ b/tests/reflection/buffer-layout.slang @@ -4,8 +4,8 @@ // to confirm that our reflection logic correctly reports the offsets // that the compute test sees in practice. -//TEST:REFLECTION:-stage compute -entry main -target hlsl -//TEST:REFLECTION:-stage compute -entry main -target spirv +//TEST:REFLECTION:-stage compute -entry main -target hlsl -no-codegen +//TEST:REFLECTION:-stage compute -entry main -target spirv -no-codegen struct A { diff --git a/tests/reflection/cross-compile.slang b/tests/reflection/cross-compile.slang index 600f3ed0f..30b080c64 100644 --- a/tests/reflection/cross-compile.slang +++ b/tests/reflection/cross-compile.slang @@ -1,4 +1,4 @@ -//TEST(smoke):REFLECTION:-profile glsl_fragment -target glsl +//TEST(smoke):REFLECTION:-profile glsl_fragment -target glsl -no-codegen // Confirm that when targetting GLSL via cross compilation, // we use the Vulkan layout rules instead of HLSL ones diff --git a/tests/reflection/default-space.slang b/tests/reflection/default-space.slang index 666714b79..f279d71b2 100644 --- a/tests/reflection/default-space.slang +++ b/tests/reflection/default-space.slang @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile sm_5_1 -stage fragment -target hlsl +//TEST:REFLECTION:-profile sm_5_1 -stage fragment -target hlsl -no-codegen // This test is to confirm that we do not allocate a "default" // space/set for global shader parameters unless it is diff --git a/tests/reflection/explicit-register-space.slang b/tests/reflection/explicit-register-space.slang index d0bdc8178..79369037f 100644 --- a/tests/reflection/explicit-register-space.slang +++ b/tests/reflection/explicit-register-space.slang @@ -1,5 +1,5 @@ // explicit-register-space.slang -//TEST:REFLECTION:-profile ps_5_1 -target hlsl +//TEST:REFLECTION:-profile ps_5_1 -target hlsl -no-codegen // Confirm that we handle explicit register spaces // on global shader parameters. diff --git a/tests/reflection/matrix-layout.slang b/tests/reflection/matrix-layout.slang index a0c1cdff1..2f0fe6a41 100644 --- a/tests/reflection/matrix-layout.slang +++ b/tests/reflection/matrix-layout.slang @@ -1,5 +1,5 @@ -//TEST:REFLECTION:-profile ps_4_0 -target hlsl -//TEST:REFLECTION:-profile ps_4_0 -target hlsl -matrix-layout-row-major +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen -matrix-layout-row-major // Test that we apply matrix layout rules correctly. diff --git a/tests/reflection/mix-explicit-and-implicit-spaces.slang b/tests/reflection/mix-explicit-and-implicit-spaces.slang index 52dd4321e..22e0163ee 100644 --- a/tests/reflection/mix-explicit-and-implicit-spaces.slang +++ b/tests/reflection/mix-explicit-and-implicit-spaces.slang @@ -1,5 +1,5 @@ // mix-explicit-and-implicit-spaces.slang -//TEST:REFLECTION:-profile cs_5_1 -target hlsl +//TEST:REFLECTION:-profile cs_5_1 -target hlsl -no-codegen // Ensure that correct layout/reflection is computed // when mixing implicit and explicit spaces for diff --git a/tests/reflection/multi-file.hlsl b/tests/reflection/multi-file.hlsl index fd9235ab5..6b42f807f 100644 --- a/tests/reflection/multi-file.hlsl +++ b/tests/reflection/multi-file.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-D__SLANG__ -entry mainVS -profile vs_4_0 -target hlsl tests/reflection/multi-file-extra.hlsl -entry mainFS -profile ps_4_0 +//TEST:REFLECTION:-D__SLANG__ -entry mainVS -profile vs_4_0 -target hlsl tests/reflection/multi-file-extra.hlsl -entry mainFS -profile ps_4_0 -no-codegen // Here we are testing the case where multiple translation units are provided // at once, so that we want combined reflection information for the resulting diff --git a/tests/reflection/parameter-block-explicit-space.slang b/tests/reflection/parameter-block-explicit-space.slang index b4d3eff9c..988584bec 100644 --- a/tests/reflection/parameter-block-explicit-space.slang +++ b/tests/reflection/parameter-block-explicit-space.slang @@ -1,6 +1,6 @@ // parameter-block-explicit-space.slang -//TEST:REFLECTION:-D__SLANG__ -stage fragment -entry main -profile sm_5_1 -target hlsl +//TEST:REFLECTION:-D__SLANG__ -stage fragment -entry main -profile sm_5_1 -target hlsl -no-codegen //TEST:COMPARE_HLSL:-stage fragment -entry main -profile sm_5_1 #ifdef __SLANG__ diff --git a/tests/reflection/parameter-block.slang b/tests/reflection/parameter-block.slang index 5c91ed339..67b49aadb 100644 --- a/tests/reflection/parameter-block.slang +++ b/tests/reflection/parameter-block.slang @@ -1,6 +1,6 @@ -//TEST:REFLECTION:-stage fragment -target glsl -//TEST:REFLECTION:-stage fragment -target hlsl -profile sm_5_0 -//TEST:REFLECTION:-stage fragment -target hlsl -profile sm_5_1 +//TEST:REFLECTION:-stage fragment -target glsl -no-codegen +//TEST:REFLECTION:-stage fragment -target hlsl -no-codegen -profile sm_5_0 +//TEST:REFLECTION:-stage fragment -target hlsl -no-codegen -profile sm_5_1 // Confirm that we do parameter binding correctly // when we have both a parameter block *and* user-defined diff --git a/tests/reflection/reflect-imported-code.hlsl b/tests/reflection/reflect-imported-code.hlsl index c3562af35..9370639d2 100644 --- a/tests/reflection/reflect-imported-code.hlsl +++ b/tests/reflection/reflect-imported-code.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target hlsl +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen // Confirm that shader parameters in imported modules get reflected properly. diff --git a/tests/reflection/reflect-static.slang b/tests/reflection/reflect-static.slang index f7a44cde8..cd4ebab80 100644 --- a/tests/reflection/reflect-static.slang +++ b/tests/reflection/reflect-static.slang @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile cs_6_0 -target hlsl -entry computeMain +//TEST:REFLECTION:-profile cs_6_0 -target hlsl -entry computeMain -no-codegen struct Thing { diff --git a/tests/reflection/reflection0.hlsl b/tests/reflection/reflection0.hlsl index 22232b59a..8865b7c35 100644 --- a/tests/reflection/reflection0.hlsl +++ b/tests/reflection/reflection0.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target hlsl +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen // Confirm that basic reflection info can be output diff --git a/tests/reflection/resource-in-cbuffer.hlsl b/tests/reflection/resource-in-cbuffer.hlsl index b96f73113..7c016181c 100644 --- a/tests/reflection/resource-in-cbuffer.hlsl +++ b/tests/reflection/resource-in-cbuffer.hlsl @@ -1,4 +1,4 @@ -//TEST(smoke):REFLECTION:-profile ps_4_0 -target hlsl +//TEST(smoke):REFLECTION:-profile ps_4_0 -target hlsl -no-codegen // Confirm that we can generate reflection // information for resources nested inside diff --git a/tests/reflection/sample-index-input.hlsl b/tests/reflection/sample-index-input.hlsl index edb0690d6..d4d797a26 100644 --- a/tests/reflection/sample-index-input.hlsl +++ b/tests/reflection/sample-index-input.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_5_0 -target hlsl +//TEST:REFLECTION:-profile ps_5_0 -target hlsl -no-codegen // Confirm that we register a shader as sample-rate when // it declares `SV_SampleIndex` as an input. diff --git a/tests/reflection/sample-rate-input.hlsl b/tests/reflection/sample-rate-input.hlsl index 0545afb02..f69149df8 100644 --- a/tests/reflection/sample-rate-input.hlsl +++ b/tests/reflection/sample-rate-input.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_5_0 -target hlsl +//TEST:REFLECTION:-profile ps_5_0 -target hlsl -no-codegen // Confirm that we register a shader as sample-rate when // it declares (not necessarly *uses*) a `sample` qualified input diff --git a/tests/reflection/shared-modifier.hlsl b/tests/reflection/shared-modifier.hlsl index 45a1dfac8..928bdb1c9 100644 --- a/tests/reflection/shared-modifier.hlsl +++ b/tests/reflection/shared-modifier.hlsl @@ -1,5 +1,5 @@ // shared-modifier.hlsl -//TEST:REFLECTION:-profile ps_5_0 -target hlsl +//TEST:REFLECTION:-profile ps_5_0 -target hlsl -no-codegen // Confirm that we expose the `shared` modifier in reflection data. diff --git a/tests/reflection/structured-buffer.slang b/tests/reflection/structured-buffer.slang index 491d61486..b3d8b860b 100644 --- a/tests/reflection/structured-buffer.slang +++ b/tests/reflection/structured-buffer.slang @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile ps_4_0 -target hlsl +//TEST:REFLECTION:-profile ps_4_0 -target hlsl -no-codegen // Confirm that we reflect the contents of structure-buffer types correctly. diff --git a/tests/reflection/thread-group-size.hlsl b/tests/reflection/thread-group-size.hlsl index 7e0400b46..13b3148d8 100644 --- a/tests/reflection/thread-group-size.hlsl +++ b/tests/reflection/thread-group-size.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile cs_5_0 -target hlsl +//TEST:REFLECTION:-profile cs_5_0 -target hlsl -no-codegen // Confirm that we provide reflection data for the `numthreads` attribute diff --git a/tests/reflection/unbounded-arrays.hlsl b/tests/reflection/unbounded-arrays.hlsl index 2c3b7a7bb..603bb6071 100644 --- a/tests/reflection/unbounded-arrays.hlsl +++ b/tests/reflection/unbounded-arrays.hlsl @@ -1,7 +1,7 @@ // unbounded-arrays.hlsl //TEST:COMPARE_HLSL:-profile cs_5_1 -entry main -//TEST:REFLECTION:-profile cs_5_1 -target hlsl -D__SLANG__ +//TEST:REFLECTION:-profile cs_5_1 -target hlsl -no-codegen -D__SLANG__ // // This test is trying to make sure that we correctly compute diff --git a/tests/reflection/used-parameters.slang b/tests/reflection/used-parameters.slang new file mode 100644 index 000000000..efb605a14 --- /dev/null +++ b/tests/reflection/used-parameters.slang @@ -0,0 +1,52 @@ +// used-parameters.slang + +// Tests post-emit analysis of shader parameters to find out if they are used or not. + +//TEST:REFLECTION:-stage compute -entry main -target hlsl + + +struct S +{ + uint2 Size; +}; + +ConstantBuffer<S> UsedCB; +ConstantBuffer<S> UnusedCB; + +Texture2D UsedTexture; +Texture2D UnusedTexture; + +Buffer<uint> UsedBuffer; +Buffer<uint> UnusedBuffer; + +StructuredBuffer<uint> UsedStructuredBuffer; +StructuredBuffer<uint> UnusedStructuredBuffer; + +RWTexture2D UsedRWTexture; +RWTexture2D UnusedRWTexture; + +RWBuffer<uint> UsedRWBuffer; +RWBuffer<uint> UnusedRWBuffer; + +RWStructuredBuffer<uint> UsedRWStructuredBuffer; +RWStructuredBuffer<uint> UnusedRWStructuredBuffer; + +SamplerState UsedSampler; +SamplerState UnusedSampler; + +uniform uint UsedUniform; +uniform uint UnusedUniform; + +[numthreads(1, 1, 1)] +void main(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + float A = UsedTexture[dispatchThreadID.xy].x; + uint B = UsedBuffer[dispatchThreadID.x]; + uint C = UsedStructuredBuffer[dispatchThreadID.y]; + float D = UsedRWTexture[dispatchThreadID.xy].x; + uint E = UsedRWBuffer[dispatchThreadID.y]; + float F = UsedTexture.SampleLevel(UsedSampler, float2(dispatchThreadID.xy) / float2(UsedCB.Size), 0).x; + uint G = UsedUniform; + + UsedRWStructuredBuffer[dispatchThreadID.x + dispatchThreadID.y * UsedCB.Size.x] = uint(A) + B + C + uint(D) + E + uint(F) + G; +}
\ No newline at end of file diff --git a/tests/reflection/used-parameters.slang.expected b/tests/reflection/used-parameters.slang.expected new file mode 100644 index 000000000..2bbc5b41a --- /dev/null +++ b/tests/reflection/used-parameters.slang.expected @@ -0,0 +1,350 @@ +result code = 0 +standard error = { +} +standard output = { +{ + "parameters": [ + { + "name": "UsedCB", + "binding": {"kind": "constantBuffer", "index": 1}, + "type": { + "kind": "constantBuffer", + "elementType": { + "kind": "struct", + "name": "S", + "fields": [ + { + "name": "Size", + "type": { + "kind": "vector", + "elementCount": 2, + "elementType": { + "kind": "scalar", + "scalarType": "uint32" + } + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + ] + }, + "containerVarLayout": { + "binding": {"kind": "constantBuffer", "index": 0} + }, + "elementVarLayout": { + "type": { + "kind": "struct", + "name": "S", + "fields": [ + { + "name": "Size", + "type": { + "kind": "vector", + "elementCount": 2, + "elementType": { + "kind": "scalar", + "scalarType": "uint32" + } + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + ] + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + } + }, + { + "name": "UnusedCB", + "binding": {"kind": "constantBuffer", "index": 2}, + "type": { + "kind": "constantBuffer", + "elementType": { + "kind": "struct", + "name": "S", + "fields": [ + { + "name": "Size", + "type": { + "kind": "vector", + "elementCount": 2, + "elementType": { + "kind": "scalar", + "scalarType": "uint32" + } + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + ] + }, + "containerVarLayout": { + "binding": {"kind": "constantBuffer", "index": 0} + }, + "elementVarLayout": { + "type": { + "kind": "struct", + "name": "S", + "fields": [ + { + "name": "Size", + "type": { + "kind": "vector", + "elementCount": 2, + "elementType": { + "kind": "scalar", + "scalarType": "uint32" + } + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + ] + }, + "binding": {"kind": "uniform", "offset": 0, "size": 8} + } + } + }, + { + "name": "UsedTexture", + "binding": {"kind": "shaderResource", "index": 0}, + "type": { + "kind": "resource", + "baseShape": "texture2D" + } + }, + { + "name": "UnusedTexture", + "binding": {"kind": "shaderResource", "index": 1}, + "type": { + "kind": "resource", + "baseShape": "texture2D" + } + }, + { + "name": "UsedBuffer", + "binding": {"kind": "shaderResource", "index": 2}, + "type": { + "kind": "resource", + "baseShape": "textureBuffer" + } + }, + { + "name": "UnusedBuffer", + "binding": {"kind": "shaderResource", "index": 3}, + "type": { + "kind": "resource", + "baseShape": "textureBuffer" + } + }, + { + "name": "UsedStructuredBuffer", + "binding": {"kind": "shaderResource", "index": 4}, + "type": { + "kind": "resource", + "baseShape": "structuredBuffer", + "resultType": { + "kind": "scalar", + "scalarType": "uint32" + } + } + }, + { + "name": "UnusedStructuredBuffer", + "binding": {"kind": "shaderResource", "index": 5}, + "type": { + "kind": "resource", + "baseShape": "structuredBuffer", + "resultType": { + "kind": "scalar", + "scalarType": "uint32" + } + } + }, + { + "name": "UsedRWTexture", + "binding": {"kind": "unorderedAccess", "index": 0}, + "type": { + "kind": "resource", + "baseShape": "texture2D", + "access": "readWrite" + } + }, + { + "name": "UnusedRWTexture", + "binding": {"kind": "unorderedAccess", "index": 1}, + "type": { + "kind": "resource", + "baseShape": "texture2D", + "access": "readWrite" + } + }, + { + "name": "UsedRWBuffer", + "binding": {"kind": "unorderedAccess", "index": 2}, + "type": { + "kind": "resource", + "baseShape": "textureBuffer", + "access": "readWrite" + } + }, + { + "name": "UnusedRWBuffer", + "binding": {"kind": "unorderedAccess", "index": 3}, + "type": { + "kind": "resource", + "baseShape": "textureBuffer", + "access": "readWrite" + } + }, + { + "name": "UsedRWStructuredBuffer", + "binding": {"kind": "unorderedAccess", "index": 4}, + "type": { + "kind": "resource", + "baseShape": "structuredBuffer", + "access": "readWrite", + "resultType": { + "kind": "scalar", + "scalarType": "uint32" + } + } + }, + { + "name": "UnusedRWStructuredBuffer", + "binding": {"kind": "unorderedAccess", "index": 5}, + "type": { + "kind": "resource", + "baseShape": "structuredBuffer", + "access": "readWrite", + "resultType": { + "kind": "scalar", + "scalarType": "uint32" + } + } + }, + { + "name": "UsedSampler", + "binding": {"kind": "samplerState", "index": 0}, + "type": { + "kind": "samplerState" + } + }, + { + "name": "UnusedSampler", + "binding": {"kind": "samplerState", "index": 1}, + "type": { + "kind": "samplerState" + } + }, + { + "name": "UsedUniform", + "binding": {"kind": "uniform", "offset": 0, "size": 4}, + "type": { + "kind": "scalar", + "scalarType": "uint32" + } + }, + { + "name": "UnusedUniform", + "binding": {"kind": "uniform", "offset": 4, "size": 4}, + "type": { + "kind": "scalar", + "scalarType": "uint32" + } + } + ], + "entryPoints": [ + { + "name": "main", + "stage:": "compute", + "parameters": [ + { + "name": "dispatchThreadID", + "semanticName": "SV_DISPATCHTHREADID", + "type": { + "kind": "vector", + "elementCount": 3, + "elementType": { + "kind": "scalar", + "scalarType": "uint32" + } + } + } + ], + "threadGroupSize": [1, 1, 1], + "bindings": [ + { + "name": "UsedCB", + "binding": {"kind": "constantBuffer", "index": 1, "used": 1} + }, + { + "name": "UnusedCB", + "binding": {"kind": "constantBuffer", "index": 2, "used": 0} + }, + { + "name": "UsedTexture", + "binding": {"kind": "shaderResource", "index": 0, "used": 1} + }, + { + "name": "UnusedTexture", + "binding": {"kind": "shaderResource", "index": 1, "used": 0} + }, + { + "name": "UsedBuffer", + "binding": {"kind": "shaderResource", "index": 2, "used": 1} + }, + { + "name": "UnusedBuffer", + "binding": {"kind": "shaderResource", "index": 3, "used": 0} + }, + { + "name": "UsedStructuredBuffer", + "binding": {"kind": "shaderResource", "index": 4, "used": 1} + }, + { + "name": "UnusedStructuredBuffer", + "binding": {"kind": "shaderResource", "index": 5, "used": 0} + }, + { + "name": "UsedRWTexture", + "binding": {"kind": "unorderedAccess", "index": 0, "used": 1} + }, + { + "name": "UnusedRWTexture", + "binding": {"kind": "unorderedAccess", "index": 1, "used": 0} + }, + { + "name": "UsedRWBuffer", + "binding": {"kind": "unorderedAccess", "index": 2, "used": 1} + }, + { + "name": "UnusedRWBuffer", + "binding": {"kind": "unorderedAccess", "index": 3, "used": 0} + }, + { + "name": "UsedRWStructuredBuffer", + "binding": {"kind": "unorderedAccess", "index": 4, "used": 1} + }, + { + "name": "UnusedRWStructuredBuffer", + "binding": {"kind": "unorderedAccess", "index": 5, "used": 0} + }, + { + "name": "UsedSampler", + "binding": {"kind": "samplerState", "index": 0, "used": 1} + }, + { + "name": "UnusedSampler", + "binding": {"kind": "samplerState", "index": 1, "used": 0} + }, + { + "name": "UsedUniform", + "binding": {"kind": "uniform", "offset": 0, "size": 4} + }, + { + "name": "UnusedUniform", + "binding": {"kind": "uniform", "offset": 4, "size": 4} + } + ] + } + ] +} +} diff --git a/tests/reflection/vertex-input-semantics.hlsl b/tests/reflection/vertex-input-semantics.hlsl index 87a8431bc..356746bed 100644 --- a/tests/reflection/vertex-input-semantics.hlsl +++ b/tests/reflection/vertex-input-semantics.hlsl @@ -1,4 +1,4 @@ -//TEST:REFLECTION:-profile vs_4_0 -target hlsl +//TEST:REFLECTION:-profile vs_4_0 -target hlsl -no-codegen // Confirm that we can generate reflection info for // vertex shader input parameters, including those |
