Merge "Add tests for EGL_EXT_buffer_age"
diff --git a/Android.mk b/Android.mk
index ef3ee8a..638ecf2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -76,6 +76,7 @@
 	framework/delibs/debase/deInt32.c \
 	framework/delibs/debase/deInt32Test.c \
 	framework/delibs/debase/deMath.c \
+	framework/delibs/debase/deMathTest.c \
 	framework/delibs/debase/deMemory.c \
 	framework/delibs/debase/deRandom.c \
 	framework/delibs/debase/deString.c \
@@ -713,7 +714,9 @@
 	-DDEQP_TARGET_NAME=\"android\" \
 	-DDEQP_GLES3_RUNTIME_LOAD=1 \
 	-DDEQP_GLES2_RUNTIME_LOAD=1 \
-	-DQP_SUPPORT_PNG=1
+	-DQP_SUPPORT_PNG=1 \
+	-Wconversion \
+	-Wno-sign-conversion
 
 LOCAL_SHARED_LIBRARIES := \
 		libEGL \
diff --git a/android/cts/master/com.drawelements.deqp.gles3.xml b/android/cts/master/com.drawelements.deqp.gles3.xml
index e0ecc54..d2a015a 100644
--- a/android/cts/master/com.drawelements.deqp.gles3.xml
+++ b/android/cts/master/com.drawelements.deqp.gles3.xml
@@ -3181,12 +3181,6 @@
 						<Test name="line_1_fragment">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="line_2_vertex">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="line_2_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="file_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
@@ -3773,18 +3767,6 @@
 						<Test name="pragma_macro_exp_fragment">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="invalid_pragma_invalid_debug_vertex">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="invalid_pragma_invalid_debug_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="invalid_pragma_invalid_token_vertex">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="invalid_pragma_invalid_token_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 					</TestCase>
 					<TestCase name="extensions">
 						<Test name="basic_vertex">
@@ -5017,6 +4999,20 @@
 						</TestCase>
 					</TestSuite>
 					<TestSuite name="uniform">
+						<TestCase name="basic">
+							<Test name="precision_conflict_1">
+								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+							</Test>
+							<Test name="precision_conflict_2">
+								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+							</Test>
+							<Test name="precision_conflict_3">
+								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+							</Test>
+							<Test name="precision_conflict_4">
+								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+							</Test>
+						</TestCase>
 						<TestCase name="struct">
 							<Test name="basic">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -47479,24 +47475,12 @@
 						<Test name="sampler3d_fixed_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="sampler3d_fixed_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="sampler3d_float_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="sampler3d_float_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="isampler3d_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="usampler3d_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="usampler3d_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="sampler3d_bias_fixed_fragment">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
@@ -47714,27 +47698,15 @@
 						<Test name="sampler3d_fixed_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="sampler3d_fixed_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="sampler3d_float_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="sampler3d_float_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="isampler3d_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="isampler3d_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="usampler3d_vertex">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="usampler3d_fragment">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="sampler3d_bias_fixed_fragment">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
@@ -49674,106 +49646,6 @@
 								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 							</Test>
 						</TestCase>
-						<TestCase name="fbo_msaa2">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
-						<TestCase name="fbo_msaa4">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
 						<TestCase name="fbo_float">
 							<Test name="float_lowp">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -49939,56 +49811,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -50155,56 +49977,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -51296,106 +51068,6 @@
 								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 							</Test>
 						</TestCase>
-						<TestCase name="fbo_msaa2">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
-						<TestCase name="fbo_msaa4">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
 						<TestCase name="fbo_float">
 							<Test name="float_lowp">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -51561,56 +51233,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -51777,56 +51399,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -52918,90 +52490,6 @@
 								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 							</Test>
 						</TestCase>
-						<TestCase name="fbo_msaa2">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
-						<TestCase name="fbo_msaa4">
-							<Test name="float_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec2_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_mediump">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec3_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="vec4_highp">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
 						<TestCase name="fbo_float">
 							<Test name="float_lowp">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -53167,48 +52655,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -53375,48 +52821,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="fbo_msaa4">
-								<Test name="float_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_mediump">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4_highp">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-									<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 							<TestCase name="fbo_float">
 								<Test name="float_lowp">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -56021,62 +55425,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="mediump_vertex">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
-							<TestCase name="mediump_fragment">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
-							<TestCase name="highp_vertex">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
-							<TestCase name="highp_fragment">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 						</TestSuite>
 						<TestSuite name="atan">
 							<TestCase name="highp_vertex">
@@ -66215,9 +65563,6 @@
 							<Test name="54">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 							</Test>
-							<Test name="56">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
 							<Test name="57">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 							</Test>
@@ -68124,9 +67469,6 @@
 						<Test name="256x256_l8_mipmap">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="256x256_rgba4444">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="256x256_rgba4444_mipmap">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
@@ -68148,9 +67490,6 @@
 						<Test name="512x512_l8_mipmap">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="512x512_rgba4444">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 						<Test name="512x512_rgba4444_mipmap">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
@@ -120944,9 +120283,6 @@
 					<Test name="22">
 						<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 					</Test>
-					<Test name="23">
-						<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-					</Test>
 					<Test name="24">
 						<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 					</Test>
@@ -125602,33 +124938,6 @@
 							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="lines_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="line_strip_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="line_loop_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 					</TestCase>
 					<TestCase name="projected">
 						<Test name="triangles">
@@ -125673,33 +124982,6 @@
 							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
 						</Test>
-						<Test name="lines_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="line_strip_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="line_loop_wide">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgb565d0s0ms0" rotation="unspecified" surfacetype="window"/>
-						</Test>
 					</TestCase>
 				</TestSuite>
 				<TestCase name="flatshading">
@@ -125807,13 +125089,6 @@
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
 							</Test>
-							<Test name="lines_wide">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							</Test>
 						</TestCase>
 					</TestSuite>
 					<TestSuite name="rbo_singlesample">
@@ -125867,13 +125142,6 @@
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
 							</Test>
-							<Test name="lines_wide">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							</Test>
 						</TestCase>
 					</TestSuite>
 					<TestSuite name="rbo_multisample_4">
@@ -141145,9 +140413,6 @@
 				<Test name="flush">
 					<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 				</Test>
-				<Test name="flush_wait">
-					<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-				</Test>
 				<Test name="finish">
 					<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 				</Test>
diff --git a/android/cts/master/com.drawelements.deqp.gles31.xml b/android/cts/master/com.drawelements.deqp.gles31.xml
index 676ac21..cdee7ea 100644
--- a/android/cts/master/com.drawelements.deqp.gles31.xml
+++ b/android/cts/master/com.drawelements.deqp.gles31.xml
@@ -6920,34 +6920,6 @@
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 								</Test>
 							</TestCase>
-							<TestCase name="mediump_compute">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
-							<TestCase name="highp_compute">
-								<Test name="scalar">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec2">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec3">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
-							</TestCase>
 						</TestSuite>
 						<TestSuite name="atan">
 							<TestCase name="lowp_compute">
@@ -8419,9 +8391,6 @@
 								<Test name="vec3">
 									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
 								</Test>
-								<Test name="vec4">
-									<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								</Test>
 							</TestCase>
 						</TestSuite>
 						<TestSuite name="refract">
@@ -10192,98 +10161,6 @@
 						</TestCase>
 					</TestSuite>
 					<TestSuite name="interpolate_at_centroid">
-						<TestCase name="consistency">
-							<Test name="default_framebuffer">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="singlesample_texture">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_1">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_2">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_4">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_8">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_16">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="singlesample_rbo">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_1">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_2">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_4">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_8">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_16">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
-						<TestCase name="array_element">
-							<Test name="default_framebuffer">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-								<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="singlesample_texture">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_1">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_2">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_4">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_8">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_texture_16">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="singlesample_rbo">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_1">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_2">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_4">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_8">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-							<Test name="multisample_rbo_16">
-								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							</Test>
-						</TestCase>
 						<TestCase name="negative">
 							<Test name="vec4_identity_swizzle">
 								<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
@@ -13088,645 +12965,218 @@
 					<TestCase name="value">
 						<Test name="triangles">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_4_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_4_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_4_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_4_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_4_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_8_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_8_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_8_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_8_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_8_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_max_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_max_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_max_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_max_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_max_samples">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 					</TestCase>
 					<TestCase name="derivate">
 						<Test name="triangles_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_lines_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_4_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_4_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_4_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_4_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_4_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_4_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_4_samples_dfdx">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_4_samples_dfdy">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_4_samples_fwidth">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_4_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_4_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_4_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_4_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_4_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_4_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_8_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_8_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_8_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_8_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_8_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_8_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_8_samples_dfdx">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_8_samples_dfdy">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_8_samples_fwidth">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_8_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_8_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_8_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_8_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_8_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_8_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_max_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_max_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="triangles_max_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_max_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_max_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="lines_max_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_max_samples_dfdx">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_max_samples_dfdy">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
-						</Test>
-						<Test name="wide_lines_max_samples_fwidth">
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_max_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_max_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="points_max_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_max_samples_dfdx">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_max_samples_dfdy">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 						<Test name="wide_points_max_samples_fwidth">
 							<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="0" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="90" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="180" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms0" rotation="270" surfacetype="window"/>
-							<TestInstance glconfig="rgba8888d24s8ms4" rotation="unspecified" surfacetype="window"/>
 						</Test>
 					</TestCase>
 				</TestSuite>
@@ -103996,6 +103446,11 @@
 					</TestCase>
 				</TestSuite>
 			</TestSuite>
+			<TestCase name="default_vertex_array_object">
+				<Test name="vertex_attrib_divisor">
+					<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+				</Test>
+			</TestCase>
 		</TestSuite>
 	</TestSuite>
 </TestPackage>
diff --git a/android/cts/master/gles3-565-no-depth-no-stencil.txt b/android/cts/master/gles3-565-no-depth-no-stencil.txt
index 63126dc..a4bd533 100644
--- a/android/cts/master/gles3-565-no-depth-no-stencil.txt
+++ b/android/cts/master/gles3-565-no-depth-no-stencil.txt
@@ -3206,18 +3206,12 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangles
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_fan
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_points
 dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_lines
 dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_line_strip
diff --git a/android/cts/master/gles3-master.txt b/android/cts/master/gles3-master.txt
index dfce400..e6e9e47 100644
--- a/android/cts/master/gles3-master.txt
+++ b/android/cts/master/gles3-master.txt
@@ -951,8 +951,6 @@
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.gl_es_2_fragment
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_1_vertex
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_2_fragment
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.file_vertex
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.file_fragment
 dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.if_gl_es_vertex
@@ -1143,10 +1141,6 @@
 dEQP-GLES3.functional.shaders.preprocessor.pragmas.pragma_fragment
 dEQP-GLES3.functional.shaders.preprocessor.pragmas.pragma_macro_exp_vertex
 dEQP-GLES3.functional.shaders.preprocessor.pragmas.pragma_macro_exp_fragment
-dEQP-GLES3.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_debug_vertex
-dEQP-GLES3.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_debug_fragment
-dEQP-GLES3.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_token_vertex
-dEQP-GLES3.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_token_fragment
 dEQP-GLES3.functional.shaders.preprocessor.extensions.basic_vertex
 dEQP-GLES3.functional.shaders.preprocessor.extensions.basic_fragment
 dEQP-GLES3.functional.shaders.preprocessor.extensions.macro_exp_vertex
@@ -1549,6 +1543,10 @@
 dEQP-GLES3.functional.shaders.linkage.varying.interpolation.flat
 dEQP-GLES3.functional.shaders.linkage.varying.usage.readback_1
 dEQP-GLES3.functional.shaders.linkage.varying.usage.writeback_1
+dEQP-GLES3.functional.shaders.linkage.uniform.basic.precision_conflict_1
+dEQP-GLES3.functional.shaders.linkage.uniform.basic.precision_conflict_2
+dEQP-GLES3.functional.shaders.linkage.uniform.basic.precision_conflict_3
+dEQP-GLES3.functional.shaders.linkage.uniform.basic.precision_conflict_4
 dEQP-GLES3.functional.shaders.linkage.uniform.struct.basic
 dEQP-GLES3.functional.shaders.linkage.uniform.struct.vertex_only
 dEQP-GLES3.functional.shaders.linkage.uniform.struct.fragment_only
@@ -15513,12 +15511,8 @@
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.isampler2darray_bias_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.usampler2darray_bias_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_fixed_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset.isampler3d_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.usampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset.usampler3d_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_bias_fixed_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_bias_float_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureoffset.isampler3d_bias_fragment
@@ -15590,13 +15584,9 @@
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.isampler2d_vec4_bias_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.usampler2d_vec4_bias_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_fixed_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_float_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.isampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.isampler3d_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.usampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.usampler3d_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_bias_fixed_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_bias_float_fragment
 dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.isampler3d_bias_fragment
@@ -16094,18 +16084,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -16126,12 +16104,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -16152,12 +16124,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -16290,18 +16256,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -16322,12 +16276,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -16348,12 +16296,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -16486,16 +16428,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -16516,11 +16448,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -16541,11 +16468,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -17258,22 +17180,6 @@
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_fragment.vec2
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_fragment.vec3
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_fragment.vec4
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_vertex.scalar
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_vertex.vec2
 dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_vertex.vec3
@@ -20440,7 +20346,6 @@
 dEQP-GLES3.functional.shaders.random.all_features.fragment.51
 dEQP-GLES3.functional.shaders.random.all_features.fragment.52
 dEQP-GLES3.functional.shaders.random.all_features.fragment.54
-dEQP-GLES3.functional.shaders.random.all_features.fragment.56
 dEQP-GLES3.functional.shaders.random.all_features.fragment.57
 dEQP-GLES3.functional.shaders.random.all_features.fragment.58
 dEQP-GLES3.functional.shaders.random.all_features.fragment.59
@@ -21068,7 +20973,6 @@
 dEQP-GLES3.functional.texture.size.cube.128x128_rgba8888_mipmap
 dEQP-GLES3.functional.texture.size.cube.256x256_l8
 dEQP-GLES3.functional.texture.size.cube.256x256_l8_mipmap
-dEQP-GLES3.functional.texture.size.cube.256x256_rgba4444
 dEQP-GLES3.functional.texture.size.cube.256x256_rgba4444_mipmap
 dEQP-GLES3.functional.texture.size.cube.256x256_rgb888
 dEQP-GLES3.functional.texture.size.cube.256x256_rgb888_mipmap
@@ -21076,7 +20980,6 @@
 dEQP-GLES3.functional.texture.size.cube.256x256_rgba8888_mipmap
 dEQP-GLES3.functional.texture.size.cube.512x512_l8
 dEQP-GLES3.functional.texture.size.cube.512x512_l8_mipmap
-dEQP-GLES3.functional.texture.size.cube.512x512_rgba4444
 dEQP-GLES3.functional.texture.size.cube.512x512_rgba4444_mipmap
 dEQP-GLES3.functional.texture.size.cube.512x512_rgb888
 dEQP-GLES3.functional.texture.size.cube.512x512_rgb888_mipmap
@@ -36009,7 +35912,6 @@
 dEQP-GLES3.functional.uniform_api.random.20
 dEQP-GLES3.functional.uniform_api.random.21
 dEQP-GLES3.functional.uniform_api.random.22
-dEQP-GLES3.functional.uniform_api.random.23
 dEQP-GLES3.functional.uniform_api.random.24
 dEQP-GLES3.functional.uniform_api.random.25
 dEQP-GLES3.functional.uniform_api.random.26
@@ -37435,18 +37337,12 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangles
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_fan
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterization.flatshading.triangles
 dEQP-GLES3.functional.rasterization.flatshading.triangle_strip
 dEQP-GLES3.functional.rasterization.flatshading.triangle_fan
@@ -37467,7 +37363,6 @@
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.fill_rules.projected
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.triangles
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.triangles
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines_wide
@@ -37479,7 +37374,6 @@
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.fill_rules.projected
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.triangles
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.triangles
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines_wide
@@ -41831,7 +41725,6 @@
 dEQP-GLES3.functional.draw.random.210
 dEQP-GLES3.functional.flush_finish.wait
 dEQP-GLES3.functional.flush_finish.flush
-dEQP-GLES3.functional.flush_finish.flush_wait
 dEQP-GLES3.functional.flush_finish.finish
 dEQP-GLES3.functional.flush_finish.finish_wait
 dEQP-GLES3.functional.default_vertex_attrib.float.vertex_attrib_1f
diff --git a/android/cts/master/gles3-multisample.txt b/android/cts/master/gles3-multisample.txt
index deb109d..3916c49 100644
--- a/android/cts/master/gles3-multisample.txt
+++ b/android/cts/master/gles3-multisample.txt
@@ -165,18 +165,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -197,12 +185,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -223,12 +205,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -361,18 +337,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -393,12 +357,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -419,12 +377,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -557,16 +509,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -587,11 +529,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -612,11 +549,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -3882,18 +3814,12 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangles
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.triangle_fan
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.occlusion_query.scissor
 dEQP-GLES3.functional.occlusion_query.depth_write
 dEQP-GLES3.functional.occlusion_query.depth_clear
diff --git a/android/cts/master/gles3-rotate-landscape.txt b/android/cts/master/gles3-rotate-landscape.txt
index 1317c86..9f701a9 100644
--- a/android/cts/master/gles3-rotate-landscape.txt
+++ b/android/cts/master/gles3-rotate-landscape.txt
@@ -122,18 +122,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -154,12 +142,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -180,12 +162,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -318,18 +294,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -350,12 +314,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -376,12 +334,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -514,16 +466,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -544,11 +486,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -569,11 +506,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -858,15 +790,9 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterization.flatshading.lines
 dEQP-GLES3.functional.rasterization.flatshading.line_strip
 dEQP-GLES3.functional.rasterization.flatshading.line_loop
@@ -876,11 +802,9 @@
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines
diff --git a/android/cts/master/gles3-rotate-portrait.txt b/android/cts/master/gles3-rotate-portrait.txt
index 1317c86..9f701a9 100644
--- a/android/cts/master/gles3-rotate-portrait.txt
+++ b/android/cts/master/gles3-rotate-portrait.txt
@@ -122,18 +122,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -154,12 +142,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -180,12 +162,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -318,18 +294,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -350,12 +314,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -376,12 +334,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -514,16 +466,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -544,11 +486,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -569,11 +506,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -858,15 +790,9 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterization.flatshading.lines
 dEQP-GLES3.functional.rasterization.flatshading.line_strip
 dEQP-GLES3.functional.rasterization.flatshading.line_loop
@@ -876,11 +802,9 @@
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines
diff --git a/android/cts/master/gles3-rotate-reverse-landscape.txt b/android/cts/master/gles3-rotate-reverse-landscape.txt
index 1317c86..9f701a9 100644
--- a/android/cts/master/gles3-rotate-reverse-landscape.txt
+++ b/android/cts/master/gles3-rotate-reverse-landscape.txt
@@ -122,18 +122,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -154,12 +142,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -180,12 +162,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -318,18 +294,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -350,12 +314,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -376,12 +334,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -514,16 +466,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -544,11 +486,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -569,11 +506,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -858,15 +790,9 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterization.flatshading.lines
 dEQP-GLES3.functional.rasterization.flatshading.line_strip
 dEQP-GLES3.functional.rasterization.flatshading.line_loop
@@ -876,11 +802,9 @@
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines
diff --git a/android/cts/master/gles3-rotate-reverse-portrait.txt b/android/cts/master/gles3-rotate-reverse-portrait.txt
index 1317c86..9f701a9 100644
--- a/android/cts/master/gles3-rotate-reverse-portrait.txt
+++ b/android/cts/master/gles3-rotate-reverse-portrait.txt
@@ -122,18 +122,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float.float_highp
@@ -154,12 +142,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float.float_highp
@@ -180,12 +162,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float.float_highp
@@ -318,18 +294,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float.float_highp
@@ -350,12 +314,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float.float_highp
@@ -376,12 +334,6 @@
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float.float_highp
@@ -514,16 +466,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float.float_highp
@@ -544,11 +486,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float.float_highp
@@ -569,11 +506,6 @@
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec3_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default.vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_lowp
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_mediump
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float.float_highp
@@ -858,15 +790,9 @@
 dEQP-GLES3.functional.rasterization.interpolation.basic.lines
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
 dEQP-GLES3.functional.rasterization.interpolation.projected.lines
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip
 dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop
-dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
 dEQP-GLES3.functional.rasterization.flatshading.lines
 dEQP-GLES3.functional.rasterization.flatshading.line_strip
 dEQP-GLES3.functional.rasterization.flatshading.line_loop
@@ -876,11 +802,9 @@
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines_wide
 dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines
diff --git a/android/cts/master/gles31-master.txt b/android/cts/master/gles31-master.txt
index 805672d..f27000f 100644
--- a/android/cts/master/gles31-master.txt
+++ b/android/cts/master/gles31-master.txt
@@ -2238,14 +2238,6 @@
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec2
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.mediump_compute.scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.mediump_compute.vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.mediump_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.mediump_compute.vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.highp_compute.scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.highp_compute.vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.highp_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.highp_compute.vec4
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.scalar
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec2
 dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec3
@@ -2646,7 +2638,6 @@
 dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.scalar
 dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec2
 dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec4
 dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.scalar
 dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec2
 dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec3
@@ -3142,32 +3133,6 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative.interpolate_local
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative.interpolate_global
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative.interpolate_constant
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.multisample_rbo_16
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative.vec4_identity_swizzle
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative.vec4_crop_swizzle
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative.vec4_mixed_swizzle
@@ -4076,9 +4041,6 @@
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
@@ -4091,9 +4053,6 @@
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
@@ -4106,9 +4065,6 @@
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
 dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
@@ -32150,3 +32106,4 @@
 dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17
 dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.18
 dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.19
+dEQP-GLES31.functional.default_vertex_array_object.vertex_attrib_divisor
diff --git a/android/cts/master/gles31-multisample.txt b/android/cts/master/gles31-multisample.txt
index 943a0b9..44d4428 100644
--- a/android/cts/master/gles31-multisample.txt
+++ b/android/cts/master/gles31-multisample.txt
@@ -24,93 +24,11 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.points
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth
 dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_100x100_drawcount_1
 dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_1
 dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_500x500_drawcount_1
diff --git a/android/cts/master/gles31-rotate-landscape.txt b/android/cts/master/gles31-rotate-landscape.txt
index 4c0b027..c98268f 100644
--- a/android/cts/master/gles31-rotate-landscape.txt
+++ b/android/cts/master/gles31-rotate-landscape.txt
@@ -24,93 +24,11 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.points
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_equal
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_larger
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_smaller
diff --git a/android/cts/master/gles31-rotate-portrait.txt b/android/cts/master/gles31-rotate-portrait.txt
index 4c0b027..c98268f 100644
--- a/android/cts/master/gles31-rotate-portrait.txt
+++ b/android/cts/master/gles31-rotate-portrait.txt
@@ -24,93 +24,11 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.points
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_equal
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_larger
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_smaller
diff --git a/android/cts/master/gles31-rotate-reverse-landscape.txt b/android/cts/master/gles31-rotate-reverse-landscape.txt
index 4c0b027..c98268f 100644
--- a/android/cts/master/gles31-rotate-reverse-landscape.txt
+++ b/android/cts/master/gles31-rotate-reverse-landscape.txt
@@ -24,93 +24,11 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.points
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_equal
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_larger
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_smaller
diff --git a/android/cts/master/gles31-rotate-reverse-portrait.txt b/android/cts/master/gles31-rotate-reverse-portrait.txt
index 4c0b027..c98268f 100644
--- a/android/cts/master/gles31-rotate-reverse-portrait.txt
+++ b/android/cts/master/gles31-rotate-reverse-portrait.txt
@@ -24,93 +24,11 @@
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines
-dEQP-GLES31.functional.shaders.helper_invocation.value.points
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy
-dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_equal
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_larger
 dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_fragment.default_framebuffer_bbox_smaller
diff --git a/android/cts/master/src/gles2-failures.txt b/android/cts/master/src/gles2-failures.txt
index 74c0b72..0236295 100644
--- a/android/cts/master/src/gles2-failures.txt
+++ b/android/cts/master/src/gles2-failures.txt
@@ -1941,10 +1941,10 @@
 dEQP-GLES2.functional.shaders.preprocessor.operator_precedence.mul_vs_plus_vertex
 dEQP-GLES2.functional.shaders.preprocessor.operator_precedence.xor_vs_bitwise_and_fragment
 dEQP-GLES2.functional.shaders.preprocessor.operator_precedence.xor_vs_bitwise_and_vertex
-dEQP-GLES2.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_debug_fragment
-dEQP-GLES2.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_debug_vertex
-dEQP-GLES2.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_token_fragment
-dEQP-GLES2.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_token_vertex
+dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_unrecognized_debug_fragment
+dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_unrecognized_debug_vertex
+dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_unrecognized_token_fragment
+dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_unrecognized_token_vertex
 dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_fragment
 dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_vertex
 dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.line_2_fragment
@@ -2585,9 +2585,7 @@
 dEQP-GLES2.functional.texture.size.cube.15x15_rgba4444
 dEQP-GLES2.functional.texture.size.cube.15x15_rgba8888
 dEQP-GLES2.functional.texture.size.cube.16x16_l8_mipmap
-dEQP-GLES2.functional.texture.size.cube.256x256_rgba4444
 dEQP-GLES2.functional.texture.size.cube.256x256_rgba4444_mipmap
-dEQP-GLES2.functional.texture.size.cube.512x512_rgba4444
 dEQP-GLES2.functional.texture.size.cube.512x512_rgba4444_mipmap
 dEQP-GLES2.functional.texture.specification.teximage2d_align.cube_l8_63_1
 dEQP-GLES2.functional.texture.specification.teximage2d_align.cube_l8_63_2
diff --git a/android/cts/master/src/gles2-test-issues.txt b/android/cts/master/src/gles2-test-issues.txt
new file mode 100644
index 0000000..eb826ed
--- /dev/null
+++ b/android/cts/master/src/gles2-test-issues.txt
@@ -0,0 +1,3 @@
+# Bug 21526557
+dEQP-GLES2.functional.texture.size.cube.256x256_rgba4444
+dEQP-GLES2.functional.texture.size.cube.512x512_rgba4444
diff --git a/android/cts/master/src/gles3-driver-issues.txt b/android/cts/master/src/gles3-driver-issues.txt
index 7038ff9..888d94c 100644
--- a/android/cts/master/src/gles3-driver-issues.txt
+++ b/android/cts/master/src/gles3-driver-issues.txt
@@ -1,2 +1,6 @@
 # Bug 21495208
 dEQP-GLES3.functional.attribute_location.bind_aliasing.*
+
+# Bug 21737600
+dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_2_vertex
+dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.line_2_fragment
diff --git a/android/cts/master/src/gles3-hw-issues.txt b/android/cts/master/src/gles3-hw-issues.txt
index a3c6a9a..6e09723 100644
--- a/android/cts/master/src/gles3-hw-issues.txt
+++ b/android/cts/master/src/gles3-hw-issues.txt
@@ -847,3 +847,24 @@
 
 # Bug 20681533
 dEQP-GLES3.functional.texture.mipmap.cube.projected.nearest_nearest
+
+# Bug 21804494
+dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
+dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
+dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
+dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
+dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
+dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
+dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
+dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
+
+# Bug 21844307
+dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa*
+dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa*
diff --git a/android/cts/master/src/gles3-spec-issues.txt b/android/cts/master/src/gles3-spec-issues.txt
index c972291..d28c58b 100644
--- a/android/cts/master/src/gles3-spec-issues.txt
+++ b/android/cts/master/src/gles3-spec-issues.txt
@@ -509,3 +509,6 @@
 
 # Khronos bugs 11207, 12408, internal bug 20699693
 dEQP-GLES3.functional.shaders.arrays.invalid.empty_declaration_without_var_name_*
+
+# Khronos bug 13916, internal bug 20558284
+dEQP-GLES3.functional.flush_finish.flush_wait
diff --git a/android/cts/master/src/gles3-test-issues.txt b/android/cts/master/src/gles3-test-issues.txt
index 220d3d4..83b4002 100644
--- a/android/cts/master/src/gles3-test-issues.txt
+++ b/android/cts/master/src/gles3-test-issues.txt
@@ -41,6 +41,9 @@
 # Bug 18323060
 dEQP-GLES3.functional.shaders.random.all_features.fragment.16
 
+# Bug 21851700
+dEQP-GLES3.functional.shaders.random.all_features.fragment.56
+
 # Bug 18093986
 dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.usampler3d_vertex
 
@@ -64,3 +67,28 @@
 
 # Bug 21620051
 dEQP-GLES3.functional.shaders.texture_functions.texture.sampler2darrayshadow_vertex
+
+# Bug 21725534
+dEQP-GLES3.functional.shaders.preprocessor.pragmas.pragma_unrecognized_debug_*
+dEQP-GLES3.functional.shaders.preprocessor.pragmas.pragma_unrecognized_token_*
+
+# Bug 21791303
+dEQP-GLES3.functional.uniform_api.random.23
+
+# Bug 22006723
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.mediump_*
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.highp_*
+
+# Bug 22173211
+dEQP-GLES3.functional.texture.size.cube.256x256_rgba4444
+dEQP-GLES3.functional.texture.size.cube.512x512_rgba4444
+
+# Bug 22209622
+dEQP-GLES3.functional.shaders.texture_functions.textureoffset.isampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_fixed_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureoffset.sampler3d_float_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureoffset.usampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.isampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_fixed_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler3d_float_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.usampler3d_fragment
diff --git a/android/cts/master/src/gles31-hw-issues.txt b/android/cts/master/src/gles31-hw-issues.txt
index 595009b..4a911e5 100644
--- a/android/cts/master/src/gles31-hw-issues.txt
+++ b/android/cts/master/src/gles31-hw-issues.txt
@@ -57,3 +57,6 @@
 dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.size_pot.compare_less.clamp_to_edge_repeat
 dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge
 dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.size_pot.compare_less.repeat_mirrored_repeat
+
+# Bug 21816937
+dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec4
diff --git a/android/cts/master/src/gles31-multisample.txt b/android/cts/master/src/gles31-multisample.txt
index a50b6ac..ebfde24 100644
--- a/android/cts/master/src/gles31-multisample.txt
+++ b/android/cts/master/src/gles31-multisample.txt
@@ -3,7 +3,6 @@
 dEQP-GLES31.info.*
 dEQP-GLES31.functional.shaders.sample_variables.*.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.*.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.*
 dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth
 dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_stencil
 dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_depth
diff --git a/android/cts/master/src/gles31-new-tests.txt b/android/cts/master/src/gles31-new-tests.txt
new file mode 100644
index 0000000..85003ca
--- /dev/null
+++ b/android/cts/master/src/gles31-new-tests.txt
@@ -0,0 +1,5 @@
+# Feature Request 21737242
+dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_1
+dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_2
+dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_3
+dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_eval_explicit_input_array_size
diff --git a/android/cts/master/src/gles31-rotation.txt b/android/cts/master/src/gles31-rotation.txt
index 044bc2d..4874f72 100644
--- a/android/cts/master/src/gles31-rotation.txt
+++ b/android/cts/master/src/gles31-rotation.txt
@@ -3,7 +3,6 @@
 dEQP-GLES31.info.*
 dEQP-GLES31.functional.shaders.sample_variables.*.default_framebuffer
 dEQP-GLES31.functional.shaders.multisample_interpolation.*.default_framebuffer
-dEQP-GLES31.functional.shaders.helper_invocation.*
 dEQP-GLES31.functional.primitive_bounding_box.*.default_framebuffer_*
 dEQP-GLES31.functional.primitive_bounding_box.blit_fbo.*default*
 dEQP-GLES31.functional.primitive_bounding_box.clear.*
diff --git a/android/cts/master/src/gles31-spec-issues.txt b/android/cts/master/src/gles31-spec-issues.txt
index f68ae46..26a63ea 100644
--- a/android/cts/master/src/gles31-spec-issues.txt
+++ b/android/cts/master/src/gles31-spec-issues.txt
@@ -1,5 +1,2 @@
-# Bug 13564
-dEQP-GLES31.functional.default_vertex_array_object.vertex_attrib_divisor
-
 # Khronos bugs 11207, 12408, internal bug 20699693
 dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid.empty_declaration_without_var_name_*
diff --git a/android/cts/master/src/gles31-test-issues.txt b/android/cts/master/src/gles31-test-issues.txt
index 920c9a5..7817e57 100644
--- a/android/cts/master/src/gles31-test-issues.txt
+++ b/android/cts/master/src/gles31-test-issues.txt
@@ -23,3 +23,14 @@
 dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.*_rg8_snorm.*
 dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_*
 dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.*_r8_snorm.*
+
+# Bug 20453509
+dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.consistency.*
+dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.array_element.*
+
+# Bug 22006723
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.mediump_*
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.highp_*
+
+# Bug 22180525
+dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_*_samples_*
diff --git a/android/scripts/common.py b/android/scripts/common.py
index ec9afb9..f9d36b5 100644
--- a/android/scripts/common.py
+++ b/android/scripts/common.py
@@ -241,8 +241,8 @@
 
 def selectNDKPath ():
 	candidates =  [
-		os.path.expanduser("~/android-ndk-r10c"),
-		"C:/android/android-ndk-r10c",
+		os.path.expanduser("~/android-ndk-r10e"),
+		"C:/android/android-ndk-r10e",
 		os.environ.get("ANDROID_NDK_PATH", None), # If not defined, return None
 	]
 
@@ -262,7 +262,7 @@
 # NDK paths
 ANDROID_NDK_PATH				= selectNDKPath()
 ANDROID_NDK_HOST_OS				= getNDKHostOsName(ANDROID_NDK_PATH)
-ANDROID_NDK_TOOLCHAIN_VERSION	= "r10c" # Toolchain file is selected based on this
+ANDROID_NDK_TOOLCHAIN_VERSION	= "r10e" # Toolchain file is selected based on this
 
 # Native code build settings
 CMAKE_GENERATOR			= selectByOS({
diff --git a/data/gles2/shaders/preprocessor.test b/data/gles2/shaders/preprocessor.test
index 6aeb5e1..d2dc32b 100644
--- a/data/gles2/shaders/preprocessor.test
+++ b/data/gles2/shaders/preprocessor.test
@@ -2719,11 +2719,13 @@
 		""
 	end
 
-	case invalid_pragma_invalid_debug
-		expect compile_fail
+	case pragma_unrecognized_debug
+		expect build_successful
 		both ""
 			#pragma debug(1.23)
 
+			// unrecognized preprocessor token
+
 			precision mediump float;
 			void main()
 			{
@@ -2732,11 +2734,13 @@
 		""
 	end
 
-	case invalid_pragma_invalid_token
-		expect compile_fail
+	case pragma_unrecognized_token
+		expect build_successful
 		both ""
 			#pragma ¤¤½
 
+			// trailing bytes form a valid but unrecognized preprocessor token
+
 			precision mediump float;
 			void main()
 			{
diff --git a/data/gles3/shaders/linkage.test b/data/gles3/shaders/linkage.test
index 7e4b3d8..56acda6 100644
--- a/data/gles3/shaders/linkage.test
+++ b/data/gles3/shaders/linkage.test
@@ -2342,6 +2342,125 @@
 end
 
 group uniform "Uniform linkage"
+	group basic "Default block uniforms of scalar and vector types"
+		case precision_conflict_1
+			version 300 es
+			desc "Vertex side uniform has highp, fragment side uniform mediump."
+			expect link_fail
+			values {output float out0 = 3.0;}
+			vertex ""
+				#version 300 es
+				${VERTEX_DECLARATIONS}
+				uniform highp float u_val;
+				out mediump float res;
+				void main()
+				{
+					res = u_val;
+					${VERTEX_OUTPUT}
+				}
+			""
+			fragment ""
+				#version 300 es
+				precision mediump float;
+				uniform float u_val;
+				${FRAGMENT_DECLARATIONS}
+				in mediump float res;
+				void main()
+				{
+					out0 = u_val + res;
+					${FRAGMENT_OUTPUT}
+				}
+			""
+		end
+		case precision_conflict_2
+			version 300 es
+			desc "Vertex side uniform has highp, fragment side uniform mediump."
+			expect link_fail
+			values {output float out0 = 3.0;}
+			vertex ""
+				#version 300 es
+				${VERTEX_DECLARATIONS}
+				uniform highp float u_val;
+				out mediump float res;
+				void main()
+				{
+					res = u_val;
+					${VERTEX_OUTPUT}
+				}
+			""
+			fragment ""
+				#version 300 es
+				precision highp float;
+				uniform mediump float u_val;
+				${FRAGMENT_DECLARATIONS}
+				in mediump float res;
+				void main()
+				{
+					out0 = u_val + res;
+					${FRAGMENT_OUTPUT}
+				}
+			""
+		end
+		case precision_conflict_3
+			version 300 es
+			desc "Vertex side uniform has lowp, fragment side uniform highp."
+			expect link_fail
+			values {output float out0 = 3.0;}
+			vertex ""
+				#version 300 es
+				${VERTEX_DECLARATIONS}
+				uniform lowp int u_val;
+				out mediump float res;
+				void main()
+				{
+					res = float(u_val);
+					${VERTEX_OUTPUT}
+				}
+			""
+			fragment ""
+				#version 300 es
+				precision highp float;
+				uniform highp int u_val;
+				${FRAGMENT_DECLARATIONS}
+				in mediump float res;
+				void main()
+				{
+					out0 = float(u_val) + res;
+					${FRAGMENT_OUTPUT}
+				}
+			""
+		end
+		case precision_conflict_4
+			version 300 es
+			desc "Vertex side uniform has lowp, fragment side uniform mediump."
+			expect link_fail
+			values {output float out0 = 3.0;}
+			vertex ""
+				#version 300 es
+				${VERTEX_DECLARATIONS}
+				uniform lowp vec3 u_val;
+				out mediump float res;
+				void main()
+				{
+					res = u_val.y;
+					${VERTEX_OUTPUT}
+				}
+			""
+			fragment ""
+				#version 300 es
+				precision highp float;
+				uniform mediump vec3 u_val;
+				${FRAGMENT_DECLARATIONS}
+				in mediump float res;
+				void main()
+				{
+					out0 = u_val.z + res;
+					${FRAGMENT_OUTPUT}
+				}
+			""
+		end
+	end
+
 	group struct "Uniform structs"
 		# Struct linkage handling
 		case basic
diff --git a/data/gles3/shaders/preprocessor.test b/data/gles3/shaders/preprocessor.test
index ed5e1f9..12e0d8c 100644
--- a/data/gles3/shaders/preprocessor.test
+++ b/data/gles3/shaders/preprocessor.test
@@ -3287,13 +3287,15 @@
 		""
 	end
 
-	case invalid_pragma_invalid_debug
+	case pragma_unrecognized_debug
 		version 300 es
-		expect compile_fail
+		expect build_successful
 		both ""
 			#version 300 es
 			#pragma debug(1.23)
 
+			// unrecognized preprocessor token
+
 			precision mediump float;
 			${DECLARATIONS}
 			void main()
@@ -3303,13 +3305,15 @@
 		""
 	end
 
-	case invalid_pragma_invalid_token
+	case pragma_unrecognized_token
 		version 300 es
-		expect compile_fail
+		expect build_successful
 		both ""
 			#version 300 es
 			#pragma ¤¤½
 
+			// trailing bytes form a valid but unrecognized preprocessor token
+
 			precision mediump float;
 			${DECLARATIONS}
 			void main()
diff --git a/data/gles31/shaders/implicit_conversions.test b/data/gles31/shaders/implicit_conversions.test
index 7499565..d2b5965 100644
--- a/data/gles31/shaders/implicit_conversions.test
+++ b/data/gles31/shaders/implicit_conversions.test
@@ -3511,7 +3511,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3533,7 +3533,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3577,7 +3577,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3599,7 +3599,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3643,7 +3643,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3665,7 +3665,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -3779,7 +3779,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -3801,7 +3801,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -3845,7 +3845,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -3867,7 +3867,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -3911,7 +3911,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -3933,7 +3933,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4331,7 +4331,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4353,7 +4353,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4397,7 +4397,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4419,7 +4419,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4463,7 +4463,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4485,7 +4485,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ false | false | false ];
+					output bool out0 = [ true | false | false ];
 				}
 
 				both ""
@@ -4599,7 +4599,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4621,7 +4621,7 @@
 				values
 				{
 					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4665,7 +4665,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4687,7 +4687,7 @@
 				values
 				{
 					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4731,7 +4731,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
@@ -4753,7 +4753,7 @@
 				values
 				{
 					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
-					output bool out0 = [ true | true | true ];
+					output bool out0 = [ false | true | true ];
 				}
 
 				both ""
diff --git a/data/gles31/shaders/linkage_geometry_uniform_types.test b/data/gles31/shaders/linkage_geometry_uniform_types.test
index d13a822..460cf83 100644
--- a/data/gles31/shaders/linkage_geometry_uniform_types.test
+++ b/data/gles31/shaders/linkage_geometry_uniform_types.test
@@ -33,7 +33,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mediump float geo_var;
 			void main()
@@ -77,7 +77,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec2 geo_var;
 			void main()
@@ -121,7 +121,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec3 geo_var;
 			void main()
@@ -165,7 +165,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec4 geo_var;
 			void main()
@@ -209,7 +209,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2 geo_var;
 			void main()
@@ -253,7 +253,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2x3 geo_var;
 			void main()
@@ -297,7 +297,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2x4 geo_var;
 			void main()
@@ -341,7 +341,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3x2 geo_var;
 			void main()
@@ -385,7 +385,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3 geo_var;
 			void main()
@@ -429,7 +429,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3x4 geo_var;
 			void main()
@@ -473,7 +473,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4x2 geo_var;
 			void main()
@@ -517,7 +517,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4x3 geo_var;
 			void main()
@@ -561,7 +561,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4 geo_var;
 			void main()
@@ -606,6 +606,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in int geo_var;
 			void main()
@@ -650,6 +651,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec2 geo_var;
 			void main()
@@ -694,6 +696,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec3 geo_var;
 			void main()
@@ -738,6 +741,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec4 geo_var;
 			void main()
@@ -782,6 +786,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uint geo_var;
 			void main()
@@ -826,6 +831,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec2 geo_var;
 			void main()
@@ -870,6 +876,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec3 geo_var;
 			void main()
@@ -914,6 +921,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec4 geo_var;
 			void main()
diff --git a/data/gles31/shaders/linkage_tessellation_uniform_types.test b/data/gles31/shaders/linkage_tessellation_uniform_types.test
index 616c971..5850049 100644
--- a/data/gles31/shaders/linkage_tessellation_uniform_types.test
+++ b/data/gles31/shaders/linkage_tessellation_uniform_types.test
@@ -41,7 +41,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mediump float te_out;
 			void main()
@@ -93,7 +93,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec2 te_out;
 			void main()
@@ -145,7 +145,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec3 te_out;
 			void main()
@@ -197,7 +197,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in vec4 te_out;
 			void main()
@@ -249,7 +249,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2 te_out;
 			void main()
@@ -301,7 +301,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2x3 te_out;
 			void main()
@@ -353,7 +353,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat2x4 te_out;
 			void main()
@@ -405,7 +405,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3x2 te_out;
 			void main()
@@ -457,7 +457,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3 te_out;
 			void main()
@@ -509,7 +509,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat3x4 te_out;
 			void main()
@@ -561,7 +561,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4x2 te_out;
 			void main()
@@ -613,7 +613,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4x3 te_out;
 			void main()
@@ -665,7 +665,7 @@
 		""
 		fragment ""
 			#version 310 es
-			precision mediump float;
+			precision highp float;
 			${FRAGMENT_DECLARATIONS}
 			in mat4 te_out;
 			void main()
@@ -718,6 +718,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in int te_out;
 			void main()
@@ -770,6 +771,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec2 te_out;
 			void main()
@@ -822,6 +824,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec3 te_out;
 			void main()
@@ -874,6 +877,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in ivec4 te_out;
 			void main()
@@ -926,6 +930,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uint te_out;
 			void main()
@@ -978,6 +983,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec2 te_out;
 			void main()
@@ -1030,6 +1036,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec3 te_out;
 			void main()
@@ -1082,6 +1089,7 @@
 		""
 		fragment ""
 			#version 310 es
+			precision highp int;
 			${FRAGMENT_DECLARATIONS}
 			flat in uvec4 te_out;
 			void main()
diff --git a/data/gles31/shaders/tessellation_negative_user_defined_io.test b/data/gles31/shaders/tessellation_negative_user_defined_io.test
index 36bd5e7..32ae315 100644
--- a/data/gles31/shaders/tessellation_negative_user_defined_io.test
+++ b/data/gles31/shaders/tessellation_negative_user_defined_io.test
@@ -114,3 +114,187 @@
 		}
 	""
 end
+
+case per_vertex_incorrect_control_explicit_output_array_size_1
+	version 310 es
+	desc "Incorrectly sized tessellation control output array"
+	expect compile_or_link_fail
+	require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+	vertex ""
+		#version 310 es
+		${VERTEX_DECLARATIONS}
+		void main()
+		{
+			${VERTEX_OUTPUT}
+		}
+	""
+	tessellation_control ""
+		#version 310 es
+		${TESSELLATION_CONTROL_DECLARATIONS}
+		out highp float varyingArray[3]; // size is not equal to gl_MaxPatchVertices
+		void main()
+		{
+			varyingArray[gl_InvocationID] = gl_in[0].gl_Position[gl_InvocationID];
+			${TESSELLATION_CONTROL_OUTPUT}
+		}
+	""
+	tessellation_evaluation ""
+		#version 310 es
+		${TESSELLATION_EVALUATION_DECLARATIONS}
+		in highp float varyingArray[gl_MaxPatchVertices]; // size is correct
+		out mediump float te_out;
+		void main()
+		{
+			te_out = varyingArray[0] * gl_TessCoord.x + varyingArray[1] * gl_TessCoord.y + varyingArray[2];
+			${TESSELLATION_EVALUATION_OUTPUT}
+		}
+	""
+	fragment ""
+		#version 310 es
+		precision mediump float;
+		${FRAGMENT_DECLARATIONS}
+		in mediump float te_out;
+		void main()
+		{
+			${FRAG_COLOR} = vec4(te_out);
+		}
+	""
+end
+
+case per_vertex_incorrect_control_explicit_output_array_size_2
+	version 310 es
+	desc "Incorrectly sized tessellation control output array"
+	expect compile_or_link_fail
+	require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+	vertex ""
+		#version 310 es
+		${VERTEX_DECLARATIONS}
+		void main()
+		{
+			${VERTEX_OUTPUT}
+		}
+	""
+	tessellation_control ""
+		#version 310 es
+		${TESSELLATION_CONTROL_DECLARATIONS}
+		out highp float varyingArray[gl_MaxPatchVertices]; // size does not match layout declaration
+		void main()
+		{
+			varyingArray[gl_InvocationID] = gl_in[0].gl_Position[gl_InvocationID];
+			${TESSELLATION_CONTROL_OUTPUT}
+		}
+	""
+	tessellation_evaluation ""
+		#version 310 es
+		${TESSELLATION_EVALUATION_DECLARATIONS}
+		in highp float varyingArray[gl_MaxPatchVertices]; // size is correct
+		out mediump float te_out;
+		void main()
+		{
+			te_out = varyingArray[0] * gl_TessCoord.x + varyingArray[1] * gl_TessCoord.y + varyingArray[2];
+			${TESSELLATION_EVALUATION_OUTPUT}
+		}
+	""
+	fragment ""
+		#version 310 es
+		precision mediump float;
+		${FRAGMENT_DECLARATIONS}
+		in mediump float te_out;
+		void main()
+		{
+			${FRAG_COLOR} = vec4(te_out);
+		}
+	""
+end
+
+case per_vertex_incorrect_control_explicit_output_array_size_3
+	version 310 es
+	desc "Incorrectly sized tessellation control output array"
+	expect compile_or_link_fail
+	require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+	vertex ""
+		#version 310 es
+		${VERTEX_DECLARATIONS}
+		void main()
+		{
+			${VERTEX_OUTPUT}
+		}
+	""
+	tessellation_control ""
+		#version 310 es
+		${TESSELLATION_CONTROL_DECLARATIONS}
+		out highp float varyingArray[${GL_MAX_PATCH_VERTICES}]; // size does not match layout declaration
+		void main()
+		{
+			varyingArray[gl_InvocationID] = gl_in[0].gl_Position[gl_InvocationID];
+			${TESSELLATION_CONTROL_OUTPUT}
+		}
+	""
+	tessellation_evaluation ""
+		#version 310 es
+		${TESSELLATION_EVALUATION_DECLARATIONS}
+		in highp float varyingArray[gl_MaxPatchVertices]; // size is correct
+		out mediump float te_out;
+		void main()
+		{
+			te_out = varyingArray[0] * gl_TessCoord.x + varyingArray[1] * gl_TessCoord.y + varyingArray[2];
+			${TESSELLATION_EVALUATION_OUTPUT}
+		}
+	""
+	fragment ""
+		#version 310 es
+		precision mediump float;
+		${FRAGMENT_DECLARATIONS}
+		in mediump float te_out;
+		void main()
+		{
+			${FRAG_COLOR} = vec4(te_out);
+		}
+	""
+end
+
+case per_vertex_incorrect_eval_explicit_input_array_size
+	version 310 es
+	desc "Incorrectly sized tessellation control output array"
+	expect compile_or_link_fail
+	require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+	vertex ""
+		#version 310 es
+		${VERTEX_DECLARATIONS}
+		void main()
+		{
+			${VERTEX_OUTPUT}
+		}
+	""
+	tessellation_control ""
+		#version 310 es
+		${TESSELLATION_CONTROL_DECLARATIONS}
+		out highp float varyingArray[];
+		void main()
+		{
+			varyingArray[gl_InvocationID] = gl_in[0].gl_Position[gl_InvocationID];
+			${TESSELLATION_CONTROL_OUTPUT}
+		}
+	""
+	tessellation_evaluation ""
+		#version 310 es
+		${TESSELLATION_EVALUATION_DECLARATIONS}
+		in highp float varyingArray[3]; // size is not equal to gl_MaxPatchVertices
+		out mediump float te_out;
+		void main()
+		{
+			te_out = varyingArray[0] * gl_TessCoord.x + varyingArray[1] * gl_TessCoord.y + varyingArray[2];
+			${TESSELLATION_EVALUATION_OUTPUT}
+		}
+	""
+	fragment ""
+		#version 310 es
+		precision mediump float;
+		${FRAGMENT_DECLARATIONS}
+		in mediump float te_out;
+		void main()
+		{
+			${FRAG_COLOR} = vec4(te_out);
+		}
+	""
+end
diff --git a/doc/testlog-stylesheet/testlog.xsl b/doc/testlog-stylesheet/testlog.xsl
index b691945..e2225a3 100644
--- a/doc/testlog-stylesheet/testlog.xsl
+++ b/doc/testlog-stylesheet/testlog.xsl
@@ -1,4 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+-->
 <xsl:stylesheet
 	version="1.0"
 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/external/fetch_sources.py b/external/fetch_sources.py
index 5f6a30f..e45f8e8 100644
--- a/external/fetch_sources.py
+++ b/external/fetch_sources.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import os
 import sys
 import shutil
diff --git a/framework/common/tcuCompressedTexture.cpp b/framework/common/tcuCompressedTexture.cpp
index 2be372e..7d0073b 100644
--- a/framework/common/tcuCompressedTexture.cpp
+++ b/framework/common/tcuCompressedTexture.cpp
@@ -2140,7 +2140,7 @@
 	}
 }
 
-void unquantizeWeights (deUint32* dst, const ISEDecodedResult* weightGrid, const ASTCBlockMode& blockMode)
+void unquantizeWeights (deUint32 dst[64], const ISEDecodedResult* weightGrid, const ASTCBlockMode& blockMode)
 {
 	const int			numWeights	= computeNumWeights(blockMode);
 	const ISEParams&	iseParams	= blockMode.weightISEParams;
@@ -2194,6 +2194,11 @@
 
 	for (int weightNdx = 0; weightNdx < numWeights; weightNdx++)
 		dst[weightNdx] += dst[weightNdx] > 32 ? 1 : 0;
+
+	// Initialize nonexistent weights to poison values
+	for (int weightNdx = numWeights; weightNdx < 64; weightNdx++)
+		dst[weightNdx] = ~0u;
+
 }
 
 void interpolateWeights (TexelWeightPair* dst, const deUint32* unquantizedWeights, int blockWidth, int blockHeight, const ASTCBlockMode& blockMode)
diff --git a/framework/common/tcuImageCompare.cpp b/framework/common/tcuImageCompare.cpp
index ced0145..469b095 100644
--- a/framework/common/tcuImageCompare.cpp
+++ b/framework/common/tcuImageCompare.cpp
@@ -31,6 +31,7 @@
 #include "tcuRGBA.hpp"
 #include "tcuTexture.hpp"
 #include "tcuTextureUtil.hpp"
+#include "tcuFloat.hpp"
 
 #include <string.h>
 
@@ -100,9 +101,9 @@
 	const int			beginX				= (acceptOutOfBoundsAsAnyValue) ? (maxPositionDeviation.x()) : (0);
 	const int			beginY				= (acceptOutOfBoundsAsAnyValue) ? (maxPositionDeviation.y()) : (0);
 	const int			beginZ				= (acceptOutOfBoundsAsAnyValue) ? (maxPositionDeviation.z()) : (0);
-	const int			endX				= (acceptOutOfBoundsAsAnyValue) ? (width  - maxPositionDeviation.x()) : (0);
-	const int			endY				= (acceptOutOfBoundsAsAnyValue) ? (height - maxPositionDeviation.y()) : (0);
-	const int			endZ				= (acceptOutOfBoundsAsAnyValue) ? (depth  - maxPositionDeviation.z()) : (0);
+	const int			endX				= (acceptOutOfBoundsAsAnyValue) ? (width  - maxPositionDeviation.x()) : (width);
+	const int			endY				= (acceptOutOfBoundsAsAnyValue) ? (height - maxPositionDeviation.y()) : (height);
+	const int			endZ				= (acceptOutOfBoundsAsAnyValue) ? (depth  - maxPositionDeviation.z()) : (depth);
 
 	TCU_CHECK_INTERNAL(result.getWidth() == width && result.getHeight() == height && result.getDepth() == depth);
 
@@ -392,6 +393,75 @@
 }
 
 /*--------------------------------------------------------------------*//*!
+ * Returns the index of float in a float space without denormals
+ * so that:
+ * 1) f(0.0) = 0
+ * 2) f(-0.0) = 0
+ * 3) f(b) = f(a) + 1  <==>  b = nextAfter(a)
+ *
+ * See computeFloatFlushRelaxedULPDiff for details
+ *//*--------------------------------------------------------------------*/
+static deInt32 getPositionOfIEEEFloatWithoutDenormals (float x)
+{
+	DE_ASSERT(!deIsNaN(x)); // not sane
+
+	if (x == 0.0f)
+		return 0;
+	else if (x < 0.0f)
+		return -getPositionOfIEEEFloatWithoutDenormals(-x);
+	else
+	{
+		DE_ASSERT(x > 0.0f);
+
+		const tcu::Float32 f(x);
+
+		if (f.isDenorm())
+		{
+			// Denorms are flushed to zero
+			return 0;
+		}
+		else
+		{
+			// sign is 0, and it's a normal number. Natural position is its bit
+			// pattern but since we've collapsed the denorms, we must remove
+			// the gap here too to keep the float enumeration continuous.
+			//
+			// Denormals occupy one exponent pattern. Removing one from
+			// exponent should to the trick. Add one since the removed range
+			// contained one representable value, 0.
+			return (deInt32)(f.bits() - (1u << 23u) + 1u);
+		}
+	}
+}
+
+static deUint32 computeFloatFlushRelaxedULPDiff (float a, float b)
+{
+	if (deIsNaN(a) && deIsNaN(b))
+		return 0;
+	else if (deIsNaN(a) || deIsNaN(b))
+	{
+		return 0xFFFFFFFFu;
+	}
+	else
+	{
+		// Using the "definition 5" in Muller, Jean-Michel. "On the definition of ulp (x)" (2005)
+		// assuming a floating point space is IEEE single precision floating point space without
+		// denormals (and signed zeros).
+		const deInt32 aIndex = getPositionOfIEEEFloatWithoutDenormals(a);
+		const deInt32 bIndex = getPositionOfIEEEFloatWithoutDenormals(b);
+		return (deUint32)de::abs(aIndex - bIndex);
+	}
+}
+
+static tcu::UVec4 computeFlushRelaxedULPDiff (const tcu::Vec4& a, const tcu::Vec4& b)
+{
+	return tcu::UVec4(computeFloatFlushRelaxedULPDiff(a.x(), b.x()),
+					  computeFloatFlushRelaxedULPDiff(a.y(), b.y()),
+					  computeFloatFlushRelaxedULPDiff(a.z(), b.z()),
+					  computeFloatFlushRelaxedULPDiff(a.w(), b.w()));
+}
+
+/*--------------------------------------------------------------------*//*!
  * \brief Per-pixel threshold-based comparison
  *
  * This compare computes per-pixel differences between result and reference
@@ -399,7 +469,8 @@
  *
  * This comparison uses ULP (units in last place) metric for computing the
  * difference between floating-point values and thus this function can
- * be used only for comparing floating-point texture data.
+ * be used only for comparing floating-point texture data. In ULP calculation
+ * the denormal numbers are allowed to be flushed to zero.
  *
  * On failure error image is generated that shows where the failing pixels
  * are.
@@ -432,17 +503,10 @@
 		{
 			for (int x = 0; x < width; x++)
 			{
-				Vec4	refPix		= reference.getPixel(x, y, z);
-				Vec4	cmpPix		= result.getPixel(x, y, z);
-				UVec4	refBits;
-				UVec4	cmpBits;
-
-				// memcpy() is the way to do float->uint32 reinterpretation.
-				memcpy(refBits.getPtr(), refPix.getPtr(), 4*sizeof(deUint32));
-				memcpy(cmpBits.getPtr(), cmpPix.getPtr(), 4*sizeof(deUint32));
-
-				UVec4	diff		= abs(refBits.cast<int>() - cmpBits.cast<int>()).cast<deUint32>();
-				bool	isOk		= boolAll(lessThanEqual(diff, threshold));
+				const Vec4	refPix	= reference.getPixel(x, y, z);
+				const Vec4	cmpPix	= result.getPixel(x, y, z);
+				const UVec4	diff	= computeFlushRelaxedULPDiff(refPix, cmpPix);
+				const bool	isOk	= boolAll(lessThanEqual(diff, threshold));
 
 				maxDiff = max(maxDiff, diff);
 
diff --git a/framework/common/tcuInterval.hpp b/framework/common/tcuInterval.hpp
index 0a2f65f..0c29d57 100644
--- a/framework/common/tcuInterval.hpp
+++ b/framework/common/tcuInterval.hpp
@@ -118,7 +118,7 @@
 
 	bool		intersects		(const Interval& other) const
 	{
-		return ((other.hi() >= lo() && other.lo() >= hi()) ||
+		return ((other.hi() >= lo() && other.lo() <= hi()) ||
 				(other.hasNaN() && hasNaN()));
 	}
 
diff --git a/framework/common/tcuSurface.cpp b/framework/common/tcuSurface.cpp
index 6e796e7..9a1238e 100644
--- a/framework/common/tcuSurface.cpp
+++ b/framework/common/tcuSurface.cpp
@@ -53,5 +53,5 @@
 {
 	m_width		= width;
 	m_height	= height;
-	m_pixels.resize(width*height);
+	m_pixels.setStorage(width * height);
 }
diff --git a/framework/common/tcuSurface.hpp b/framework/common/tcuSurface.hpp
index 89f2073..b9e4863 100644
--- a/framework/common/tcuSurface.hpp
+++ b/framework/common/tcuSurface.hpp
@@ -27,7 +27,7 @@
 #include "tcuRGBA.hpp"
 #include "tcuTexture.hpp"
 
-#include <vector>
+#include "deArrayBuffer.hpp"
 
 namespace tcu
 {
@@ -62,9 +62,9 @@
 private:
 	// \note Copy constructor and assignment operators are public and auto-generated
 
-	int						m_width;
-	int 					m_height;
-	std::vector<deUint32>	m_pixels;
+	int							m_width;
+	int 						m_height;
+	de::ArrayBuffer<deUint32>	m_pixels;
 } DE_WARN_UNUSED_TYPE;
 
 inline void Surface::setPixel (int x, int y, RGBA col)
@@ -72,7 +72,7 @@
 	DE_ASSERT(de::inBounds(x, 0, m_width) && de::inBounds(y, 0, m_height));
 
 	const int		pixOffset	= y*m_width + x;
-	deUint32*		pixAddr		= &m_pixels[pixOffset];
+	deUint32*		pixAddr		= m_pixels.getElementPtr(pixOffset);
 
 #if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
 	*pixAddr = col.getPacked();
@@ -89,7 +89,7 @@
 	DE_ASSERT(de::inBounds(x, 0, m_width) && de::inBounds(y, 0, m_height));
 
 	const int		pixOffset	= y*m_width + x;
-	const deUint32*	pixAddr		= &m_pixels[pixOffset];
+	const deUint32*	pixAddr		= m_pixels.getElementPtr(pixOffset);
 
 	DE_STATIC_ASSERT(RGBA::RED_SHIFT == 0 && RGBA::GREEN_SHIFT == 8 && RGBA::BLUE_SHIFT == 16 && RGBA::ALPHA_SHIFT == 24);
 
@@ -104,13 +104,13 @@
 /** Get pixel buffer access from surface. */
 inline ConstPixelBufferAccess Surface::getAccess (void) const
 {
-	return ConstPixelBufferAccess(TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT8), m_width, m_height, 1, m_pixels.empty() ? DE_NULL : &m_pixels[0]);
+	return ConstPixelBufferAccess(TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT8), m_width, m_height, 1, m_pixels.empty() ? DE_NULL : m_pixels.getPtr());
 }
 
 /** Get pixel buffer access from surface. */
 inline PixelBufferAccess Surface::getAccess (void)
 {
-	return PixelBufferAccess(TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT8), m_width, m_height, 1, m_pixels.empty() ? DE_NULL : &m_pixels[0]);
+	return PixelBufferAccess(TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT8), m_width, m_height, 1, m_pixels.empty() ? DE_NULL : m_pixels.getPtr());
 }
 
 } // tcu
diff --git a/framework/common/tcuTexture.cpp b/framework/common/tcuTexture.cpp
index d7e82c1..43c7616 100644
--- a/framework/common/tcuTexture.cpp
+++ b/framework/common/tcuTexture.cpp
@@ -111,6 +111,50 @@
 #endif
 }
 
+inline deUint8 readUint32Low8 (const deUint8* src)
+{
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	const deUint32 uint32ByteOffsetBits0To8	= 0; //!< least significant byte in the lowest address
+#else
+	const deUint32 uint32ByteOffsetBits0To8	= 3; //!< least significant byte in the highest address
+#endif
+
+	return src[uint32ByteOffsetBits0To8];
+}
+
+inline void writeUint32Low8 (deUint8* dst, deUint8 val)
+{
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	const deUint32 uint32ByteOffsetBits0To8	= 0; //!< least significant byte in the lowest address
+#else
+	const deUint32 uint32ByteOffsetBits0To8	= 3; //!< least significant byte in the highest address
+#endif
+
+	dst[uint32ByteOffsetBits0To8] = val;
+}
+
+inline deUint32 readUint32High24 (const deUint8* src)
+{
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	const deUint32 uint32ByteOffset8To32	= 1;
+#else
+	const deUint32 uint32ByteOffset8To32	= 0;
+#endif
+
+	return readUint24(src + uint32ByteOffset8To32);
+}
+
+inline void writeUint32High24 (deUint8* dst, deUint32 val)
+{
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	const deUint32 uint32ByteOffset8To32	= 1;
+#else
+	const deUint32 uint32ByteOffset8To32	= 0;
+#endif
+
+	writeUint24(dst + uint32ByteOffset8To32, val);
+}
+
 // \todo [2011-09-21 pyry] Move to tcutil?
 template <typename T>
 inline T convertSatRte (float f)
@@ -788,9 +832,6 @@
 
 	const deUint8* const pixelPtr = (const deUint8*)getPixelPtr(x, y, z);
 
-#define UB32(OFFS, COUNT) ((*((const deUint32*)pixelPtr) >> (OFFS)) & ((1<<(COUNT))-1))
-#define NB32(OFFS, COUNT) channelToNormFloat(UB32(OFFS, COUNT), (COUNT))
-
 	DE_ASSERT(m_format.order == TextureFormat::DS || m_format.order == TextureFormat::D);
 
 	switch (m_format.type)
@@ -800,7 +841,8 @@
 			{
 				case TextureFormat::D:
 				case TextureFormat::DS: // \note Fall-through.
-					return NB32(8, 24);
+					return (float)readUint32High24(pixelPtr) / 16777215.0f;
+
 				default:
 					DE_ASSERT(false);
 					return 0.0f;
@@ -814,9 +856,6 @@
 			DE_ASSERT(m_format.order == TextureFormat::D); // no other combined depth stencil types
 			return channelToFloat(pixelPtr, m_format.type);
 	}
-
-#undef UB32
-#undef NB32
 }
 
 int ConstPixelBufferAccess::getPixStencil (int x, int y, int z) const
@@ -832,8 +871,9 @@
 		case TextureFormat::UNSIGNED_INT_24_8:
 			switch (m_format.order)
 			{
-				case TextureFormat::S:		return (int)(*((const deUint32*)pixelPtr) >> 8);
-				case TextureFormat::DS:		return (int)(*((const deUint32*)pixelPtr) & 0xff);
+				case TextureFormat::S:
+				case TextureFormat::DS:
+					return (int)readUint32Low8(pixelPtr);
 
 				default:
 					DE_ASSERT(false);
@@ -842,7 +882,7 @@
 
 		case TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV:
 			DE_ASSERT(m_format.order == TextureFormat::DS);
-			return *((const deUint32*)(pixelPtr+4)) & 0xff;
+			return (int)readUint32Low8(pixelPtr + 4);
 
 		default:
 		{
@@ -988,15 +1028,16 @@
 
 	deUint8* const pixelPtr = (deUint8*)getPixelPtr(x, y, z);
 
-#define PN(VAL, OFFS, BITS) (normFloatToChannel((VAL), (BITS)) << (OFFS))
-
 	switch (m_format.type)
 	{
 		case TextureFormat::UNSIGNED_INT_24_8:
 			switch (m_format.order)
 			{
-				case TextureFormat::D:		*((deUint32*)pixelPtr) = PN(depth, 8, 24);											break;
-				case TextureFormat::DS:		*((deUint32*)pixelPtr) = (*((deUint32*)pixelPtr) & 0x000000ff) | PN(depth, 8, 24);	break;
+				case TextureFormat::D:
+				case TextureFormat::DS:
+					writeUint32High24(pixelPtr,  convertSatRteUint24(depth * 16777215.0f));
+					break;
+
 				default:
 					DE_ASSERT(false);
 			}
@@ -1012,8 +1053,6 @@
 			floatToChannel(pixelPtr, depth, m_format.type);
 			break;
 	}
-
-#undef PN
 }
 
 void PixelBufferAccess::setPixStencil (int stencil, int x, int y, int z) const
@@ -1024,15 +1063,16 @@
 
 	deUint8* const pixelPtr = (deUint8*)getPixelPtr(x, y, z);
 
-#define PU(VAL, OFFS, BITS) (uintToChannel((deUint32)(VAL), (BITS)) << (OFFS))
-
 	switch (m_format.type)
 	{
 		case TextureFormat::UNSIGNED_INT_24_8:
 			switch (m_format.order)
 			{
-				case TextureFormat::S:		*((deUint32*)pixelPtr) = PU(stencil, 8, 24);										break;
-				case TextureFormat::DS:		*((deUint32*)pixelPtr) = (*((deUint32*)pixelPtr) & 0xffffff00) | PU(stencil, 0, 8);	break;
+				case TextureFormat::S:
+				case TextureFormat::DS:
+					writeUint32Low8(pixelPtr, convertSat<deUint8>((deUint32)stencil));
+					break;
+
 				default:
 					DE_ASSERT(false);
 			}
@@ -1040,7 +1080,7 @@
 
 		case TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV:
 			DE_ASSERT(m_format.order == TextureFormat::DS);
-			*((deUint32*)(pixelPtr+4))	= PU((deUint32)stencil, 0, 8);
+			writeUint32Low8(pixelPtr + 4, convertSat<deUint8>((deUint32)stencil));
 			break;
 
 		default:
@@ -1048,8 +1088,6 @@
 			intToChannel(pixelPtr, stencil, m_format.type);
 			break;
 	}
-
-#undef PU
 }
 
 static inline int imod (int a, int b)
diff --git a/framework/common/tcuTextureUtil.cpp b/framework/common/tcuTextureUtil.cpp
index d8018af..2591f10 100644
--- a/framework/common/tcuTextureUtil.cpp
+++ b/framework/common/tcuTextureUtil.cpp
@@ -718,9 +718,9 @@
 
 		// For combined formats, treat D and S as separate channels
 		if (hasDepth)
-			fillWithComponentGradients(getEffectiveDepthStencilAccess(access, tcu::Sampler::MODE_DEPTH), colorA, colorB);
+			fillWithGrid(getEffectiveDepthStencilAccess(access, tcu::Sampler::MODE_DEPTH), cellSize, colorA, colorB);
 		if (hasStencil)
-			fillWithComponentGradients(getEffectiveDepthStencilAccess(access, tcu::Sampler::MODE_STENCIL), colorA.swizzle(3,2,1,0), colorB.swizzle(3,2,1,0));
+			fillWithGrid(getEffectiveDepthStencilAccess(access, tcu::Sampler::MODE_STENCIL), cellSize, colorA.swizzle(3,2,1,0), colorB.swizzle(3,2,1,0));
 	}
 	else
 	{
diff --git a/framework/delibs/cmake/CFlags.cmake b/framework/delibs/cmake/CFlags.cmake
index d292e6e..ff25740 100644
--- a/framework/delibs/cmake/CFlags.cmake
+++ b/framework/delibs/cmake/CFlags.cmake
@@ -43,8 +43,8 @@
 	set(DE_3RD_PARTY_C_FLAGS	"${CMAKE_C_FLAGS} ${TARGET_FLAGS} -w")
 	set(DE_3RD_PARTY_CXX_FLAGS	"${CMAKE_CXX_FLAGS} ${TARGET_FLAGS} -w")
 
-	# \note Add -Wconversion for more warnings
-	set(WARNING_FLAGS			"-Wall -Wextra -Wno-long-long -Wshadow -Wundef")
+	# \note Remove -Wno-sign-conversion for more warnings
+	set(WARNING_FLAGS			"-Wall -Wextra -Wno-long-long -Wshadow -Wundef -Wconversion -Wno-sign-conversion")
 
 	set(CMAKE_C_FLAGS			"${CMAKE_C_FLAGS} ${TARGET_FLAGS} ${WARNING_FLAGS} -ansi -pedantic ")
 	set(CMAKE_CXX_FLAGS			"${CMAKE_CXX_FLAGS} ${TARGET_FLAGS} ${WARNING_FLAGS}")
diff --git a/framework/delibs/cmake/toolchain-android-r10e.cmake b/framework/delibs/cmake/toolchain-android-r10e.cmake
new file mode 100644
index 0000000..25fe730
--- /dev/null
+++ b/framework/delibs/cmake/toolchain-android-r10e.cmake
@@ -0,0 +1,175 @@
+# Platform defines.
+set(CMAKE_SYSTEM_NAME Linux)
+
+set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
+
+set(CMAKE_CROSSCOMPILING 1)
+
+# NDK installation path
+if (NOT DEFINED ANDROID_NDK_PATH)
+	message(FATAL_ERROR "Please provide ANDROID_NDK_PATH")
+endif ()
+
+# Host os (for toolchain binaries)
+if (NOT DEFINED ANDROID_NDK_HOST_OS)
+	message(STATUS "Warning: ANDROID_NDK_HOST_OS is not set")
+	if (WIN32)
+		set(ANDROID_NDK_HOST_OS "windows")
+	elseif (UNIX)
+		set(ANDROID_NDK_HOST_OS "linux-86")
+	endif ()
+endif ()
+
+# Compile target
+set(ANDROID_ABI			"armeabi-v7a"			CACHE STRING "Android ABI")
+set(ANDROID_NDK_TARGET	"android-${DE_ANDROID_API}")
+
+# dE defines
+set(DE_OS "DE_OS_ANDROID")
+
+if (NOT DEFINED DE_COMPILER)
+	set(DE_COMPILER	"DE_COMPILER_CLANG")
+endif ()
+
+if (NOT DEFINED DE_ANDROID_API)
+	set(DE_ANDROID_API 9)
+endif ()
+
+set(COMMON_C_FLAGS		"-D__STDC_INT64__")
+set(COMMON_CXX_FLAGS	"${COMMON_C_FLAGS} -frtti -fexceptions")
+set(COMMON_LINKER_FLAGS	"")
+set(ARM_C_FLAGS			"-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ ")
+
+# ABI-dependent bits
+if (ANDROID_ABI STREQUAL "x86")
+	set(DE_CPU					"DE_CPU_X86")
+	set(CMAKE_SYSTEM_PROCESSOR	i686-android-linux)
+
+	set(ANDROID_CC_PATH			"${ANDROID_NDK_PATH}/toolchains/x86-4.9/prebuilt/${ANDROID_NDK_HOST_OS}/")
+	set(CROSS_COMPILE			"${ANDROID_CC_PATH}bin/i686-linux-android-")
+	set(ANDROID_SYSROOT			"${ANDROID_NDK_PATH}/platforms/${ANDROID_NDK_TARGET}/arch-x86")
+
+	set(CMAKE_FIND_ROOT_PATH
+		"${ANDROID_CC_PATH}i686-linux-android"
+		"${ANDROID_CC_PATH}lib/gcc/i686-linux-android/4.9"
+		)
+
+	set(TARGET_C_FLAGS			"-march=i686 -msse3 -mstackrealign -mfpmath=sse")
+	set(TARGET_LINKER_FLAGS		"")
+	set(LLVM_TRIPLE				"i686-none-linux-android")
+
+elseif (ANDROID_ABI STREQUAL "armeabi" OR
+		ANDROID_ABI STREQUAL "armeabi-v7a")
+	set(DE_CPU					"DE_CPU_ARM")
+	set(CMAKE_SYSTEM_PROCESSOR	arm-linux-androideabi)
+
+	set(ANDROID_CC_PATH	"${ANDROID_NDK_PATH}/toolchains/arm-linux-androideabi-4.9/prebuilt/${ANDROID_NDK_HOST_OS}/")
+	set(CROSS_COMPILE	"${ANDROID_CC_PATH}bin/arm-linux-androideabi-")
+	set(ANDROID_SYSROOT	"${ANDROID_NDK_PATH}/platforms/${ANDROID_NDK_TARGET}/arch-arm")
+
+	if (ANDROID_ABI STREQUAL "armeabi-v7a")
+		set(TARGET_C_FLAGS		"${ARM_C_FLAGS} -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp")
+		set(TARGET_LINKER_FLAGS	"-Wl,--fix-cortex-a8 -march=armv7-a")
+		set(LLVM_TRIPLE			"armv7-none-linux-androideabi")
+
+	else () # armeabi
+		set(TARGET_C_FLAGS		"${ARM_C_FLAGS} -march=armv5te -mfloat-abi=softfp")
+		set(TARGET_LINKER_FLAGS	"-Wl,--fix-cortex-a8 -march=armv5te")
+		set(LLVM_TRIPLE			"armv5te-none-linux-androideabi")
+	endif ()
+
+	set(CMAKE_FIND_ROOT_PATH
+		"${ANDROID_CC_PATH}arm-linux-androideabi"
+		)
+
+elseif (ANDROID_ABI STREQUAL "arm64-v8a")
+	set(DE_CPU					"DE_CPU_ARM_64")
+	set(CMAKE_SYSTEM_PROCESSOR	aarch64-linux-android)
+	set(CMAKE_SIZEOF_VOID_P		8)
+
+	set(ANDROID_CC_PATH	"${ANDROID_NDK_PATH}/toolchains/aarch64-linux-android-4.9/prebuilt/${ANDROID_NDK_HOST_OS}/")
+	set(CROSS_COMPILE	"${ANDROID_CC_PATH}bin/aarch64-linux-android-")
+	set(ANDROID_SYSROOT	"${ANDROID_NDK_PATH}/platforms/${ANDROID_NDK_TARGET}/arch-arm64")
+
+	set(CMAKE_FIND_ROOT_PATH
+		"${ANDROID_CC_PATH}arm-linux-androideabi"
+		)
+
+	set(TARGET_C_FLAGS		"-march=armv8-a")
+	set(TARGET_LINKER_FLAGS	"-Wl,--fix-cortex-a53-835769 -Wl,--fix-cortex-a53-835769 -march=armv8-a")
+	set(LLVM_TRIPLE			"aarch64-none-linux-android")
+
+	if (DE_COMPILER STREQUAL "DE_COMPILER_GCC")
+		set(TARGET_C_FLAGS "${TARGET_C_FLAGS} -mabi=lp64")
+	endif ()
+
+else ()
+	message(FATAL_ERROR "Unknown ABI \"${ANDROID_ABI}\"")
+endif ()
+
+# C++ library
+if (ANDROID_ABI STREQUAL "x86")
+	# Use gnu-libstc++, since libc++ is currently broken on x86, bug #22124988
+	set(ANDROID_CXX_LIBRARY 	"${ANDROID_NDK_PATH}/sources/cxx-stl/gnu-libstdc++/4.9/libs/${ANDROID_ABI}/libgnustl_static.a")
+	set(CXX_INCLUDES			"-I${ANDROID_NDK_PATH}/sources/cxx-stl/gnu-libstdc++/4.9/include -I${ANDROID_NDK_PATH}/sources/cxx-stl/gnu-libstdc++/4.9/libs/${ANDROID_ABI}/include")
+	set(CMAKE_FIND_ROOT_PATH	"${ANDROID_NDK_PATH}/sources/cxx-stl/gnu-libstdc++/4.9/libs/${ANDROID_ABI}" ${CMAKE_FIND_ROOT_PATH})
+else ()
+	# Use LLVM libc++ for full C++11 support
+	set(ANDROID_CXX_LIBRARY		"${ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ABI}/libc++_static.a")
+	set(CXX_INCLUDES			"-I${ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libcxx/include")
+	set(CMAKE_FIND_ROOT_PATH	"" ${CMAKE_FIND_ROOT_PATH})
+endif ()
+
+set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ANDROID_SYSROOT})
+
+include(CMakeForceCompiler)
+
+if (DE_COMPILER STREQUAL "DE_COMPILER_GCC")
+	if (ANDROID_NDK_HOST_OS STREQUAL "linux-x86" OR
+		ANDROID_NDK_HOST_OS STREQUAL "linux-x86_64" OR
+		ANDROID_NDK_HOST_OS STREQUAL "darwin-x86")
+		cmake_force_c_compiler("${CROSS_COMPILE}gcc"		GNU)
+		cmake_force_cxx_compiler("${CROSS_COMPILE}g++"		GNU)
+	elseif (ANDROID_NDK_HOST_OS STREQUAL "windows")
+		cmake_force_c_compiler("${CROSS_COMPILE}gcc.exe"	GNU)
+		cmake_force_cxx_compiler("${CROSS_COMPILE}g++.exe"	GNU)
+	else ()
+		message(FATAL_ERROR "Unknown ANDROID_NDK_HOST_OS")
+	endif ()
+
+	set(TARGET_C_FLAGS		"-mandroid ${TARGET_C_FLAGS}")
+
+elseif (DE_COMPILER STREQUAL "DE_COMPILER_CLANG")
+	set(LLVM_PATH "${ANDROID_NDK_PATH}/toolchains/llvm-3.6/prebuilt/${ANDROID_NDK_HOST_OS}/")
+
+	if (ANDROID_NDK_HOST_OS STREQUAL "linux-x86" OR
+		ANDROID_NDK_HOST_OS STREQUAL "linux-x86_64" OR
+		ANDROID_NDK_HOST_OS STREQUAL "darwin-x86")
+		cmake_force_c_compiler("${LLVM_PATH}bin/clang"			Clang)
+		cmake_force_cxx_compiler("${LLVM_PATH}bin/clang++"		Clang)
+		set(CMAKE_AR "${LLVM_PATH}/bin/llvm-ar" CACHE FILEPATH "Archiver")
+	elseif (ANDROID_NDK_HOST_OS STREQUAL "windows")
+		cmake_force_c_compiler("${LLVM_PATH}bin/clang.exe"		Clang)
+		cmake_force_cxx_compiler("${LLVM_PATH}bin/clang++.exe"	Clang)
+		set(CMAKE_AR "${LLVM_PATH}bin/llvm-ar.exe" CACHE FILEPATH "Archiver")
+	else ()
+		message(FATAL_ERROR "Unknown ANDROID_NDK_HOST_OS")
+	endif ()
+
+	set(TARGET_C_FLAGS		"-target ${LLVM_TRIPLE} -gcc-toolchain ${ANDROID_CC_PATH} ${TARGET_C_FLAGS}")
+	set(TARGET_LINKER_FLAGS	"-target ${LLVM_TRIPLE} -gcc-toolchain ${ANDROID_CC_PATH} ${TARGET_LINKER_FLAGS}")
+
+endif ()
+
+set(CMAKE_SHARED_LIBRARY_C_FLAGS	"")
+set(CMAKE_SHARED_LIBRARY_CXX_FLAGS	"")
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+# \note Without CACHE STRING FORCE cmake ignores these.
+set(CMAKE_C_FLAGS				"--sysroot=${ANDROID_SYSROOT} ${COMMON_C_FLAGS} ${TARGET_C_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_CXX_FLAGS				"--sysroot=${ANDROID_SYSROOT} ${COMMON_CXX_FLAGS} ${TARGET_C_FLAGS} ${CXX_INCLUDES} -I${ANDROID_NDK_PATH}/sources/android/support/include" CACHE STRING "" FORCE)
+set(CMAKE_SHARED_LINKER_FLAGS	"-nodefaultlibs -Wl,-shared,-Bsymbolic -Wl,--no-undefined ${COMMON_LINKER_FLAGS} ${TARGET_LINKER_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_EXE_LINKER_FLAGS		"-nodefaultlibs ${COMMON_LINKER_FLAGS} ${TARGET_LINKER_FLAGS}" CACHE STRING "" FORCE)
diff --git a/framework/delibs/debase/CMakeLists.txt b/framework/delibs/debase/CMakeLists.txt
index 6f18c88..b960bbc 100644
--- a/framework/delibs/debase/CMakeLists.txt
+++ b/framework/delibs/debase/CMakeLists.txt
@@ -14,6 +14,7 @@
 	deInt32Test.c
 	deMath.c
 	deMath.h
+	deMathTest.c
 	deMemory.c
 	deMemory.h
 	deRandom.c
diff --git a/framework/delibs/debase/deDefs.h b/framework/delibs/debase/deDefs.h
index 7274914..42826f7 100644
--- a/framework/delibs/debase/deDefs.h
+++ b/framework/delibs/debase/deDefs.h
@@ -294,7 +294,7 @@
 /** Test assert macro for use in testers (same as DE_ASSERT, but always enabled). */
 #define DE_TEST_ASSERT(X) do { if ((!deGetFalse() && (X)) ? DE_FALSE : DE_TRUE) deAssertFail(#X, __FILE__, __LINE__); } while(deGetFalse())
 
-#if (DE_COMPILER == DE_COMPILER_GCC)
+#if (DE_COMPILER == DE_COMPILER_GCC) || (DE_COMPILER == DE_COMPILER_CLANG)
 	/* GCC 4.8 and newer warns about unused typedefs. */
 #	define DE_UNUSED_TYPEDEF_ATTR __attribute__((unused))
 #else
diff --git a/framework/delibs/debase/deInt32.h b/framework/delibs/debase/deInt32.h
index 0423183..6e574e5 100644
--- a/framework/delibs/debase/deInt32.h
+++ b/framework/delibs/debase/deInt32.h
@@ -356,6 +356,16 @@
 	return b0|b1|b2|b3;
 }
 
+/*--------------------------------------------------------------------*//*!
+ * \brief Reverse bytes in 16-bit integer (for example MSB -> LSB).
+ * \param a	Input value.
+ * \return The input with bytes reversed
+ *//*--------------------------------------------------------------------*/
+DE_INLINE deUint16 deReverseBytes16 (deUint16 v)
+{
+	return (deUint16)((v << 8) | (v >> 8));
+}
+
 DE_INLINE deInt32 deSafeMul32 (deInt32 a, deInt32 b)
 {
 	deInt32 res = a * b;
diff --git a/framework/delibs/debase/deInt32Test.c b/framework/delibs/debase/deInt32Test.c
index 9291a1f..9d3d29a 100644
--- a/framework/delibs/debase/deInt32Test.c
+++ b/framework/delibs/debase/deInt32Test.c
@@ -168,6 +168,11 @@
 	DE_TEST_ASSERT(deSignExtendTo32((int)0x184A0, 17) == (int)0xFFFF84A0);
 	DE_TEST_ASSERT(deSignExtendTo32((int)0x7A016601, 32) == (int)0x7A016601);
 	DE_TEST_ASSERT(deSignExtendTo32((int)0x8A016601, 32) == (int)0x8A016601);
+
+	DE_TEST_ASSERT(deReverseBytes32(0x11223344) == 0x44332211);
+	DE_TEST_ASSERT(deReverseBytes32(0xfecddeef) == 0xefdecdfe);
+	DE_TEST_ASSERT(deReverseBytes16(0x1122) == 0x2211);
+	DE_TEST_ASSERT(deReverseBytes16(0xdeef) == 0xefde);
 }
 
 DE_END_EXTERN_C
diff --git a/framework/delibs/debase/deMath.c b/framework/delibs/debase/deMath.c
index 259286c..26e2aef 100644
--- a/framework/delibs/debase/deMath.c
+++ b/framework/delibs/debase/deMath.c
@@ -22,6 +22,7 @@
  *//*--------------------------------------------------------------------*/
 
 #include "deMath.h"
+#include "deInt32.h"
 
 #if (DE_COMPILER == DE_COMPILER_MSC)
 #	include <float.h>
@@ -133,3 +134,56 @@
 		return 2.0 * deRound(a / 2.0);
 	return deRound(a);
 }
+
+float deInt32ToFloatRoundToNegInf (deInt32 x)
+{
+	/* \note Sign bit is separate so the range is symmetric */
+	if (x >= -0xFFFFFF && x <= 0xFFFFFF)
+	{
+		/* 24 bits are representable (23 mantissa + 1 implicit). */
+		return (float)x;
+	}
+	else if (x != -0x7FFFFFFF - 1)
+	{
+		/* we are losing bits */
+		const int		exponent	= 31 - deClz32((deUint32)deAbs32(x));
+		const int		numLostBits	= exponent - 23;
+		const deUint32	lostMask	= deBitMask32(0, numLostBits);
+
+		DE_ASSERT(numLostBits > 0);
+
+		if (x > 0)
+		{
+			/* Mask out lost bits to floor to a representable value */
+			return (float)(deInt32)(~lostMask & (deUint32)x);
+		}
+		else if ((lostMask & (deUint32)-x) == 0u)
+		{
+			/* this was a representable value */
+			DE_ASSERT( (deInt32)(float)x == x );
+			return (float)x;
+		}
+		else
+		{
+			/* not representable, choose the next lower */
+			const float nearestHigher	= (float)-(deInt32)(~lostMask & (deUint32)-x);
+			const float oneUlp			= (float)(1u << (deUint32)numLostBits);
+			const float nearestLower	= nearestHigher - oneUlp;
+
+			/* check sanity */
+			DE_ASSERT((deInt32)(float)nearestHigher > (deInt32)(float)nearestLower);
+
+			return nearestLower;
+		}
+	}
+	else
+		return -(float)0x80000000u;
+}
+
+float deInt32ToFloatRoundToPosInf (deInt32 x)
+{
+	if (x == -0x7FFFFFFF - 1)
+		return -(float)0x80000000u;
+	else
+		return -deInt32ToFloatRoundToNegInf(-x);
+}
diff --git a/framework/delibs/debase/deMath.h b/framework/delibs/debase/deMath.h
index b6f5487..12b25a5 100644
--- a/framework/delibs/debase/deMath.h
+++ b/framework/delibs/debase/deMath.h
@@ -56,6 +56,8 @@
 deRoundingMode		deGetRoundingMode	(void);
 deBool				deSetRoundingMode	(deRoundingMode mode);
 
+void				deMath_selfTest		(void);
+
 /* Float properties */
 
 /* \note The NaN test probably won't work with -ffast-math */
@@ -186,11 +188,27 @@
 DE_INLINE deBool	deFloatCmpGT		(float a, float b)			{ return (a > b);  }
 DE_INLINE deBool	deFloatCmpGE		(float a, float b)			{ return (a >= b); }
 
+/* Convert int to float. If the value cannot be represented exactly in native single precision format, return
+ * either the nearest lower or the nearest higher representable value, chosen in an implementation-defined manner.
+ *
+ * \note Choosing either nearest lower or nearest higher means that implementation could for example consistently
+ *       choose the lower value, i.e. this function does not round towards nearest.
+ * \note Value returned is in native single precision format. For example with x86 extended precision, the value
+ *       returned might not be representable in IEEE single precision float.
+ */
+DE_INLINE float		deInt32ToFloat				(deInt32 x)					{ return (float)x; }
+
+/* Convert to float. If the value cannot be represented exactly in IEEE single precision floating point format,
+ * return the nearest lower (round towards negative inf). */
+float				deInt32ToFloatRoundToNegInf	(deInt32 x);
+
+/* Convert to float. If the value cannot be represented exactly IEEE single precision floating point format,
+ * return the nearest higher (round towards positive inf). */
+float				deInt32ToFloatRoundToPosInf	(deInt32 x);
+
 /* Conversion to integer. */
 
-DE_INLINE float		deInt32ToFloat		(deInt32 x)					{ return (float)x; }
 DE_INLINE deInt32	deChopFloatToInt32	(float x)					{ return (deInt32)x; }
-
 DE_INLINE deInt32	deFloorFloatToInt32	(float x)					{ return (deInt32)(deFloatFloor(x)); }
 DE_INLINE deInt32	deCeilFloatToInt32	(float x)					{ return (deInt32)(deFloatCeil(x)); }
 
diff --git a/framework/delibs/debase/deMathTest.c b/framework/delibs/debase/deMathTest.c
new file mode 100644
index 0000000..d8e73a7
--- /dev/null
+++ b/framework/delibs/debase/deMathTest.c
@@ -0,0 +1,107 @@
+/*-------------------------------------------------------------------------
+ * drawElements Base Portability Library
+ * -------------------------------------
+ *
+ * Copyright 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Testing of deMath functions.
+ *//*--------------------------------------------------------------------*/
+
+#include "deMath.h"
+#include "deRandom.h"
+
+DE_BEGIN_EXTERN_C
+
+static deBool conversionToFloatLosesPrecision (deInt32 x)
+{
+	if (x == -0x7FFFFFFF - 1)
+		return DE_FALSE;
+	else if (x < 0)
+		return conversionToFloatLosesPrecision(-x);
+	else if (x == 0)
+		return DE_FALSE;
+	else if (((deUint32)x & 0x1) == 0)
+		return conversionToFloatLosesPrecision(x >> 1); /* remove trailing zeros */
+	else
+		return x > ((1 << 24) - 1); /* remaining part does not fit in the mantissa? */
+}
+
+static void testSingleInt32ToFloat (deInt32 x)
+{
+	/* roundTowardsToNegInf(x) <= round(x) <= roundTowardsPosInf(x). */
+	/* \note: Need to use inequalities since round(x) returns arbitrary precision floats. */
+	DE_TEST_ASSERT(deInt32ToFloatRoundToNegInf(x) <= deInt32ToFloat(x));
+	DE_TEST_ASSERT(deInt32ToFloat(x) <= deInt32ToFloatRoundToPosInf(x));
+
+	/* if precision is lost, floor(x) < ceil(x). Else floor(x) == ceil(x) */
+	if (conversionToFloatLosesPrecision(x))
+		DE_TEST_ASSERT(deInt32ToFloatRoundToNegInf(x) < deInt32ToFloatRoundToPosInf(x));
+	else
+		DE_TEST_ASSERT(deInt32ToFloatRoundToNegInf(x) == deInt32ToFloatRoundToPosInf(x));
+
+	/* max one ulp from each other */
+	if (deInt32ToFloatRoundToNegInf(x) < deInt32ToFloatRoundToPosInf(x))
+	{
+		union
+		{
+			float f;
+			deInt32 u;
+		} v0, v1;
+
+		v0.f = deInt32ToFloatRoundToNegInf(x);
+		v1.f = deInt32ToFloatRoundToPosInf(x);
+
+		DE_TEST_ASSERT(v0.u + 1 == v1.u || v0.u == v1.u + 1);
+	}
+}
+
+static void testInt32ToFloat (void)
+{
+	const int	numIterations = 2500000;
+
+	int			sign;
+	int			numBits;
+	int			delta;
+	int			ndx;
+	deRandom	rnd;
+
+	deRandom_init(&rnd, 0xdeadbeefu-1);
+
+	for (sign = -1; sign < 1; ++sign)
+	for (numBits = 0; numBits < 32; ++numBits)
+	for (delta = -2; delta < 3; ++delta)
+	{
+		const deInt64 x = (deInt64)(sign == -1 ? (-1) : (+1)) * (1LL << (deInt64)numBits) + (deInt64)delta;
+
+		/* would overflow */
+		if (x > 0x7FFFFFFF || x < -0x7FFFFFFF - 1)
+			continue;
+
+		testSingleInt32ToFloat((deInt32)x);
+	}
+
+	for (ndx = 0; ndx < numIterations; ++ndx)
+		testSingleInt32ToFloat((deInt32)deRandom_getUint32(&rnd));
+}
+
+void deMath_selfTest (void)
+{
+	/* Test Int32ToFloat*(). */
+	testInt32ToFloat();
+}
+
+DE_END_EXTERN_C
diff --git a/framework/delibs/decpp/CMakeLists.txt b/framework/delibs/decpp/CMakeLists.txt
index 974c385..1d8bbf1 100644
--- a/framework/delibs/decpp/CMakeLists.txt
+++ b/framework/delibs/decpp/CMakeLists.txt
@@ -59,5 +59,21 @@
 	deSpinBarrier.hpp
 	)
 
+set(DECPP_LIBS
+	debase
+	depool
+	dethread
+	deutil
+	)
+
+# \note [pyry] Somewhat kludgy that toolchain file doesn't set it, but there is no easy way
+if (DE_OS_IS_ANDROID)
+	if (DEFINED ANDROID_CXX_LIBRARY)
+		set(DECPP_LIBS ${DECPP_LIBS} ${ANDROID_CXX_LIBRARY})
+	else ()
+		message(STATUS "Warning: ANDROID_CXX_LIBRARY not defined")
+	endif ()
+endif ()
+
 add_library(decpp STATIC ${DECPP_SRCS})
-target_link_libraries(decpp debase depool dethread deutil)
+target_link_libraries(decpp ${DECPP_LIBS})
diff --git a/framework/delibs/deimage/deImage.c b/framework/delibs/deimage/deImage.c
index 59f1233..ff8f9be 100644
--- a/framework/delibs/deimage/deImage.c
+++ b/framework/delibs/deimage/deImage.c
@@ -125,8 +125,8 @@
 	{
 		for (x = 0; x < dstWidth; x++)
 		{
-			float	xFloat	= (float)(x + 0.5f) / (float)dstWidth * (float)srcImage->width - 0.5f;
-			float	yFloat	= (float)(y + 0.5f) / (float)dstHeight * (float)srcImage->height - 0.5f;
+			float	xFloat	= ((float)x + 0.5f) / (float)dstWidth * (float)srcImage->width - 0.5f;
+			float	yFloat	= ((float)y + 0.5f) / (float)dstHeight * (float)srcImage->height - 0.5f;
 			int		xFixed	= deFloorFloatToInt32(xFloat * 256.0f);
 			int		yFixed	= deFloorFloatToInt32(yFloat * 256.0f);
 			int		xFactor	= (xFixed & 0xFF);
diff --git a/framework/delibs/deutil/deSocket.c b/framework/delibs/deutil/deSocket.c
index af5a179..ce8a1dd 100644
--- a/framework/delibs/deutil/deSocket.c
+++ b/framework/delibs/deutil/deSocket.c
@@ -24,6 +24,7 @@
 #include "deSocket.h"
 #include "deMemory.h"
 #include "deMutex.h"
+#include "deInt32.h"
 
 #if (DE_OS == DE_OS_WIN32)
 #	define DE_USE_WINSOCK
@@ -219,17 +220,27 @@
 
 /* Common socket functions. */
 
-static deUint16 deHostOrderShortToNetworkOrder (deUint16 v)
+static deUint16 deHostToNetworkOrder16 (deUint16 v)
 {
-	/*
-	 * On some platforms htons is defined as a macro which expands to something
-	 * that evaluates to some other type than uint16_t (i.e. does not conform
-	 * to POSIX-1-2001 or Winsock). Do a redundant uint16 conversion to work
-	 * around conversion warnings on these platforms.
-	 */
-	return (deUint16)htons(v);
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	return deReverseBytes16(v);
+#else
+	return v;
+#endif
 }
 
+static deUint16 deNetworkToHostOrder16 (deUint16 v)
+{
+#if (DE_ENDIANNESS == DE_LITTLE_ENDIAN)
+	return deReverseBytes16(v);
+#else
+	return v;
+#endif
+}
+
+DE_STATIC_ASSERT(sizeof(((struct sockaddr_in*)DE_NULL)->sin_port) == sizeof(deUint16));
+DE_STATIC_ASSERT(sizeof(((struct sockaddr_in6*)DE_NULL)->sin6_port) == sizeof(deUint16));
+
 static int deSocketFamilyToBsdFamily (deSocketFamily family)
 {
 	switch (family)
@@ -307,13 +318,13 @@
 		{
 			if (*bsdAddrLen < (NativeSocklen)sizeof(struct sockaddr_in))
 				return DE_FALSE;
-			((struct sockaddr_in*)bsdAddr)->sin_port = deHostOrderShortToNetworkOrder((deUint16)address->port);
+			((struct sockaddr_in*)bsdAddr)->sin_port = deHostToNetworkOrder16((deUint16)address->port);
 		}
 		else if (bsdAddr->sa_family == AF_INET6)
 		{
 			if (*bsdAddrLen < (NativeSocklen)sizeof(struct sockaddr_in6))
 				return DE_FALSE;
-			((struct sockaddr_in6*)bsdAddr)->sin6_port = deHostOrderShortToNetworkOrder((deUint16)address->port);
+			((struct sockaddr_in6*)bsdAddr)->sin6_port = deHostToNetworkOrder16((deUint16)address->port);
 		}
 		else
 			return DE_FALSE;
@@ -330,7 +341,7 @@
 			return DE_FALSE;
 		}
 
-		addr4->sin_port			= deHostOrderShortToNetworkOrder((deUint16)address->port);
+		addr4->sin_port			= deHostToNetworkOrder16((deUint16)address->port);
 		addr4->sin_family		= AF_INET;
 		addr4->sin_addr.s_addr	= INADDR_ANY;
 
@@ -348,7 +359,7 @@
 			return DE_FALSE;
 		}
 
-		addr6->sin6_port	= deHostOrderShortToNetworkOrder((deUint16)address->port);
+		addr6->sin6_port	= deHostToNetworkOrder16((deUint16)address->port);
 		addr6->sin6_family	= AF_INET6;
 
 		*bsdAddrLen	= (NativeSocklen)sizeof(struct sockaddr_in6);
@@ -369,7 +380,7 @@
 		DE_UNREF(addrLen);
 
 		deSocketAddress_setFamily(address, DE_SOCKETFAMILY_INET4);
-		deSocketAddress_setPort(address, ntohs(addr4->sin_port));
+		deSocketAddress_setPort(address, (int)deNetworkToHostOrder16((deUint16)addr4->sin_port));
 
 		{
 			char buf[16]; /* Max valid address takes 3*4 + 3 = 15 chars */
@@ -384,7 +395,7 @@
 		DE_UNREF(addrLen);
 
 		deSocketAddress_setFamily(address, DE_SOCKETFAMILY_INET6);
-		deSocketAddress_setPort(address, ntohs(addr6->sin6_port));
+		deSocketAddress_setPort(address, (int)deNetworkToHostOrder16((deUint16)addr6->sin6_port));
 
 		{
 			char buf[40]; /* Max valid address takes 8*4 + 7 = 39 chars */
diff --git a/framework/platform/android/tcuAndroidInternals.cpp b/framework/platform/android/tcuAndroidInternals.cpp
index 368f3e0..8590393 100644
--- a/framework/platform/android/tcuAndroidInternals.cpp
+++ b/framework/platform/android/tcuAndroidInternals.cpp
@@ -87,6 +87,12 @@
 	((ABIFptr)fptr)(memory, param1, param2, param3, param4);
 	return reinterpret_cast<RT*>(memory);
 #else
+	DE_UNREF(fptr);
+	DE_UNREF(memory);
+	DE_UNREF(param1);
+	DE_UNREF(param2);
+	DE_UNREF(param3);
+	DE_UNREF(param4);
 	TCU_THROW(NotSupportedError, "ABI not supported");
 	return DE_NULL;
 #endif
@@ -112,6 +118,8 @@
 	typedef void (*ABIFptr)(T* obj);
 	((ABIFptr)fptr)(obj);
 #else
+	DE_UNREF(fptr);
+	DE_UNREF(obj);
 	TCU_THROW(NotSupportedError, "ABI not supported");
 #endif
 }
diff --git a/modules/egl/teglNegativeApiTests.cpp b/modules/egl/teglNegativeApiTests.cpp
index 98e3f94..c2b7ebc 100644
--- a/modules/egl/teglNegativeApiTests.cpp
+++ b/modules/egl/teglNegativeApiTests.cpp
@@ -1362,7 +1362,7 @@
 				log << TestLog::Section("Test1", "EGL_BAD_PARAMETER is generated if engine is not a recognized marking engine and native rendering is supported by current surface");
 
 				eglWaitNative(-1);
-				expectEitherError(EGL_BAD_PARAMETER, EGL_NONE);
+				expectEitherError(EGL_BAD_PARAMETER, EGL_SUCCESS);
 
 				log << TestLog::EndSection;
 
diff --git a/modules/gles2/functional/es2fFloatStateQueryTests.cpp b/modules/gles2/functional/es2fFloatStateQueryTests.cpp
index 6903adb..32c6439 100644
--- a/modules/gles2/functional/es2fFloatStateQueryTests.cpp
+++ b/modules/gles2/functional/es2fFloatStateQueryTests.cpp
@@ -48,7 +48,8 @@
 namespace
 {
 
-const int FLOAT_EXPANSION_E = 0x3FFF;
+const int FLOAT_EXPANSION_E		= 0x03FF; // 10 bits error allowed, requires 22 accurate bits
+const int FLOAT_EXPANSION_E_64	= 0x07FF;
 
 GLint64 expandGLFloatToInteger (GLfloat f)
 {
@@ -476,8 +477,8 @@
 	using tcu::TestLog;
 	using tcu::toHex;
 
-	const GLint64 expectedGLStateMax = expandGLFloatToInteger(reference) + FLOAT_EXPANSION_E;
-	const GLint64 expectedGLStateMin = expandGLFloatToInteger(reference) - FLOAT_EXPANSION_E;
+	const GLint64 expectedGLStateMax = expandGLFloatToInteger(reference) + FLOAT_EXPANSION_E_64;
+	const GLint64 expectedGLStateMin = expandGLFloatToInteger(reference) - FLOAT_EXPANSION_E_64;
 
 	StateQueryMemoryWriteGuard<GLint64> state;
 	glGetInteger64v(name, &state);
@@ -503,13 +504,13 @@
 
 	const GLint64 referenceAsGLintMin[] =
 	{
-		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E_64
 	};
 	const GLint64 referenceAsGLintMax[] =
 	{
-		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E_64
 	};
 
 	StateQueryMemoryWriteGuard<GLint64[2]> floatVector2;
@@ -541,17 +542,17 @@
 
 	const GLint64 referenceAsGLintMin[] =
 	{
-		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference2) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference3) - FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference2) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference3) - FLOAT_EXPANSION_E_64
 	};
 	const GLint64 referenceAsGLintMax[] =
 	{
-		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference2) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference3) + FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference2) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference3) + FLOAT_EXPANSION_E_64
 	};
 
 	StateQueryMemoryWriteGuard<GLint64[4]> floatVector4;
diff --git a/modules/gles2/functional/es2fShaderTextureFunctionTests.cpp b/modules/gles2/functional/es2fShaderTextureFunctionTests.cpp
index 4f2366e..b926401 100644
--- a/modules/gles2/functional/es2fShaderTextureFunctionTests.cpp
+++ b/modules/gles2/functional/es2fShaderTextureFunctionTests.cpp
@@ -24,6 +24,7 @@
 #include "es2fShaderTextureFunctionTests.hpp"
 #include "glsShaderRenderCase.hpp"
 #include "glsShaderLibrary.hpp"
+#include "glsTextureTestUtil.hpp"
 #include "gluTexture.hpp"
 #include "gluTextureUtil.hpp"
 #include "tcuTextureUtil.hpp"
@@ -181,12 +182,6 @@
 using tcu::IVec3;
 using tcu::IVec4;
 
-inline float computeLodFromDerivates (float dudx, float dvdx, float dudy, float dvdy)
-{
-	float p = de::max(deFloatSqrt(dudx*dudx + dvdx*dvdx), deFloatSqrt(dudy*dudy + dvdy*dvdy));
-	return deFloatLog2(p);
-}
-
 typedef void (*TexEvalFunc) (gls::ShaderEvalContext& c, const TexLookupParams& lookupParams);
 
 inline Vec4 texture2D		(const gls::ShaderEvalContext& c, float s, float t, float lod)			{ return c.textures[0].tex2D->sample(c.textures[0].sampler, s, t, lod);			}
@@ -356,7 +351,7 @@
 			// Compute LOD.
 			float dudx = (m_lookupSpec.maxCoord[0]-m_lookupSpec.minCoord[0])*proj*(float)m_textureSpec.width	/ (float)viewportSize[0];
 			float dvdy = (m_lookupSpec.maxCoord[1]-m_lookupSpec.minCoord[1])*proj*(float)m_textureSpec.height	/ (float)viewportSize[1];
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, 0.0f, dvdy);
+			m_lookupParams.lod = gls::TextureTestUtil::computeLodFromDerivates(gls::TextureTestUtil::LODMODE_EXACT, dudx, 0.0f, 0.0f, dvdy);
 
 			// Append to texture list.
 			m_textures.push_back(gls::TextureBinding(m_texture2D, m_textureSpec.sampler));
@@ -402,7 +397,7 @@
 			float						dudx	= (c10.s - c00.s)*(float)m_textureSpec.width	/ (float)viewportSize[0];
 			float						dvdy	= (c01.t - c00.t)*(float)m_textureSpec.height	/ (float)viewportSize[1];
 
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, 0.0f, dvdy);
+			m_lookupParams.lod = gls::TextureTestUtil::computeLodFromDerivates(gls::TextureTestUtil::LODMODE_EXACT, dudx, 0.0f, 0.0f, dvdy);
 
 			m_textures.push_back(gls::TextureBinding(m_textureCube, m_textureSpec.sampler));
 			break;
diff --git a/modules/gles2/functional/es2fTextureCompletenessTests.cpp b/modules/gles2/functional/es2fTextureCompletenessTests.cpp
index 3f06fd5..55443fe 100644
--- a/modules/gles2/functional/es2fTextureCompletenessTests.cpp
+++ b/modules/gles2/functional/es2fTextureCompletenessTests.cpp
@@ -60,7 +60,6 @@
 using gls::TextureTestUtil::TextureRenderer;
 using gls::TextureTestUtil::computeQuadTexCoord2D;
 using gls::TextureTestUtil::computeQuadTexCoordCube;
-using gls::TextureTestUtil::clear;
 
 static const GLenum s_cubeTargets[] =
 {
diff --git a/modules/gles2/performance/es2pShaderCompilationCases.cpp b/modules/gles2/performance/es2pShaderCompilationCases.cpp
index 21ec8ef..7a921ba 100644
--- a/modules/gles2/performance/es2pShaderCompilationCases.cpp
+++ b/modules/gles2/performance/es2pShaderCompilationCases.cpp
@@ -285,7 +285,7 @@
 static string getShaderInfoLog (const glw::Functions& gl, deUint32 shader)
 {
 	string			result;
-	int				infoLogLen;
+	int				infoLogLen = 0;
 	vector<char>	infoLogBuf;
 
 	gl.getShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLen);
@@ -299,7 +299,7 @@
 static string getProgramInfoLog (const glw::Functions& gl, deUint32 program)
 {
 	string			result;
-	int				infoLogLen;
+	int				infoLogLen = 0;
 	vector<char>	infoLogBuf;
 
 	gl.getProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLen);
@@ -1710,7 +1710,7 @@
 bool ShaderCompilerCase::compileShader (deUint32 shader) const
 {
 	const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-	GLint status;
+	GLint status = 0;
 	gl.compileShader(shader);
 	gl.getShaderiv(shader, GL_COMPILE_STATUS, &status);
 	return status != 0;
@@ -1719,7 +1719,7 @@
 bool ShaderCompilerCase::linkAndUseProgram (deUint32 program) const
 {
 	const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-	GLint linkStatus;
+	GLint linkStatus = 0;
 
 	gl.linkProgram(program);
 	gl.getProgramiv(program, GL_LINK_STATUS, &linkStatus);
diff --git a/modules/gles2/scripts/gen-conversions.py b/modules/gles2/scripts/gen-conversions.py
index c664209..cffcffe 100644
--- a/modules/gles2/scripts/gen-conversions.py
+++ b/modules/gles2/scripts/gen-conversions.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import random
 import operator
diff --git a/modules/gles2/scripts/gen-keywords.py b/modules/gles2/scripts/gen-keywords.py
index c036011..3faf836 100644
--- a/modules/gles2/scripts/gen-keywords.py
+++ b/modules/gles2/scripts/gen-keywords.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 from genutil import *
 
diff --git a/modules/gles2/scripts/gen-qualification_order.py b/modules/gles2/scripts/gen-qualification_order.py
index 327eda7..d35d056 100644
--- a/modules/gles2/scripts/gen-qualification_order.py
+++ b/modules/gles2/scripts/gen-qualification_order.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import itertools
 from collections import namedtuple
diff --git a/modules/gles2/scripts/gen-reserved_operators.py b/modules/gles2/scripts/gen-reserved_operators.py
index 11f33f7..4b3fc18 100644
--- a/modules/gles2/scripts/gen-reserved_operators.py
+++ b/modules/gles2/scripts/gen-reserved_operators.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 from genutil import *
 
diff --git a/modules/gles2/scripts/gen-swizzles.py b/modules/gles2/scripts/gen-swizzles.py
index e0b0a5d..4b9da5e 100644
--- a/modules/gles2/scripts/gen-swizzles.py
+++ b/modules/gles2/scripts/gen-swizzles.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import random
 import operator
diff --git a/modules/gles2/tes2CapabilityTests.cpp b/modules/gles2/tes2CapabilityTests.cpp
index b40a763..0e38b38 100644
--- a/modules/gles2/tes2CapabilityTests.cpp
+++ b/modules/gles2/tes2CapabilityTests.cpp
@@ -52,7 +52,7 @@
 
 	IterateResult iterate (void)
 	{
-		GLint value;
+		GLint value = 0;
 		GLU_CHECK_CALL(glGetIntegerv(m_param, &value));
 
 		m_testCtx.getLog() << TestLog::Message << glu::getParamQueryStr(m_param) << " = " << value << TestLog::EndMessage;
diff --git a/modules/gles3/functional/es3fDrawTests.cpp b/modules/gles3/functional/es3fDrawTests.cpp
index 54f0ece..f3a1e37 100644
--- a/modules/gles3/functional/es3fDrawTests.cpp
+++ b/modules/gles3/functional/es3fDrawTests.cpp
@@ -780,22 +780,30 @@
 	tcu::Surface error			(image.getWidth(), image.getHeight());
 	bool isOk					= true;
 
-	for (int y = 1; y < image.getHeight()-1; y++)
-	for (int x = 1; x < image.getWidth()-1; x++)
+	for (int y = 0; y < image.getHeight(); y++)
+	for (int x = 0; x < image.getWidth(); x++)
 	{
-		const tcu::RGBA pixel = image.getPixel(x, y);
-		bool pixelOk = true;
+		if (x == 0 || y == 0 || y + 1 == image.getHeight() || x + 1 == image.getWidth())
+		{
+			// Background color might bleed in at the borders with msaa
+			error.setPixel(x, y, tcu::RGBA(0, 255, 0, 255));
+		}
+		else
+		{
+			const tcu::RGBA pixel = image.getPixel(x, y);
+			bool pixelOk = true;
 
-		// Any pixel with !(G ~= 255) is faulty (not a linear combinations of green and yellow)
-		if (de::abs(pixel.getGreen() - 255) > colorThreshold)
-			pixelOk = false;
+			// Any pixel with !(G ~= 255) is faulty (not a linear combinations of green and yellow)
+			if (de::abs(pixel.getGreen() - 255) > colorThreshold)
+				pixelOk = false;
 
-		// Any pixel with !(B ~= 0) is faulty (not a linear combinations of green and yellow)
-		if (de::abs(pixel.getBlue() - 0) > colorThreshold)
-			pixelOk = false;
+			// Any pixel with !(B ~= 0) is faulty (not a linear combinations of green and yellow)
+			if (de::abs(pixel.getBlue() - 0) > colorThreshold)
+				pixelOk = false;
 
-		error.setPixel(x, y, (pixelOk) ? (tcu::RGBA(0, 255, 0, 255)) : (tcu::RGBA(255, 0, 0, 255)));
-		isOk = isOk && pixelOk;
+			error.setPixel(x, y, (pixelOk) ? (tcu::RGBA(0, 255, 0, 255)) : (tcu::RGBA(255, 0, 0, 255)));
+			isOk = isOk && pixelOk;
+		}
 	}
 
 	if (!isOk)
diff --git a/modules/gles3/functional/es3fFloatStateQueryTests.cpp b/modules/gles3/functional/es3fFloatStateQueryTests.cpp
index 4c7f7a4..36a0615 100644
--- a/modules/gles3/functional/es3fFloatStateQueryTests.cpp
+++ b/modules/gles3/functional/es3fFloatStateQueryTests.cpp
@@ -48,7 +48,8 @@
 namespace
 {
 
-const int FLOAT_EXPANSION_E = 0x03FF;
+const int FLOAT_EXPANSION_E		= 0x03FF; // 10 bits error allowed, requires 22 accurate bits
+const int FLOAT_EXPANSION_E_64	= 0x07FF;
 
 GLint64 expandGLFloatToInteger (GLfloat f)
 {
@@ -536,8 +537,8 @@
 	if (!state.verifyValidity(testCtx))
 		return;
 
-	const GLint64 expectedGLStateMax = expandGLFloatToInteger(reference) + FLOAT_EXPANSION_E;
-	const GLint64 expectedGLStateMin = expandGLFloatToInteger(reference) - FLOAT_EXPANSION_E;
+	const GLint64 expectedGLStateMax = expandGLFloatToInteger(reference) + FLOAT_EXPANSION_E_64;
+	const GLint64 expectedGLStateMin = expandGLFloatToInteger(reference) - FLOAT_EXPANSION_E_64;
 
 	if (state < expectedGLStateMin || state > expectedGLStateMax)
 	{
@@ -563,13 +564,13 @@
 
 	const GLint64 referenceAsGLintMin[] =
 	{
-		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E_64
 	};
 	const GLint64 referenceAsGLintMax[] =
 	{
-		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E_64
 	};
 
 	if (floatVector2[0] < referenceAsGLintMin[0] || floatVector2[0] > referenceAsGLintMax[0] ||
@@ -601,17 +602,17 @@
 
 	const GLint64 referenceAsGLintMin[] =
 	{
-		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference2) - FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference3) - FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference2) - FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference3) - FLOAT_EXPANSION_E_64
 	};
 	const GLint64 referenceAsGLintMax[] =
 	{
-		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference2) + FLOAT_EXPANSION_E,
-		expandGLFloatToInteger(reference3) + FLOAT_EXPANSION_E
+		expandGLFloatToInteger(reference0) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference1) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference2) + FLOAT_EXPANSION_E_64,
+		expandGLFloatToInteger(reference3) + FLOAT_EXPANSION_E_64
 	};
 
 	if (floatVector4[0] < referenceAsGLintMin[0] || floatVector4[0] > referenceAsGLintMax[0] ||
diff --git a/modules/gles3/functional/es3fNegativeTextureApiTests.cpp b/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
index 93103a8..3164300 100644
--- a/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
+++ b/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
@@ -508,14 +508,20 @@
 					const GLuint 				format 		= s_astcFormats[formatNdx];
 					const CompressedTexFormat 	tcuFormat 	= mapGLCompressedTexFormat(format);
 					const IVec3 				blockPixels = getBlockPixelSize(tcuFormat);
-					const size_t 				blockBytes 	= getBlockSize(tcuFormat);
-					const vector<deUint8>		dummyData	(blockBytes);
+					{
+						const size_t 			blockBytes 	= getBlockSize(tcuFormat);
+						const vector<deUint8>	dummyData	(blockBytes);
 
-					glCompressedTexImage2D(GL_TEXTURE_2D, 0, format, blockPixels.x(), blockPixels.y(), 0, (int)blockBytes, &dummyData[0]);
-					expectError(GL_INVALID_ENUM);
+						glCompressedTexImage2D(GL_TEXTURE_2D, 0, format, blockPixels.x(), blockPixels.y(), 0, (int)blockBytes, &dummyData[0]);
+						expectError(GL_INVALID_ENUM);
+					}
 					FOR_CUBE_FACES(faceGL,
 					{
-						glCompressedTexImage2D(faceGL, 0, format, blockPixels.x(), blockPixels.y(), 0, (int)blockBytes, &dummyData[0]);
+						const deInt32 			cubeSize 	= blockPixels.x() * blockPixels.y(); // Divisible by the block size and square
+						const size_t 			blockBytes 	= getBlockSize(tcuFormat) * cubeSize; // We have a x * y grid of blocks
+						const vector<deUint8>	dummyData	(blockBytes);
+
+						glCompressedTexImage2D(faceGL, 0, format, cubeSize, cubeSize, 0, (int)blockBytes, &dummyData[0]);
 						expectError(GL_INVALID_ENUM);
 					});
 				}
@@ -2674,7 +2680,7 @@
 				const GLuint requiredError = m_context.getContextInfo().isExtensionSupported("GL_KHR_texture_compression_astc_ldr") ? GL_INVALID_OPERATION : GL_INVALID_ENUM;
 
 				if (requiredError == GL_INVALID_OPERATION)
-					m_log.writeMessage("GL_INVALID_OPERATION should be generated if TEXTURE_3D works with LDR ASTC.");
+					m_log.writeMessage("GL_INVALID_OPERATION should be generated if using TEXTURE_3D with LDR ASTC.");
 				else
 					m_log.writeMessage("GL_INVALID_ENUM should be generated if no ASTC extensions are present.");
 
@@ -2988,19 +2994,32 @@
 			}
 			else
 			{
-				m_log.writeMessage("GL_INVALID_ENUM should be generated if no ASTC extensions are present.");
+				// In earlier tests both codes are accepted for invalid target format.
+				m_log.writeMessage("GL_INVALID_ENUM or GL_INVALID_VALUE should be generated if no ASTC extensions are present.");
 
 				for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(s_astcFormats); formatNdx++)
 				{
 					const GLuint 				format 		= s_astcFormats[formatNdx];
 					const CompressedTexFormat 	tcuFormat 	= mapGLCompressedTexFormat(format);
 					const IVec3 				blockPixels = getBlockPixelSize(tcuFormat);
+					const deInt32				cubeSize 	= blockPixels.x() * blockPixels.y(); // Divisible by the block size and square
+					deUint32					texture		= 0;
 
-					glTexStorage2D(GL_TEXTURE_2D, 1, format, blockPixels.x(), blockPixels.y());
-					expectError(GL_INVALID_ENUM);
+					glGenTextures	(1, &texture);
+					glBindTexture	(GL_TEXTURE_2D, texture);
 
-					glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, format, blockPixels.x(), blockPixels.y());
-					expectError(GL_INVALID_ENUM);
+					glTexStorage2D	(GL_TEXTURE_2D, 1, format, blockPixels.x(), blockPixels.y());
+					expectError		(GL_INVALID_ENUM, GL_INVALID_VALUE);
+
+					glDeleteTextures(1, &texture);
+
+					glGenTextures	(1, &texture);
+					glBindTexture	(GL_TEXTURE_CUBE_MAP, texture);
+
+					glTexStorage2D	(GL_TEXTURE_CUBE_MAP, 1, format, cubeSize, cubeSize);
+					expectError		(GL_INVALID_ENUM, GL_INVALID_VALUE);
+
+					glDeleteTextures(1, &texture);
 				}
 			}
 		});
@@ -3114,21 +3133,31 @@
 			}
 			else
 			{
-				const GLuint requiredError = m_context.getContextInfo().isExtensionSupported("GL_KHR_texture_compression_astc_ldr") ? GL_INVALID_OPERATION : GL_INVALID_ENUM;
-
-				if (requiredError == GL_INVALID_OPERATION)
-					m_log.writeMessage("GL_INVALID_OPERATION should be generated if TEXTURE_3D works with LDR.");
+				const bool ldrAstcSupported = m_context.getContextInfo().isExtensionSupported("GL_KHR_texture_compression_astc_ldr");
+				if (ldrAstcSupported)
+					m_log.writeMessage("GL_INVALID_OPERATION should be generated if using TEXTURE_3D with LDR.");
 				else
-					m_log.writeMessage("GL_INVALID_ENUM should be generated if no ASTC extensions are present.");
+					// In earlier tests both codes are accepted for invalid target format.
+					m_log.writeMessage("GL_INVALID_ENUM or GL_INVALID_VALUE should be generated if no ASTC extensions are present.");
 
 				for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(s_astcFormats); formatNdx++)
 				{
 					const GLuint 				format 		= s_astcFormats[formatNdx];
 					const CompressedTexFormat 	tcuFormat 	= mapGLCompressedTexFormat(format);
 					const IVec3 				blockPixels = getBlockPixelSize(tcuFormat);
+					deUint32					texture		= 0;
 
-					glTexStorage3D(GL_TEXTURE_3D, 1, format, blockPixels.x(), blockPixels.y(), blockPixels.z());
-					expectError(requiredError);
+					glGenTextures	(1, &texture);
+					glBindTexture	(GL_TEXTURE_3D, texture);
+
+					glTexStorage3D	(GL_TEXTURE_3D, 1, format, blockPixels.x(), blockPixels.y(), blockPixels.z());
+
+					if (ldrAstcSupported)
+						expectError(GL_INVALID_OPERATION);
+					else
+						expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
+
+					glDeleteTextures(1, &texture);
 				}
 			}
 		});
diff --git a/modules/gles3/functional/es3fShaderBuiltinVarTests.cpp b/modules/gles3/functional/es3fShaderBuiltinVarTests.cpp
index 7874059..7cb6f4f 100644
--- a/modules/gles3/functional/es3fShaderBuiltinVarTests.cpp
+++ b/modules/gles3/functional/es3fShaderBuiltinVarTests.cpp
@@ -73,7 +73,7 @@
 	int value = -1;
 	gl.getIntegerv(pname, &value);
 	GLU_EXPECT_NO_ERROR(gl.getError(), ("glGetIntegerv(" + glu::getGettableStateStr((int)pname).toString() + ")").c_str());
-	TCU_CHECK_MSG(value%4 == 0, ("Expected " + glu::getGettableStateStr((int)pname).toString() + " to be divisible by 4").c_str());
+	// Accept truncated division. According to the spec, the number of vectors is number of components divided by four, plain and simple.
 	return value/4;
 }
 
diff --git a/modules/gles3/functional/es3fShaderDerivateTests.cpp b/modules/gles3/functional/es3fShaderDerivateTests.cpp
index 508cfc8..ed49d28 100644
--- a/modules/gles3/functional/es3fShaderDerivateTests.cpp
+++ b/modules/gles3/functional/es3fShaderDerivateTests.cpp
@@ -267,7 +267,7 @@
 	return getSingleULPForExponent(exp, numMantissaBits);
 }
 
-static float convertFloorFlushToZero (float value, int minExponent, int numAccurateBits)
+static float convertFloatFlushToZeroRtn (float value, int minExponent, int numAccurateBits)
 {
 	if (value == 0.0f)
 	{
@@ -308,9 +308,9 @@
 	}
 }
 
-static float convertCeilFlushToZero (float value, int minExponent, int numAccurateBits)
+static float convertFloatFlushToZeroRtp (float value, int minExponent, int numAccurateBits)
 {
-	return -convertFloorFlushToZero(-value, minExponent, numAccurateBits);
+	return -convertFloatFlushToZeroRtn(-value, minExponent, numAccurateBits);
 }
 
 static float addErrorUlp (float value, float numUlps, int numMantissaBits)
@@ -489,11 +489,11 @@
 		// check components separately
 		for (int c = 0; c < numComponents; ++c)
 		{
-			// interpolation value range
-			const tcu::Interval	forwardComponent		(convertFloorFlushToZero(functionValueForward[c], minExponent, numVaryingSampleBits),
-														 convertCeilFlushToZero(functionValueForward[c], minExponent, numVaryingSampleBits));
-			const tcu::Interval	backwardComponent		(convertFloorFlushToZero(functionValueBackward[c], minExponent, numVaryingSampleBits),
-														 convertCeilFlushToZero(functionValueBackward[c], minExponent, numVaryingSampleBits));
+			// Simulate interpolation. Add allowed interpolation error and round to target precision. Allow one half ULP (i.e. correct rounding)
+			const tcu::Interval	forwardComponent		(convertFloatFlushToZeroRtn(addErrorUlp((float)functionValueForward[c],  -0.5f, numVaryingSampleBits), minExponent, numBits),
+														 convertFloatFlushToZeroRtp(addErrorUlp((float)functionValueForward[c],  +0.5f, numVaryingSampleBits), minExponent, numBits));
+			const tcu::Interval	backwardComponent		(convertFloatFlushToZeroRtn(addErrorUlp((float)functionValueBackward[c], -0.5f, numVaryingSampleBits), minExponent, numBits),
+														 convertFloatFlushToZeroRtp(addErrorUlp((float)functionValueBackward[c], +0.5f, numVaryingSampleBits), minExponent, numBits));
 			const int			maxValueExp				= de::max(de::max(tcu::Float32(forwardComponent.lo()).exponent(),   tcu::Float32(forwardComponent.hi()).exponent()),
 																  de::max(tcu::Float32(backwardComponent.lo()).exponent(),  tcu::Float32(backwardComponent.hi()).exponent()));
 
@@ -508,12 +508,12 @@
 			const int			numeratorLoBits			= de::max(0, numBits - numeratorLoBitsLost);
 			const int			numeratorHiBits			= de::max(0, numBits - numeratorHiBitsLost);
 
-			const tcu::Interval	numeratorRange			(convertFloorFlushToZero((float)numerator.lo(), minExponent, numeratorLoBits),
-														 convertCeilFlushToZero((float)numerator.hi(), minExponent, numeratorHiBits));
+			const tcu::Interval	numeratorRange			(convertFloatFlushToZeroRtn((float)numerator.lo(), minExponent, numeratorLoBits),
+														 convertFloatFlushToZeroRtp((float)numerator.hi(), minExponent, numeratorHiBits));
 
 			const tcu::Interval	divisionRange			= numeratorRange / 3.0f; // legal sample area is anywhere within this and neighboring pixels (i.e. size = 3)
-			const tcu::Interval	divisionResultRange		(convertFloorFlushToZero(addErrorUlp((float)divisionRange.lo(), -divisionErrorUlps, numBits), minExponent, numBits),
-														 convertCeilFlushToZero(addErrorUlp((float)divisionRange.hi(), +divisionErrorUlps, numBits), minExponent, numBits));
+			const tcu::Interval	divisionResultRange		(convertFloatFlushToZeroRtn(addErrorUlp((float)divisionRange.lo(), -divisionErrorUlps, numBits), minExponent, numBits),
+														 convertFloatFlushToZeroRtp(addErrorUlp((float)divisionRange.hi(), +divisionErrorUlps, numBits), minExponent, numBits));
 			const tcu::Interval	finalResultRange		(divisionResultRange.lo() - surfaceThreshold[c], divisionResultRange.hi() + surfaceThreshold[c]);
 
 			if (resultDerivative[c] >= finalResultRange.lo() && resultDerivative[c] <= finalResultRange.hi())
diff --git a/modules/gles3/functional/es3fShaderOperatorTests.cpp b/modules/gles3/functional/es3fShaderOperatorTests.cpp
index f74dc7a..4ead3ea 100644
--- a/modules/gles3/functional/es3fShaderOperatorTests.cpp
+++ b/modules/gles3/functional/es3fShaderOperatorTests.cpp
@@ -1717,7 +1717,7 @@
 		<< BuiltinFuncInfo("tanh",			"tanh",			GT,	Value(GT, -1.5f, 5.5f),		notUsed,					notUsed,					0.5f, 0.5f,		PRECMASK_LOWP,				FLOAT_GENTYPE_FUNCS(tanh) )
 		<< BuiltinFuncInfo("asinh",			"asinh",		GT,	Value(GT, -1.0f, 1.0f),		notUsed,					notUsed,					1.0f, 0.0f,		PRECMASK_MEDIUMP_HIGHP,		FLOAT_GENTYPE_FUNCS(asinh) )
 		<< BuiltinFuncInfo("acosh",			"acosh",		GT,	Value(GT, 1.0f, 2.2f),		notUsed,					notUsed,					1.0f, 0.0f,		PRECMASK_MEDIUMP_HIGHP,		FLOAT_GENTYPE_FUNCS(acosh) )
-		<< BuiltinFuncInfo("atanh",			"atanh",		GT,	Value(GT, -1.0f, 1.0f),		notUsed,					notUsed,					1.0f, 0.0f,		PRECMASK_MEDIUMP_HIGHP,		FLOAT_GENTYPE_FUNCS(atanh) )
+		<< BuiltinFuncInfo("atanh",			"atanh",		GT,	Value(GT, -0.99f, 0.99f),	notUsed,					notUsed,					1.0f, 0.0f,		PRECMASK_MEDIUMP_HIGHP,		FLOAT_GENTYPE_FUNCS(atanh) )
 	);
 
 	// 8.2 Exponential Functions.
diff --git a/modules/gles3/functional/es3fShaderPrecisionTests.cpp b/modules/gles3/functional/es3fShaderPrecisionTests.cpp
index a030b32..2ca18da 100644
--- a/modules/gles3/functional/es3fShaderPrecisionTests.cpp
+++ b/modules/gles3/functional/es3fShaderPrecisionTests.cpp
@@ -331,8 +331,8 @@
 	{
 		const deUint64	refBits				= tcu::Float64(reference).bits();
 		const deUint64	resBits				= tcu::Float64(result).bits();
-		const deUint64	accurateRefBits		= maskBits < 32 ? refBits >> maskBits : 0u;
-		const deUint64	accurateResBits		= maskBits < 32 ? resBits >> maskBits : 0u;
+		const deUint64	accurateRefBits		= maskBits < 64 ? refBits >> (deUint64)maskBits : 0u;
+		const deUint64	accurateResBits		= maskBits < 64 ? resBits >> (deUint64)maskBits : 0u;
 		const deUint64	ulpDiff				= (deUint64)de::abs((deInt64)accurateRefBits - (deInt64)accurateResBits);
 
 		if (ulpDiff > (deUint64)roundingUlpError)
diff --git a/modules/gles3/functional/es3fShaderTextureFunctionTests.cpp b/modules/gles3/functional/es3fShaderTextureFunctionTests.cpp
index b447370..c6e6735 100644
--- a/modules/gles3/functional/es3fShaderTextureFunctionTests.cpp
+++ b/modules/gles3/functional/es3fShaderTextureFunctionTests.cpp
@@ -24,6 +24,7 @@
 #include "es3fShaderTextureFunctionTests.hpp"
 #include "glsShaderRenderCase.hpp"
 #include "glsShaderLibrary.hpp"
+#include "glsTextureTestUtil.hpp"
 #include "gluTexture.hpp"
 #include "gluTextureUtil.hpp"
 #include "gluPixelTransfer.hpp"
@@ -50,6 +51,8 @@
 namespace
 {
 
+using gls::TextureTestUtil::computeLodFromDerivates;
+
 enum Function
 {
 	FUNCTION_TEXTURE = 0,		//!< texture(), textureOffset()
@@ -237,86 +240,20 @@
 using tcu::IVec3;
 using tcu::IVec4;
 
-enum LodMode
-{
-	LODMODE_EXACT = 0,
-	LODMODE_MIN_BOUND,
-	LODMODE_MAX_BOUND,
-
-	LODMODE_LAST
-};
-
-static const LodMode DEFAULT_LOD_MODE = LODMODE_EXACT;
-
-inline float computeLodFromDerivates (float dudx, float dvdx, float dudy, float dvdy)
-{
-	const LodMode	mode	= DEFAULT_LOD_MODE;
-	float			p;
-
-	switch (mode)
-	{
-		case LODMODE_EXACT:
-			p = de::max(deFloatSqrt(dudx*dudx + dvdx*dvdx), deFloatSqrt(dudy*dudy + dvdy*dvdy));
-			break;
-
-		case LODMODE_MIN_BOUND:
-		case LODMODE_MAX_BOUND:
-		{
-			float mu = de::max(deFloatAbs(dudx), deFloatAbs(dudy));
-			float mv = de::max(deFloatAbs(dvdx), deFloatAbs(dvdy));
-
-			p = mode == LODMODE_MIN_BOUND ? de::max(mu, mv) : mu + mv;
-			break;
-		}
-
-		default:
-			DE_ASSERT(DE_FALSE);
-	}
-
-	return deFloatLog2(p);
-}
-
-inline float computeLodFromDerivates (float dudx, float dvdx, float dwdx, float dudy, float dvdy, float dwdy)
-{
-	const LodMode	mode	= DEFAULT_LOD_MODE;
-	float			p;
-
-	switch (mode)
-	{
-		case LODMODE_EXACT:
-			p = de::max(deFloatSqrt(dudx*dudx + dvdx*dvdx + dwdx*dwdx), deFloatSqrt(dudy*dudy + dvdy*dvdy + dwdy*dwdy));
-			break;
-
-		case LODMODE_MIN_BOUND:
-		case LODMODE_MAX_BOUND:
-		{
-			float mu = de::max(deFloatAbs(dudx), deFloatAbs(dudy));
-			float mv = de::max(deFloatAbs(dvdx), deFloatAbs(dvdy));
-			float mw = de::max(deFloatAbs(dwdx), deFloatAbs(dwdy));
-
-			p = mode == LODMODE_MIN_BOUND ? de::max(de::max(mu, mv), mw) : (mu + mv + mw);
-			break;
-		}
-
-		default:
-			DE_ASSERT(DE_FALSE);
-	}
-
-	return deFloatLog2(p);
-}
+static const gls::TextureTestUtil::LodMode DEFAULT_LOD_MODE = gls::TextureTestUtil::LODMODE_EXACT;
 
 inline float computeLodFromGrad2D (const gls::ShaderEvalContext& c)
 {
 	float w = (float)c.textures[0].tex2D->getWidth();
 	float h = (float)c.textures[0].tex2D->getHeight();
-	return computeLodFromDerivates(c.in[1].x()*w, c.in[1].y()*h, c.in[2].x()*w, c.in[2].y()*h);
+	return computeLodFromDerivates(DEFAULT_LOD_MODE, c.in[1].x()*w, c.in[1].y()*h, c.in[2].x()*w, c.in[2].y()*h);
 }
 
 inline float computeLodFromGrad2DArray (const gls::ShaderEvalContext& c)
 {
 	float w = (float)c.textures[0].tex2DArray->getWidth();
 	float h = (float)c.textures[0].tex2DArray->getHeight();
-	return computeLodFromDerivates(c.in[1].x()*w, c.in[1].y()*h, c.in[2].x()*w, c.in[2].y()*h);
+	return computeLodFromDerivates(DEFAULT_LOD_MODE, c.in[1].x()*w, c.in[1].y()*h, c.in[2].x()*w, c.in[2].y()*h);
 }
 
 inline float computeLodFromGrad3D (const gls::ShaderEvalContext& c)
@@ -324,7 +261,7 @@
 	float w = (float)c.textures[0].tex3D->getWidth();
 	float h = (float)c.textures[0].tex3D->getHeight();
 	float d = (float)c.textures[0].tex3D->getDepth();
-	return computeLodFromDerivates(c.in[1].x()*w, c.in[1].y()*h, c.in[1].z()*d, c.in[2].x()*w, c.in[2].y()*h, c.in[2].z()*d);
+	return computeLodFromDerivates(DEFAULT_LOD_MODE, c.in[1].x()*w, c.in[1].y()*h, c.in[1].z()*d, c.in[2].x()*w, c.in[2].y()*h, c.in[2].z()*d);
 }
 
 inline float computeLodFromGradCube (const gls::ShaderEvalContext& c)
@@ -334,7 +271,7 @@
 	float d = (float)c.textures[0].texCube->getSize();
 	float s = d/(2.0f*m);
 	float t = d/(2.0f*m);
-	return computeLodFromDerivates(c.in[1].x()*s, c.in[1].y()*t, c.in[2].x()*s, c.in[2].y()*t);
+	return computeLodFromDerivates(DEFAULT_LOD_MODE, c.in[1].x()*s, c.in[1].y()*t, c.in[2].x()*s, c.in[2].y()*t);
 }
 
 typedef void (*TexEvalFunc) (gls::ShaderEvalContext& c, const TexLookupParams& lookupParams);
@@ -660,7 +597,7 @@
 			// Compute LOD.
 			float dudx = (m_lookupSpec.maxCoord[0]-m_lookupSpec.minCoord[0])*proj*(float)m_textureSpec.width	/ (float)viewportSize[0];
 			float dvdy = (m_lookupSpec.maxCoord[1]-m_lookupSpec.minCoord[1])*proj*(float)m_textureSpec.height	/ (float)viewportSize[1];
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, 0.0f, dvdy);
+			m_lookupParams.lod = computeLodFromDerivates(DEFAULT_LOD_MODE, dudx, 0.0f, 0.0f, dvdy);
 
 			// Append to texture list.
 			m_textures.push_back(gls::TextureBinding(m_texture2D, m_textureSpec.sampler));
@@ -719,7 +656,7 @@
 			float						dudx	= (c10.s - c00.s)*(float)m_textureSpec.width	/ (float)viewportSize[0];
 			float						dvdy	= (c01.t - c00.t)*(float)m_textureSpec.height	/ (float)viewportSize[1];
 
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, 0.0f, dvdy);
+			m_lookupParams.lod = computeLodFromDerivates(DEFAULT_LOD_MODE, dudx, 0.0f, 0.0f, dvdy);
 
 			m_textures.push_back(gls::TextureBinding(m_textureCube, m_textureSpec.sampler));
 			break;
@@ -754,7 +691,7 @@
 			// Compute LOD.
 			float dudx = (m_lookupSpec.maxCoord[0]-m_lookupSpec.minCoord[0])*proj*(float)m_textureSpec.width	/ (float)viewportSize[0];
 			float dvdy = (m_lookupSpec.maxCoord[1]-m_lookupSpec.minCoord[1])*proj*(float)m_textureSpec.height	/ (float)viewportSize[1];
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, 0.0f, dvdy);
+			m_lookupParams.lod = computeLodFromDerivates(DEFAULT_LOD_MODE, dudx, 0.0f, 0.0f, dvdy);
 
 			// Append to texture list.
 			m_textures.push_back(gls::TextureBinding(m_texture2DArray, m_textureSpec.sampler));
@@ -786,7 +723,7 @@
 			float dvdy = (m_lookupSpec.maxCoord[1]-m_lookupSpec.minCoord[1])*proj*(float)m_textureSpec.height		/ (float)viewportSize[1];
 			float dwdx = (m_lookupSpec.maxCoord[2]-m_lookupSpec.minCoord[2])*0.5f*proj*(float)m_textureSpec.depth	/ (float)viewportSize[0];
 			float dwdy = (m_lookupSpec.maxCoord[2]-m_lookupSpec.minCoord[2])*0.5f*proj*(float)m_textureSpec.depth	/ (float)viewportSize[1];
-			m_lookupParams.lod = computeLodFromDerivates(dudx, 0.0f, dwdx, 0.0f, dvdy, dwdy);
+			m_lookupParams.lod = computeLodFromDerivates(DEFAULT_LOD_MODE, dudx, 0.0f, dwdx, 0.0f, dvdy, dwdy);
 
 			// Append to texture list.
 			m_textures.push_back(gls::TextureBinding(m_texture3D, m_textureSpec.sampler));
diff --git a/modules/gles3/functional/es3fSyncTests.cpp b/modules/gles3/functional/es3fSyncTests.cpp
index 8f9c0d0..e97e1ac 100644
--- a/modules/gles3/functional/es3fSyncTests.cpp
+++ b/modules/gles3/functional/es3fSyncTests.cpp
@@ -282,17 +282,17 @@
 	// Fence sync tests.
 
 	addChild(new FenceSyncCase(m_context, "wait_sync_smalldraw",	"",	10,		COMMAND_WAIT_SYNC,	0, GL_TIMEOUT_IGNORED,	0));
-	addChild(new FenceSyncCase(m_context, "wait_sync_largedraw",	"",	100000,	COMMAND_WAIT_SYNC,	0, GL_TIMEOUT_IGNORED,	0));
+	addChild(new FenceSyncCase(m_context, "wait_sync_largedraw",	"",	10000,	COMMAND_WAIT_SYNC,	0, GL_TIMEOUT_IGNORED,	0));
 
 	addChild(new FenceSyncCase(m_context, "client_wait_sync_smalldraw",			"",	10,		COMMAND_CLIENT_WAIT_SYNC,	0, 0,	0));
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_largedraw",			"",	100000,	COMMAND_CLIENT_WAIT_SYNC,	0, 0,	0));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_largedraw",			"",	10000,	COMMAND_CLIENT_WAIT_SYNC,	0, 0,	0));
 	addChild(new FenceSyncCase(m_context, "client_wait_sync_timeout_smalldraw",	"",	10,		COMMAND_CLIENT_WAIT_SYNC,	0, 10,	0));
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_timeout_largedraw",	"",	100000,	COMMAND_CLIENT_WAIT_SYNC,	0, 10,	0));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_timeout_largedraw",	"",	10000,	COMMAND_CLIENT_WAIT_SYNC,	0, 10,	0));
 
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_flush_auto",	"",	100000, COMMAND_CLIENT_WAIT_SYNC,	GL_SYNC_FLUSH_COMMANDS_BIT, 0,	0));
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_flush_manual",	"",	100000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	CASE_FLUSH_BEFORE_WAIT));
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_noflush",		"",	100000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	0));
-	addChild(new FenceSyncCase(m_context, "client_wait_sync_finish",		"",	100000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	CASE_FINISH_BEFORE_WAIT));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_flush_auto",	"",	10000, COMMAND_CLIENT_WAIT_SYNC,	GL_SYNC_FLUSH_COMMANDS_BIT, 0,	0));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_flush_manual",	"",	10000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	CASE_FLUSH_BEFORE_WAIT));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_noflush",		"",	10000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	0));
+	addChild(new FenceSyncCase(m_context, "client_wait_sync_finish",		"",	10000, COMMAND_CLIENT_WAIT_SYNC,	0,							0,	CASE_FINISH_BEFORE_WAIT));
 }
 
 } // Functional
diff --git a/modules/gles3/functional/es3fTextureSpecificationTests.cpp b/modules/gles3/functional/es3fTextureSpecificationTests.cpp
index 92765ab..8e5b0ec 100644
--- a/modules/gles3/functional/es3fTextureSpecificationTests.cpp
+++ b/modules/gles3/functional/es3fTextureSpecificationTests.cpp
@@ -658,7 +658,7 @@
 	void createTexture (void)
 	{
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(m_format, m_dataType));
 		de::Random			rnd			(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -713,7 +713,7 @@
 	void createTexture (void)
 	{
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(m_format, m_dataType));
 		de::Random			rnd			(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -757,9 +757,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
@@ -796,9 +796,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_3D, tex);
@@ -849,7 +849,7 @@
 	void createTexture (void)
 	{
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(m_format, m_dataType));
 		de::Random			rnd			(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -909,7 +909,7 @@
 	void createTexture (void)
 	{
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(m_format, m_dataType));
 		de::Random			rnd			(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -2128,7 +2128,7 @@
 		tcu::TextureFormat		fmt				= glu::mapGLInternalFormat(m_internalFormat);
 		glu::TransferFormat		transferFmt		= glu::getTransferFormat(fmt);
 		deUint32				tex				= 0;
-		tcu::TextureLevel		levelData		(fmt);
+		tcu::TextureLevel		levelData		(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 		de::Random				rnd				(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -2170,7 +2170,7 @@
 		tcu::TextureFormat		fmt				= glu::mapGLInternalFormat(m_internalFormat);
 		glu::TransferFormat		transferFmt		= glu::getTransferFormat(fmt);
 		deUint32				tex				= 0;
-		tcu::TextureLevel		levelData		(fmt);
+		tcu::TextureLevel		levelData		(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 		de::Random				rnd				(deStringHash(getName()));
 
 		glGenTextures(1, &tex);
@@ -2214,9 +2214,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures	(1, &tex);
 		glBindTexture	(GL_TEXTURE_2D_ARRAY, tex);
@@ -2255,9 +2255,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures	(1, &tex);
 		glBindTexture	(GL_TEXTURE_3D, tex);
@@ -3032,7 +3032,7 @@
 	{
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_2D, tex);
@@ -3079,7 +3079,7 @@
 	{
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
@@ -3126,7 +3126,7 @@
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		de::Random			rnd			(deStringHash(getName()));
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_2D, tex);
@@ -3196,7 +3196,7 @@
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		de::Random			rnd			(deStringHash(getName()));
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
diff --git a/modules/gles3/performance/es3pShaderCompilationCases.cpp b/modules/gles3/performance/es3pShaderCompilationCases.cpp
index c3ad27d..8c80cd7 100644
--- a/modules/gles3/performance/es3pShaderCompilationCases.cpp
+++ b/modules/gles3/performance/es3pShaderCompilationCases.cpp
@@ -285,7 +285,7 @@
 static string getShaderInfoLog (const glw::Functions& gl, deUint32 shader)
 {
 	string			result;
-	int				infoLogLen;
+	int				infoLogLen = 0;
 	vector<char>	infoLogBuf;
 
 	gl.getShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLen);
@@ -299,7 +299,7 @@
 static string getProgramInfoLog (const glw::Functions& gl, deUint32 program)
 {
 	string			result;
-	int				infoLogLen;
+	int				infoLogLen = 0;
 	vector<char>	infoLogBuf;
 
 	gl.getProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLen);
@@ -1730,7 +1730,7 @@
 bool ShaderCompilerCase::compileShader (deUint32 shader) const
 {
 	const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-	GLint status;
+	GLint status = 0;
 	gl.compileShader(shader);
 	gl.getShaderiv(shader, GL_COMPILE_STATUS, &status);
 	return status != 0;
@@ -1739,7 +1739,7 @@
 bool ShaderCompilerCase::linkAndUseProgram (deUint32 program) const
 {
 	const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-	GLint linkStatus;
+	GLint linkStatus = 0;
 
 	gl.linkProgram(program);
 	gl.getProgramiv(program, GL_LINK_STATUS, &linkStatus);
diff --git a/modules/gles3/scripts/gen-conversions.py b/modules/gles3/scripts/gen-conversions.py
index 1acc046..fa1e90b 100644
--- a/modules/gles3/scripts/gen-conversions.py
+++ b/modules/gles3/scripts/gen-conversions.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import random
 import operator
diff --git a/modules/gles3/scripts/gen-invalid-texture-funcs.py b/modules/gles3/scripts/gen-invalid-texture-funcs.py
index 9cc5f99..28aa9fb 100644
--- a/modules/gles3/scripts/gen-invalid-texture-funcs.py
+++ b/modules/gles3/scripts/gen-invalid-texture-funcs.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import string
 from genutil import *
diff --git a/modules/gles3/scripts/gen-keywords.py b/modules/gles3/scripts/gen-keywords.py
index 04876de..09d486a 100644
--- a/modules/gles3/scripts/gen-keywords.py
+++ b/modules/gles3/scripts/gen-keywords.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 from genutil import *
 
diff --git a/modules/gles3/scripts/gen-qualification_order.py b/modules/gles3/scripts/gen-qualification_order.py
index 4bb5fc6..a57489a 100644
--- a/modules/gles3/scripts/gen-qualification_order.py
+++ b/modules/gles3/scripts/gen-qualification_order.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import itertools
 from collections import namedtuple
diff --git a/modules/gles3/scripts/gen-swizzles.py b/modules/gles3/scripts/gen-swizzles.py
index 70ba842..7b0bd78 100644
--- a/modules/gles3/scripts/gen-swizzles.py
+++ b/modules/gles3/scripts/gen-swizzles.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import random
 import operator
diff --git a/modules/gles3/scripts/gen-uniform-blocks.py b/modules/gles3/scripts/gen-uniform-blocks.py
index f2ad3d9..969a9f6 100644
--- a/modules/gles3/scripts/gen-uniform-blocks.py
+++ b/modules/gles3/scripts/gen-uniform-blocks.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 from genutil import *
 
 allCases = []
diff --git a/modules/gles3/scripts/genutil.py b/modules/gles3/scripts/genutil.py
index d17f811..d69225e 100644
--- a/modules/gles3/scripts/genutil.py
+++ b/modules/gles3/scripts/genutil.py
@@ -364,6 +364,12 @@
 	def __init__(self):
 		pass
 
+	def __eq__(self, other):
+		return self.isEqual(other)
+
+	def __ne__(self, other):
+		return not self.isEqual(other)
+
 class Vec2(Vec):
 	def __init__(self, x, y):
 		assert(x.__class__ == y.__class__)
diff --git a/modules/gles31/functional/es31fCopyImageTests.cpp b/modules/gles31/functional/es31fCopyImageTests.cpp
index 98c10af..a82b113 100644
--- a/modules/gles31/functional/es31fCopyImageTests.cpp
+++ b/modules/gles31/functional/es31fCopyImageTests.cpp
@@ -657,16 +657,7 @@
 		{
 			const tcu::ConstPixelBufferAccess texelAccess (format, 1, 1, 1, &(texelBlock[0]));
 
-			if (isFloatFormat(info.getFormat()))
-			{
-				const tcu::Vec4 color = texelAccess.getPixel(0, 0, 0);
-
-				gl.clearBufferfv(GL_COLOR, 0, (const float*)&color);
-				GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to clear renderbuffer.");
-
-				tcu::clear(refAccess, (tcu::isSRGB(format) ? tcu::linearToSRGB(color) : color));
-			}
-			else if (isIntFormat(info.getFormat()))
+			if (isIntFormat(info.getFormat()))
 			{
 				const tcu::IVec4 color = texelAccess.getPixelInt(0, 0, 0);
 
@@ -688,13 +679,27 @@
 			}
 			else
 			{
-				const tcu::Vec4 color = texelAccess.getPixel(0, 0, 0);
+				const tcu::Vec4 rawColor	= texelAccess.getPixel(0, 0, 0);
+				const tcu::Vec4 linearColor	= (tcu::isSRGB(format) ? tcu::sRGBToLinear(rawColor) : rawColor);
 
-				gl.clearColor(color.x(), color.y(), color.z(), color.w());
-				gl.clear(GL_COLOR_BUFFER_BIT);
+				// rawColor bit pattern has been chosen to be "safe" in the destination format. For sRGB
+				// formats, the clear color is in linear space. Since we want the resulting bit pattern
+				// to be safe after implementation linear->sRGB transform, we must apply the inverting
+				// transform to the clear color.
+
+				if (isFloatFormat(info.getFormat()))
+				{
+					gl.clearBufferfv(GL_COLOR, 0, (const float*)&linearColor);
+				}
+				else
+				{
+					// fixed-point
+					gl.clearColor(linearColor.x(), linearColor.y(), linearColor.z(), linearColor.w());
+					gl.clear(GL_COLOR_BUFFER_BIT);
+				}
 				GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to clear renderbuffer.");
 
-				tcu::clear(refAccess, (tcu::isSRGB(format) ? tcu::linearToSRGB(color) : color));
+				tcu::clear(refAccess, rawColor);
 			}
 		}
 	}
@@ -902,6 +907,12 @@
 		tcu::Surface			renderedFrame	(viewport.width, viewport.height);
 		tcu::Surface			referenceFrame	(viewport.width, viewport.height);
 
+		renderParams.baseLevel	= level;
+		renderParams.maxLevel	= level;
+
+		gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, level);
+		gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level);
+
 		computeQuadTexCoord2D(texCoord, tcu::Vec2(0.0f, 0.0f), tcu::Vec2(1.0f, 1.0f));
 
 		// Setup base viewport.
@@ -922,6 +933,9 @@
 			log << TestLog::Message << "Image comparison of level " << level << " passed." << TestLog::EndMessage;
 	}
 
+	gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
+	gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1000);
+
 	gl.bindTexture(GL_TEXTURE_2D, 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to unbind texture.");
 }
@@ -1043,6 +1057,12 @@
 	{
 		const IVec3 levelSize = getLevelSize(info.getTarget(), info.getSize(), level);
 
+		renderParams.baseLevel	= level;
+		renderParams.maxLevel	= level;
+
+		gl.texParameteri(GL_TEXTURE_3D, GL_TEXTURE_BASE_LEVEL, level);
+		gl.texParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAX_LEVEL, level);
+
 		for (int slice = 0; slice < levelSize.z(); slice++)
 		{
 			const RandomViewport	viewport		(renderContext.getRenderTarget(), levelSize.x(), levelSize.y(), rng.getUint32());
@@ -1072,6 +1092,9 @@
 		}
 	}
 
+	gl.texParameteri(GL_TEXTURE_3D, GL_TEXTURE_BASE_LEVEL, 0);
+	gl.texParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAX_LEVEL, 1000);
+
 	gl.bindTexture(GL_TEXTURE_3D, 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to unbind texture.");
 }
@@ -1147,6 +1170,12 @@
 		if (levelSize.x() < 4 && levelSize.y() < 4)
 			continue;
 
+		renderParams.baseLevel	= level;
+		renderParams.maxLevel	= level;
+
+		gl.texParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_BASE_LEVEL, level);
+		gl.texParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_LEVEL, level);
+
 		for (int face = 0; face < 6; face++)
 		{
 			const RandomViewport	viewport		(renderContext.getRenderTarget(), levelSize.x(), levelSize.y(), rng.getUint32());
@@ -1176,6 +1205,9 @@
 		}
 	}
 
+	gl.texParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_BASE_LEVEL, 0);
+	gl.texParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_LEVEL, 1000);
+
 	gl.bindTexture(GL_TEXTURE_CUBE_MAP, 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to unbind texture.");
 }
@@ -1307,6 +1339,12 @@
 	{
 		const IVec3 levelSize = getLevelSize(info.getTarget(), info.getSize(), level);
 
+		renderParams.baseLevel	= level;
+		renderParams.maxLevel	= level;
+
+		gl.texParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_BASE_LEVEL, level);
+		gl.texParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, level);
+
 		for (int layer = 0; layer < levelSize.z(); layer++)
 		{
 			const RandomViewport	viewport		(renderContext.getRenderTarget(), levelSize.x(), levelSize.y(), rng.getUint32());
@@ -1335,6 +1373,9 @@
 		}
 	}
 
+	gl.texParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_BASE_LEVEL, 0);
+	gl.texParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, 1000);
+
 	gl.bindTexture(GL_TEXTURE_2D_ARRAY, 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "Failed to unbind texture.");
 }
@@ -1760,13 +1801,16 @@
 		  const IVec3&	dstPos_,
 		  int			dstLevel_,
 
-		  const IVec3&	size_)
+		  const IVec3&	size_,
+		  const IVec3&	dstSize_)
 		: srcPos	(srcPos_)
 		, srcLevel	(srcLevel_)
 
 		, dstPos	(dstPos_)
 		, dstLevel	(dstLevel_)
+
 		, size		(size_)
+		, dstSize	(dstSize_)
 	{
 	}
 
@@ -1775,6 +1819,7 @@
 	IVec3	dstPos;
 	int		dstLevel;
 	IVec3	size;
+	IVec3	dstSize;	//!< used only for logging
 };
 
 int getLastFullLevel (const ImageInfo& info)
@@ -1831,7 +1876,7 @@
 		const int	copyBlockHeight			= de::max((2 * (maxCopyBlockSize.y() / 4)) - 1, 1);
 		const int	copyBlockDepth			= de::max((2 * (maxCopyBlockSize.z() / 4)) - 1, 1);
 
-		// Copy NPOT block from (0,0,0) to other corner on dst
+		// Copy NPOT block to (0,0,0) from other corner on src
 		{
 			const IVec3	copyBlockSize	(copyBlockWidth, copyBlockHeight, copyBlockDepth);
 			const IVec3	srcBlockPos		(srcCompleteBlockSize - copyBlockSize);
@@ -1839,12 +1884,13 @@
 
 			const IVec3	srcPos			(srcBlockPos * srcBlockPixelSize);
 			const IVec3	dstPos			(dstBlockPos * dstBlockPixelSize);
-			const IVec3 copySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 srcCopySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 dstCopySize		(copyBlockSize * dstBlockPixelSize);
 
-			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, copySize));
+			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, srcCopySize, dstCopySize));
 		}
 
-		// Copy NPOT block to (0,0,0) from other corner on src
+		// Copy NPOT block from (0,0,0) to other corner on dst
 		{
 			const IVec3	copyBlockSize	(copyBlockWidth, copyBlockHeight, copyBlockDepth);
 			const IVec3	srcBlockPos		(0, 0, 0);
@@ -1852,12 +1898,13 @@
 
 			const IVec3	srcPos			(srcBlockPos * srcBlockPixelSize);
 			const IVec3	dstPos			(dstBlockPos * dstBlockPixelSize);
-			const IVec3 copySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 srcCopySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 dstCopySize		(copyBlockSize * dstBlockPixelSize);
 
-			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, copySize));
+			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, srcCopySize, dstCopySize));
 		}
 
-		// Copy NPOT block to (0,0,0) from other corner on src
+		// Copy NPOT block near the corner with high coordinates
 		{
 			const IVec3	copyBlockSize	(copyBlockWidth, copyBlockHeight, copyBlockDepth);
 			const IVec3	srcBlockPos		(tcu::max((srcCompleteBlockSize / 4) * 4 - copyBlockSize, IVec3(0)));
@@ -1865,9 +1912,10 @@
 
 			const IVec3	srcPos			(srcBlockPos * srcBlockPixelSize);
 			const IVec3	dstPos			(dstBlockPos * dstBlockPixelSize);
-			const IVec3 copySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 srcCopySize		(copyBlockSize * srcBlockPixelSize);
+			const IVec3 dstCopySize		(copyBlockSize * dstBlockPixelSize);
 
-			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, copySize));
+			copies.push_back(Copy(srcPos, srcLevel, dstPos, dstLevel, srcCopySize, dstCopySize));
 		}
 	}
 }
@@ -1889,8 +1937,12 @@
 	{
 		const Copy& copy = copies[copyNdx];
 
-		log << TestLog::Message << "Copying block " << copy.size << " from source image position " << copy.srcPos << " and mipmap level " << copy.srcLevel
-								<< " to destination image position " << copy.dstPos << " and mipmap level " << copy.dstLevel << TestLog::EndMessage;
+		log	<< TestLog::Message
+			<< "Copying area with size " << copy.size
+			<< " from source image position " << copy.srcPos << " and mipmap level " << copy.srcLevel
+			<< " to destination image position " << copy.dstPos << " and mipmap level " << copy.dstLevel << ". "
+			<< "Size in destination format is " << copy.dstSize
+			<< TestLog::EndMessage;
 
 		copyImage(gl, *dstImage, dstImageLevels, m_dstImageInfo, copy.dstLevel, copy.dstPos,
 					  *srcImage, srcImageLevels, m_srcImageInfo, copy.srcLevel, copy.srcPos, copy.size);
diff --git a/modules/gles31/functional/es31fDebugTests.cpp b/modules/gles31/functional/es31fDebugTests.cpp
index 2c7370b..e8acd2c 100644
--- a/modules/gles31/functional/es31fDebugTests.cpp
+++ b/modules/gles31/functional/es31fDebugTests.cpp
@@ -1644,8 +1644,8 @@
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	const char*	const		msg			= "This is a debug label";
 	GLuint					object		= 0;
+	int						outlen		= -1;
 	char					buffer[64];
-	int						outlen		= 0;
 
 	switch(m_identifier)
 	{
@@ -1787,8 +1787,8 @@
 
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	const char*	const		msg			= "This is a debug label";
+	int						outlen		= -1;
 	char					buffer[64];
-	int						outlen		= 0;
 
 	glw::GLsync				sync		= gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "fenceSync");
@@ -1835,10 +1835,10 @@
 
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
 	char					buffer[64];
-	int						outlen;
 
 	sync = gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "fenceSync");
@@ -1917,10 +1917,10 @@
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
 	const char*	const		msg			= "This is a debug label";
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
 	char					buffer[64];
-	int						outlen;
 
 	sync = gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "fenceSync");
@@ -2011,10 +2011,10 @@
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
 	const char*	const		msg			= "This is a debug label";
 	const char*	const		clipMsg		= "This is a de";
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
 	char					buffer[64];
-	int						outlen;
 
 	sync = gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "fenceSync");
@@ -2120,10 +2120,10 @@
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
 	const char*	const		msg			= "This is a debug label";
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
 	char					buffer[64];
-	int						outlen;
 
 	sync = gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "fenceSync");
@@ -2349,9 +2349,9 @@
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
 	int						maxLabelLen	= -1;
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
-	int						outlen;
 
 	gl.getIntegerv(GL_MAX_LABEL_LENGTH, &maxLabelLen);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "GL_MAX_LABEL_LENGTH");
@@ -2476,9 +2476,9 @@
 	const glw::Functions&	gl			= m_context.getRenderContext().getFunctions();
 	tcu::ResultCollector	result		(m_testCtx.getLog(), " // ERROR: ");
 	const char*	const		msg			= "This is a debug label";
+	int						outlen		= -1;
 	GLuint					shader;
 	glw::GLsync				sync;
-	int						outlen;
 
 	sync = gl.fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
 	GLS_COLLECT_GL_ERROR(result, gl.getError(), "fenceSync");
diff --git a/modules/gles31/functional/es31fGeometryShaderTests.cpp b/modules/gles31/functional/es31fGeometryShaderTests.cpp
index ae92528..2f4e60c 100644
--- a/modules/gles31/functional/es31fGeometryShaderTests.cpp
+++ b/modules/gles31/functional/es31fGeometryShaderTests.cpp
@@ -1940,29 +1940,37 @@
 		const int		colorComponentThreshold	= 20;
 		bool			testResult				= true;
 
-		for (int x = 1; x + 1 < m_viewportSize.x(); ++x)
-		for (int y = 1; y + 1 < m_viewportSize.y(); ++y)
+		for (int x = 0; x < m_viewportSize.x(); ++x)
+		for (int y = 0; y < m_viewportSize.y(); ++y)
 		{
-			bool found = false;
-			const tcu::RGBA refcolor = m_refResult->getPixel(x, y);
-
-			// Got to find similar pixel near this pixel (3x3 kernel)
-			for (int dx = -1; dx <= 1; ++dx)
-			for (int dy = -1; dy <= 1; ++dy)
+			if (x == 0 || y == 0 || x + 1 == m_viewportSize.x() || y + 1 == m_viewportSize.y())
 			{
-				const tcu::RGBA		testColor	= m_glResult->getPixel(x + dx, y + dy);
-				const tcu::IVec4	colDiff		= tcu::abs(testColor.toIVec() - refcolor.toIVec());
-
-				const int			maxColDiff	= de::max(de::max(colDiff.x(), colDiff.y()), colDiff.z()); // check RGB channels
-
-				if (maxColDiff <= colorComponentThreshold)
-					found = true;
+				// Mark edge pixels as correct since their neighbourhood is undefined
+				errorMask.setPixel(x, y, green);
 			}
+			else
+			{
+				const tcu::RGBA	refcolor	= m_refResult->getPixel(x, y);
+				bool			found		= false;
 
-			if (!found)
-				testResult = false;
+				// Got to find similar pixel near this pixel (3x3 kernel)
+				for (int dx = -1; dx <= 1; ++dx)
+				for (int dy = -1; dy <= 1; ++dy)
+				{
+					const tcu::RGBA		testColor	= m_glResult->getPixel(x + dx, y + dy);
+					const tcu::IVec4	colDiff		= tcu::abs(testColor.toIVec() - refcolor.toIVec());
 
-			errorMask.setPixel(x, y, (found) ? (green) : (red));
+					const int			maxColDiff	= de::max(de::max(colDiff.x(), colDiff.y()), colDiff.z()); // check RGB channels
+
+					if (maxColDiff <= colorComponentThreshold)
+						found = true;
+				}
+
+				if (!found)
+					testResult = false;
+
+				errorMask.setPixel(x, y, (found) ? (green) : (red));
+			}
 		}
 
 		if (testResult)
diff --git a/modules/gles31/functional/es31fIntegerStateQueryTests.cpp b/modules/gles31/functional/es31fIntegerStateQueryTests.cpp
index 24a5f25..775b7d1 100644
--- a/modules/gles31/functional/es31fIntegerStateQueryTests.cpp
+++ b/modules/gles31/functional/es31fIntegerStateQueryTests.cpp
@@ -369,14 +369,19 @@
 	gl.enableLogging(true);
 
 	{
-		const tcu::ScopedLogSection	section(m_testCtx.getLog(), "Minimum", "Minimum is " + de::toString(m_minValue));
+		const tcu::ScopedLogSection	section(m_testCtx.getLog(), "Minimum", "Specified minimum is " + de::toString(m_minValue));
 
 		verifyStateIntegerMin(result, gl, m_target, m_minValue, m_verifierType);
 	}
 	{
-		const tcu::ScopedLogSection	section(m_testCtx.getLog(), "Ties", "Tied to " + de::toString(glu::getGettableStateStr(m_tiedTo)));
+		const tcu::ScopedLogSection				section		(m_testCtx.getLog(), "Ties", "The limit is tied to the value of " + de::toString(glu::getGettableStateStr(m_tiedTo)));
+		StateQueryMemoryWriteGuard<glw::GLint>	tiedToValue;
 
-		verifyStateIntegerEqualToOther(result, gl, m_target, m_tiedTo, m_verifierType);
+		gl.glGetIntegerv(m_tiedTo, &tiedToValue);
+		GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
+
+		if (tiedToValue.verifyValidity(result))
+			verifyStateIntegerMin(result, gl, m_target, tiedToValue, m_verifierType);
 	}
 
 	result.setTestContextResult(m_testCtx);
diff --git a/modules/gles31/functional/es31fProgramInterfaceQueryTestCase.cpp b/modules/gles31/functional/es31fProgramInterfaceQueryTestCase.cpp
index 778ef6f..3f061ac 100644
--- a/modules/gles31/functional/es31fProgramInterfaceQueryTestCase.cpp
+++ b/modules/gles31/functional/es31fProgramInterfaceQueryTestCase.cpp
@@ -2631,6 +2631,7 @@
 				{ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS,				usage.numSamplers										},
 				{ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS,			usage.numAtomicCounterBuffers							},
 				{ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS,					usage.numAtomicCounters									},
+				{ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS,					usage.numImages											},
 				{ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS,			usage.numShaderStorageBlocks							},
 			};
 
@@ -2660,6 +2661,7 @@
 				{ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS,			usage.numSamplers										},
 				{ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS,		usage.numAtomicCounterBuffers							},
 				{ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS,				usage.numAtomicCounters									},
+				{ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS,				usage.numImages											},
 				{ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS,			usage.numShaderStorageBlocks							},
 			};
 
diff --git a/modules/gles31/functional/es31fShaderCommonFunctionTests.cpp b/modules/gles31/functional/es31fShaderCommonFunctionTests.cpp
index 2eab2e7..72a2b43 100644
--- a/modules/gles31/functional/es31fShaderCommonFunctionTests.cpp
+++ b/modules/gles31/functional/es31fShaderCommonFunctionTests.cpp
@@ -189,6 +189,49 @@
 	return exponent[precision];
 }
 
+static float makeFloatRepresentable (float f, glu::Precision precision)
+{
+	if (precision == glu::PRECISION_HIGHP)
+	{
+		// \note: assuming f is not extended-precision
+		return f;
+	}
+	else
+	{
+		const int			numMantissaBits				= getMinMantissaBits(precision);
+		const int			maxNormalizedValueExponent	= getMaxNormalizedValueExponent(precision);
+		const int			minNormalizedValueExponent	= getMinNormalizedValueExponent(precision);
+		const deUint32		representableMantissaMask	= ((deUint32(1) << numMantissaBits) - 1) << (23 - (deUint32)numMantissaBits);
+		const float			largestRepresentableValue	= tcu::Float32::constructBits(+1, maxNormalizedValueExponent, ((1u << numMantissaBits) - 1u) << (23u - (deUint32)numMantissaBits)).asFloat();
+		const bool			zeroNotRepresentable		= (precision == glu::PRECISION_LOWP);
+
+		// if zero is not required to be representable, use smallest positive non-subnormal value
+		const float			zeroValue					= (zeroNotRepresentable) ? (tcu::Float32::constructBits(+1, minNormalizedValueExponent, 1).asFloat()) : (0.0f);
+
+		const tcu::Float32	float32Representation		(f);
+
+		if (float32Representation.exponent() < minNormalizedValueExponent)
+		{
+			// flush too small values to zero
+			return zeroValue;
+		}
+		else if (float32Representation.exponent() > maxNormalizedValueExponent)
+		{
+			// clamp too large values
+			return (float32Representation.sign() == +1) ? (largestRepresentableValue) : (-largestRepresentableValue);
+		}
+		else
+		{
+			// remove unrepresentable mantissa bits
+			const tcu::Float32 targetRepresentation(tcu::Float32::constructBits(float32Representation.sign(),
+													float32Representation.exponent(),
+													float32Representation.mantissaBits() & representableMantissaMask));
+
+			return targetRepresentation.asFloat();
+		}
+	}
+}
+
 // CommonFunctionCase
 
 class CommonFunctionCase : public TestCase
@@ -1733,17 +1776,29 @@
 		}
 
 		fillRandomScalars(rnd, ranges[precision].x(), ranges[precision].y(), (float*)values[0] + 8*scalarSize, (numValues-8)*scalarSize);
+
+		// Make sure the values are representable in the target format
+		for (int caseNdx = 0; caseNdx < numValues; ++caseNdx)
+		{
+			for (int scalarNdx = 0; scalarNdx < scalarSize; scalarNdx++)
+			{
+				float* const valuePtr = &((float*)values[0])[caseNdx * scalarSize + scalarNdx];
+
+				*valuePtr = makeFloatRepresentable(*valuePtr, precision);
+			}
+		}
 	}
 
 	bool compare (const void* const* inputs, const void* const* outputs)
 	{
-		const glu::DataType		type			= m_spec.inputs[0].varType.getBasicType();
-		const glu::Precision	precision		= m_spec.inputs[0].varType.getPrecision();
-		const int				scalarSize		= glu::getDataTypeScalarSize(type);
-		const bool				signedZero		= supportsSignedZero(precision);
+		const glu::DataType		type						= m_spec.inputs[0].varType.getBasicType();
+		const glu::Precision	precision					= m_spec.inputs[0].varType.getPrecision();
+		const int				scalarSize					= glu::getDataTypeScalarSize(type);
+		const bool				transitSupportsSignedZero	= (m_shaderType != glu::SHADERTYPE_FRAGMENT); // executor cannot reliably transit negative zero to fragment stage
+		const bool				signedZero					= supportsSignedZero(precision) && transitSupportsSignedZero;
 
-		const int				mantissaBits	= getMinMantissaBits(precision);
-		const deUint32			maxUlpDiff		= getMaxUlpDiffFromBits(mantissaBits);
+		const int				mantissaBits				= getMinMantissaBits(precision);
+		const deUint32			maxUlpDiff					= getMaxUlpDiffFromBits(mantissaBits);
 
 		for (int compNdx = 0; compNdx < scalarSize; compNdx++)
 		{
@@ -1941,10 +1996,6 @@
 		const glu::DataType		type						= m_spec.inputs[0].varType.getBasicType();
 		const glu::Precision	precision					= m_spec.inputs[0].varType.getPrecision();
 		const int				scalarSize					= glu::getDataTypeScalarSize(type);
-		const int				numMantissaBits				= getMinMantissaBits(precision);
-		const int				maxNormalizedValueExponent	= getMaxNormalizedValueExponent(precision);
-		const int				minNormalizedValueExponent	= getMinNormalizedValueExponent(precision);
-		const deUint32			representableMantissaMask	= ((deUint32(1) << numMantissaBits) - 1) << (23 - (deUint32)numMantissaBits);
 		const float				specialCases[][3]			=
 		{
 			// a		b		c
@@ -1981,42 +2032,15 @@
 		}
 
 		// Make sure the values are representable in the target format
-		if (precision != glu::PRECISION_HIGHP)
+		for (int inputNdx = 0; inputNdx < 3; inputNdx++)
 		{
-			const float	largestRepresentableValue	= tcu::Float32::constructBits(+1, maxNormalizedValueExponent, ((1u << numMantissaBits) - 1u) << (23u - (deUint32)numMantissaBits)).asFloat();
-
-			// zero is not required to be representable, use smallest positive non-subnormal value
-			const float zeroReplacement				= tcu::Float32::constructBits(+1, minNormalizedValueExponent, 1).asFloat();
-
-			for (int inputNdx = 0; inputNdx < 3; inputNdx++)
+			for (int caseNdx = 0; caseNdx < numValues; ++caseNdx)
 			{
-				for (int caseNdx = 0; caseNdx < numValues; ++caseNdx)
+				for (int scalarNdx = 0; scalarNdx < scalarSize; scalarNdx++)
 				{
-					for (int scalarNdx = 0; scalarNdx < scalarSize; scalarNdx++)
-					{
-						float&				value					= ((float*)values[inputNdx])[caseNdx * scalarSize + scalarNdx];
-						const tcu::Float32	float32Representation	(value);
+					float* const valuePtr = &((float*)values[inputNdx])[caseNdx * scalarSize + scalarNdx];
 
-						// flush too small values to zero
-						if (float32Representation.exponent() < minNormalizedValueExponent)
-						{
-							value = zeroReplacement;
-						}
-						// clamp too large values
-						else if (float32Representation.exponent() > maxNormalizedValueExponent)
-						{
-							value = (float32Representation.sign() == +1) ? (largestRepresentableValue) : (-largestRepresentableValue);
-						}
-						// remove unrepresentable mantissa bits
-						else
-						{
-							const tcu::Float32	targetRepresentation	(tcu::Float32::constructBits(float32Representation.sign(),
-																									 float32Representation.exponent(),
-																									 float32Representation.mantissaBits() & representableMantissaMask));
-
-							value = targetRepresentation.asFloat();
-						}
-					}
+					*valuePtr = makeFloatRepresentable(*valuePtr, precision);
 				}
 			}
 		}
diff --git a/modules/gles31/functional/es31fShaderHelperInvocationTests.cpp b/modules/gles31/functional/es31fShaderHelperInvocationTests.cpp
index c0d1038..125496b 100644
--- a/modules/gles31/functional/es31fShaderHelperInvocationTests.cpp
+++ b/modules/gles31/functional/es31fShaderHelperInvocationTests.cpp
@@ -100,10 +100,11 @@
 
 static void genVertices (PrimitiveType primType, int numPrimitives, de::Random* rnd, vector<Vec2>* dst)
 {
-	const bool		isTri		= primType == PRIMITIVETYPE_TRIANGLE;
-	const float		minCoord	= isTri ? -1.5f : -1.0f;
-	const float		maxCoord	= isTri ? +1.5f : +1.0f;
-	const int		numVert		= getNumVerticesPerPrimitive(primType)*numPrimitives;
+	const bool	isTri					= primType == PRIMITIVETYPE_TRIANGLE;
+	const float	minCoord				= isTri ? -1.5f : -1.0f;
+	const float	maxCoord				= isTri ? +1.5f : +1.0f;
+	const int	numVerticesPerPrimitive	= getNumVerticesPerPrimitive(primType);
+	const int	numVert					= numVerticesPerPrimitive*numPrimitives;
 
 	dst->resize(numVert);
 
@@ -112,6 +113,34 @@
 		(*dst)[ndx][0] = rnd->getFloat(minCoord, maxCoord);
 		(*dst)[ndx][1] = rnd->getFloat(minCoord, maxCoord);
 	}
+
+	// Don't produce completely or almost completely discardable primitives.
+	// \note: This doesn't guarantee that resulting primitives are visible or
+	//        produce any fragments. This just removes trivially discardable
+	//        primitives.
+	for (int primitiveNdx = 0; primitiveNdx < numPrimitives; ++primitiveNdx)
+	for (int component = 0; component < 2; ++component)
+	{
+		bool negativeClip = true;
+		bool positiveClip = true;
+
+		for (int vertexNdx = 0; vertexNdx < numVerticesPerPrimitive; ++vertexNdx)
+		{
+			const float p = (*dst)[primitiveNdx * numVerticesPerPrimitive + vertexNdx][component];
+			// \note 0.9 instead of 1.0 to avoid just barely visible primitives
+			if (p > -0.9f)
+				negativeClip = false;
+			if (p < +0.9f)
+				positiveClip = false;
+		}
+
+		// if discardable, just mirror first vertex along center
+		if (negativeClip || positiveClip)
+		{
+			(*dst)[primitiveNdx * numVerticesPerPrimitive + 0][0] *= -1.0f;
+			(*dst)[primitiveNdx * numVerticesPerPrimitive + 0][1] *= -1.0f;
+		}
+	}
 }
 
 static int getInteger (const glw::Functions& gl, deUint32 pname)
@@ -180,6 +209,7 @@
 private:
 	const glu::RenderContext&	m_renderCtx;
 	const int					m_numSamples;
+	const IVec2					m_size;
 
 	glu::Renderbuffer			m_colorbuffer;
 	glu::Framebuffer			m_framebuffer;
@@ -190,6 +220,7 @@
 FboHelper::FboHelper (const glu::RenderContext& renderCtx, int width, int height, deUint32 format, int numSamples)
 	: m_renderCtx			(renderCtx)
 	, m_numSamples			(numSamples)
+	, m_size				(width, height)
 	, m_colorbuffer			(renderCtx)
 	, m_framebuffer			(renderCtx)
 	, m_resolveColorbuffer	(renderCtx)
@@ -229,6 +260,8 @@
 	const glw::Functions& gl = m_renderCtx.getFunctions();
 	gl.bindFramebuffer(GL_FRAMEBUFFER, *m_framebuffer);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "glBindFramebuffer()");
+	gl.viewport(0, 0, m_size.x(), m_size.y());
+	GLU_EXPECT_NO_ERROR(gl.getError(), "viewport()");
 }
 
 void FboHelper::readPixels (int x, int y, const tcu::PixelBufferAccess& dst)
@@ -351,16 +384,21 @@
 	const tcu::RGBA		fgRef				(0, 255, 0, 255);
 	const tcu::RGBA		threshold			(1, isMultiSample ? 254 : 1, 1, 1);
 	int					numInvalidPixels	= 0;
+	bool				renderedSomething	= false;
 
 	for (int y = 0; y < result.getHeight(); ++y)
 	{
 		for (int x = 0; x < result.getWidth(); ++x)
 		{
 			const tcu::RGBA	resPix	= result.getPixel(x, y);
+			const bool		isBg	= tcu::compareThreshold(resPix, bgRef, threshold);
+			const bool		isFg	= tcu::compareThreshold(resPix, fgRef, threshold);
 
-			if (!tcu::compareThreshold(resPix, bgRef, threshold) &&
-				!tcu::compareThreshold(resPix, fgRef, threshold))
+			if (!isBg && !isFg)
 				numInvalidPixels += 1;
+
+			if (isFg)
+				renderedSomething = true;
 		}
 	}
 
@@ -368,11 +406,19 @@
 	{
 		log << TestLog::Image("Result", "Result image", result);
 		log << TestLog::Message << "ERROR: Found " << numInvalidPixels << " invalid result pixels!" << TestLog::EndMessage;
+		return false;
+	}
+	else if (!renderedSomething)
+	{
+		log << TestLog::Image("Result", "Result image", result);
+		log << TestLog::Message << "ERROR: Result image was empty!" << TestLog::EndMessage;
+		return false;
 	}
 	else
+	{
 		log << TestLog::Message << "All result pixels are valid" << TestLog::EndMessage;
-
-	return numInvalidPixels == 0;
+		return true;
+	}
 }
 
 HelperInvocationValueCase::IterateResult HelperInvocationValueCase::iterate (void)
@@ -403,7 +449,7 @@
 class HelperInvocationDerivateCase : public TestCase
 {
 public:
-							HelperInvocationDerivateCase	(Context& context, const char* name, const char* description, PrimitiveType primType, int numSamples, const char* derivateFunc);
+							HelperInvocationDerivateCase	(Context& context, const char* name, const char* description, PrimitiveType primType, int numSamples, const char* derivateFunc, bool checkAbsoluteValue);
 							~HelperInvocationDerivateCase	(void);
 
 	void					init							(void);
@@ -414,6 +460,7 @@
 	const PrimitiveType		m_primitiveType;
 	const int				m_numSamples;
 	const std::string		m_derivateFunc;
+	const bool				m_checkAbsoluteValue;
 
 	const int				m_numIters;
 
@@ -422,11 +469,12 @@
 	int						m_iterNdx;
 };
 
-HelperInvocationDerivateCase::HelperInvocationDerivateCase (Context& context, const char* name, const char* description, PrimitiveType primType, int numSamples, const char* derivateFunc)
+HelperInvocationDerivateCase::HelperInvocationDerivateCase (Context& context, const char* name, const char* description, PrimitiveType primType, int numSamples, const char* derivateFunc, bool checkAbsoluteValue)
 	: TestCase					(context, name, description)
 	, m_primitiveType			(primType)
 	, m_numSamples				(numSamples)
 	, m_derivateFunc			(derivateFunc)
+	, m_checkAbsoluteValue		(checkAbsoluteValue)
 	, m_numIters				(16)
 	, m_iterNdx					(0)
 {
@@ -443,6 +491,7 @@
 	const glw::Functions&		gl				= renderCtx.getFunctions();
 	const int					maxSamples		= getInteger(gl, GL_MAX_SAMPLES);
 	const int					actualSamples	= m_numSamples == NUM_SAMPLES_MAX ? maxSamples : m_numSamples;
+	const std::string			funcSource		= (m_checkAbsoluteValue) ? ("abs(" + m_derivateFunc + "(value))") : (m_derivateFunc + "(value)");
 
 	m_program = MovePtr<ShaderProgram>(new ShaderProgram(m_context.getRenderContext(),
 		glu::ProgramSources()
@@ -461,7 +510,7 @@
 				"void main (void)\n"
 				"{\n"
 				"	highp float value		= gl_HelperInvocation ? 1.0 : 0.0;\n"
-				"	highp float derivate	= ") + m_derivateFunc + "(value);\n"
+				"	highp float derivate	= ") + funcSource + ";\n"
 				"	if (gl_HelperInvocation)\n"
 				"		o_color = vec4(1.0, 0.0, derivate, 1.0);\n"
 				"	else\n"
@@ -534,6 +583,7 @@
 	const tcu::RGBA		isFgThreshold		(1, isMultiSample ? 254 : 1, 255, 1);
 	int					numInvalidPixels	= 0;
 	int					numNonZeroDeriv		= 0;
+	bool				renderedSomething	= false;
 
 	for (int y = 0; y < result.getHeight(); ++y)
 	{
@@ -551,20 +601,31 @@
 			if ((!isBg && !isFg) ||				// Neither of valid colors (ignoring blue channel that has derivate)
 				(nonZeroDeriv && !neighborBg))	// Has non-zero derivate, but sample not at primitive edge
 				numInvalidPixels += 1;
+
+			if (isFg)
+				renderedSomething = true;
 		}
 	}
 
+	log << TestLog::Message << "Found " << numNonZeroDeriv << " pixels with non-zero derivate (neighbor sample has gl_HelperInvocation = true)" << TestLog::EndMessage;
+
 	if (numInvalidPixels > 0)
 	{
 		log << TestLog::Image("Result", "Result image", result);
 		log << TestLog::Message << "ERROR: Found " << numInvalidPixels << " invalid result pixels!" << TestLog::EndMessage;
+		return false;
+	}
+	else if (!renderedSomething)
+	{
+		log << TestLog::Image("Result", "Result image", result);
+		log << TestLog::Message << "ERROR: Result image was empty!" << TestLog::EndMessage;
+		return false;
 	}
 	else
+	{
 		log << TestLog::Message << "All result pixels are valid" << TestLog::EndMessage;
-
-	log << TestLog::Message << "Found " << numNonZeroDeriv << " pixels with non-zero derivate (neighbor sample has gl_HelperInvocation = true)" << TestLog::EndMessage;
-
-	return numInvalidPixels == 0;
+		return true;
+	}
 }
 
 HelperInvocationDerivateCase::IterateResult HelperInvocationDerivateCase::iterate (void)
@@ -660,9 +721,9 @@
 				const PrimitiveType	primType	= s_primTypes[primTypeNdx].primType;
 				const int			numSamples	= s_sampleCounts[sampleCountNdx].numSamples;
 
-				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_dfdx").c_str(),	"", primType, numSamples, "dFdx"));
-				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_dfdy").c_str(),	"", primType, numSamples, "dFdy"));
-				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_fwidth").c_str(),	"", primType, numSamples, "fwidth"));
+				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_dfdx").c_str(),	"", primType, numSamples, "dFdx",	true));
+				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_dfdy").c_str(),	"", primType, numSamples, "dFdy",	true));
+				derivateGroup->addChild(new HelperInvocationDerivateCase(m_context, (name + "_fwidth").c_str(),	"", primType, numSamples, "fwidth",	false));
 			}
 		}
 	}
diff --git a/modules/gles31/functional/es31fTessellationTests.cpp b/modules/gles31/functional/es31fTessellationTests.cpp
index c9c5dbf..73e2cf3 100644
--- a/modules/gles31/functional/es31fTessellationTests.cpp
+++ b/modules/gles31/functional/es31fTessellationTests.cpp
@@ -5998,10 +5998,12 @@
 			DE_ASSERT(numElements != -2);
 
 			if (isArray)
+			{
+				// \note: TCS output arrays are always implicitly-sized
 				tcsDeclarations += outMaybePatch + output.declareArray(m_ioType == IO_TYPE_PER_PATCH_ARRAY			? de::toString(int(NUM_PER_PATCH_ARRAY_ELEMS))
 																	   : m_ioType == IO_TYPE_PER_PATCH_BLOCK_ARRAY	? de::toString(int(NUM_PER_PATCH_BLOCKS))
-																	   : isExplicitVertexArraySize					? de::toString(int(NUM_OUTPUT_VERTICES))
 																	   : "");
+			}
 			else
 				tcsDeclarations += outMaybePatch + output.declare();
 
diff --git a/modules/gles31/functional/es31fTextureSpecificationTests.cpp b/modules/gles31/functional/es31fTextureSpecificationTests.cpp
index 302d1b4..bad7f20 100644
--- a/modules/gles31/functional/es31fTextureSpecificationTests.cpp
+++ b/modules/gles31/functional/es31fTextureSpecificationTests.cpp
@@ -326,9 +326,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, tex);
@@ -364,9 +364,9 @@
 	void createTexture (void)
 	{
 		deUint32				tex			= 0;
-		tcu::TextureLevel		levelData	(m_texFormat);
 		de::Random				rnd			(deStringHash(getName()));
 		glu::TransferFormat		transferFmt	= glu::getTransferFormat(m_texFormat);
+		tcu::TextureLevel		levelData	(glu::mapGLTransferFormat(transferFmt.format, transferFmt.dataType));
 
 		glGenTextures	(1, &tex);
 		glBindTexture	(GL_TEXTURE_CUBE_MAP_ARRAY, tex);
@@ -605,7 +605,7 @@
 	{
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, tex);
@@ -651,7 +651,7 @@
 		glu::TransferFormat	fmt			= glu::getTransferFormat(m_texFormat);
 		de::Random			rnd			(deStringHash(getName()));
 		deUint32			tex			= 0;
-		tcu::TextureLevel	levelData	(m_texFormat);
+		tcu::TextureLevel	levelData	(glu::mapGLTransferFormat(fmt.format, fmt.dataType));
 
 		glGenTextures(1, &tex);
 		glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, tex);
diff --git a/modules/gles31/scripts/gen-implicit-conversions.py b/modules/gles31/scripts/gen-implicit-conversions.py
index 188f3b5..c84dd84 100644
--- a/modules/gles31/scripts/gen-implicit-conversions.py
+++ b/modules/gles31/scripts/gen-implicit-conversions.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import sys
 import itertools
 import operator
diff --git a/modules/gles31/scripts/gen-uniform-blocks.py b/modules/gles31/scripts/gen-uniform-blocks.py
index 1d716ab..ad44085 100644
--- a/modules/gles31/scripts/gen-uniform-blocks.py
+++ b/modules/gles31/scripts/gen-uniform-blocks.py
@@ -1,3 +1,25 @@
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 from genutil import *
 
 allCases = []
diff --git a/modules/gles31/scripts/genutil.py b/modules/gles31/scripts/genutil.py
index f7ccc1a..d1cffa7 100644
--- a/modules/gles31/scripts/genutil.py
+++ b/modules/gles31/scripts/genutil.py
@@ -366,6 +366,12 @@
 	def __init__(self):
 		pass
 
+	def __eq__(self, other):
+		return self.isEqual(other)
+
+	def __ne__(self, other):
+		return not self.isEqual(other)
+
 class Vec2(Vec):
 	def __init__(self, x, y):
 		assert(x.__class__ == y.__class__)
diff --git a/modules/glshared/glsBuiltinPrecisionTests.cpp b/modules/glshared/glsBuiltinPrecisionTests.cpp
index 39a4500..d0e6394 100644
--- a/modules/glshared/glsBuiltinPrecisionTests.cpp
+++ b/modules/glshared/glsBuiltinPrecisionTests.cpp
@@ -2304,7 +2304,7 @@
 			else
 			{
 				// |x| * 2^-10, slightly larger than 2 ULP at x == pi
-				return deLdExp(deAbs(DE_PI_DOUBLE), -10);
+				return deLdExp(deAbs(arg), -10);
 			}
 		}
 		else
diff --git a/modules/glshared/glsShaderExecUtil.cpp b/modules/glshared/glsShaderExecUtil.cpp
index 6891eec..019c526 100644
--- a/modules/glshared/glsShaderExecUtil.cpp
+++ b/modules/glshared/glsShaderExecUtil.cpp
@@ -29,6 +29,7 @@
 #include "gluTextureUtil.hpp"
 #include "gluProgramInterfaceQuery.hpp"
 #include "gluPixelTransfer.hpp"
+#include "gluStrUtil.hpp"
 #include "tcuTestLog.hpp"
 #include "glwFunctions.hpp"
 #include "glwEnums.hpp"
@@ -73,6 +74,21 @@
 		throw tcu::NotSupportedError(extension + " is not supported");
 }
 
+static void checkLimit (const glu::RenderContext& renderCtx, deUint32 pname, int required)
+{
+	const glw::Functions&	gl					= renderCtx.getFunctions();
+	int						implementationLimit	= -1;
+	deUint32				error;
+
+	gl.getIntegerv(pname, &implementationLimit);
+	error = gl.getError();
+
+	if (error != GL_NO_ERROR)
+		throw tcu::TestError("Failed to query " + de::toString(glu::getGettableStateStr(pname)) + " - got " + de::toString(glu::getErrorStr(error)));
+	if (implementationLimit < required)
+		throw tcu::NotSupportedError("Test requires " + de::toString(glu::getGettableStateStr(pname)) + " >= " + de::toString(required) + ", got " + de::toString(implementationLimit));
+}
+
 // Shader utilities
 
 static std::string generateVertexShader (const ShaderSpec& shaderSpec)
@@ -1282,10 +1298,25 @@
 class CheckTessSupport
 {
 public:
-	inline CheckTessSupport (const glu::RenderContext& renderCtx)
+	enum Stage
 	{
+		STAGE_CONTROL = 0,
+		STAGE_EVAL,
+	};
+
+	inline CheckTessSupport (const glu::RenderContext& renderCtx, Stage stage)
+	{
+		const int numBlockRequired = 2; // highest binding is always 1 (output) i.e. count == 2
+
 		if (renderCtx.getType().getAPI().getProfile() == glu::PROFILE_ES)
 			checkExtension(renderCtx, "GL_EXT_tessellation_shader");
+
+		if (stage == STAGE_CONTROL)
+			checkLimit(renderCtx, GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, numBlockRequired);
+		else if (stage == STAGE_EVAL)
+			checkLimit(renderCtx, GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, numBlockRequired);
+		else
+			DE_ASSERT(false);
 	}
 };
 
@@ -1356,7 +1387,7 @@
 }
 
 TessControlExecutor::TessControlExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
-	: CheckTessSupport	(renderCtx)
+	: CheckTessSupport	(renderCtx, STAGE_CONTROL)
 	, BufferIoExecutor	(renderCtx, shaderSpec, glu::ProgramSources()
 							<< glu::VertexSource(generateVertexShaderForTess(shaderSpec.version))
 							<< glu::TessellationControlSource(generateTessControlShader(shaderSpec))
@@ -1459,7 +1490,7 @@
 }
 
 TessEvaluationExecutor::TessEvaluationExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
-	: CheckTessSupport	(renderCtx)
+	: CheckTessSupport	(renderCtx, STAGE_EVAL)
 	, BufferIoExecutor	(renderCtx, shaderSpec, glu::ProgramSources()
 							<< glu::VertexSource(generateVertexShaderForTess(shaderSpec.version))
 							<< glu::TessellationControlSource(generatePassthroughTessControlShader(shaderSpec.version))
diff --git a/modules/glshared/glsShaderLibraryCase.cpp b/modules/glshared/glsShaderLibraryCase.cpp
index 7a4e366..a37bb47 100644
--- a/modules/glshared/glsShaderLibraryCase.cpp
+++ b/modules/glshared/glsShaderLibraryCase.cpp
@@ -85,6 +85,17 @@
 	return version != glu::GLSL_VERSION_100_ES;
 }
 
+static int queryGLInt (const glu::RenderContext& renderCtx, deUint32 pname)
+{
+	const glw::Functions&	gl		= renderCtx.getFunctions();
+	glw::GLint				value	= 0;
+
+	gl.getIntegerv(pname, &value);
+	GLU_EXPECT_NO_ERROR(gl.getError(), ("query " + de::toString(glu::getGettableStateStr(pname))).c_str());
+
+	return value;
+}
+
 ShaderCase::ValueBlock::ValueBlock (void)
 	: arrayLength(0)
 {
@@ -1493,7 +1504,7 @@
 	return withExt;
 }
 
-static map<string, string> generateVertexSpecialization (glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
+static map<string, string> generateVertexSpecialization (const glu::RenderContext& renderCtx, glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
 {
 	const bool				usesInout	= usesShaderInoutQualifiers(targetVersion);
 	const char*				vtxIn		= usesInout ? "in" : "attribute";
@@ -1501,6 +1512,8 @@
 	ostringstream			setup;
 	map<string, string>		params;
 
+	DE_UNREF(renderCtx);
+
 	decl << vtxIn << " highp vec4 dEQP_Position;\n";
 
 	for (int ndx = 0; ndx < (int)valueBlock.values.size(); ndx++)
@@ -1534,7 +1547,7 @@
 	return params;
 }
 
-static map<string, string> generateFragmentSpecialization (glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
+static map<string, string> generateFragmentSpecialization (const glu::RenderContext& renderCtx, glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
 {
 	const bool			usesInout		= usesShaderInoutQualifiers(targetVersion);
 	const bool			customColorOut	= usesInout;
@@ -1543,6 +1556,8 @@
 	ostringstream		output;
 	map<string, string>	params;
 
+	DE_UNREF(renderCtx);
+
 	genCompareFunctions(decl, valueBlock, false);
 	genCompareOp(output, fragColor, valueBlock, "", DE_NULL);
 
@@ -1573,11 +1588,12 @@
 	return params;
 }
 
-static map<string, string> generateGeometrySpecialization (glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
+static map<string, string> generateGeometrySpecialization (const glu::RenderContext& renderCtx, glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
 {
 	ostringstream		decl;
 	map<string, string>	params;
 
+	DE_UNREF(renderCtx);
 	DE_UNREF(targetVersion);
 
 	decl << "layout (triangles) in;\n";
@@ -1601,7 +1617,7 @@
 	return params;
 }
 
-static map<string, string> generateTessControlSpecialization (glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
+static map<string, string> generateTessControlSpecialization (const glu::RenderContext& renderCtx, glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
 {
 	ostringstream		decl;
 	ostringstream		output;
@@ -1635,10 +1651,11 @@
 
 	params.insert(pair<string, string>("TESSELLATION_CONTROL_DECLARATIONS",	decl.str()));
 	params.insert(pair<string, string>("TESSELLATION_CONTROL_OUTPUT",		output.str()));
+	params.insert(pair<string, string>("GL_MAX_PATCH_VERTICES",				de::toString(queryGLInt(renderCtx, GL_MAX_PATCH_VERTICES))));
 	return params;
 }
 
-static map<string, string> generateTessEvalSpecialization (glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
+static map<string, string> generateTessEvalSpecialization (const glu::RenderContext& renderCtx, glu::GLSLVersion targetVersion, const ShaderCase::ValueBlock& valueBlock)
 {
 	ostringstream		decl;
 	ostringstream		output;
@@ -1666,14 +1683,22 @@
 
 	params.insert(pair<string, string>("TESSELLATION_EVALUATION_DECLARATIONS",	decl.str()));
 	params.insert(pair<string, string>("TESSELLATION_EVALUATION_OUTPUT",		output.str()));
+	params.insert(pair<string, string>("GL_MAX_PATCH_VERTICES",					de::toString(queryGLInt(renderCtx, GL_MAX_PATCH_VERTICES))));
 	return params;
 }
 
-static void specializeShaders (glu::ProgramSources& dst, glu::ShaderType shaderType, const std::vector<std::string>& sources, const ShaderCase::ValueBlock& valueBlock, glu::GLSLVersion targetVersion, const std::vector<ShaderCase::CaseRequirement>& requirements, std::map<std::string, std::string> (*specializationGenerator)(glu::GLSLVersion, const ShaderCase::ValueBlock&))
+static void specializeShaders (const glu::RenderContext&						renderCtx,
+							   glu::ProgramSources&								dst,
+							   glu::ShaderType									shaderType,
+							   const std::vector<std::string>&					sources,
+							   const ShaderCase::ValueBlock&					valueBlock,
+							   glu::GLSLVersion									targetVersion,
+							   const std::vector<ShaderCase::CaseRequirement>&	requirements,
+							   std::map<std::string, std::string>				(*specializationGenerator)(const glu::RenderContext&, glu::GLSLVersion, const ShaderCase::ValueBlock&))
 {
 	if (!sources.empty())
 	{
-		const std::map<std::string, std::string> specializationParams = specializationGenerator(targetVersion, valueBlock);
+		const std::map<std::string, std::string> specializationParams = specializationGenerator(renderCtx, targetVersion, valueBlock);
 
 		for (int ndx = 0; ndx < (int)sources.size(); ++ndx)
 		{
@@ -1688,27 +1713,27 @@
 
 void ShaderCase::specializeVertexShaders (glu::ProgramSources& dst, const std::vector<std::string>& sources, const ValueBlock& valueBlock, const std::vector<ShaderCase::CaseRequirement>& requirements) const
 {
-	specializeShaders(dst, glu::SHADERTYPE_VERTEX, sources, valueBlock, m_targetVersion, requirements, generateVertexSpecialization);
+	specializeShaders(m_renderCtx, dst, glu::SHADERTYPE_VERTEX, sources, valueBlock, m_targetVersion, requirements, generateVertexSpecialization);
 }
 
 void ShaderCase::specializeFragmentShaders (glu::ProgramSources& dst, const std::vector<std::string>& sources, const ValueBlock& valueBlock, const std::vector<ShaderCase::CaseRequirement>& requirements) const
 {
-	specializeShaders(dst, glu::SHADERTYPE_FRAGMENT, sources, valueBlock, m_targetVersion, requirements, generateFragmentSpecialization);
+	specializeShaders(m_renderCtx, dst, glu::SHADERTYPE_FRAGMENT, sources, valueBlock, m_targetVersion, requirements, generateFragmentSpecialization);
 }
 
 void ShaderCase::specializeGeometryShaders (glu::ProgramSources& dst, const std::vector<std::string>& sources, const ValueBlock& valueBlock, const std::vector<ShaderCase::CaseRequirement>& requirements) const
 {
-	specializeShaders(dst, glu::SHADERTYPE_GEOMETRY, sources, valueBlock, m_targetVersion, requirements, generateGeometrySpecialization);
+	specializeShaders(m_renderCtx, dst, glu::SHADERTYPE_GEOMETRY, sources, valueBlock, m_targetVersion, requirements, generateGeometrySpecialization);
 }
 
 void ShaderCase::specializeTessControlShaders (glu::ProgramSources& dst, const std::vector<std::string>& sources, const ValueBlock& valueBlock, const std::vector<ShaderCase::CaseRequirement>& requirements) const
 {
-	specializeShaders(dst, glu::SHADERTYPE_TESSELLATION_CONTROL, sources, valueBlock, m_targetVersion, requirements, generateTessControlSpecialization);
+	specializeShaders(m_renderCtx, dst, glu::SHADERTYPE_TESSELLATION_CONTROL, sources, valueBlock, m_targetVersion, requirements, generateTessControlSpecialization);
 }
 
 void ShaderCase::specializeTessEvalShaders (glu::ProgramSources& dst, const std::vector<std::string>& sources, const ValueBlock& valueBlock, const std::vector<ShaderCase::CaseRequirement>& requirements) const
 {
-	specializeShaders(dst, glu::SHADERTYPE_TESSELLATION_EVALUATION, sources, valueBlock, m_targetVersion, requirements, generateTessEvalSpecialization);
+	specializeShaders(m_renderCtx, dst, glu::SHADERTYPE_TESSELLATION_EVALUATION, sources, valueBlock, m_targetVersion, requirements, generateTessEvalSpecialization);
 }
 
 void ShaderCase::dumpValues (const ValueBlock& valueBlock, int arrayNdx)
diff --git a/modules/glshared/glsStateQueryUtil.cpp b/modules/glshared/glsStateQueryUtil.cpp
index ef3000f..5edbc1a 100644
--- a/modules/glshared/glsStateQueryUtil.cpp
+++ b/modules/glshared/glsStateQueryUtil.cpp
@@ -1079,11 +1079,20 @@
 
 		case DATATYPE_FLOAT:
 		{
-			const glw::GLfloat reference = (glw::GLfloat)expected;
-			if (state.getFloatAccess() != reference)
+			const glw::GLfloat refValueMin = deInt32ToFloatRoundToNegInf(expected);
+			const glw::GLfloat refValueMax = deInt32ToFloatRoundToPosInf(expected);
+
+			if (state.getFloatAccess() < refValueMin ||
+				state.getFloatAccess() > refValueMax ||
+				deIsNaN(state.getFloatAccess()))
 			{
 				std::ostringstream buf;
-				buf << "Expected " << reference << ", got " << state.getFloatAccess();
+
+				if (refValueMin == refValueMax)
+					buf << "Expected " << refValueMin << ", got " << state.getFloatAccess();
+				else
+					buf << "Expected in range [" << refValueMin << ", " << refValueMax << "], got " << state.getFloatAccess();
+
 				result.fail(buf.str());
 			}
 			break;
@@ -1147,7 +1156,7 @@
 
 		case DATATYPE_FLOAT:
 		{
-			if (state.getFloatAccess() < minValue)
+			if (state.getFloatAccess() < deInt32ToFloatRoundToNegInf(minValue) || deIsNaN(state.getFloatAccess()))
 			{
 				std::ostringstream buf;
 				buf << "Expected greater or equal to " << minValue << ", got " << state.getFloatAccess();
@@ -1201,7 +1210,7 @@
 
 		case DATATYPE_FLOAT:
 		{
-			if (state.getFloatAccess() > maxValue)
+			if (state.getFloatAccess() > deInt32ToFloatRoundToPosInf(maxValue) || deIsNaN(state.getFloatAccess()))
 			{
 				std::ostringstream buf;
 				buf << "Expected less or equal to " << maxValue << ", got " << state.getFloatAccess();
@@ -1336,7 +1345,7 @@
 
 		case DATATYPE_FLOAT:
 		{
-			if (state.getFloatAccess() < minValue)
+			if (state.getFloatAccess() < minValue || deIsNaN(state.getFloatAccess()))
 			{
 				std::ostringstream buf;
 				buf << "Expected greater or equal to " << minValue << ", got " << state.getFloatAccess();
@@ -1390,7 +1399,7 @@
 
 		case DATATYPE_FLOAT:
 		{
-			if (state.getFloatAccess() > maxValue)
+			if (state.getFloatAccess() > maxValue || deIsNaN(state.getFloatAccess()))
 			{
 				std::ostringstream buf;
 				buf << "Expected less or equal to " << maxValue << ", got " << state.getFloatAccess();
@@ -1614,7 +1623,6 @@
 	}
 }
 
-
 void verifyFloatVec4 (tcu::ResultCollector& result, QueriedState& state, const tcu::Vec4& expected)
 {
 	switch (state.getType())
diff --git a/modules/glshared/glsTextureTestUtil.cpp b/modules/glshared/glsTextureTestUtil.cpp
index ab91da9..452f3c9 100644
--- a/modules/glshared/glsTextureTestUtil.cpp
+++ b/modules/glshared/glsTextureTestUtil.cpp
@@ -213,7 +213,7 @@
 
 // 1D lookup LOD computation.
 
-inline float computeLodFromDerivates (LodMode mode, float dudx, float dudy)
+float computeLodFromDerivates (LodMode mode, float dudx, float dudy)
 {
 	float p = 0.0f;
 	switch (mode)
@@ -244,7 +244,7 @@
 
 // 2D lookup LOD computation.
 
-inline float computeLodFromDerivates (LodMode mode, float dudx, float dvdx, float dudy, float dvdy)
+float computeLodFromDerivates (LodMode mode, float dudx, float dvdx, float dudy, float dvdy)
 {
 	float p = 0.0f;
 	switch (mode)
@@ -284,7 +284,7 @@
 
 // 3D lookup LOD computation.
 
-inline float computeLodFromDerivates (LodMode mode, float dudx, float dvdx, float dwdx, float dudy, float dvdy, float dwdy)
+float computeLodFromDerivates (LodMode mode, float dudx, float dvdx, float dwdx, float dudy, float dvdy, float dwdy)
 {
 	float p = 0.0f;
 	switch (mode)
@@ -982,13 +982,6 @@
 	}
 }
 
-void clear (const SurfaceAccess& dst, const tcu::Vec4& color)
-{
-	for (int y = 0; y < dst.getHeight(); y++)
-		for (int x = 0; x < dst.getWidth(); x++)
-			dst.setPixel(color, x, y);
-}
-
 bool compareImages (TestLog& log, const tcu::Surface& reference, const tcu::Surface& rendered, tcu::RGBA threshold)
 {
 	return tcu::pixelThresholdCompare(log, "Result", "Image comparison result", reference, rendered, threshold, tcu::COMPARE_LOG_RESULT);
diff --git a/modules/glshared/glsTextureTestUtil.hpp b/modules/glshared/glsTextureTestUtil.hpp
index a94f1ab..c7a8af1 100644
--- a/modules/glshared/glsTextureTestUtil.hpp
+++ b/modules/glshared/glsTextureTestUtil.hpp
@@ -344,8 +344,6 @@
 	int					maxLevel;
 };
 
-void			clear						(const SurfaceAccess& dst, const tcu::Vec4& color);
-
 // Similar to sampleTexture() except uses texelFetch.
 void			fetchTexture				(const SurfaceAccess& dst, const tcu::ConstPixelBufferAccess& src, const float* texCoord, const tcu::Vec4& colorScale, const tcu::Vec4& colorBias);
 
@@ -357,6 +355,10 @@
 void			sampleTexture				(const SurfaceAccess& dst, const tcu::Texture1DView&		src, const float* texCoord, const ReferenceParams& params);
 void			sampleTexture				(const SurfaceAccess& dst, const tcu::Texture1DArrayView&	src, const float* texCoord, const ReferenceParams& params);
 
+float			computeLodFromDerivates		(LodMode mode, float dudx, float dudy);
+float			computeLodFromDerivates		(LodMode mode, float dudx, float dvdx, float dudy, float dvdy);
+float			computeLodFromDerivates		(LodMode mode, float dudx, float dvdx, float dwdx, float dudy, float dvdy, float dwdy);
+
 void			computeQuadTexCoord1D			(std::vector<float>& dst, float left, float right);
 void			computeQuadTexCoord1DArray		(std::vector<float>& dst, int layerNdx, float left, float right);
 void			computeQuadTexCoord2D			(std::vector<float>& dst, const tcu::Vec2& bottomLeft, const tcu::Vec2& topRight);
diff --git a/modules/glshared/glsVertexArrayTests.cpp b/modules/glshared/glsVertexArrayTests.cpp
index 71bba45..54cb855 100644
--- a/modules/glshared/glsVertexArrayTests.cpp
+++ b/modules/glshared/glsVertexArrayTests.cpp
@@ -1817,14 +1817,21 @@
 
 		m_isOk = true;
 
-		for (int y = 1; y < ref.getHeight()-1; y++)
+		for (int y = 0; y < ref.getHeight(); y++)
 		{
-			for (int x = 1; x < ref.getWidth()-1; x++)
+			for (int x = 0; x < ref.getWidth(); x++)
 			{
 				tcu::RGBA	refPixel		= ref.getPixel(x, y);
 				tcu::RGBA	screenPixel		= screen.getPixel(x, y);
 				bool		isOkPixel		= false;
 
+				if (y == 0 || y + 1 == ref.getHeight() || x == 0 || x + 1 == ref.getWidth())
+				{
+					// Don't check borders since the pixel neighborhood is undefined
+					error.setPixel(x, y, tcu::RGBA(screenPixel.getRed(), (screenPixel.getGreen() + 255) / 2, screenPixel.getBlue(), 255));
+					continue;
+				}
+
 				// Don't do comparisons for this pixel if it belongs to a one-pixel-thin part (i.e. it doesn't have similar-color neighbors in both x and y directions) in both result and reference.
 				// This fixes some false negatives.
 				bool		refThin			= (!tcu::compareThreshold(refPixel, ref.getPixel(x-1, y  ), threshold) && !tcu::compareThreshold(refPixel, ref.getPixel(x+1, y  ), threshold)) ||
diff --git a/modules/internal/ditDelibsTests.cpp b/modules/internal/ditDelibsTests.cpp
index f2bc06c..5f58c00 100644
--- a/modules/internal/ditDelibsTests.cpp
+++ b/modules/internal/ditDelibsTests.cpp
@@ -43,6 +43,7 @@
 
 // debase
 #include "deInt32.h"
+#include "deMath.h"
 
 // decpp
 #include "deBlockBuffer.hpp"
@@ -156,6 +157,7 @@
 	void init (void)
 	{
 		addChild(new SelfCheckCase(m_testCtx, "int32",	"deInt32_selfTest()",	deInt32_selfTest));
+		addChild(new SelfCheckCase(m_testCtx, "math",	"deMath_selfTest()",	deMath_selfTest));
 	}
 };
 
diff --git a/scripts/build_android_mustpass.py b/scripts/build_android_mustpass.py
index 3fd8ff7..d81362b 100644
--- a/scripts/build_android_mustpass.py
+++ b/scripts/build_android_mustpass.py
@@ -137,7 +137,7 @@
 				ptrns.append(line)
 	return ptrns
 
-def applyPatterns (caseList, patterns, op):
+def applyPatterns (caseList, patterns, filename, op):
 	matched			= set()
 	errors			= []
 	curList			= copy(caseList)
@@ -173,15 +173,15 @@
 		print "ERROR: %s: %s" % (reason, pattern)
 
 	if len(errors) > 0:
-		die("Found %s invalid patterns" % len(errors))
+		die("Found %s invalid patterns while processing file %s" % (len(errors), filename))
 
 	return [c for c in caseList if op(c in matched)]
 
-def applyInclude (caseList, patterns):
-	return applyPatterns(caseList, patterns, lambda b: b)
+def applyInclude (caseList, patterns, filename):
+	return applyPatterns(caseList, patterns, filename, lambda b: b)
 
-def applyExclude (caseList, patterns):
-	return applyPatterns(caseList, patterns, lambda b: not b)
+def applyExclude (caseList, patterns, filename):
+	return applyPatterns(caseList, patterns, filename, lambda b: not b)
 
 def readPatternLists (mustpass):
 	lists = {}
@@ -197,10 +197,10 @@
 	for filter in filters:
 		ptrnList = patternLists[filter.filename]
 		if filter.type == Filter.TYPE_INCLUDE:
-			res = applyInclude(res, ptrnList)
+			res = applyInclude(res, ptrnList, filter.filename)
 		else:
 			assert filter.type == Filter.TYPE_EXCLUDE
-			res = applyExclude(res, ptrnList)
+			res = applyExclude(res, ptrnList, filter.filename)
 	return res
 
 def appendToHierarchy (root, casePath):
@@ -418,7 +418,11 @@
 					  filters		= MASTER_EGL_COMMON_FILTERS),
 	])
 
-MASTER_GLES2_COMMON_FILTERS		= [include("gles2-master.txt"), exclude("gles2-failures.txt")]
+MASTER_GLES2_COMMON_FILTERS		= [
+		include("gles2-master.txt"),
+		exclude("gles2-test-issues.txt"),
+		exclude("gles2-failures.txt")
+	]
 MASTER_GLES2_PKG				= Package(module = GLES2_MODULE, configurations = [
 		# Master
 		Configuration(name			= "master",
@@ -484,6 +488,7 @@
 		exclude("gles31-hw-issues.txt"),
 		exclude("gles31-test-issues.txt"),
 		exclude("gles31-spec-issues.txt"),
+		exclude("gles31-new-tests.txt"),
 	]
 MASTER_GLES31_PKG				= Package(module = GLES31_MODULE, configurations = [
 		# Master
diff --git a/scripts/egl/call_log_wrapper.py b/scripts/egl/call_log_wrapper.py
index 7841e46..2710341 100644
--- a/scripts/egl/call_log_wrapper.py
+++ b/scripts/egl/call_log_wrapper.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import os
 import string
 
diff --git a/scripts/egl/enums.py b/scripts/egl/enums.py
index c78e0a7..353062e 100644
--- a/scripts/egl/enums.py
+++ b/scripts/egl/enums.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import os
 import string
 
diff --git a/scripts/egl/func_ptrs.py b/scripts/egl/func_ptrs.py
index 024e9b1..a170e9f 100644
--- a/scripts/egl/func_ptrs.py
+++ b/scripts/egl/func_ptrs.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 from common import *
 from khr_util.format import commandParams
 
diff --git a/scripts/egl/library.py b/scripts/egl/library.py
index f0e675b..e2641a4 100644
--- a/scripts/egl/library.py
+++ b/scripts/egl/library.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 from common import *
 from khr_util.format import indentLines, commandParams, commandArgs
 import khr_util.registry
diff --git a/scripts/src_util/pre_commit.py b/scripts/src_util/pre_commit.py
index 2f8df3f..5249ff2 100755
--- a/scripts/src_util/pre_commit.py
+++ b/scripts/src_util/pre_commit.py
@@ -1,4 +1,25 @@
 #!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
 
 # Check that the input file has no external include guards.
 # Returns with 0 exit code on success, 1 otherwise.
diff --git a/scripts/update-copyright-year.py b/scripts/update-copyright-year.py
index 28b4cd9..8b72f41 100644
--- a/scripts/update-copyright-year.py
+++ b/scripts/update-copyright-year.py
@@ -1,5 +1,25 @@
 # -*- coding: utf-8 -*-
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 import os
 import re
 import sys
diff --git a/targets/android/install.sh b/targets/android/install.sh
index 1ac9130..450ad0c 100755
--- a/targets/android/install.sh
+++ b/targets/android/install.sh
@@ -1,5 +1,25 @@
 #!/bin/sh
 
+#-------------------------------------------------------------------------
+# drawElements Quality Program utilities
+# --------------------------------------
+#
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-------------------------------------------------------------------------
+
 echo "Removing old dEQP Ondevice Package..."
 adb $* uninstall com.drawelements.deqp