summaryrefslogtreecommitdiff
path: root/tests/bindings
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bindings')
-rw-r--r--tests/bindings/multi-file-defines.h44
-rw-r--r--tests/bindings/multi-file-extra.hlsl77
-rw-r--r--tests/bindings/multi-file-shared.slang25
-rw-r--r--tests/bindings/multi-file.hlsl80
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
{