diff --git a/android/cts/master/egl-master-risky.txt b/android/cts/master/egl-master-risky.txt
index 3f002c0..e69de29 100644
--- a/android/cts/master/egl-master-risky.txt
+++ b/android/cts/master/egl-master-risky.txt
@@ -1,199 +0,0 @@
-dEQP-EGL.functional.create_surface.window.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.window.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.window.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.window.other
-dEQP-EGL.functional.create_surface.pixmap.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.pixmap.other
-dEQP-EGL.functional.create_surface.pbuffer.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.pbuffer.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.pbuffer.other
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_window.other
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_ext_pixmap.other
-dEQP-EGL.functional.create_surface.platform_window.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_window.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_window.other
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_no_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_no_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_depth_no_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_depth_stencil
-dEQP-EGL.functional.create_surface.platform_pixmap.other
-dEQP-EGL.functional.image.api.invalid_create_image
-dEQP-EGL.functional.fence_sync.valid.create_null_attribs
-dEQP-EGL.functional.fence_sync.valid.create_empty_attribs
-dEQP-EGL.functional.fence_sync.valid.wait_no_timeout
-dEQP-EGL.functional.fence_sync.valid.wait_forever
-dEQP-EGL.functional.fence_sync.valid.wait_no_context
-dEQP-EGL.functional.fence_sync.valid.wait_forever_flush
-dEQP-EGL.functional.fence_sync.valid.get_type
-dEQP-EGL.functional.fence_sync.valid.get_status
-dEQP-EGL.functional.fence_sync.valid.get_status_signaled
-dEQP-EGL.functional.fence_sync.valid.get_condition
-dEQP-EGL.functional.fence_sync.valid.destroy
-dEQP-EGL.functional.fence_sync.valid.wait_server
-dEQP-EGL.functional.fence_sync.invalid.create_invalid_display
-dEQP-EGL.functional.fence_sync.invalid.create_invalid_type
-dEQP-EGL.functional.fence_sync.invalid.create_invalid_attribs
-dEQP-EGL.functional.fence_sync.invalid.create_invalid_context
-dEQP-EGL.functional.fence_sync.invalid.wait_invalid_display
-dEQP-EGL.functional.fence_sync.invalid.wait_invalid_sync
-dEQP-EGL.functional.fence_sync.invalid.get_invalid_display
-dEQP-EGL.functional.fence_sync.invalid.get_invalid_sync
-dEQP-EGL.functional.fence_sync.invalid.get_invalid_attribute
-dEQP-EGL.functional.fence_sync.invalid.get_invalid_value
-dEQP-EGL.functional.fence_sync.invalid.destroy_invalid_display
-dEQP-EGL.functional.fence_sync.invalid.destroy_invalid_sync
-dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_display
-dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_sync
-dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_flag
-dEQP-EGL.functional.get_proc_address.core.egl15
-dEQP-EGL.functional.reusable_sync.valid.create_null_attribs
-dEQP-EGL.functional.reusable_sync.valid.create_empty_attribs
-dEQP-EGL.functional.reusable_sync.valid.wait_no_timeout
-dEQP-EGL.functional.reusable_sync.valid.wait_forever
-dEQP-EGL.functional.reusable_sync.valid.wait_no_context
-dEQP-EGL.functional.reusable_sync.valid.wait_forever_flush
-dEQP-EGL.functional.reusable_sync.valid.get_type
-dEQP-EGL.functional.reusable_sync.valid.get_status
-dEQP-EGL.functional.reusable_sync.valid.get_status_signaled
-dEQP-EGL.functional.reusable_sync.valid.destroy
-dEQP-EGL.functional.reusable_sync.invalid.create_invalid_display
-dEQP-EGL.functional.reusable_sync.invalid.create_invalid_type
-dEQP-EGL.functional.reusable_sync.invalid.create_invalid_attribs
-dEQP-EGL.functional.reusable_sync.invalid.wait_invalid_display
-dEQP-EGL.functional.reusable_sync.invalid.wait_invalid_sync
-dEQP-EGL.functional.reusable_sync.invalid.get_invalid_display
-dEQP-EGL.functional.reusable_sync.invalid.get_invalid_sync
-dEQP-EGL.functional.reusable_sync.invalid.get_invalid_attribute
-dEQP-EGL.functional.reusable_sync.invalid.get_invalid_value
-dEQP-EGL.functional.reusable_sync.invalid.destroy_invalid_display
-dEQP-EGL.functional.reusable_sync.invalid.destroy_invalid_sync
-dEQP-EGL.functional.reusable_sync.invalid.wait_server_invalid_display
-dEQP-EGL.functional.reusable_sync.invalid.wait_server_invalid_sync
diff --git a/android/cts/master/egl-master.txt b/android/cts/master/egl-master.txt
index f7fc1f6..b13dec4 100644
--- a/android/cts/master/egl-master.txt
+++ b/android/cts/master/egl-master.txt
@@ -90,6 +90,153 @@
 dEQP-EGL.functional.query_context.query_context.rgba8888_pixmap
 dEQP-EGL.functional.query_context.query_context.rgba8888_pbuffer
 dEQP-EGL.functional.query_context.query_context.other
+dEQP-EGL.functional.create_surface.window.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.window.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.window.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.window.other
+dEQP-EGL.functional.create_surface.pixmap.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.pixmap.other
+dEQP-EGL.functional.create_surface.pbuffer.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.pbuffer.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.pbuffer.other
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_window.other
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_ext_pixmap.other
+dEQP-EGL.functional.create_surface.platform_window.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_window.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_window.other
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb565_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgb888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba4444_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba5551_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_no_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_no_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_depth_no_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.rgba8888_depth_stencil
+dEQP-EGL.functional.create_surface.platform_pixmap.other
 dEQP-EGL.functional.query_surface.simple.window.rgb565_no_depth_no_stencil
 dEQP-EGL.functional.query_surface.simple.window.rgb565_no_depth_stencil
 dEQP-EGL.functional.query_surface.simple.window.rgb565_depth_no_stencil
@@ -802,6 +949,7 @@
 dEQP-EGL.functional.render.multi_thread.gles2_gles3.rgba8888_pixmap
 dEQP-EGL.functional.render.multi_thread.gles2_gles3.rgba8888_pbuffer
 dEQP-EGL.functional.render.multi_thread.gles2_gles3.other
+dEQP-EGL.functional.image.api.invalid_create_image
 dEQP-EGL.functional.image.api.create_image_gles2_tex2d_red
 dEQP-EGL.functional.image.api.create_image_gles2_tex2d_rg
 dEQP-EGL.functional.image.api.create_image_gles2_tex2d_luminance
@@ -2225,6 +2373,33 @@
 dEQP-EGL.functional.negative_api.swap_interval
 dEQP-EGL.functional.negative_api.terminate
 dEQP-EGL.functional.negative_api.wait_native
+dEQP-EGL.functional.fence_sync.valid.create_null_attribs
+dEQP-EGL.functional.fence_sync.valid.create_empty_attribs
+dEQP-EGL.functional.fence_sync.valid.wait_no_timeout
+dEQP-EGL.functional.fence_sync.valid.wait_forever
+dEQP-EGL.functional.fence_sync.valid.wait_no_context
+dEQP-EGL.functional.fence_sync.valid.wait_forever_flush
+dEQP-EGL.functional.fence_sync.valid.get_type
+dEQP-EGL.functional.fence_sync.valid.get_status
+dEQP-EGL.functional.fence_sync.valid.get_status_signaled
+dEQP-EGL.functional.fence_sync.valid.get_condition
+dEQP-EGL.functional.fence_sync.valid.destroy
+dEQP-EGL.functional.fence_sync.valid.wait_server
+dEQP-EGL.functional.fence_sync.invalid.create_invalid_display
+dEQP-EGL.functional.fence_sync.invalid.create_invalid_type
+dEQP-EGL.functional.fence_sync.invalid.create_invalid_attribs
+dEQP-EGL.functional.fence_sync.invalid.create_invalid_context
+dEQP-EGL.functional.fence_sync.invalid.wait_invalid_display
+dEQP-EGL.functional.fence_sync.invalid.wait_invalid_sync
+dEQP-EGL.functional.fence_sync.invalid.get_invalid_display
+dEQP-EGL.functional.fence_sync.invalid.get_invalid_sync
+dEQP-EGL.functional.fence_sync.invalid.get_invalid_attribute
+dEQP-EGL.functional.fence_sync.invalid.get_invalid_value
+dEQP-EGL.functional.fence_sync.invalid.destroy_invalid_display
+dEQP-EGL.functional.fence_sync.invalid.destroy_invalid_sync
+dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_display
+dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_sync
+dEQP-EGL.functional.fence_sync.invalid.wait_server_invalid_flag
 dEQP-EGL.functional.multithread.config
 dEQP-EGL.functional.multithread.pbuffer
 dEQP-EGL.functional.multithread.single_window
@@ -2415,6 +2590,7 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_qcom_texture_foveated
 dEQP-EGL.functional.get_proc_address.extension.gl_qcom_shader_framebuffer_fetch_noncoherent
 dEQP-EGL.functional.get_proc_address.core.egl
+dEQP-EGL.functional.get_proc_address.core.egl15
 dEQP-EGL.functional.get_proc_address.core.gles
 dEQP-EGL.functional.get_proc_address.core.gles2
 dEQP-EGL.functional.get_proc_address.core.gles3
@@ -3145,6 +3321,29 @@
 dEQP-EGL.functional.native_coord_mapping.pbuffer_to_native_pixmap.rgba8888_depth_stencil_render
 dEQP-EGL.functional.native_coord_mapping.pbuffer_to_native_pixmap.other_clear
 dEQP-EGL.functional.native_coord_mapping.pbuffer_to_native_pixmap.other_render
+dEQP-EGL.functional.reusable_sync.valid.create_null_attribs
+dEQP-EGL.functional.reusable_sync.valid.create_empty_attribs
+dEQP-EGL.functional.reusable_sync.valid.wait_no_timeout
+dEQP-EGL.functional.reusable_sync.valid.wait_forever
+dEQP-EGL.functional.reusable_sync.valid.wait_no_context
+dEQP-EGL.functional.reusable_sync.valid.wait_forever_flush
+dEQP-EGL.functional.reusable_sync.valid.get_type
+dEQP-EGL.functional.reusable_sync.valid.get_status
+dEQP-EGL.functional.reusable_sync.valid.get_status_signaled
+dEQP-EGL.functional.reusable_sync.valid.destroy
+dEQP-EGL.functional.reusable_sync.invalid.create_invalid_display
+dEQP-EGL.functional.reusable_sync.invalid.create_invalid_type
+dEQP-EGL.functional.reusable_sync.invalid.create_invalid_attribs
+dEQP-EGL.functional.reusable_sync.invalid.wait_invalid_display
+dEQP-EGL.functional.reusable_sync.invalid.wait_invalid_sync
+dEQP-EGL.functional.reusable_sync.invalid.get_invalid_display
+dEQP-EGL.functional.reusable_sync.invalid.get_invalid_sync
+dEQP-EGL.functional.reusable_sync.invalid.get_invalid_attribute
+dEQP-EGL.functional.reusable_sync.invalid.get_invalid_value
+dEQP-EGL.functional.reusable_sync.invalid.destroy_invalid_display
+dEQP-EGL.functional.reusable_sync.invalid.destroy_invalid_sync
+dEQP-EGL.functional.reusable_sync.invalid.wait_server_invalid_display
+dEQP-EGL.functional.reusable_sync.invalid.wait_server_invalid_sync
 dEQP-EGL.functional.resize.surface_size.shrink
 dEQP-EGL.functional.resize.surface_size.grow
 dEQP-EGL.functional.resize.surface_size.stretch_width
diff --git a/android/cts/master/src/egl-temp-excluded.txt b/android/cts/master/src/egl-temp-excluded.txt
index 3b434a7..2974117 100644
--- a/android/cts/master/src/egl-temp-excluded.txt
+++ b/android/cts/master/src/egl-temp-excluded.txt
@@ -1,8 +1 @@
 # Tests to be temporarily skipped for Android CI, but still enforced in CTS.
-
-# b/128983254
-dEQP-EGL.functional.fence_sync.*
-dEQP-EGL.functional.image.api.invalid_create_image
-dEQP-EGL.functional.create_surface.*
-dEQP-EGL.functional.get_proc_address.core.egl15
-dEQP-EGL.functional.reusable_sync.*
diff --git a/android/cts/master/src/vk-excluded-tests.txt b/android/cts/master/src/vk-excluded-tests.txt
index b874e55..7175f4f 100644
--- a/android/cts/master/src/vk-excluded-tests.txt
+++ b/android/cts/master/src/vk-excluded-tests.txt
@@ -67,3 +67,6 @@
 
 # Excluded VkRunner example tests
 dEQP-VK.vkrunner-example.*
+
+# Exclude conformance version from android test, issue 1839
+dEQP-VK.api.driver_properties.conformance_version
diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt
index 806e01d..155ca4d 100755
--- a/android/cts/master/vk-master.txt
+++ b/android/cts/master/vk-master.txt
@@ -4,7 +4,10 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
diff --git a/executor/tools/xeExtractValues.cpp b/executor/tools/xeExtractValues.cpp
index 64a8689..5949824 100644
--- a/executor/tools/xeExtractValues.cpp
+++ b/executor/tools/xeExtractValues.cpp
@@ -110,7 +110,7 @@
 		if (item.getType() == xe::ri::TYPE_SECTION)
 		{
 			const Value value = findValueByTag(static_cast<const xe::ri::Section&>(item).items, tagName);
-			if (value.getType() != Value::TYPE_EMPTY)
+			if (value.getType() != Value::NUMVALTYPE_EMPTY)
 				return value;
 		}
 		else if (item.getType() == xe::ri::TYPE_NUMBER)
diff --git a/executor/xeTestCaseResult.cpp b/executor/xeTestCaseResult.cpp
index f007603..5e56fa4 100644
--- a/executor/xeTestCaseResult.cpp
+++ b/executor/xeTestCaseResult.cpp
@@ -71,14 +71,14 @@
 {
 	switch (value.getType())
 	{
-		case NumericValue::TYPE_FLOAT64:
+		case NumericValue::NUMVALTYPE_FLOAT64:
 			return str << std::setprecision(std::numeric_limits<double>::digits10 + 2) << value.getFloat64();
 
-		case NumericValue::TYPE_INT64:
+		case NumericValue::NUMVALTYPE_INT64:
 			return str << value.getInt64();
 
 		default:
-			DE_ASSERT(value.getType() == NumericValue::TYPE_EMPTY);
+			DE_ASSERT(value.getType() == NumericValue::NUMVALTYPE_EMPTY);
 			return str;
 	}
 }
diff --git a/executor/xeTestCaseResult.hpp b/executor/xeTestCaseResult.hpp
index 11d68ce..eef92d7 100644
--- a/executor/xeTestCaseResult.hpp
+++ b/executor/xeTestCaseResult.hpp
@@ -163,20 +163,20 @@
 public:
 	enum Type
 	{
-		TYPE_EMPTY = 0,
-		TYPE_INT64,
-		TYPE_FLOAT64,
+		NUMVALTYPE_EMPTY = 0,
+		NUMVALTYPE_INT64,
+		NUMVALTYPE_FLOAT64,
 
-		TYPE_LAST
+		NUMVALTYPE_LAST
 	};
 
-					NumericValue	(void)			: m_type(TYPE_EMPTY)	{}
-					NumericValue	(deInt64 value)	: m_type(TYPE_INT64)	{ m_value.int64 = value;	}
-					NumericValue	(double value)	: m_type(TYPE_FLOAT64)	{ m_value.float64 = value;	}
+					NumericValue	(void)			: m_type(NUMVALTYPE_EMPTY)		{}
+					NumericValue	(deInt64 value)	: m_type(NUMVALTYPE_INT64)		{ m_value.int64 = value;	}
+					NumericValue	(double value)	: m_type(NUMVALTYPE_FLOAT64)	{ m_value.float64 = value;	}
 
 	Type			getType			(void) const	{ return m_type; }
-	deInt64			getInt64		(void) const	{ DE_ASSERT(getType() == TYPE_INT64);	return m_value.int64;	}
-	double			getFloat64		(void) const	{ DE_ASSERT(getType() == TYPE_FLOAT64);	return m_value.float64;	}
+	deInt64			getInt64		(void) const	{ DE_ASSERT(getType() == NUMVALTYPE_INT64);		return m_value.int64;	}
+	double			getFloat64		(void) const	{ DE_ASSERT(getType() == NUMVALTYPE_FLOAT64);	return m_value.float64;	}
 
 private:
 	Type			m_type;
diff --git a/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
index 248fbe6..568b9e7 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
@@ -37,6 +37,15 @@
 namespace
 {
 
+enum TestType
+{
+	TEST_TYPE_DRIVER_ID_MATCH			= 0,
+	TEST_TYPE_NAME_IS_NOT_EMPTY,
+	TEST_TYPE_NAME_ZERO_TERMINATED,
+	TEST_TYPE_INFO_ZERO_TERMINATED,
+	TEST_TYPE_VERSION,
+};
+
 static const deUint32 knownDriverIds[] =
 {
 	// Specified in the Vulkan registry (vk.xml)
@@ -49,6 +58,9 @@
 	7,	// author = "Imagination Technologies"       comment = "Imagination proprietary driver"
 	8,	// author = "Qualcomm Technologies, Inc."    comment = "Qualcomm proprietary driver"
 	9,	// author = "Arm Limited"                    comment = "Arm proprietary driver"
+	10,	// <enum value="10"      name="VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR"        comment="Google LLC"/>
+	11,	// <enum value="11"      name="VK_DRIVER_ID_GGP_PROPRIETARY_KHR"           comment="Google LLC"/>
+	12,	// <enum value="12"      name="VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR"      comment="Broadcom Inc."/>
 };
 
 static const VkConformanceVersionKHR knownConformanceVersions[] =
@@ -87,15 +99,60 @@
 			(a.patch == b.patch));
 }
 
-tcu::TestStatus testQueryProperties (Context& context)
+void checkSupport (Context& context, const TestType config)
 {
-	// Check extension support
+	DE_UNREF(config);
 
+	// Check extension support
 	if (!isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "VK_KHR_driver_properties"))
 		TCU_THROW(NotSupportedError, "Unsupported extension: VK_KHR_driver_properties");
+}
 
+void testDriverMatch (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+{
+	for (const deUint32* pDriverId = knownDriverIds; pDriverId != DE_ARRAY_END(knownDriverIds); ++pDriverId)
+	{
+		if (deviceDriverProperties.driverID == *pDriverId)
+			return;
+	}
+
+	TCU_FAIL("Driver ID did not match any known driver");
+}
+
+void testNameIsNotEmpty (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+{
+	if (deviceDriverProperties.driverName[0] == 0)
+		TCU_FAIL("Driver name is empty");
+}
+
+void testNameZeroTerminated (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+{
+	if (!isNullTerminated(deviceDriverProperties.driverName, VK_MAX_DRIVER_NAME_SIZE_KHR))
+		TCU_FAIL("Driver name is not a null-terminated string");
+}
+
+void testInfoZeroTerminated (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+{
+	if (!isNullTerminated(deviceDriverProperties.driverInfo, VK_MAX_DRIVER_INFO_SIZE_KHR))
+		TCU_FAIL("Driver info is not a null-terminated string");
+}
+
+void testVersion (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+{
+	for (const VkConformanceVersionKHR* pConformanceVersion  = knownConformanceVersions;
+										pConformanceVersion != DE_ARRAY_END(knownConformanceVersions);
+									  ++pConformanceVersion)
+	{
+		if (deviceDriverProperties.conformanceVersion == *pConformanceVersion)
+			return;
+	}
+
+	TCU_FAIL("Wrong driver conformance version");
+}
+
+tcu::TestStatus testQueryProperties (Context& context, const TestType testType)
+{
 	// Query the driver properties
-
 	const VkPhysicalDevice				physDevice			= context.getPhysicalDevice();
 	const int							memsetPattern		= 0xaa;
 	VkPhysicalDeviceProperties2			deviceProperties2;
@@ -112,51 +169,26 @@
 	context.getInstanceInterface().getPhysicalDeviceProperties2(physDevice, &deviceProperties2);
 
 	// Verify the returned values
-
-	bool match = false;
-
-	for (const deUint32* pDriverId = knownDriverIds; (pDriverId != DE_ARRAY_END(knownDriverIds)) && !match; ++pDriverId)
+	switch (testType)
 	{
-		if (deviceDriverProperties.driverID == *pDriverId)
-		{
-			match = true;
-
-			if (!isNullTerminated(deviceDriverProperties.driverName, VK_MAX_DRIVER_NAME_SIZE_KHR))
-				TCU_FAIL("Driver name is not a null-terminated string");
-
-			if (deviceDriverProperties.driverName[0] == 0)
-				TCU_FAIL("Driver name is empty");
-
-			if (!isNullTerminated(deviceDriverProperties.driverInfo, VK_MAX_DRIVER_INFO_SIZE_KHR))
-				TCU_FAIL("Driver info is not a null-terminated string");
-
-			bool conformanceVersionMatch = false;
-
-			for (const VkConformanceVersionKHR* pConformanceVersion  = knownConformanceVersions;
-												pConformanceVersion != DE_ARRAY_END(knownConformanceVersions);
-											  ++pConformanceVersion)
-			{
-				if (deviceDriverProperties.conformanceVersion == *pConformanceVersion)
-				{
-					conformanceVersionMatch = true;
-					break;
-				}
-			}
-
-			if (!conformanceVersionMatch)
-				TCU_FAIL("Wrong driver conformance version");
-		}
+		case TEST_TYPE_DRIVER_ID_MATCH:			testDriverMatch			(deviceDriverProperties);	break;
+		case TEST_TYPE_NAME_IS_NOT_EMPTY:		testNameIsNotEmpty		(deviceDriverProperties);	break;
+		case TEST_TYPE_NAME_ZERO_TERMINATED:	testNameZeroTerminated	(deviceDriverProperties);	break;
+		case TEST_TYPE_INFO_ZERO_TERMINATED:	testInfoZeroTerminated	(deviceDriverProperties);	break;
+		case TEST_TYPE_VERSION:					testVersion				(deviceDriverProperties);	break;
+		default:								TCU_THROW(InternalError, "Unknown test type specified");
 	}
 
-	if (!match)
-		TCU_FAIL("Driver ID did not match any known driver");
-
 	return tcu::TestStatus::pass("Pass");
 }
 
 void createTestCases (tcu::TestCaseGroup* group)
 {
-	addFunctionCase(group, "properties", "Query VkPhysicalDeviceDriverPropertiesKHR and check its values", testQueryProperties);
+	addFunctionCase(group, "driver_id_match",		"Check driverID is supported",					checkSupport,	testQueryProperties,	TEST_TYPE_DRIVER_ID_MATCH);
+	addFunctionCase(group, "name_is_not_empty",		"Check name field is not empty",				checkSupport,	testQueryProperties,	TEST_TYPE_NAME_IS_NOT_EMPTY);
+	addFunctionCase(group, "name_zero_terminated",	"Check name field is zero-terminated",			checkSupport,	testQueryProperties,	TEST_TYPE_NAME_ZERO_TERMINATED);
+	addFunctionCase(group, "info_zero_terminated",	"Check info field is zero-terminated",			checkSupport,	testQueryProperties,	TEST_TYPE_INFO_ZERO_TERMINATED);
+	addFunctionCase(group, "conformance_version",	"Check conformanceVersion reported by driver",	checkSupport,	testQueryProperties,	TEST_TYPE_VERSION);
 }
 
 } // anonymous
diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp
index 5d6bc77..d8c22be 100644
--- a/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp
+++ b/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp
@@ -297,6 +297,12 @@
 		const VkDeviceSize		allocationSize	= (m_config.memorySize ? memReqs.size : (VkDeviceSize)(*m_config.memoryPercentage * (float)memoryHeap.size));
 		const VkDeviceSize		roundedUpAllocationSize	 = roundUpToNextMultiple(allocationSize, m_memoryLimits.deviceMemoryAllocationGranularity);
 		vector<VkDeviceMemory>	memoryObjects	(m_config.memoryAllocationCount, (VkDeviceMemory)0);
+		deUint32				totalAllocateCount		= m_config.memoryAllocationCount;
+		VkResult				result					= vk::VK_SUCCESS;
+		// Because of the size limitation of protect heap, we ignore the "VK_ERROR_OUT_OF_DEVICE_MEMORY"
+		// when total number of protected memory reaches 80 times.
+		const deUint32			protectHeapLimit		= 80;
+
 
 		log << TestLog::Message << "Memory type index: " << m_memoryTypeIndex << TestLog::EndMessage;
 
@@ -345,24 +351,35 @@
 									m_memoryTypeIndex									// memoryTypeIndex;
 								};
 
-								VK_CHECK(vkd.allocateMemory(device, &alloc, (const VkAllocationCallbacks*)DE_NULL, &memoryObjects[ndx]));
+								result = vkd.allocateMemory(device, &alloc, (const VkAllocationCallbacks*)DE_NULL, &memoryObjects[ndx]);
+								if ( VK_ERROR_OUT_OF_DEVICE_MEMORY == result &&
+								    (memoryType.propertyFlags & vk::VK_MEMORY_PROPERTY_PROTECTED_BIT) == vk::VK_MEMORY_PROPERTY_PROTECTED_BIT &&
+								    ndx >= protectHeapLimit)
+								{
+									totalAllocateCount = (deUint32)ndx + 1;
+									break;
+								}
+								else
+								{
+									VK_CHECK(result);
+								}
 
 								TCU_CHECK(!!memoryObjects[ndx]);
 							}
 
 							if (m_config.order == TestConfig::ALLOC_FREE)
 							{
-								for (size_t ndx = 0; ndx < m_config.memoryAllocationCount; ndx++)
+								for (size_t ndx = 0; ndx < totalAllocateCount; ndx++)
 								{
-									const VkDeviceMemory mem = memoryObjects[memoryObjects.size() - 1 - ndx];
+									const VkDeviceMemory mem = memoryObjects[totalAllocateCount - 1 - ndx];
 
 									vkd.freeMemory(device, mem, (const VkAllocationCallbacks*)DE_NULL);
-									memoryObjects[memoryObjects.size() - 1 - ndx] = (VkDeviceMemory)0;
+									memoryObjects[totalAllocateCount - 1 - ndx] = (VkDeviceMemory)0;
 								}
 							}
 							else
 							{
-								for (size_t ndx = 0; ndx < m_config.memoryAllocationCount; ndx++)
+								for (size_t ndx = 0; ndx < totalAllocateCount; ndx++)
 								{
 									const VkDeviceMemory mem = memoryObjects[ndx];
 
diff --git a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassSampleReadTests.cpp b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassSampleReadTests.cpp
index 3a9eb88..0fb447b 100644
--- a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassSampleReadTests.cpp
+++ b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassSampleReadTests.cpp
@@ -512,8 +512,8 @@
 		(VkPipelineMultisampleStateCreateFlags)0u,
 
 		sampleCountBitFromSampleCount(sampleCount),
-		VK_FALSE,
-		0.0f,
+		VK_TRUE,
+		1.0f,
 		DE_NULL,
 		VK_FALSE,
 		VK_FALSE,
@@ -796,7 +796,8 @@
 
 SampleReadTestInstance::SampleReadTestInstance (Context& context, TestConfig config)
 	: TestInstance					(context)
-	, m_extensionSupported			((config.renderPassType == RENDERPASS_TYPE_RENDERPASS2) && context.requireDeviceExtension("VK_KHR_create_renderpass2"))
+	, m_extensionSupported			(context.requireDeviceCoreFeature(DEVICE_CORE_FEATURE_SAMPLE_RATE_SHADING) &&
+									 ((config.renderPassType != RENDERPASS_TYPE_RENDERPASS2) || context.requireDeviceExtension("VK_KHR_create_renderpass2")))
 	, m_renderPassType				(config.renderPassType)
 	, m_sampleCount					(config.sampleCount)
 	, m_width						(32u)
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
index 9d6a38f..c0a0d41 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
@@ -1103,7 +1103,7 @@
 
 					getDefaultColors(defaultColors);
 
-					const map<string, string>		fragments = generateGraphicsImageSamplerSource((ReadOp)opNdx, (DescriptorType)descNdx, (TestType)testNdx, DEPTH_PROPERTY_NON_DEPTH, (deUint32)resources.inputs.size(), (formatIndex + 1) % optypeimageFormatMismatchFormatCount);
+					const map<string, string>		fragments = generateGraphicsImageSamplerSource((ReadOp)opNdx, (DescriptorType)descNdx, (TestType)testNdx, DEPTH_PROPERTY_NON_DEPTH, (deUint32)resources.inputs.size(), (deUint32)((formatIndex + 1) % optypeimageFormatMismatchFormatCount));
 
 					// If testing for mismatched optypeimage, ignore the rendered
 					// result (we're only interested to see if we crash)
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
index dfbd98b..e07d204 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
@@ -585,7 +585,7 @@
 		DE_NULL
 	};
 	const std::vector<vk::VkViewport>					viewports			(1, vk::makeViewport(tcu::UVec2(width, height)));
-	const std::vector<vk::VkRect2D>						noScissors;
+	const std::vector<vk::VkRect2D>						scissors			(1, vk::makeRect2D(tcu::UVec2(width, height)));
 
 	return vk::makeGraphicsPipeline(vkd,										// const DeviceInterface&                        vk
 									device,										// const VkDevice                                device
@@ -597,7 +597,7 @@
 									fragmentShaderModule,						// const VkShaderModule                          fragmentShaderModule
 									renderPass,									// const VkRenderPass                            renderPass
 									viewports,									// const std::vector<VkViewport>&                viewports
-									noScissors,									// const std::vector<VkRect2D>&                  scissors
+									scissors,									// const std::vector<VkRect2D>&                  scissors
 									vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,	// const VkPrimitiveTopology                     topology
 									0u,											// const deUint32                                subpass
 									0u,											// const deUint32                                patchControlPoints
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiSharedPresentableImageTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiSharedPresentableImageTests.cpp
index ed92846..1241b0f 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiSharedPresentableImageTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiSharedPresentableImageTests.cpp
@@ -498,7 +498,7 @@
 		DE_NULL
 	};
 	const std::vector<vk::VkViewport>				viewports			(1, vk::makeViewport(tcu::UVec2(width, height)));
-	const std::vector<vk::VkRect2D>					noScissors;
+	const std::vector<vk::VkRect2D>					scissors			(1, vk::makeRect2D(tcu::UVec2(width, height)));
 
 	return vk::makeGraphicsPipeline(vkd,										// const DeviceInterface&                        vk
 									device,										// const VkDevice                                device
@@ -510,7 +510,7 @@
 									fragmentShaderModule,						// const VkShaderModule                          fragmentShaderModule
 									renderPass,									// const VkRenderPass                            renderPass
 									viewports,									// const std::vector<VkViewport>&                viewports
-									noScissors,									// const std::vector<VkRect2D>&                  scissors
+									scissors,									// const std::vector<VkRect2D>&                  scissors
 									vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,	// const VkPrimitiveTopology                     topology
 									0u,											// const deUint32                                subpass
 									0u,											// const deUint32                                patchControlPoints
@@ -634,20 +634,23 @@
 	const vk::VkBool32						clipped				= VK_FALSE;
 	vector<vk::VkSwapchainCreateInfoKHR>	createInfos;
 
+	const deUint32				currentWidth		= properties.currentExtent.width != 0xFFFFFFFFu
+												? properties.currentExtent.width
+												: de::min(1024u, properties.minImageExtent.width + ((properties.maxImageExtent.width - properties.minImageExtent.width) / 2));
+	const deUint32				currentHeight		= properties.currentExtent.height != 0xFFFFFFFFu
+												? properties.currentExtent.height
+												: de::min(1024u, properties.minImageExtent.height + ((properties.maxImageExtent.height - properties.minImageExtent.height) / 2));
+
 	const deUint32				imageWidth		= scaling == SCALING_NONE
-												? (properties.currentExtent.width != 0xFFFFFFFFu
-													? properties.currentExtent.width
-													: de::min(1024u, properties.minImageExtent.width + ((properties.maxImageExtent.width - properties.minImageExtent.width) / 2)))
+												? currentWidth
 												: (scaling == SCALING_UP
 													? de::max(31u, properties.minImageExtent.width)
-													: properties.maxImageExtent.width);
+													: de::min(deSmallestGreaterOrEquallPowerOfTwoU32(currentWidth+1), properties.maxImageExtent.width));
 	const deUint32				imageHeight		= scaling == SCALING_NONE
-												? (properties.currentExtent.height != 0xFFFFFFFFu
-													? properties.currentExtent.height
-													: de::min(1024u, properties.minImageExtent.height + ((properties.maxImageExtent.height - properties.minImageExtent.height) / 2)))
+												? currentHeight
 												: (scaling == SCALING_UP
 													? de::max(31u, properties.minImageExtent.height)
-													: properties.maxImageExtent.height);
+													: de::min(deSmallestGreaterOrEquallPowerOfTwoU32(currentHeight+1), properties.maxImageExtent.height));
 	const vk::VkExtent2D		imageSize		= { imageWidth, imageHeight };
 
 	{
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
index b9359c9..f8e6ab6 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
@@ -574,6 +574,7 @@
 	const Unique<VkSurfaceKHR>				surface		(createSurface(instHelper.vki, *instHelper.instance, params.wsiType, *native.display, *native.window));
 	const DeviceHelper						devHelper	(context, instHelper.vki, *instHelper.instance, *surface);
 	const vector<VkSwapchainCreateInfoKHR>	cases		(generateSwapchainParameterCases(params.wsiType, params.dimension, instHelper.vki, devHelper.physicalDevice, *surface));
+	const VkSurfaceCapabilitiesKHR			capabilities(getPhysicalDeviceSurfaceCapabilities(instHelper.vki, devHelper.physicalDevice, *surface));
 
 	for (size_t caseNdx = 0; caseNdx < cases.size(); ++caseNdx)
 	{
@@ -608,10 +609,32 @@
 		switch (propertiesResult) {
 		case VK_SUCCESS:
 			{
-				const Unique<VkSwapchainKHR>	swapchain	(createSwapchainKHR(devHelper.vkd, *devHelper.device, &curParams));
+				// The maxExtents case might not be able to create the requested surface due to insufficient
+				// memory, so in this case *only* we handle the OOM exception.
+				if (params.dimension == TEST_DIMENSION_IMAGE_EXTENT &&
+					capabilities.maxImageExtent.width == curParams.imageExtent.width &&
+					capabilities.maxImageExtent.height == curParams.imageExtent.height)
+				{
+					try
+					{
+						const Unique<VkSwapchainKHR>	swapchain	(createSwapchainKHR(devHelper.vkd, *devHelper.device, &curParams));
+
+						log << TestLog::Message << subcase.str()
+							<< "Creating swapchain succeeded" << TestLog::EndMessage;
+					}
+					catch (const OutOfMemoryError& e)
+					{
+						log << TestLog::Message << subcase.str() << "vkCreateSwapchainKHR with maxImageExtent encountered " << e.getError() << TestLog::EndMessage;
+					}
+				}
+				else
+				{
+					const Unique<VkSwapchainKHR>	swapchain	(createSwapchainKHR(devHelper.vkd, *devHelper.device, &curParams));
+
+					log << TestLog::Message << subcase.str()
+						<< "Creating swapchain succeeded" << TestLog::EndMessage;
+				}
 			}
-			log << TestLog::Message << subcase.str()
-				<< "Creating swapchain succeeeded" << TestLog::EndMessage;
 			break;
 		case VK_ERROR_FORMAT_NOT_SUPPORTED:
 			log << TestLog::Message << subcase.str()
diff --git a/external/vulkancts/mustpass/1.1.2/src/master.txt b/external/vulkancts/mustpass/1.1.2/src/master.txt
index 75f311b..6df5b78 100644
--- a/external/vulkancts/mustpass/1.1.2/src/master.txt
+++ b/external/vulkancts/mustpass/1.1.2/src/master.txt
@@ -4,7 +4,11 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
diff --git a/external/vulkancts/mustpass/1.1.2/vk-default-no-waivers.txt b/external/vulkancts/mustpass/1.1.2/vk-default-no-waivers.txt
index 5c53c88..3237f90 100644
--- a/external/vulkancts/mustpass/1.1.2/vk-default-no-waivers.txt
+++ b/external/vulkancts/mustpass/1.1.2/vk-default-no-waivers.txt
@@ -4,7 +4,11 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
diff --git a/external/vulkancts/mustpass/1.1.2/vk-default.txt b/external/vulkancts/mustpass/1.1.2/vk-default.txt
index 85a80df..4989809 100644
--- a/external/vulkancts/mustpass/1.1.2/vk-default.txt
+++ b/external/vulkancts/mustpass/1.1.2/vk-default.txt
@@ -4,7 +4,11 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
diff --git a/external/vulkancts/mustpass/1.1.3/src/excluded-tests.txt b/external/vulkancts/mustpass/1.1.3/src/excluded-tests.txt
index b6755af..6785e0d 100644
--- a/external/vulkancts/mustpass/1.1.3/src/excluded-tests.txt
+++ b/external/vulkancts/mustpass/1.1.3/src/excluded-tests.txt
@@ -38,3 +38,7 @@
 
 dEQP-VK.pipeline.multisample.*.primitive_point_1px
 dEQP-VK.pipeline.multisample.*.primitive_point_1px_sparse
+
+# VK-GL-CTS 1829
+# Test shader length is excessive, excluding until such time as the test case can be re-visited.
+dEQP-VK.ssbo.layout.random.scalar.75
diff --git a/external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt b/external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt
index ce88b5d..24aa466 100644
--- a/external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt
+++ b/external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt
@@ -4,7 +4,11 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
@@ -302535,7 +302539,6 @@
 dEQP-VK.ssbo.layout.random.scalar.72
 dEQP-VK.ssbo.layout.random.scalar.73
 dEQP-VK.ssbo.layout.random.scalar.74
-dEQP-VK.ssbo.layout.random.scalar.75
 dEQP-VK.ssbo.layout.random.scalar.76
 dEQP-VK.ssbo.layout.random.scalar.77
 dEQP-VK.ssbo.layout.random.scalar.78
diff --git a/external/vulkancts/mustpass/1.1.3/vk-default.txt b/external/vulkancts/mustpass/1.1.3/vk-default.txt
index 3560434..f8a63c3 100644
--- a/external/vulkancts/mustpass/1.1.3/vk-default.txt
+++ b/external/vulkancts/mustpass/1.1.3/vk-default.txt
@@ -4,7 +4,11 @@
 dEQP-VK.info.memory_limits
 dEQP-VK.api.version_check.version
 dEQP-VK.api.version_check.entry_points
-dEQP-VK.api.driver_properties.properties
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
 dEQP-VK.api.smoke.create_sampler
 dEQP-VK.api.smoke.create_shader
 dEQP-VK.api.smoke.triangle
@@ -302497,7 +302501,6 @@
 dEQP-VK.ssbo.layout.random.scalar.72
 dEQP-VK.ssbo.layout.random.scalar.73
 dEQP-VK.ssbo.layout.random.scalar.74
-dEQP-VK.ssbo.layout.random.scalar.75
 dEQP-VK.ssbo.layout.random.scalar.76
 dEQP-VK.ssbo.layout.random.scalar.77
 dEQP-VK.ssbo.layout.random.scalar.78
diff --git a/framework/common/tcuFormatUtil.hpp b/framework/common/tcuFormatUtil.hpp
index a45c728..df74012 100644
--- a/framework/common/tcuFormatUtil.hpp
+++ b/framework/common/tcuFormatUtil.hpp
@@ -28,6 +28,8 @@
 
 #include <ostream>
 #include <string>
+#include <sstream>
+#include <iomanip>
 
 namespace tcu
 {
@@ -43,20 +45,22 @@
 
 	std::ostream& toStream (std::ostream& stream) const
 	{
-		return stream << this->toString();
+		DE_STATIC_ASSERT(0 < NumDigits && NumDigits <= 16);
+
+		return stream	<< "0x"
+						<< std::right
+						<< std::setfill('0')
+						<< std::setw(NumDigits)
+						<< std::hex
+						<< value;
 	}
 
 	std::string toString (void) const
 	{
-		DE_STATIC_ASSERT(0 < NumDigits && NumDigits <= 16);
+		std::stringstream stream;
 
-		const char longFmt[]	= {'0', 'x', '%', '0', '0' + NumDigits/10, '0' + NumDigits%10, 'l', 'l', 'x', 0};
-		const char shortFmt[]	= {'0', 'x', '%', '0', '0' + NumDigits, 'l', 'l', 'x', 0};
-
-		char buf[sizeof(deUint64)*2 + 3];
-		deSprintf(buf, sizeof(buf), NumDigits > 9 ? longFmt : shortFmt, value);
-
-		return std::string(buf);
+		toStream(stream);
+		return stream.str();
 	}
 
 private:
diff --git a/framework/common/tcuTestHierarchyIterator.cpp b/framework/common/tcuTestHierarchyIterator.cpp
index 3a72b1d..51fdf4e 100644
--- a/framework/common/tcuTestHierarchyIterator.cpp
+++ b/framework/common/tcuTestHierarchyIterator.cpp
@@ -93,7 +93,7 @@
 {
 	// Init traverse state and "seek" to first reportable node.
 	NodeIter iter(&rootNode);
-	iter.setState(NodeIter::STATE_ENTER); // Root is never reported
+	iter.setState(NodeIter::NISTATE_ENTER); // Root is never reported
 	m_sessionStack.push_back(iter);
 	next();
 }
@@ -123,10 +123,10 @@
 	{
 		const NodeIter&	iter	= m_sessionStack.back();
 
-		DE_ASSERT(iter.getState() == NodeIter::STATE_ENTER ||
-				  iter.getState() == NodeIter::STATE_LEAVE);
+		DE_ASSERT(iter.getState() == NodeIter::NISTATE_ENTER ||
+				  iter.getState() == NodeIter::NISTATE_LEAVE);
 
-		return iter.getState() == NodeIter::STATE_ENTER ? STATE_ENTER_NODE : STATE_LEAVE_NODE;
+		return iter.getState() == NodeIter::NISTATE_ENTER ? STATE_ENTER_NODE : STATE_LEAVE_NODE;
 	}
 	else
 		return STATE_FINISHED;
@@ -167,7 +167,7 @@
 
 		switch (iter.getState())
 		{
-			case NodeIter::STATE_INIT:
+			case NodeIter::NISTATE_INIT:
 			{
 				const std::string nodePath = buildNodePath(m_sessionStack);
 
@@ -179,20 +179,20 @@
 				}
 
 				m_nodePath = nodePath;
-				iter.setState(NodeIter::STATE_ENTER);
+				iter.setState(NodeIter::NISTATE_ENTER);
 				return; // Yield enter event
 			}
 
-			case NodeIter::STATE_ENTER:
+			case NodeIter::NISTATE_ENTER:
 			{
 				if (isLeaf)
 				{
-					iter.setState(NodeIter::STATE_LEAVE);
+					iter.setState(NodeIter::NISTATE_LEAVE);
 					return; // Yield leave event
 				}
 				else
 				{
-					iter.setState(NodeIter::STATE_TRAVERSE_CHILDREN);
+					iter.setState(NodeIter::NISTATE_TRAVERSE_CHILDREN);
 					iter.children.clear();
 
 					switch (node->getNodeType())
@@ -208,7 +208,7 @@
 				break;
 			}
 
-			case NodeIter::STATE_TRAVERSE_CHILDREN:
+			case NodeIter::NISTATE_TRAVERSE_CHILDREN:
 			{
 				int numChildren = (int)iter.children.size();
 				if (++iter.curChildNdx < numChildren)
@@ -219,7 +219,7 @@
 				}
 				else
 				{
-					iter.setState(NodeIter::STATE_LEAVE);
+					iter.setState(NodeIter::NISTATE_LEAVE);
 					if (node->getNodeType() != NODETYPE_ROOT)
 						return; // Yield leave event
 				}
@@ -227,7 +227,7 @@
 				break;
 			}
 
-			case NodeIter::STATE_LEAVE:
+			case NodeIter::NISTATE_LEAVE:
 			{
 				// Leave node.
 				if (!isLeaf)
diff --git a/framework/common/tcuTestHierarchyIterator.hpp b/framework/common/tcuTestHierarchyIterator.hpp
index 395f8e2..b138cba 100644
--- a/framework/common/tcuTestHierarchyIterator.hpp
+++ b/framework/common/tcuTestHierarchyIterator.hpp
@@ -131,25 +131,25 @@
 	{
 		enum State
 		{
-			STATE_INIT = 0,
-			STATE_ENTER,
-			STATE_TRAVERSE_CHILDREN,
-			STATE_LEAVE,
+			NISTATE_INIT = 0,
+			NISTATE_ENTER,
+			NISTATE_TRAVERSE_CHILDREN,
+			NISTATE_LEAVE,
 
-			STATE_LAST
+			NISTATE_LAST
 		};
 
 		NodeIter (void)
 			: node			(DE_NULL)
 			, curChildNdx	(-1)
-			, m_state		(STATE_LAST)
+			, m_state		(NISTATE_LAST)
 		{
 		}
 
 		NodeIter (TestNode* node_)
 			: node			(node_)
 			, curChildNdx	(-1)
-			, m_state		(STATE_INIT)
+			, m_state		(NISTATE_INIT)
 		{
 		}
 
@@ -162,7 +162,7 @@
 		{
 			switch (newState)
 			{
-				case STATE_TRAVERSE_CHILDREN:
+				case NISTATE_TRAVERSE_CHILDREN:
 					curChildNdx = -1;
 					break;
 
diff --git a/framework/opengl/gluDrawUtil.cpp b/framework/opengl/gluDrawUtil.cpp
index a97f9a8..0cdc501 100644
--- a/framework/opengl/gluDrawUtil.cpp
+++ b/framework/opengl/gluDrawUtil.cpp
@@ -222,7 +222,7 @@
 	for (InputIter cur = first; cur != end; ++cur)
 	{
 		const BindingPoint& binding = cur->binding;
-		if (binding.type == BindingPoint::TYPE_NAME)
+		if (binding.type == BindingPoint::BPTYPE_NAME)
 		{
 			DE_ASSERT(binding.location >= 0);
 			int location = gl.getAttribLocation(program, binding.name.c_str());
@@ -258,7 +258,7 @@
 	{
 		const BindingPoint& binding = cur->binding;
 
-		if (binding.type != BindingPoint::TYPE_LOCATION)
+		if (binding.type != BindingPoint::BPTYPE_LOCATION)
 			return false;
 
 		if (usedLocations.find(binding.location) != usedLocations.end())
@@ -279,7 +279,7 @@
 	const int	size		= elementSize*va.pointer.numElements;
 
 	// Must be assigned to location at this point.
-	DE_ASSERT(va.binding.type == BindingPoint::TYPE_LOCATION);
+	DE_ASSERT(va.binding.type == BindingPoint::BPTYPE_LOCATION);
 
 	layout.attributes.push_back(VertexAttributeDescriptor(va.binding.location,
 														  va.pointer.componentType,
@@ -388,7 +388,7 @@
 
 static inline VertexAttributeDescriptor getUserPointerDescriptor (const VertexArrayBinding& vertexArray)
 {
-	DE_ASSERT(vertexArray.binding.type == BindingPoint::TYPE_LOCATION);
+	DE_ASSERT(vertexArray.binding.type == BindingPoint::BPTYPE_LOCATION);
 
 	return VertexAttributeDescriptor(vertexArray.binding.location,
 									 vertexArray.pointer.componentType,
@@ -433,7 +433,7 @@
 {
 	for (std::vector<VertexArrayBinding>::const_iterator vaIter = bindings.begin(); vaIter != bindings.end(); ++vaIter)
 	{
-		DE_ASSERT(vaIter->binding.type == BindingPoint::TYPE_LOCATION);
+		DE_ASSERT(vaIter->binding.type == BindingPoint::BPTYPE_LOCATION);
 		gl.disableVertexAttribArray(vaIter->binding.location);
 	}
 }
diff --git a/framework/opengl/gluDrawUtil.hpp b/framework/opengl/gluDrawUtil.hpp
index 7108b7e..7933a70 100644
--- a/framework/opengl/gluDrawUtil.hpp
+++ b/framework/opengl/gluDrawUtil.hpp
@@ -94,19 +94,19 @@
 {
 	enum Type
 	{
-		TYPE_LOCATION = 0,			//!< Binding by numeric location.
-		TYPE_NAME,					//!< Binding by input name.
+		BPTYPE_LOCATION = 0,			//!< Binding by numeric location.
+		BPTYPE_NAME,					//!< Binding by input name.
 
-		TYPE_LAST
+		BPTYPE_LAST
 	};
 
 	Type			type;			//!< Binding type (name or location).
 	std::string		name;			//!< Input name, or empty if is not binding by name.
 	int				location;		//!< Input location, or offset to named location if binding by name.
 
-				BindingPoint (void)											: type(TYPE_LAST), location (0) {}
-	explicit	BindingPoint (int location_)								: type(TYPE_LOCATION), location(location_) {}
-	explicit	BindingPoint (const std::string& name_, int location_ = 0)	: type(TYPE_NAME), name(name_), location(location_) {}
+				BindingPoint (void)											: type(BPTYPE_LAST), location (0) {}
+	explicit	BindingPoint (int location_)								: type(BPTYPE_LOCATION), location(location_) {}
+	explicit	BindingPoint (const std::string& name_, int location_ = 0)	: type(BPTYPE_NAME), name(name_), location(location_) {}
 };
 
 struct VertexArrayPointer
diff --git a/framework/opengl/gluVarType.cpp b/framework/opengl/gluVarType.cpp
index fcb2c9c..0050432 100644
--- a/framework/opengl/gluVarType.cpp
+++ b/framework/opengl/gluVarType.cpp
@@ -29,25 +29,25 @@
 {
 
 VarType::VarType (void)
-	: m_type(TYPE_LAST)
+	: m_type(VARTYPE_LAST)
 {
 }
 
 VarType::VarType (const VarType& other)
-	: m_type(TYPE_LAST)
+	: m_type(VARTYPE_LAST)
 {
 	*this = other;
 }
 
 VarType::VarType (DataType basicType, Precision precision)
-	: m_type(TYPE_BASIC)
+	: m_type(VARTYPE_BASIC)
 {
 	m_data.basic.type		= basicType;
 	m_data.basic.precision	= precision;
 }
 
 VarType::VarType (const VarType& elementType, int arraySize)
-	: m_type(TYPE_ARRAY)
+	: m_type(VARTYPE_ARRAY)
 {
 	DE_ASSERT(arraySize >= 0 || arraySize == UNSIZED_ARRAY);
 	m_data.array.size			= arraySize;
@@ -55,14 +55,14 @@
 }
 
 VarType::VarType (const StructType* structPtr)
-	: m_type(TYPE_STRUCT)
+	: m_type(VARTYPE_STRUCT)
 {
 	m_data.structPtr = structPtr;
 }
 
 VarType::~VarType (void)
 {
-	if (m_type == TYPE_ARRAY)
+	if (m_type == VARTYPE_ARRAY)
 		delete m_data.array.elementType;
 }
 
@@ -71,12 +71,12 @@
 	if (this == &other)
 		return *this; // Self-assignment.
 
-	VarType *oldElementType = m_type == TYPE_ARRAY ? m_data.array.elementType : DE_NULL;
+	VarType *oldElementType = m_type == VARTYPE_ARRAY ? m_data.array.elementType : DE_NULL;
 
 	m_type	= other.m_type;
 	m_data	= Data();
 
-	if (m_type == TYPE_ARRAY)
+	if (m_type == VARTYPE_ARRAY)
 	{
 		m_data.array.elementType	= new VarType(*other.m_data.array.elementType);
 		m_data.array.size			= other.m_data.array.size;
@@ -93,10 +93,10 @@
 {
 	switch (m_type)
 	{
-		case TYPE_BASIC:	return glu::getDataTypeScalarSize(m_data.basic.type);
-		case TYPE_ARRAY:	return m_data.array.elementType->getScalarSize()*m_data.array.size;
+		case VARTYPE_BASIC:	return glu::getDataTypeScalarSize(m_data.basic.type);
+		case VARTYPE_ARRAY:	return m_data.array.elementType->getScalarSize()*m_data.array.size;
 
-		case TYPE_STRUCT:
+		case VARTYPE_STRUCT:
 		{
 			int size = 0;
 			for (StructType::ConstIterator iter = m_data.structPtr->begin(); iter != m_data.structPtr->end(); iter++)
@@ -117,15 +117,15 @@
 
 	switch (m_type)
 	{
-		case TYPE_BASIC:
+		case VARTYPE_BASIC:
 			return	m_data.basic.type == other.m_data.basic.type &&
 					m_data.basic.precision == other.m_data.basic.precision;
 
-		case TYPE_ARRAY:
+		case VARTYPE_ARRAY:
 			return	*m_data.array.elementType == *other.m_data.array.elementType &&
 					m_data.array.size == other.m_data.array.size;
 
-		case TYPE_STRUCT:
+		case VARTYPE_STRUCT:
 			return m_data.structPtr == other.m_data.structPtr;
 
 		default:
diff --git a/framework/opengl/gluVarType.hpp b/framework/opengl/gluVarType.hpp
index eb2056b..4e18496 100644
--- a/framework/opengl/gluVarType.hpp
+++ b/framework/opengl/gluVarType.hpp
@@ -55,9 +55,9 @@
 	explicit			VarType			(const StructType* structPtr);					//!< Struct type constructor.
 						~VarType		(void);
 
-	bool				isBasicType		(void) const	{ return m_type == TYPE_BASIC;	}
-	bool				isArrayType		(void) const	{ return m_type == TYPE_ARRAY;	}
-	bool				isStructType	(void) const	{ return m_type == TYPE_STRUCT;	}
+	bool				isBasicType		(void) const	{ return m_type == VARTYPE_BASIC;	}
+	bool				isArrayType		(void) const	{ return m_type == VARTYPE_ARRAY;	}
+	bool				isStructType	(void) const	{ return m_type == VARTYPE_STRUCT;	}
 
 	DataType			getBasicType	(void) const	{ DE_ASSERT(isBasicType()); return m_data.basic.type;			}
 	Precision			getPrecision	(void) const	{ DE_ASSERT(isBasicType()); return m_data.basic.precision;		}
@@ -82,11 +82,11 @@
 private:
 	enum Type
 	{
-		TYPE_BASIC,
-		TYPE_ARRAY,
-		TYPE_STRUCT,
+		VARTYPE_BASIC,
+		VARTYPE_ARRAY,
+		VARTYPE_STRUCT,
 
-		TYPE_LAST
+		VARTYPE_LAST
 	};
 
 	Type				m_type;
diff --git a/framework/opengl/gluVarTypeUtil.hpp b/framework/opengl/gluVarTypeUtil.hpp
index 559da7d..e969524 100644
--- a/framework/opengl/gluVarTypeUtil.hpp
+++ b/framework/opengl/gluVarTypeUtil.hpp
@@ -79,11 +79,11 @@
 		MATRIX_COLUMN,
 		VECTOR_COMPONENT,
 
-		TYPE_LAST
+		VTCTYPE_LAST
 	};
 
 				VarTypeComponent	(Type type_, int index_)	: type(type_), index(index_) {}
-				VarTypeComponent	(void)						: type(TYPE_LAST), index(0) {}
+				VarTypeComponent	(void)						: type(VTCTYPE_LAST), index(0) {}
 
 	bool		operator==			(const VarTypeComponent& other) const { return type == other.type && index == other.index; }
 	bool		operator!=			(const VarTypeComponent& other) const { return type != other.type || index != other.index; }
diff --git a/modules/egl/teglSimpleConfigCase.cpp b/modules/egl/teglSimpleConfigCase.cpp
index fc02455..be0e1c6 100644
--- a/modules/egl/teglSimpleConfigCase.cpp
+++ b/modules/egl/teglSimpleConfigCase.cpp
@@ -148,6 +148,11 @@
 	return c.colorComponentType() != EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT;
 }
 
+static bool notYUV (const eglu::CandidateConfig& c)
+{
+	return c.get(EGL_COLOR_BUFFER_TYPE) != EGL_YUV_BUFFER_EXT;
+}
+
 void getDefaultFilterLists (vector<NamedFilterList>& lists, const FilterList& baseFilters)
 {
 	static const struct
@@ -215,7 +220,8 @@
 				<< notColorBits<5, 5, 5, 1>
 				<< notColorBits<8, 8, 8, 8>
 				<< isConformant
-				<< notFloat;
+				<< notFloat
+				<< notYUV;
 
 		lists.push_back(filters);
 	}
diff --git a/modules/gles3/functional/es3fDitheringTests.cpp b/modules/gles3/functional/es3fDitheringTests.cpp
index 5e52d9e..a677f22 100644
--- a/modules/gles3/functional/es3fDitheringTests.cpp
+++ b/modules/gles3/functional/es3fDitheringTests.cpp
@@ -105,7 +105,7 @@
 	static const char*						getPatternTypeName			(PatternType type);
 
 private:
-	bool									checkColor					(const tcu::Vec4& inputClr, const tcu::RGBA& renderedClr, bool logErrors) const;
+	bool									checkColor					(const tcu::Vec4& inputClr, const tcu::RGBA& renderedClr, bool logErrors, const bool incTol) const;
 
 	bool									drawAndCheckGradient		(bool isVerticallyIncreasing, const tcu::Vec4& highColor) const;
 	bool									drawAndCheckUnicoloredQuad	(const tcu::Vec4& color) const;
@@ -165,7 +165,7 @@
 	m_renderer = DE_NULL;
 }
 
-bool DitheringCase::checkColor (const Vec4& inputClr, const tcu::RGBA& renderedClr, const bool logErrors) const
+bool DitheringCase::checkColor (const Vec4& inputClr, const tcu::RGBA& renderedClr, const bool logErrors, const bool incTol) const
 {
 	const IVec4		channelBits		= pixelFormatToIVec4(m_renderFormat);
 	bool			allChannelsOk	= true;
@@ -182,6 +182,12 @@
 
 		channelChoices.push_back(de::min(channelMax,	(int)deFloatCeil(scaledInput)));
 		channelChoices.push_back(de::max(0,				(int)deFloatCeil(scaledInput) - 1));
+		// Allow for more tolerance for small dimension render targets
+		if (incTol)
+		{
+			channelChoices.push_back(de::max(0,(int)deFloatCeil(scaledInput) - 2));
+			channelChoices.push_back(de::max(0,(int)deFloatCeil(scaledInput) + 1));
+		}
 
 		// If the input color results in a scaled value that is very close to an integer, account for a little bit of possible inaccuracy.
 		if (useRoundingMargin)
@@ -288,8 +294,9 @@
 			{
 				const float		inputF		= ((float)(isVerticallyIncreasing ? y : x) + 0.5f) / (float)(isVerticallyIncreasing ? renderedImg.getHeight() : renderedImg.getWidth());
 				const Vec4		inputClr	= (1.0f-inputF)*quadClr0 + inputF*quadClr1;
+				const bool              increaseTol     = ((renderedImg.getWidth() < 300) || (renderedImg.getHeight() < 300)) ? true : false;
 
-				if (!checkColor(inputClr, renderedImg.getPixel(x, y), colorChoicesOk))
+				if (!checkColor(inputClr, renderedImg.getPixel(x, y), colorChoicesOk, increaseTol))
 				{
 					errorMask.setPixel(x, y, tcu::RGBA::red());
 
@@ -399,7 +406,7 @@
 		{
 			for (int x = 0; x < renderedImg.getWidth(); x++)
 			{
-				if (!checkColor(quadColor, renderedImg.getPixel(x, y), colorChoicesOk))
+				if (!checkColor(quadColor, renderedImg.getPixel(x, y), colorChoicesOk, false))
 				{
 					errorMask.setPixel(x, y, tcu::RGBA::red());
 
diff --git a/modules/gles3/functional/es3fNegativeTextureApiTests.cpp b/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
index e14fd9d..cf8a437 100644
--- a/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
+++ b/modules/gles3/functional/es3fNegativeTextureApiTests.cpp
@@ -2133,6 +2133,7 @@
 		{
 			int max3DTextureSize	= m_context.getContextInfo().getInt(GL_MAX_3D_TEXTURE_SIZE) + 1;
 			int maxTextureSize		= m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE) + 1;
+			int maxTextureLayers	= m_context.getContextInfo().getInt(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
 
 			m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_3D_TEXTURE_SIZE.");
 			glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, max3DTextureSize, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
@@ -2150,9 +2151,9 @@
 			expectError(GL_INVALID_VALUE);
 			glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, maxTextureSize, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 			expectError(GL_INVALID_VALUE);
-			glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, maxTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+			glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, maxTextureLayers, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 			expectError(GL_INVALID_VALUE);
-			glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, maxTextureSize, maxTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+			glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, maxTextureSize, maxTextureLayers, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 			expectError(GL_INVALID_VALUE);
 			m_log << TestLog::EndSection;
 		});
@@ -2605,15 +2606,16 @@
 	ES3F_ADD_API_CASE(compressedteximage3d_max_width_height_depth, "Invalid glCompressedTexImage3D() usage",
 		{
 			int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE) + 1;
+			int maxTextureLayers = m_context.getContextInfo().getInt(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
 
 			m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_TEXTURE_SIZE.");
 			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, 0, 0, 0, 0, 0);
 			expectError(GL_INVALID_VALUE);
 			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, maxTextureSize, 0, 0, 0, 0);
 			expectError(GL_INVALID_VALUE);
-			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, maxTextureSize, 0, 0, 0);
+			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, maxTextureLayers, 0, 0, 0);
 			expectError(GL_INVALID_VALUE);
-			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize, maxTextureSize, 0, 0, 0);
+			glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize, maxTextureLayers, 0, 0, 0);
 			expectError(GL_INVALID_VALUE);
 			m_log << TestLog::EndSection;
 		});
diff --git a/modules/gles31/functional/es31fNegativeTextureApiTests.cpp b/modules/gles31/functional/es31fNegativeTextureApiTests.cpp
index 6a9d8ea..c2f9d47 100644
--- a/modules/gles31/functional/es31fNegativeTextureApiTests.cpp
+++ b/modules/gles31/functional/es31fNegativeTextureApiTests.cpp
@@ -2780,6 +2780,7 @@
 {
 	int max3DTextureSize	= ctx.getInteger(GL_MAX_3D_TEXTURE_SIZE) + 1;
 	int maxTextureSize		= ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
+	int maxTextureLayers	= ctx.getInteger(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
 
 	ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_3D_TEXTURE_SIZE.");
 	ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, max3DTextureSize, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
@@ -2797,9 +2798,9 @@
 	ctx.expectError(GL_INVALID_VALUE);
 	ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, maxTextureSize, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 	ctx.expectError(GL_INVALID_VALUE);
-	ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, maxTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+	ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, maxTextureLayers, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 	ctx.expectError(GL_INVALID_VALUE);
-	ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, maxTextureSize, maxTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+	ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, maxTextureSize, maxTextureLayers, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 	ctx.expectError(GL_INVALID_VALUE);
 	ctx.endSection();
 }
@@ -3342,15 +3343,16 @@
 void compressedteximage3d_max_width_height_depth (NegativeTestContext& ctx)
 {
 	int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
+	int maxTextureLayers = ctx.getInteger(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
 
 	ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_TEXTURE_SIZE.");
 	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, 0, 0, 0, 0, 0);
 	ctx.expectError(GL_INVALID_VALUE);
 	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, maxTextureSize, 0, 0, 0, 0);
 	ctx.expectError(GL_INVALID_VALUE);
-	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, maxTextureSize, 0, 0, 0);
+	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, maxTextureLayers, 0, 0, 0);
 	ctx.expectError(GL_INVALID_VALUE);
-	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize, maxTextureSize, 0, 0, 0);
+	ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize, maxTextureLayers, 0, 0, 0);
 	ctx.expectError(GL_INVALID_VALUE);
 	ctx.endSection();
 }
diff --git a/modules/glshared/glsFragOpInteractionCase.cpp b/modules/glshared/glsFragOpInteractionCase.cpp
index 5b68420..563e344 100644
--- a/modules/glshared/glsFragOpInteractionCase.cpp
+++ b/modules/glshared/glsFragOpInteractionCase.cpp
@@ -313,7 +313,7 @@
 	for (int attribNdx = 0; attribNdx < vertexData.getNumEntries(); ++attribNdx)
 	{
 		const glu::VertexArrayBinding	bindingPtr	= getEntryWithPointer(vertexData, attribNdx);
-		const int						attribLoc	= bindingPtr.binding.type == glu::BindingPoint::TYPE_NAME ? ctx.getAttribLocation(program, bindingPtr.binding.name.c_str()) : bindingPtr.binding.location;
+		const int						attribLoc	= bindingPtr.binding.type == glu::BindingPoint::BPTYPE_NAME ? ctx.getAttribLocation(program, bindingPtr.binding.name.c_str()) : bindingPtr.binding.location;
 
 		DE_ASSERT(bindingPtr.pointer.componentType == glu::VTX_COMP_FLOAT);
 
