summaryrefslogtreecommitdiffstats
path: root/tests/reflection
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-07-12 11:07:45 -0700
committerTim Foley <tfoley@nvidia.com>2017-07-12 11:07:45 -0700
commit74963469a169b49d61196e3a3b33a903ea8bfede (patch)
treea3d8f4f8873946f58111ae5e7f5034b071c1e824 /tests/reflection
parent2c6c501b36db9e7991c3f7999451b70f12329ecc (diff)
Add basic reflection query for checking if entry point is "sample-rate"
- This really just checks two basic things: 1. Was there any global variable declared with `in` and `sample`? 2. Did any code encountered during lowering referenece `gl_SampleIndex`? - This doesn't cover what HLSL could need, nor what we would need for cross-compilation. Consider it GLSL-specific for now. - In order to generate the information with even a reasonable chance of being accurate (not giving a ton of false positives) I tried to integrate the checks into the lowering process (so they only see code that is referenced, one hopes). - For this to work with my testing setup, I needed to make sure that lowering is always performed, prior to emitting reflection info - This change broke several reflection tests, because they had been using code that wouldn't actually pass the downstream compiler. I checked in fixes for those.
Diffstat (limited to 'tests/reflection')
-rw-r--r--tests/reflection/image-types.glsl6
-rw-r--r--tests/reflection/multi-file-extra.hlsl4
-rw-r--r--tests/reflection/multi-file.hlsl4
-rw-r--r--tests/reflection/multi-file.hlsl.expected6
-rw-r--r--tests/reflection/sample-rate-input.glsl15
-rw-r--r--tests/reflection/sample-rate-input.glsl.expected55
-rw-r--r--tests/reflection/std430-layout.glsl1
7 files changed, 82 insertions, 9 deletions
diff --git a/tests/reflection/image-types.glsl b/tests/reflection/image-types.glsl
index 21cd2b629..73ecdaa82 100644
--- a/tests/reflection/image-types.glsl
+++ b/tests/reflection/image-types.glsl
@@ -2,9 +2,11 @@
// Confirm that we expose GLSL `image` types through reflection
-uniform imageBuffer iBuffer;
+layout(rgba32f)
+uniform writeonly imageBuffer iBuffer;
-uniform image2D i2D;
+layout(rgba32f)
+uniform writeonly image2D i2D;
void main()
{}
diff --git a/tests/reflection/multi-file-extra.hlsl b/tests/reflection/multi-file-extra.hlsl
index 569ec2ce9..a5da70635 100644
--- a/tests/reflection/multi-file-extra.hlsl
+++ b/tests/reflection/multi-file-extra.hlsl
@@ -18,7 +18,7 @@ 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); }
+float4 use(Texture2D t, SamplerState s) { return t.SampleLevel(s, 0.0, 0.0); }
// Start with some parameters that will appear in both shaders
Texture2D sharedT;
@@ -51,7 +51,7 @@ Texture2D sharedTV;
Texture2D sharedTF;
-float4 main() : SV_Target
+float4 mainVS() : SV_Position
{
// Go ahead and use everything here, just to make sure things got placed correctly
return use(sharedT, sharedS)
diff --git a/tests/reflection/multi-file.hlsl b/tests/reflection/multi-file.hlsl
index b263a6b71..7f79f08c9 100644
--- a/tests/reflection/multi-file.hlsl
+++ b/tests/reflection/multi-file.hlsl
@@ -1,4 +1,4 @@
-//TEST:SIMPLE:-profile ps_4_0 -target reflection-json Tests/bindings/multi-file-extra.hlsl
+//TEST:SIMPLE:-profile ps_4_0 -entry mainFS -target reflection-json tests/reflection/multi-file-extra.hlsl -profile vs_4_0 -entry mainVS
// Here we are testing the case where multiple translation units are provided
// at once, so that we want combined reflection information for the resulting
@@ -44,7 +44,7 @@ Texture2D sharedTV;
Texture2D sharedTF;
-float4 main() : SV_Position
+float4 mainFS() : SV_Target
{
// Go ahead and use everything here, just to make sure things got placed correctly
return use(sharedT, sharedS)
diff --git a/tests/reflection/multi-file.hlsl.expected b/tests/reflection/multi-file.hlsl.expected
index 3dc23c11c..4ad95fb35 100644
--- a/tests/reflection/multi-file.hlsl.expected
+++ b/tests/reflection/multi-file.hlsl.expected
@@ -236,12 +236,12 @@ standard output = {
],
"entryPoints": [
{
- "name": "main",
+ "name": "mainFS",
"stage:": "fragment"
},
{
- "name": "main",
- "stage:": "fragment"
+ "name": "mainVS",
+ "stage:": "vertex"
}
]
}
diff --git a/tests/reflection/sample-rate-input.glsl b/tests/reflection/sample-rate-input.glsl
new file mode 100644
index 000000000..66763f45d
--- /dev/null
+++ b/tests/reflection/sample-rate-input.glsl
@@ -0,0 +1,15 @@
+//TEST(smoke):SIMPLE:-profile ps_4_0 -no-checking -target reflection-json
+
+// Check that we report sample-rate entry point input correctly
+
+uniform texture2D t;
+uniform sampler s;
+
+sample in vec2 uv;
+
+out vec4 c;
+
+void main()
+{
+ c = texture(sampler2D(t,s), uv);
+}
diff --git a/tests/reflection/sample-rate-input.glsl.expected b/tests/reflection/sample-rate-input.glsl.expected
new file mode 100644
index 000000000..5800a3630
--- /dev/null
+++ b/tests/reflection/sample-rate-input.glsl.expected
@@ -0,0 +1,55 @@
+result code = 0
+standard error = {
+}
+standard output = {
+{
+ "parameters": [
+ {
+ "name": "t",
+ "binding": {"kind": "descriptorTableSlot", "index": 0},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D"
+ }
+ },
+ {
+ "name": "s",
+ "binding": {"kind": "descriptorTableSlot", "index": 1},
+ "type": {
+ "kind": "samplerState"
+ }
+ },
+ {
+ "name": "uv",
+ "binding": {"kind": "vertexInput", "index": 0},
+ "type": {
+ "kind": "vector",
+ "elementCount": 2,
+ "elementType": {
+ "kind": "scalar",
+ "scalarType": "float32"
+ }
+ }
+ },
+ {
+ "name": "c",
+ "binding": {"kind": "fragmentOutput", "index": 0},
+ "type": {
+ "kind": "vector",
+ "elementCount": 4,
+ "elementType": {
+ "kind": "scalar",
+ "scalarType": "float32"
+ }
+ }
+ }
+ ],
+ "entryPoints": [
+ {
+ "name": "main",
+ "stage:": "fragment",
+ "usesAnySampleRateInput": true
+ }
+ ]
+}
+}
diff --git a/tests/reflection/std430-layout.glsl b/tests/reflection/std430-layout.glsl
index 5d4dee88f..0e61556fc 100644
--- a/tests/reflection/std430-layout.glsl
+++ b/tests/reflection/std430-layout.glsl
@@ -1,3 +1,4 @@
+#version 450
//TEST(smoke):SIMPLE:-profile ps_4_0 -target reflection-json
// Confirm fix for GitHub issue #55