diff options
Diffstat (limited to 'tests/bindings')
| -rw-r--r-- | tests/bindings/multi-file-defines.h | 44 | ||||
| -rw-r--r-- | tests/bindings/multi-file-extra.hlsl | 77 | ||||
| -rw-r--r-- | tests/bindings/multi-file-shared.slang | 25 | ||||
| -rw-r--r-- | tests/bindings/multi-file.hlsl | 80 |
4 files changed, 83 insertions, 143 deletions
diff --git a/tests/bindings/multi-file-defines.h b/tests/bindings/multi-file-defines.h new file mode 100644 index 000000000..52a5826b6 --- /dev/null +++ b/tests/bindings/multi-file-defines.h @@ -0,0 +1,44 @@ +// multi-file-defines.h + +#ifdef __SLANG__ +#define R(X) /**/ +#define BEGIN_CBUFFER(NAME) cbuffer NAME +#define END_CBUFFER(NAME, REG) /**/ +#define CBUFFER_REF(NAME, FIELD) FIELD +#else +#define R(X) X +#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME +#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } +#define CBUFFER_REF(NAME, FIELD) NAME.FIELD + +#define sharedC sharedC_0 +#define sharedCA sharedCA_0 +#define sharedCB sharedCB_0 +#define sharedCC sharedCC_0 +#define sharedCD sharedCD_0 + +#define vertexC vertexC_0 +#define vertexCA vertexCA_0 +#define vertexCB vertexCB_0 +#define vertexCC vertexCC_0 +#define vertexCD vertexCD_0 + +#define fragmentC fragmentC_0 +#define fragmentCA fragmentCA_0 +#define fragmentCB fragmentCB_0 +#define fragmentCC fragmentCC_0 +#define fragmentCD fragmentCD_0 + +#define sharedS sharedS_0 +#define sharedT sharedT_0 +#define sharedTV sharedTV_0 +#define sharedTF sharedTF_0 + +#define vertexS vertexS_0 +#define vertexT vertexT_0 + +#define fragmentS fragmentS_0 +#define fragmentT fragmentT_0 + +#endif + diff --git a/tests/bindings/multi-file-extra.hlsl b/tests/bindings/multi-file-extra.hlsl index fe8766dcd..9be7a34a0 100644 --- a/tests/bindings/multi-file-extra.hlsl +++ b/tests/bindings/multi-file-extra.hlsl @@ -5,74 +5,16 @@ // This file provides the fragment shader, and is only meant to be tested in combination with `multi-file.hlsl` +#include "multi-file-defines.h" + #ifdef __SLANG__ -#define R(X) /**/ -#define BEGIN_CBUFFER(NAME) cbuffer NAME -#define END_CBUFFER(NAME, REG) /**/ -#define CBUFFER_REF(NAME, FIELD) FIELD +import multi_file_shared; #else -#define R(X) X -#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME -#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } -#define CBUFFER_REF(NAME, FIELD) NAME.FIELD - -#define sharedC sharedC_0 -#define sharedCA sharedCA_0 -#define sharedCB sharedCB_0 -#define sharedCC sharedCC_0 -#define sharedCD sharedCD_0 - -#define vertexC vertexC_0 -#define vertexCA vertexCA_0 -#define vertexCB vertexCB_0 -#define vertexCC vertexCC_0 -#define vertexCD vertexCD_0 - -#define fragmentC fragmentC_0 -#define fragmentCA fragmentCA_0 -#define fragmentCB fragmentCB_0 -#define fragmentCC fragmentCC_0 -#define fragmentCD fragmentCD_0 - -#define sharedS sharedS_0 -#define sharedT sharedT_0 -#define sharedTV sharedTV_0 -#define sharedTF sharedTF_0 - -#define vertexS vertexS_0 -#define vertexT vertexT_0 - -#define fragmentS fragmentS_0 -#define fragmentT fragmentT_0 - +#include "multi-file-shared.slang" #endif -float4 use(float val) { return val; }; -float4 use(float2 val) { return float4(val,0.0,0.0); }; -float4 use(float3 val) { return float4(val,0.0); }; -float4 use(float4 val) { return val; }; -float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } - -// Start with some parameters that will appear in both shaders -Texture2D sharedT R(: register(t0)); -SamplerState sharedS R(: register(s0)); - -BEGIN_CBUFFER(sharedC) -{ - float3 sharedCA; - float sharedCB; - float3 sharedCC; - float2 sharedCD; -} -END_CBUFFER(sharedC, register(b0)) - -// Then some parameters specific to this shader. -// These will be placed *after* the ones from the main file, -// and even after the parameters further down in this file -// that end up being shared between the two files. - -Texture2D fragmentT R(: register(t4)); -SamplerState fragmentS R(: register(s2)); +Texture2D fragmentT R(: register(t1)); +SamplerState fragmentS R(: register(s1)); BEGIN_CBUFFER(fragmentC) { @@ -81,12 +23,7 @@ BEGIN_CBUFFER(fragmentC) float3 fragmentCC; float2 fragmentCD; } -END_CBUFFER(fragmentC, register(b2)) - -// And end with some shared parameters again -Texture2D sharedTV R(: register(t2)); -Texture2D sharedTF R(: register(t3)); - +END_CBUFFER(fragmentC, register(b1)) float4 main() : SV_TARGET { diff --git a/tests/bindings/multi-file-shared.slang b/tests/bindings/multi-file-shared.slang new file mode 100644 index 000000000..af91d5251 --- /dev/null +++ b/tests/bindings/multi-file-shared.slang @@ -0,0 +1,25 @@ +// multi-file-shared.slang +//TEST_IGNORE_FILE: + +#include "multi-file-defines.h" + +float4 use(float val) { return val; }; +float4 use(float2 val) { return float4(val,0.0,0.0); }; +float4 use(float3 val) { return float4(val,0.0); }; +float4 use(float4 val) { return val; }; +float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); } + +Texture2D sharedT R(: register(t2)); +SamplerState sharedS R(: register(s2)); + +BEGIN_CBUFFER(sharedC) +{ + float3 sharedCA; + float sharedCB; + float3 sharedCC; + float2 sharedCD; +} +END_CBUFFER(sharedC, register(b2)) + +Texture2D sharedTV R(: register(t3)); +Texture2D sharedTF R(: register(t4)); diff --git a/tests/bindings/multi-file.hlsl b/tests/bindings/multi-file.hlsl index 8c719bbcf..73ce181b0 100644 --- a/tests/bindings/multi-file.hlsl +++ b/tests/bindings/multi-file.hlsl @@ -6,77 +6,16 @@ // This file provides the vertex shader, while the fragment shader resides in // the file `multi-file-extra.hlsl` +#include "multi-file-defines.h" + #ifdef __SLANG__ -#define R(X) /**/ -#define BEGIN_CBUFFER(NAME) cbuffer NAME -#define END_CBUFFER(NAME, REG) /**/ -#define CBUFFER_REF(NAME, FIELD) FIELD +import multi_file_shared; #else -#define R(X) X -#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME -#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } -#define CBUFFER_REF(NAME, FIELD) NAME.FIELD - -#define sharedC sharedC_0 -#define sharedCA sharedCA_0 -#define sharedCB sharedCB_0 -#define sharedCC sharedCC_0 -#define sharedCD sharedCD_0 - -#define vertexC vertexC_0 -#define vertexCA vertexCA_0 -#define vertexCB vertexCB_0 -#define vertexCC vertexCC_0 -#define vertexCD vertexCD_0 - -#define fragmentC fragmentC_0 -#define fragmentCA fragmentCA_0 -#define fragmentCB fragmentCB_0 -#define fragmentCC fragmentCC_0 -#define fragmentCD fragmentCD_0 - -#define sharedS sharedS_0 -#define sharedT sharedT_0 -#define sharedTV sharedTV_0 -#define sharedTF sharedTF_0 - -#define vertexS vertexS_0 -#define vertexT vertexT_0 - -#define fragmentS fragmentS_0 -#define fragmentT fragmentT_0 - +#include "multi-file-shared.slang" #endif -float4 use(float val) { return val; }; -float4 use(float2 val) { return float4(val,0.0,0.0); }; -float4 use(float3 val) { return float4(val,0.0); }; -float4 use(float4 val) { return val; }; -float4 use(Texture2D t, SamplerState s) -{ - // This is the vertex shader, so we can't do implicit-gradient sampling - return t.SampleGrad(s, 0.0, 0.0, 0.0); -} - -// Start with some parameters that will appear in both shaders -Texture2D sharedT R(: register(t0)); -SamplerState sharedS R(: register(s0)); - -BEGIN_CBUFFER(sharedC) -{ - float3 sharedCA; - float sharedCB; - float3 sharedCC; - float2 sharedCD; -} -END_CBUFFER(sharedC, register(b0)) - -// Then some parameters specific to this shader -// (these will get placed before the ones in the `extra` file, -// based on how they get named on the command-line) - -Texture2D vertexT R(: register(t1)); -SamplerState vertexS R(: register(s1)); +Texture2D vertexT R(: register(t0)); +SamplerState vertexS R(: register(s0)); BEGIN_CBUFFER(vertexC) { @@ -85,12 +24,7 @@ BEGIN_CBUFFER(vertexC) float3 vertexCC; float2 vertexCD; } -END_CBUFFER(vertexC, register(b1)) - -// And end with some shared parameters again -Texture2D sharedTV R(: register(t2)); -Texture2D sharedTF R(: register(t3)); - +END_CBUFFER(vertexC, register(b0)) float4 main() : SV_POSITION { |
