Move unspecified-precision tests from ES2/ES3 to ES3.1

Got significant pushback from vendors about enforcing these tests on
ES2/ES3 -- ends up being a vendor choice between breaking shipping
content or failing CTS.

Moved all of these tests to ES3.1 only as a compromise.

Change-Id: I5a827064472f73908b01fa85e0097bda21038136
Components: AOSP
(cherry picked from commit 047891af31d1c8827a84e49e81b5b526ee5ee485)
diff --git a/android/cts/master/gles2-master.txt b/android/cts/master/gles2-master.txt
index 876ac76..27e8062 100644
--- a/android/cts/master/gles2-master.txt
+++ b/android/cts/master/gles2-master.txt
@@ -1115,11 +1115,6 @@
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.uniform_in_fragment_main
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.varying_in_vertex_main
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.varying_in_fragment_main
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_partially_specified_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec2_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec3_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec4_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_vertex
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_xx_vertex
diff --git a/android/cts/master/gles31-master.txt b/android/cts/master/gles31-master.txt
index 2f1dc0d..060f164 100644
--- a/android/cts/master/gles31-master.txt
+++ b/android/cts/master/gles31-master.txt
@@ -4372,6 +4372,37 @@
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.uniform_block_fragment
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_vertex
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_partially_specified_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec2_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec3_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec4_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.output_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_different_precision
diff --git a/android/cts/master/src/gles3-test-issues.txt b/android/cts/master/src/gles3-test-issues.txt
index 6ccbad7..9b1745e 100644
--- a/android/cts/master/src/gles3-test-issues.txt
+++ b/android/cts/master/src/gles3-test-issues.txt
@@ -172,6 +172,3 @@
 dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.highp_vertex.vec3
 dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.highp_fragment.vec3
 
-# Temporarily excluded: b/73070970
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.*
-
diff --git a/data/gles2/shaders/declarations.test b/data/gles2/shaders/declarations.test
index 80c513f..4dfb0a4 100644
--- a/data/gles2/shaders/declarations.test
+++ b/data/gles2/shaders/declarations.test
@@ -138,63 +138,3 @@
 	end
 
 end # invalid_declarations
-
-group unspecified_precision "Invalid declarations with unspecified precision"
-
-	case float_partially_specified_fragment
-		expect compile_fail
-		vertex ""
-			${VERTEX_DECLARATIONS}
-			void main() {}
-		""
-		fragment ""
-			// no global precision qualifier (e.g. precision mediump float)
-			void main() {
-				mediump float x = 1.0;
-				vec3 y = vec3(x);
-				mediump vec4 z = vec4(y, x);
-			}
-		""
-	end
-
-	case float_fragment
-		expect compile_fail
-		vertex ""
-			void main() {}
-		""
-		fragment ""
-			void main() { float v; }
-		""
-	end
-
-	case vec2_fragment
-		expect compile_fail
-		vertex ""
-			void main() {}
-		""
-		fragment ""
-			void main() { vec2 v; }
-		""
-	end
-
-	case vec3_fragment
-		expect compile_fail
-		vertex ""
-			void main() {}
-		""
-		fragment ""
-			void main() { vec3 v; }
-		""
-	end
-
-	case vec4_fragment
-		expect compile_fail
-		vertex ""
-			void main() {}
-		""
-		fragment ""
-			void main() { vec4 v; }
-		""
-	end
-
-end # unspecified_precision
diff --git a/data/gles3/shaders/declarations.test b/data/gles3/shaders/declarations.test
index 22945c8..86f98d9 100644
--- a/data/gles3/shaders/declarations.test
+++ b/data/gles3/shaders/declarations.test
@@ -589,208 +589,3 @@
 	end
 
 end # invalid_declarations
-
-group unspecified_precision "Invalid declarations with unspecified precision"
-
-	case float_partially_specified_fragment
-		version 300 es
-		expect compile_fail
-		vertex ""
-			#version 300 es
-			${VERTEX_DECLARATIONS}
-			void main() {}
-		""
-		fragment ""
-			#version 300 es
-			// no global precision qualifier (e.g. precision mediump float)
-			void main() {
-				mediump float x = 1.0;
-				vec3 y = vec3(x);
-				mediump vec4 z = vec4(y, x);
-			}
-		""
-	end
-
-	case float_fragment
-		version 300 es
-		expect compile_fail
-		vertex ""
-			#version 300 es
-			void main() {}
-		""
-		fragment ""
-			#version 300 es
-			void main() { float v; }
-		""
-	end
-
-	case vec2_fragment
-		version 300 es
-		expect compile_fail
-		vertex ""
-			#version 300 es
-			void main() {}
-		""
-		fragment ""
-			#version 300 es
-			void main() { vec2 v; }
-		""
-	end
-
-	case vec3_fragment
-		version 300 es
-		expect compile_fail
-		vertex ""
-			#version 300 es
-			void main() {}
-		""
-		fragment ""
-			#version 300 es
-			void main() { vec3 v; }
-		""
-	end
-
-	case vec4_fragment
-		version 300 es
-		expect compile_fail
-		vertex ""
-			#version 300 es
-			void main() {}
-		""
-		fragment ""
-			#version 300 es
-			void main() { vec4 v; }
-		""
-	end
-
-	case sampler3D
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform sampler3D samp;
-			void main() {}
-		""
-	end
-
-	case samplerCubeShadow
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform samplerCubeShadow samp;
-			void main() {}
-		""
-	end
-
-	case sampler2DShadow
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform sampler2DShadow samp;
-			void main() {}
-		""
-	end
-
-	case sampler2DArray
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform sampler2DArray samp;
-			void main() {}
-		""
-	end
-
-	case sampler2DArrayShadow
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform sampler2DArrayShadow samp;
-			void main() {}
-		""
-	end
-
-	case isampler2D
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform isampler2D samp;
-			void main() {}
-		""
-	end
-
-	case isampler3D
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform isampler3D samp;
-			void main() {}
-		""
-	end
-
-	case isamplerCube
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform isamplerCube samp;
-			void main() {}
-		""
-	end
-
-	case isampler2DArray
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform isampler2DArray samp;
-			void main() {}
-		""
-	end
-
-	case usampler2D
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform usampler2D samp;
-			void main() {}
-		""
-	end
-
-	case usampler3D
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform usampler3D samp;
-			void main() {}
-		""
-	end
-
-	case usamplerCube
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform usamplerCube samp;
-			void main() {}
-		""
-	end
-
-	case usampler2DArray
-		version 300 es
-		expect compile_fail
-		both ""
-			#version 300 es
-			uniform usampler2DArray samp;
-			void main() {}
-		""
-	end
-
-end # unspecified_precision
diff --git a/data/gles31/shaders/es31/declarations.test b/data/gles31/shaders/es31/declarations.test
new file mode 100644
index 0000000..e3eabfd
--- /dev/null
+++ b/data/gles31/shaders/es31/declarations.test
@@ -0,0 +1,204 @@
+group unspecified_precision "Invalid declarations with unspecified precision"
+
+	case float_partially_specified_fragment
+		version 310 es
+		expect compile_fail
+		vertex ""
+			#version 310 es
+			${VERTEX_DECLARATIONS}
+			void main() {}
+		""
+		fragment ""
+			#version 310 es
+			// no global precision qualifier (e.g. precision mediump float)
+			void main() {
+				mediump float x = 1.0;
+				vec3 y = vec3(x);
+				mediump vec4 z = vec4(y, x);
+			}
+		""
+	end
+
+	case float_fragment
+		version 310 es
+		expect compile_fail
+		vertex ""
+			#version 310 es
+			void main() {}
+		""
+		fragment ""
+			#version 310 es
+			void main() { float v; }
+		""
+	end
+
+	case vec2_fragment
+		version 310 es
+		expect compile_fail
+		vertex ""
+			#version 310 es
+			void main() {}
+		""
+		fragment ""
+			#version 310 es
+			void main() { vec2 v; }
+		""
+	end
+
+	case vec3_fragment
+		version 310 es
+		expect compile_fail
+		vertex ""
+			#version 310 es
+			void main() {}
+		""
+		fragment ""
+			#version 310 es
+			void main() { vec3 v; }
+		""
+	end
+
+	case vec4_fragment
+		version 310 es
+		expect compile_fail
+		vertex ""
+			#version 310 es
+			void main() {}
+		""
+		fragment ""
+			#version 310 es
+			void main() { vec4 v; }
+		""
+	end
+
+	case sampler3D
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform sampler3D samp;
+			void main() {}
+		""
+	end
+
+	case samplerCubeShadow
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform samplerCubeShadow samp;
+			void main() {}
+		""
+	end
+
+	case sampler2DShadow
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform sampler2DShadow samp;
+			void main() {}
+		""
+	end
+
+	case sampler2DArray
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform sampler2DArray samp;
+			void main() {}
+		""
+	end
+
+	case sampler2DArrayShadow
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform sampler2DArrayShadow samp;
+			void main() {}
+		""
+	end
+
+	case isampler2D
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform isampler2D samp;
+			void main() {}
+		""
+	end
+
+	case isampler3D
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform isampler3D samp;
+			void main() {}
+		""
+	end
+
+	case isamplerCube
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform isamplerCube samp;
+			void main() {}
+		""
+	end
+
+	case isampler2DArray
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform isampler2DArray samp;
+			void main() {}
+		""
+	end
+
+	case usampler2D
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform usampler2D samp;
+			void main() {}
+		""
+	end
+
+	case usampler3D
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform usampler3D samp;
+			void main() {}
+		""
+	end
+
+	case usamplerCube
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform usamplerCube samp;
+			void main() {}
+		""
+	end
+
+	case usampler2DArray
+		version 310 es
+		expect compile_fail
+		both ""
+			#version 310 es
+			uniform usampler2DArray samp;
+			void main() {}
+		""
+	end
+
+end # unspecified_precision
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles31-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles31-master.txt
index 6f80537..13c5b67 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles31-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles31-master.txt
@@ -4398,6 +4398,37 @@
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.uniform_block_fragment
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_vertex
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_partially_specified_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec2_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec3_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec4_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.output_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_different_precision
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles2-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles2-master.txt
index 6fe77b7..6d6e76b 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles2-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles2-master.txt
@@ -1336,11 +1336,6 @@
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.uniform_in_fragment_main
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.varying_in_vertex_main
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.varying_in_fragment_main
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_partially_specified_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec2_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec3_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec4_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_vertex
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_xx_vertex
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt
index 8f65fec..2020f33 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt
@@ -2841,37 +2841,6 @@
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_out_fragment
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_const_vertex
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_const_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.float_partially_specified_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.float_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec2_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec3_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec4_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.samplerCubeShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.samplerCubeShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArray_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isamplerCube_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isamplerCube_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2DArray_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usamplerCube_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usamplerCube_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_vertex
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_fragment
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_xx_vertex
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles31-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles31-master.txt
index 6cb15ff..ed1d2aa 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles31-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles31-master.txt
@@ -4411,6 +4411,37 @@
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.uniform_block_fragment
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_vertex
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_partially_specified_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec2_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec3_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec4_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.output_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_different_precision
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles2-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles2-master.txt
index 787d278..da73d7a 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles2-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles2-master.txt
@@ -1365,11 +1365,6 @@
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.varying_in_fragment_main
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.invariant_attribute
 dEQP-GLES2.functional.shaders.declarations.invalid_declarations.invariant_uniform
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_partially_specified_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.float_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec2_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec3_fragment
-dEQP-GLES2.functional.shaders.declarations.unspecified_precision.vec4_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_vertex
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_fragment
 dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_xx_vertex
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt
index 0cfa9e6..a1990f6 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt
@@ -2843,37 +2843,6 @@
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_out_fragment
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_const_vertex
 dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_const_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.float_partially_specified_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.float_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec2_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec3_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.vec4_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.samplerCubeShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.samplerCubeShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArray_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.sampler2DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isamplerCube_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isamplerCube_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.isampler2DArray_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler3D_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler3D_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usamplerCube_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usamplerCube_fragment
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2DArray_vertex
-dEQP-GLES3.functional.shaders.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_vertex
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_x_fragment
 dEQP-GLES3.functional.shaders.swizzles.vector_swizzles.mediump_vec2_xx_vertex
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles31-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles31-master.txt
index e4c9a81..d0985a0 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles31-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles31-master.txt
@@ -4423,6 +4423,37 @@
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.uniform_block_fragment
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_vertex
 dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.invalid.storage_block_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_partially_specified_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.float_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec2_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec3_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.vec4_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.samplerCubeShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.sampler2DArrayShadow_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.isampler2DArray_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler3D_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usamplerCube_fragment
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_vertex
+dEQP-GLES31.functional.shaders.linkage.es31.declarations.unspecified_precision.usampler2DArray_fragment
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.output_type_mismatch
 dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_different_precision
diff --git a/modules/gles31/functional/es31fFunctionalTests.cpp b/modules/gles31/functional/es31fFunctionalTests.cpp
index e45291f..d2d6aa4 100644
--- a/modules/gles31/functional/es31fFunctionalTests.cpp
+++ b/modules/gles31/functional/es31fFunctionalTests.cpp
@@ -196,6 +196,7 @@
 	{
 		static const ShaderLibraryGroup::File	s_filesES31[]	=
 		{
+			{ "shaders/es31/declarations.test",						"declarations",				"Declarations"						},
 			{ "shaders/es31/linkage_geometry.test",					"geometry",					"Geometry shader"					},
 			{ "shaders/es31/linkage_tessellation.test",				"tessellation",				"Tessellation shader"				},
 			{ "shaders/es31/linkage_tessellation_geometry.test",	"tessellation_geometry",	"Tessellation and geometry shader"	},