[2/2] arb_arrays_of_arrays: test precision qualifier with samplers

Message ID 1435981203-15898-2-git-send-email-t_arceri@yahoo.com.au
State New
Headers show

Commit Message

'Timothy Arceri' via Patchwork Forward July 4, 2015, 3:40 a.m.
V2: Add ifdef to test cube map array samplers

Test results:
Nvidia GeForce 840M - NVIDIA 346.47: pass
---
 .../compiler/precision-qualifier-sampler.frag      | 74 +++++++++++++++++++++
 .../compiler/precision-qualifier-sampler.vert      | 75 ++++++++++++++++++++++
 2 files changed, 149 insertions(+)
 create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.frag
 create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.vert

Patch hide | download patch | download mbox

diff --git a/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.frag b/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.frag
new file mode 100644
index 0000000..0f5449f
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.frag
@@ -0,0 +1,74 @@ 
+// [config]
+// expect_result: pass
+// glsl_version: 1.30
+// require_extensions: GL_ARB_arrays_of_arrays
+// check_link: true
+// [end config]
+//
+// From the GLSL ES 3.00 specification, section 4.5.4 ("Default
+// Precision Qualifiers"):
+//
+// "The precision statement
+//
+// precision precision-qualifier type;
+//
+// can be used to establish a default precision qualifier. The
+// type field can be int or float or any of the sampler types, and
+// the precision-qualifier can be lowp, mediump, or highp."
+//
+// Section 8 (Built-In Functions) of the GLSL ES 1.00 spec says:
+
+// "uniform lowp sampler2D sampler;
+//  highp vec2 coord;
+//  ...
+//  lowp vec4 col = texture2D (sampler, coord);
+//                                         // texture2D returns lowp"
+//
+// Section 4.5 (Precision and Precision Qualifiers) of the GLSL 1.30
+// spec also says:
+//
+// "Precision qualifiers are added for code portability with OpenGL
+//  ES, not for functionality. They have the same syntax as in OpenGL ES."
+//
+// From this, we infer that GLSL 1.30 (and later) should allow precision
+// qualifiers on sampler types just like float and integer types.
+//
+// This test verifies that a precision qualifier can be used on all of
+// GLSL 1.30's sampler types.
+
+#version 130
+#extension GL_ARB_arrays_of_arrays: enable
+
+#ifdef GL_ARB_texture_cube_map_array
+#extension GL_ARB_texture_cube_map_array: enable
+uniform mediump samplerCubeArray cms1[2][2];
+uniform mediump samplerCubeArrayShadow cms2[2][2];
+#endif
+
+uniform mediump sampler1D s1[2][2];
+uniform mediump sampler2D s2[2][2];
+uniform mediump sampler3D s3[2][2];
+uniform mediump samplerCube s4[2][2];
+uniform mediump samplerCubeShadow s5[2][2];
+uniform mediump sampler1DShadow s6[2][2];
+uniform mediump sampler2DShadow s7[2][2];
+uniform mediump sampler1DArray s8[2][2];
+uniform mediump sampler2DArray s9[2][2];
+uniform mediump sampler1DArrayShadow s10[2][2];
+uniform mediump sampler2DArrayShadow s11[2][2];
+uniform mediump isampler1D s12[2][2];
+uniform mediump isampler2D s13[2][2];
+uniform mediump isampler3D s14[2][2];
+uniform mediump isamplerCube s15[2][2];
+uniform mediump isampler1DArray s16[2][2];
+uniform mediump isampler2DArray s17[2][2];
+uniform mediump usampler1D s18[2][2];
+uniform mediump usampler2D s19[2][2];
+uniform mediump usampler3D s20[2][2];
+uniform mediump usamplerCube s21[2][2];
+uniform mediump usampler1DArray s22[2][2];
+uniform mediump usampler2DArray s23[2][2];
+
+void main()
+{
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.vert b/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.vert
new file mode 100644
index 0000000..1cfb01c
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/precision-qualifier-sampler.vert
@@ -0,0 +1,75 @@ 
+// [config]
+// expect_result: pass
+// glsl_version: 1.30
+// require_extensions: GL_ARB_arrays_of_arrays
+// check_link: true
+// [end config]
+//
+// From the GLSL ES 3.00 specification, section 4.5.4 ("Default
+// Precision Qualifiers"):
+//
+// "The precision statement
+//
+// precision precision-qualifier type;
+//
+// can be used to establish a default precision qualifier. The
+// type field can be int or float or any of the sampler types, and
+// the precision-qualifier can be lowp, mediump, or highp."
+//
+// Section 8 (Built-In Functions) of the GLSL ES 1.00 spec says:
+
+// "uniform lowp sampler2D sampler;
+//  highp vec2 coord;
+//  ...
+//  lowp vec4 col = texture2D (sampler, coord);
+//                                         // texture2D returns lowp"
+//
+// Section 4.5 (Precision and Precision Qualifiers) of the GLSL 1.30
+// spec also says:
+//
+// "Precision qualifiers are added for code portability with OpenGL
+//  ES, not for functionality. They have the same syntax as in OpenGL ES."
+//
+// From this, we infer that GLSL 1.30 (and later) should allow precision
+// qualifiers on sampler types just like float and integer types.
+//
+// This test verifies that a precision qualifier can be used on all of
+// GLSL 1.30's sampler types.
+
+#version 130
+#extension GL_ARB_arrays_of_arrays: enable
+
+#ifdef GL_ARB_texture_cube_map_array
+#extension GL_ARB_texture_cube_map_array: enable
+uniform mediump samplerCubeArray cms1[2][2];
+uniform mediump samplerCubeArrayShadow cms2[2][2];
+#endif
+
+uniform mediump sampler1D s1[2][2];
+uniform mediump sampler2D s2[2][2];
+uniform mediump sampler3D s3[2][2];
+uniform mediump samplerCube s4[2][2];
+uniform mediump samplerCubeShadow s5[2][2];
+uniform mediump sampler1DShadow s6[2][2];
+uniform mediump sampler2DShadow s7[2][2];
+uniform mediump sampler1DArray s8[2][2];
+uniform mediump sampler2DArray s9[2][2];
+uniform mediump sampler1DArrayShadow s10[2][2];
+uniform mediump sampler2DArrayShadow s11[2][2];
+uniform mediump isampler1D s12[2][2];
+uniform mediump isampler2D s13[2][2];
+uniform mediump isampler3D s14[2][2];
+uniform mediump isamplerCube s15[2][2];
+uniform mediump isampler1DArray s16[2][2];
+uniform mediump isampler2DArray s17[2][2];
+uniform mediump usampler1D s18[2][2];
+uniform mediump usampler2D s19[2][2];
+uniform mediump usampler3D s20[2][2];
+uniform mediump usamplerCube s21[2][2];
+uniform mediump usampler1DArray s22[2][2];
+uniform mediump usampler2DArray s23[2][2];
+
+void main()
+{
+	gl_Position = vec4(0.0);
+}