diff options
Diffstat (limited to 'tests/bindings')
| -rw-r--r-- | tests/bindings/array-of-struct-of-resource.hlsl | 6 | ||||
| -rw-r--r-- | tests/bindings/binding0.hlsl | 8 | ||||
| -rw-r--r-- | tests/bindings/binding1.hlsl | 19 | ||||
| -rw-r--r-- | tests/bindings/explicit-binding.hlsl | 20 | ||||
| -rw-r--r-- | tests/bindings/glsl-parameter-blocks.slang | 3 | ||||
| -rw-r--r-- | tests/bindings/glsl-parameter-blocks.slang.glsl | 41 | ||||
| -rw-r--r-- | tests/bindings/multi-file-extra.hlsl | 32 | ||||
| -rw-r--r-- | tests/bindings/multi-file.hlsl | 66 | ||||
| -rw-r--r-- | tests/bindings/multiple-parameter-blocks.slang | 2 | ||||
| -rw-r--r-- | tests/bindings/packoffset.hlsl | 13 | ||||
| -rw-r--r-- | tests/bindings/parameter-blocks.slang | 6 | ||||
| -rw-r--r-- | tests/bindings/resources-in-cbuffer.hlsl | 32 | ||||
| -rw-r--r-- | tests/bindings/targets-and-uavs-structure.hlsl | 5 | ||||
| -rw-r--r-- | tests/bindings/targets-and-uavs.hlsl | 7 |
14 files changed, 212 insertions, 48 deletions
diff --git a/tests/bindings/array-of-struct-of-resource.hlsl b/tests/bindings/array-of-struct-of-resource.hlsl index 71492ef49..8ba71c7a3 100644 --- a/tests/bindings/array-of-struct-of-resource.hlsl +++ b/tests/bindings/array-of-struct-of-resource.hlsl @@ -27,11 +27,15 @@ float4 main() : SV_Target #else +#define a _SV04testL0 +#define b _SV04testL1 +#define s _SV01s + Texture2D a[2]; Texture2D b[2]; SamplerState s; -float4 main() : SV_Target +float4 main() : SV_TARGET { return use(a[0],s) + use(b[0],s) diff --git a/tests/bindings/binding0.hlsl b/tests/bindings/binding0.hlsl index 9ca092562..fcd7e7b54 100644 --- a/tests/bindings/binding0.hlsl +++ b/tests/bindings/binding0.hlsl @@ -8,6 +8,12 @@ #define R(X) /**/ #else #define R(X) X + +#define C _SV022SLANG_parameterGroup_C +#define t _SV01t +#define s _SV01s +#define c _SV022SLANG_ParameterGroup_C1c + #endif float4 use(float4 val) { return val; }; @@ -21,7 +27,7 @@ cbuffer C R(: register(b0)) float c; } -float4 main() : SV_Target +float4 main() : SV_TARGET { return use(t,s) + use(c); }
\ No newline at end of file diff --git a/tests/bindings/binding1.hlsl b/tests/bindings/binding1.hlsl index 879a19816..adc06edaa 100644 --- a/tests/bindings/binding1.hlsl +++ b/tests/bindings/binding1.hlsl @@ -15,15 +15,22 @@ #define R(X) /**/ #else #define R(X) X + +#define tB _SV02tB +#define sB _SV02sB + +#define C1 _SV023SLANG_parameterGroup_C1 +#define c1 _SV023SLANG_ParameterGroup_C12c1 + #endif float4 use(float4 val) { return val; }; float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } -Texture2D t0 R(: register(t0)); -Texture2D t1 R(: register(t1)); -SamplerState s0 R(: register(s0)); -SamplerState s1 R(: register(s1)); +Texture2D tA R(: register(t0)); +Texture2D tB R(: register(t1)); +SamplerState sA R(: register(s0)); +SamplerState sB R(: register(s1)); cbuffer C0 R(: register(b0)) { @@ -35,7 +42,7 @@ cbuffer C1 R(: register(b1)) float c1; } -float4 main() : SV_Target +float4 main() : SV_TARGET { - return use(t1,s1) + use(c1); + return use(tB,sB) + use(c1); }
\ No newline at end of file diff --git a/tests/bindings/explicit-binding.hlsl b/tests/bindings/explicit-binding.hlsl index 313f5a091..758be959b 100644 --- a/tests/bindings/explicit-binding.hlsl +++ b/tests/bindings/explicit-binding.hlsl @@ -7,6 +7,24 @@ #define R(X) /**/ #else #define R(X) X + +#define CA _SV023SLANG_parameterGroup_CA +#define ca _SV023SLANG_ParameterGroup_CA2ca + +#define CB _SV023SLANG_parameterGroup_CB +#define cb _SV023SLANG_ParameterGroup_CB2cb + +#define CC _SV023SLANG_parameterGroup_CC +#define cc _SV023SLANG_ParameterGroup_CC2cc + +#define sa _SV02sa +#define sb _SV02sb +#define sc _SV02sc + +#define ta _SV02ta +#define tb _SV02tb +#define tc _SV02tc + #endif float4 use(float4 val) { return val; }; @@ -46,7 +64,7 @@ cbuffer CC : register(b9) float cc; } -float4 main() : SV_Target +float4 main() : SV_TARGET { // Go ahead and use everything in this case: return use(ta, sa) + use(ca) diff --git a/tests/bindings/glsl-parameter-blocks.slang b/tests/bindings/glsl-parameter-blocks.slang index 48eacbb0f..d356df775 100644 --- a/tests/bindings/glsl-parameter-blocks.slang +++ b/tests/bindings/glsl-parameter-blocks.slang @@ -1,9 +1,6 @@ #version 450 core //TEST:CROSS_COMPILE: -profile ps_5_0 -entry main -target spirv-assembly -// Note: disabled because the translation of `Texture2D.Sample()` -// requires handling of local variables with resource types in the IR. - struct Test { float4 a; diff --git a/tests/bindings/glsl-parameter-blocks.slang.glsl b/tests/bindings/glsl-parameter-blocks.slang.glsl index d05eea485..b65ee0e49 100644 --- a/tests/bindings/glsl-parameter-blocks.slang.glsl +++ b/tests/bindings/glsl-parameter-blocks.slang.glsl @@ -1,39 +1,56 @@ //TEST_IGNORE_FILE: #version 450 core -struct _ST04Test +#define Test _ST04Test +#define a _SV04Test1a + +#define gTest _SV05gTestL0 +#define gTest_t _SV05gTestL1 +#define gTest_s _SV05gTestL2 + +#define ParameterBlock_gTest _S1 + +#define main_result _S2 +#define uv _S3 + +#define temp_uv _S4 +#define temp_a _S5 +#define temp_sample _S6 +#define temp_add _S7 + +struct Test { vec4 a; }; layout(binding = 0, set = 1) -uniform _S1 +uniform ParameterBlock_gTest { - _ST04Test _SV05gTestL0; + Test gTest; }; layout(binding = 1, set = 1) -uniform texture2D _SV05gTestL1; +uniform texture2D gTest_t; layout(binding = 2, set = 1) -uniform sampler _SV05gTestL2; +uniform sampler gTest_s; layout(location = 0) -out vec4 _S2; +out vec4 main_result; layout(location = 0) -in vec2 _S3; +in vec2 uv; void main() { - vec2 _S4 = _S3; + vec2 temp_uv = uv; - vec4 _S5 = _SV05gTestL0.a; + vec4 temp_a = gTest.a; - vec4 _S6 = texture(sampler2D(_SV05gTestL1, _SV05gTestL2), _S4); + vec4 temp_sample = texture(sampler2D(gTest_t, gTest_s), temp_uv); - vec4 _S7 = _S5 + _S6; - _S2 = _S7; + vec4 temp_add = temp_a + temp_sample; + main_result = temp_add; return; } diff --git a/tests/bindings/multi-file-extra.hlsl b/tests/bindings/multi-file-extra.hlsl index 7852d7c48..8bf8be414 100644 --- a/tests/bindings/multi-file-extra.hlsl +++ b/tests/bindings/multi-file-extra.hlsl @@ -9,6 +9,36 @@ #define R(X) /**/ #else #define R(X) X + +#define sharedC _SV028SLANG_parameterGroup_sharedC +#define sharedCA _SV028SLANG_ParameterGroup_sharedC8sharedCA +#define sharedCB _SV028SLANG_ParameterGroup_sharedC8sharedCB +#define sharedCC _SV028SLANG_ParameterGroup_sharedC8sharedCC +#define sharedCD _SV028SLANG_ParameterGroup_sharedC8sharedCD + +#define vertexC _SV028SLANG_parameterGroup_vertexC +#define vertexCA _SV028SLANG_ParameterGroup_vertexC8vertexCA +#define vertexCB _SV028SLANG_ParameterGroup_vertexC8vertexCB +#define vertexCC _SV028SLANG_ParameterGroup_vertexC8vertexCC +#define vertexCD _SV028SLANG_ParameterGroup_vertexC8vertexCD + +#define fragmentC _SV030SLANG_parameterGroup_fragmentC +#define fragmentCA _SV030SLANG_ParameterGroup_fragmentC10fragmentCA +#define fragmentCB _SV030SLANG_ParameterGroup_fragmentC10fragmentCB +#define fragmentCC _SV030SLANG_ParameterGroup_fragmentC10fragmentCC +#define fragmentCD _SV030SLANG_ParameterGroup_fragmentC10fragmentCD + +#define sharedS _SV07sharedS +#define sharedT _SV07sharedT +#define sharedTV _SV08sharedTV +#define sharedTF _SV08sharedTF + +#define vertexS _SV07vertexS +#define vertexT _SV07vertexT + +#define fragmentS _SV09fragmentS +#define fragmentT _SV09fragmentT + #endif float4 use(float val) { return val; }; @@ -48,7 +78,7 @@ Texture2D sharedTV R(: register(t2)); Texture2D sharedTF R(: register(t3)); -float4 main() : SV_Target +float4 main() : SV_TARGET { // Go ahead and use everything here, just to make sure things got placed correctly return use(sharedT, sharedS) diff --git a/tests/bindings/multi-file.hlsl b/tests/bindings/multi-file.hlsl index 4038ea3ca..bc00b0f69 100644 --- a/tests/bindings/multi-file.hlsl +++ b/tests/bindings/multi-file.hlsl @@ -10,6 +10,36 @@ #define R(X) /**/ #else #define R(X) X + +#define sharedC _SV028SLANG_parameterGroup_sharedC +#define sharedCA _SV028SLANG_ParameterGroup_sharedC8sharedCA +#define sharedCB _SV028SLANG_ParameterGroup_sharedC8sharedCB +#define sharedCC _SV028SLANG_ParameterGroup_sharedC8sharedCC +#define sharedCD _SV028SLANG_ParameterGroup_sharedC8sharedCD + +#define vertexC _SV028SLANG_parameterGroup_vertexC +#define vertexCA _SV028SLANG_ParameterGroup_vertexC8vertexCA +#define vertexCB _SV028SLANG_ParameterGroup_vertexC8vertexCB +#define vertexCC _SV028SLANG_ParameterGroup_vertexC8vertexCC +#define vertexCD _SV028SLANG_ParameterGroup_vertexC8vertexCD + +#define fragmentC _SV030SLANG_parameterGroup_fragmentC +#define fragmentCA _SV030SLANG_ParameterGroup_fragmentC10fragmentCA +#define fragmentCB _SV030SLANG_ParameterGroup_fragmentC10fragmentCB +#define fragmentCC _SV030SLANG_ParameterGroup_fragmentC10fragmentCC +#define fragmentCD _SV030SLANG_ParameterGroup_fragmentC10fragmentCD + +#define sharedS _SV07sharedS +#define sharedT _SV07sharedT +#define sharedTV _SV08sharedTV +#define sharedTF _SV08sharedTF + +#define vertexS _SV07vertexS +#define vertexT _SV07vertexT + +#define fragmentS _SV09fragmentS +#define fragmentT _SV09fragmentT + #endif float4 use(float val) { return val; }; @@ -18,8 +48,8 @@ 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); + // 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 @@ -27,10 +57,10 @@ Texture2D sharedT R(: register(t0)); SamplerState sharedS R(: register(s0)); cbuffer sharedC R(: register(b0)) { - float3 sharedCA R(: packoffset(c0)); - float sharedCB R(: packoffset(c0.w)); - float3 sharedCC R(: packoffset(c1)); - float2 sharedCD R(: packoffset(c2)); + float3 sharedCA R(: packoffset(c0)); + float sharedCB R(: packoffset(c0.w)); + float3 sharedCC R(: packoffset(c1)); + float2 sharedCD R(: packoffset(c2)); } // Then some parameters specific to this shader @@ -41,10 +71,10 @@ Texture2D vertexT R(: register(t1)); SamplerState vertexS R(: register(s1)); cbuffer vertexC R(: register(b1)) { - float3 vertexCA R(: packoffset(c0)); - float vertexCB R(: packoffset(c0.w)); - float3 vertexCC R(: packoffset(c1)); - float2 vertexCD R(: packoffset(c2)); + float3 vertexCA R(: packoffset(c0)); + float vertexCB R(: packoffset(c0.w)); + float3 vertexCC R(: packoffset(c1)); + float2 vertexCD R(: packoffset(c2)); } // And end with some shared parameters again @@ -52,13 +82,13 @@ Texture2D sharedTV R(: register(t2)); Texture2D sharedTF R(: register(t3)); -float4 main() : SV_Position +float4 main() : SV_POSITION { - // Go ahead and use everything here, just to make sure things got placed correctly - return use(sharedT, sharedS) - + use(sharedCD) - + use(vertexT, vertexS) - + use(vertexCD) - + use(sharedTV, vertexS) - ; + // Go ahead and use everything here, just to make sure things got placed correctly + return use(sharedT, sharedS) + + use(sharedCD) + + use(vertexT, vertexS) + + use(vertexCD) + + use(sharedTV, vertexS) + ; }
\ No newline at end of file diff --git a/tests/bindings/multiple-parameter-blocks.slang b/tests/bindings/multiple-parameter-blocks.slang index 2b0a38c1c..96a78316a 100644 --- a/tests/bindings/multiple-parameter-blocks.slang +++ b/tests/bindings/multiple-parameter-blocks.slang @@ -37,7 +37,7 @@ Texture2D _SV02p1L0 : register(t0, space1); Texture2D _SV02p1L1[4] : register(t1, space1); SamplerState _SV02p1L2 : register(s0, space1); -float4 main(float v : V) : SV_Target +float4 main(float v : V) : SV_TARGET { return use(_SV01pL0, _SV01pL2) + use(_SV01pL1[int(v)], _SV01pL2) diff --git a/tests/bindings/packoffset.hlsl b/tests/bindings/packoffset.hlsl index 69cebdc40..5b8650a9b 100644 --- a/tests/bindings/packoffset.hlsl +++ b/tests/bindings/packoffset.hlsl @@ -7,6 +7,17 @@ #define R(X) /**/ #else #define R(X) X + +#define CA _SV023SLANG_parameterGroup_CAL0 +#define ca _SV023SLANG_ParameterGroup_CA2ca +#define cb _SV023SLANG_ParameterGroup_CA2cb +#define cc _SV023SLANG_ParameterGroup_CA2cc +#define cd _SV023SLANG_ParameterGroup_CA2cd +#define ce _SV023SLANG_ParameterGroup_CA2ce + +#define ta _SV023SLANG_parameterGroup_CAL1 +#define sa _SV023SLANG_parameterGroup_CAL2 + #endif float4 use(float val) { return val; }; @@ -27,7 +38,7 @@ cbuffer CA R(: register(b0)) SamplerState sa R(: register(s0)); } -float4 main() : SV_Target +float4 main() : SV_TARGET { // Go ahead and use everything in this case: return use(ta, sa) diff --git a/tests/bindings/parameter-blocks.slang b/tests/bindings/parameter-blocks.slang index ae5d9a647..62503e49b 100644 --- a/tests/bindings/parameter-blocks.slang +++ b/tests/bindings/parameter-blocks.slang @@ -26,11 +26,15 @@ float4 main(float v : V) : SV_Target #else +#define t _SV01pL0 +#define ta _SV01pL1 +#define s _SV01pL2 + Texture2D t : register(t0, space0); Texture2D ta[4] : register(t1, space0); SamplerState s : register(s0, space0); -float4 main(float v : V) : SV_Target +float4 main(float v : V) : SV_TARGET { return use(ta[int(v)], s) + use(t, s); diff --git a/tests/bindings/resources-in-cbuffer.hlsl b/tests/bindings/resources-in-cbuffer.hlsl index 647e64c32..5706bd39c 100644 --- a/tests/bindings/resources-in-cbuffer.hlsl +++ b/tests/bindings/resources-in-cbuffer.hlsl @@ -8,6 +8,36 @@ #define R(X) /**/ #else #define R(X) X + +#define CA _SV023SLANG_parameterGroup_CAL0 +#define caa _SV023SLANG_ParameterGroup_CA3caa +#define cab _SV023SLANG_ParameterGroup_CA3cab +#define cac _SV023SLANG_ParameterGroup_CA3cac +#define cad _SV023SLANG_ParameterGroup_CA3cad +#define cae _SV023SLANG_ParameterGroup_CA3cae +#define ta _SV023SLANG_parameterGroup_CAL1 +#define sa _SV023SLANG_parameterGroup_CAL2 + +#define CB _SV023SLANG_parameterGroup_CBL0 +#define cba _SV023SLANG_ParameterGroup_CB3cba +#define cbb _SV023SLANG_ParameterGroup_CB3cbb +#define cbc _SV023SLANG_ParameterGroup_CB3cbc +#define cbd _SV023SLANG_ParameterGroup_CB3cbd +#define cbe _SV023SLANG_ParameterGroup_CB3cbe +#define tbx _SV023SLANG_parameterGroup_CBL1 +#define tby _SV023SLANG_parameterGroup_CBL2 +#define sb _SV023SLANG_parameterGroup_CBL3 + +#define CC _SV023SLANG_parameterGroup_CCL0 +#define cca _SV023SLANG_ParameterGroup_CC3cca +#define ccb _SV023SLANG_ParameterGroup_CC3ccb +#define ccc _SV023SLANG_ParameterGroup_CC3ccc +#define ccd _SV023SLANG_ParameterGroup_CC3ccd +#define cce _SV023SLANG_ParameterGroup_CC3cce +#define tc _SV023SLANG_parameterGroup_CCL1 +#define scx _SV023SLANG_parameterGroup_CCL2 +#define scy _SV023SLANG_parameterGroup_CCL3 + #endif float4 use(float val) { return val; }; @@ -54,7 +84,7 @@ cbuffer CC R(: register(b2)) SamplerState scy R(: register(s3)); } -float4 main() : SV_Target +float4 main() : SV_TARGET { // Go ahead and use everything in this case: return use(ta, sa) diff --git a/tests/bindings/targets-and-uavs-structure.hlsl b/tests/bindings/targets-and-uavs-structure.hlsl index 6c9ee0340..359083069 100644 --- a/tests/bindings/targets-and-uavs-structure.hlsl +++ b/tests/bindings/targets-and-uavs-structure.hlsl @@ -7,6 +7,11 @@ #define R(X) /**/ #else #define R(X) X + +#define Foo _ST03Foo +#define v _SV03Foo1v +#define fooBuffer _SV09fooBuffer + #endif float4 use(float val) { return val; }; diff --git a/tests/bindings/targets-and-uavs.hlsl b/tests/bindings/targets-and-uavs.hlsl index ad0d84e5c..24efa418c 100644 --- a/tests/bindings/targets-and-uavs.hlsl +++ b/tests/bindings/targets-and-uavs.hlsl @@ -9,6 +9,11 @@ #define R(X) /**/ #else #define R(X) X + +#define Foo _ST03Foo +#define v _SV03Foo1v +#define fooBuffer _SV09fooBuffer + #endif float4 use(float val) { return val; }; @@ -22,7 +27,7 @@ struct Foo { float2 v; }; // This should be allocated a register *after* the render target RWStructuredBuffer<Foo> fooBuffer R(: register(u1)); -float4 main() : SV_Target +float4 main() : SV_TARGET { return use(fooBuffer[12].v); }
\ No newline at end of file |
