diff options
| author | Tim Foley <tfoley@nvidia.com> | 2017-07-12 11:07:45 -0700 |
|---|---|---|
| committer | Tim Foley <tfoley@nvidia.com> | 2017-07-12 11:07:45 -0700 |
| commit | 74963469a169b49d61196e3a3b33a903ea8bfede (patch) | |
| tree | a3d8f4f8873946f58111ae5e7f5034b071c1e824 /tests/reflection | |
| parent | 2c6c501b36db9e7991c3f7999451b70f12329ecc (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.glsl | 6 | ||||
| -rw-r--r-- | tests/reflection/multi-file-extra.hlsl | 4 | ||||
| -rw-r--r-- | tests/reflection/multi-file.hlsl | 4 | ||||
| -rw-r--r-- | tests/reflection/multi-file.hlsl.expected | 6 | ||||
| -rw-r--r-- | tests/reflection/sample-rate-input.glsl | 15 | ||||
| -rw-r--r-- | tests/reflection/sample-rate-input.glsl.expected | 55 | ||||
| -rw-r--r-- | tests/reflection/std430-layout.glsl | 1 |
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 |
