From: Ian Romanick <ian.d.roman...@intel.com>

Verify all versions of imageAtomicAdd and imageAtomicExchnage exist.
"Positive" compile testing for all the other functions will be handled
by the execution tests.  I'm much too lazy to write execution tests for
all the variants of imageAtomicAdd and imageAtomicExchange.

Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
---
 .../compiler/imageAtomicAdd-float-image1D.frag         | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image1DArray.frag    | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image2D.frag         | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image2DArray.frag    | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image2DMS.frag       | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image2DMSArray.frag  | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image2DRect.frag     | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-image3D.frag         | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-imageBuffer.frag     | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-imageCube.frag       | 18 ++++++++++++++++++
 .../compiler/imageAtomicAdd-float-imageCubeArray.frag  | 18 ++++++++++++++++++
 .../compiler/imageAtomicExchange-float-image1D.frag    | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-image1DArray.frag        | 18 ++++++++++++++++++
 .../compiler/imageAtomicExchange-float-image2D.frag    | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-image2DArray.frag        | 18 ++++++++++++++++++
 .../compiler/imageAtomicExchange-float-image2DMS.frag  | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-image2DMSArray.frag      | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-image2DRect.frag         | 18 ++++++++++++++++++
 .../compiler/imageAtomicExchange-float-image3D.frag    | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-imageBuffer.frag         | 18 ++++++++++++++++++
 .../compiler/imageAtomicExchange-float-imageCube.frag  | 18 ++++++++++++++++++
 .../imageAtomicExchange-float-imageCubeArray.frag      | 18 ++++++++++++++++++
 22 files changed, 396 insertions(+)
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1DArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMS.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMSArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DRect.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image3D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageBuffer.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCube.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCubeArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1DArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMS.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMSArray.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DRect.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image3D.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageBuffer.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCube.frag
 create mode 100644 
tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCubeArray.frag

diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1D.frag 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1D.frag
new file mode 100644
index 000000000..82db0d993
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image1D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, int(gl_FragCoord.x), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1DArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1DArray.frag
new file mode 100644
index 000000000..673ba02c6
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image1DArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image1DArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2D.frag 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2D.frag
new file mode 100644
index 000000000..0a0d2f93a
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DArray.frag
new file mode 100644
index 000000000..2de8a33ec
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec3(gl_FragCoord.xyy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMS.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMS.frag
new file mode 100644
index 000000000..06d2c5a1f
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMS.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DMS img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec2(gl_FragCoord.xy), 
int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMSArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMSArray.frag
new file mode 100644
index 000000000..773cee74b
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DMSArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DMSArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec3(gl_FragCoord.xyx), 
int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DRect.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DRect.frag
new file mode 100644
index 000000000..383890309
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image2DRect.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DRect img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image3D.frag 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image3D.frag
new file mode 100644
index 000000000..a21c69699
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-image3D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image3D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec3(gl_FragCoord.xyx), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageBuffer.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageBuffer.frag
new file mode 100644
index 000000000..5b7e97760
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageBuffer.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageBuffer img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCube.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCube.frag
new file mode 100644
index 000000000..49e27349b
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCube.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageCube img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec3(gl_FragCoord.xyx), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCubeArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCubeArray.frag
new file mode 100644
index 000000000..7d627f24e
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicAdd-float-imageCubeArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageCubeArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicAdd(img, ivec3(gl_FragCoord.xyx), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1D.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1D.frag
new file mode 100644
index 000000000..741af46b6
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image1D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, int(gl_FragCoord.x), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1DArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1DArray.frag
new file mode 100644
index 000000000..b28f3bead
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image1DArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image1DArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2D.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2D.frag
new file mode 100644
index 000000000..f378c21eb
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DArray.frag
new file mode 100644
index 000000000..1aab4de37
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec3(gl_FragCoord.xyy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMS.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMS.frag
new file mode 100644
index 000000000..678a85bb9
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMS.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DMS img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec2(gl_FragCoord.xy), 
int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMSArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMSArray.frag
new file mode 100644
index 000000000..d7377731d
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DMSArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DMSArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec3(gl_FragCoord.xyx), 
int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DRect.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DRect.frag
new file mode 100644
index 000000000..eb6ffd056
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image2DRect.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image2DRect img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec2(gl_FragCoord.xy), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image3D.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image3D.frag
new file mode 100644
index 000000000..65a69b022
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-image3D.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform image3D img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec3(gl_FragCoord.xyx), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageBuffer.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageBuffer.frag
new file mode 100644
index 000000000..584477f2a
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageBuffer.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageBuffer img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, int(gl_FragCoord.y), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCube.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCube.frag
new file mode 100644
index 000000000..043db638e
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCube.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageCube img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec3(gl_FragCoord.xyx), v));
+}
diff --git 
a/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCubeArray.frag
 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCubeArray.frag
new file mode 100644
index 000000000..d873fbbef
--- /dev/null
+++ 
b/tests/spec/nv_shader_atomic_float/compiler/imageAtomicExchange-float-imageCubeArray.frag
@@ -0,0 +1,18 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_NV_shader_atomic_float GL_ARB_shader_image_load_store
+// [end config]
+
+#version 150
+#extension GL_ARB_shader_image_load_store: require
+#extension GL_NV_shader_atomic_float: require
+
+layout(r32f) uniform imageCubeArray img;
+uniform float v;
+out vec4 color;
+
+void main()
+{
+        color = vec4(imageAtomicExchange(img, ivec3(gl_FragCoord.xyx), v));
+}
-- 
2.14.4

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to