summaryrefslogtreecommitdiffstats
path: root/tests/reflection
diff options
context:
space:
mode:
authorAlexey Panteleev <alpanteleev@nvidia.com>2022-05-18 10:57:37 -0700
committerGitHub <noreply@github.com>2022-05-18 10:57:37 -0700
commit69cb6e8f300d77e74bd2c7dfe15d12e10b38f512 (patch)
treec2d23f2883acb28407106a096b55c64111f098b1 /tests/reflection
parent1148564b9cdbbc8fec4fbecf65b0af60aa6af344 (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')
-rw-r--r--tests/reflection/arrays.hlsl2
-rw-r--r--tests/reflection/attribute.slang2
-rw-r--r--tests/reflection/binding-gl.hlsl2
-rw-r--r--tests/reflection/binding-push-constant-gl.hlsl2
-rw-r--r--tests/reflection/buffer-layout.slang4
-rw-r--r--tests/reflection/cross-compile.slang2
-rw-r--r--tests/reflection/default-space.slang2
-rw-r--r--tests/reflection/explicit-register-space.slang2
-rw-r--r--tests/reflection/matrix-layout.slang4
-rw-r--r--tests/reflection/mix-explicit-and-implicit-spaces.slang2
-rw-r--r--tests/reflection/multi-file.hlsl2
-rw-r--r--tests/reflection/parameter-block-explicit-space.slang2
-rw-r--r--tests/reflection/parameter-block.slang6
-rw-r--r--tests/reflection/reflect-imported-code.hlsl2
-rw-r--r--tests/reflection/reflect-static.slang2
-rw-r--r--tests/reflection/reflection0.hlsl2
-rw-r--r--tests/reflection/resource-in-cbuffer.hlsl2
-rw-r--r--tests/reflection/sample-index-input.hlsl2
-rw-r--r--tests/reflection/sample-rate-input.hlsl2
-rw-r--r--tests/reflection/shared-modifier.hlsl2
-rw-r--r--tests/reflection/structured-buffer.slang2
-rw-r--r--tests/reflection/thread-group-size.hlsl2
-rw-r--r--tests/reflection/unbounded-arrays.hlsl2
-rw-r--r--tests/reflection/used-parameters.slang52
-rw-r--r--tests/reflection/used-parameters.slang.expected350
-rw-r--r--tests/reflection/vertex-input-semantics.hlsl2
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