From c16fc84a0071892ea0f4e3c5c70aa101e6400aec Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 26 Jun 2017 09:07:07 -0700 Subject: Include imported code when generating reflection data - The basic idea is simple: be sure to enumerate code in `__import`ed modules when generating reflection info - Note that we don't currently allow an entry point to appear in an imported module, so we only consider globlal-scope parameters - Although there isn't currently a real implementation of namespacing, I went ahead and ensured that parameters in imported modules are treated as distinct from parameters in the user's code, even if they have the same name. --- tests/reflection/reflect-imported-code.hlsl | 21 +++++++++++++++++++++ tests/reflection/reflect-imported-code.slang | 14 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/reflection/reflect-imported-code.hlsl create mode 100644 tests/reflection/reflect-imported-code.slang (limited to 'tests/reflection') diff --git a/tests/reflection/reflect-imported-code.hlsl b/tests/reflection/reflect-imported-code.hlsl new file mode 100644 index 000000000..b95493f7e --- /dev/null +++ b/tests/reflection/reflect-imported-code.hlsl @@ -0,0 +1,21 @@ +//TEST:SIMPLE:-profile ps_4_0 -target reflection-json + +// Confirm that shader parameters in imported modules get reflected properly. + +__import reflect_imported_code; + +Texture2D t; +SamplerState s; + +cbuffer C +{ + float c; +} + +float4 main() : SV_Target +{ + return use(t,s_i) + + use(c) + + use(t_i, s) + + use(c_i); +} \ No newline at end of file diff --git a/tests/reflection/reflect-imported-code.slang b/tests/reflection/reflect-imported-code.slang new file mode 100644 index 000000000..20beb94b8 --- /dev/null +++ b/tests/reflection/reflect-imported-code.slang @@ -0,0 +1,14 @@ +//TEST_IGNORE_FILE: + +// Imported code used by `reflect-imported-code.hlsl` + +float4 use(float4 val) { return val; }; +float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } + +Texture2D t_i; +SamplerState s_i; + +cbuffer C_i +{ + float c_i; +} -- cgit v1.2.3 From 07f9b9ec7c9be6a0eff65ef327d2a0fee262aed7 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 26 Jun 2017 11:37:09 -0700 Subject: Add expected output file for test. This is the cause of the test failures on AppVeyor. --- .../reflection/reflect-imported-code.hlsl.expected | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/reflection/reflect-imported-code.hlsl.expected (limited to 'tests/reflection') diff --git a/tests/reflection/reflect-imported-code.hlsl.expected b/tests/reflection/reflect-imported-code.hlsl.expected new file mode 100644 index 000000000..1190ab550 --- /dev/null +++ b/tests/reflection/reflect-imported-code.hlsl.expected @@ -0,0 +1,79 @@ +result code = 0 +standard error = { +} +standard output = { +{ + "parameters": [ + { + "name": "t", + "binding": {"kind": "shaderResource", "index": 0}, + "type": { + "kind": "resource", + "baseShape": "texture2D" + } + }, + { + "name": "s", + "binding": {"kind": "samplerState", "index": 0}, + "type": { + "kind": "samplerState" + } + }, + { + "name": "C", + "binding": {"kind": "constantBuffer", "index": 0}, + "type": { + "kind": "constantBuffer", + "elementType": { + "kind": "struct", + "fields": [ + { + "name": "c", + "type": { + "kind": "scalar", + "scalarType": "float32" + }, + "binding": {"kind": "uniform", "offset": 0, "size": 4} + } + ] + } + } + }, + { + "name": "t_i", + "binding": {"kind": "shaderResource", "index": 1}, + "type": { + "kind": "resource", + "baseShape": "texture2D" + } + }, + { + "name": "s_i", + "binding": {"kind": "samplerState", "index": 1}, + "type": { + "kind": "samplerState" + } + }, + { + "name": "C_i", + "binding": {"kind": "constantBuffer", "index": 1}, + "type": { + "kind": "constantBuffer", + "elementType": { + "kind": "struct", + "fields": [ + { + "name": "c_i", + "type": { + "kind": "scalar", + "scalarType": "float32" + }, + "binding": {"kind": "uniform", "offset": 0, "size": 4} + } + ] + } + } + } + ] +} +} -- cgit v1.2.3